@opentiny/vue-search-box 3.29.0 → 3.29.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.css +7 -0
- package/index.js +576 -589
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/types/index.d.ts +22 -6
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/utils/date.ts","../../src/utils/dropdown.ts","../../src/utils/index.ts","../../src/utils/tag.ts","../../src/composables/use-tag.ts","../../src/utils/validate.ts","../../src/composables/use-dropdown.ts","../../src/composables/use-match.ts","../../src/composables/use-checkbox.ts","../../src/composables/use-datepicker.ts","../../src/composables/use-num-range.ts","../../src/composables/use-edit.ts","../../src/composables/use-custom.ts","../../src/composables/use-init.ts","../../src/utils/zh_CN.ts","../../src/utils/en_US.ts","../../src/utils/i18n.ts","../../src/renderless.ts","../../src/components/first-level-panel.vue","../../src/composables/use-virtual-scroll.ts","../../src/components/second-level-panel.vue","../../src/pc.vue","../../src/index.ts","../../index.ts"],"sourcesContent":["/* eslint-disable prefer-rest-params */\n/**\n * Copyright (c) 2022 - present TinyVue Authors.\n * Copyright (c) 2022 - present Huawei Cloud Computing Technologies Co., Ltd.\n *\n * Use of this source code is governed by an MIT-style license.\n *\n * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL,\n * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR\n * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS.\n *\n */\n/**\n * 填充字符串,根据填充模式参数,在字符串前面或后面补充字附到指定的长度。\n *\n * fillChar('1', 3) // \"001\"\n * fillChar('1', 3, true) // \"100\"\n * fillChar('1', 3, true, ' ') // \"1 \"\n *\n * @param {String} string 被填充的字符串\n * @param {Number} length 填充到某个长度\n * @param {Boolean} [append=false] 是否在后面填充,默认为在前面填充\n * @param {String} [chr=\"0\"] 填充的字符,默认为0\n * @returns {String}\n */\nexport const fillChar = (string, length, append, chr = '0') => {\n if (typeof string === 'string' && typeof chr === 'string' && isNumber(length)) {\n let len = string.length - length\n\n if (len > 0) {\n return append ? string.substr(0, length) : string.substr(len, length)\n } else {\n const appendStr = []\n len = Math.abs(len) / chr.length\n\n for (; len > 0; len--) {\n appendStr.push(chr)\n }\n\n const s = appendStr.join('')\n\n return append ? string + s : s + string\n }\n }\n}\n\nexport const toString = Object.prototype.toString\nexport const hasOwn = Object.prototype.hasOwnProperty\n\nconst getProto = Object.getPrototypeOf\nconst fnToString = hasOwn.toString\nconst ObjectFunctionString = fnToString.call(Object)\n\nconst class2type = {\n '[object Error]': 'error',\n '[object Object]': 'object',\n '[object RegExp]': 'regExp',\n '[object Date]': 'date',\n '[object Array]': 'array',\n '[object Function]': 'function',\n '[object AsyncFunction]': 'asyncFunction',\n '[object String]': 'string',\n '[object Number]': 'number',\n '[object Boolean]': 'boolean'\n}\n\n/** 判断是否为 null / undefined */\nexport const isNull = (x: any) => x === null || x === undefined\n\n/**\n * 返回 JavaScript 对象的类型。\n *\n * 如果对象是 undefined 或 null,则返回相应的'undefined'或'null'。\n *\n * 其他一切都将返回它的类型'object'。\n *\n * typeOf( undefined ) === 'undefined'\n * typeOf() === 'undefined'\n * typeOf( window.notDefined ) === 'undefined'\n * typeOf( null ) === 'null'\n * typeOf( true ) === 'boolean'\n * typeOf( 3 ) === 'number'\n * typeOf( \"test\" ) === 'string'\n * typeOf( function (){} ) === 'function'\n * typeOf( [] ) === 'array'\n * typeOf( new Date() ) === 'date'\n * typeOf( new Error() ) === 'error'\n * typeOf( /test/ ) === 'regExp'\n *\n */\nexport const typeOf: (obj: any) => string = (obj) =>\n isNull(obj) ? String(obj) : class2type[toString.call(obj)] || 'object'\n\n/**\n * 判断对象是否为 object 类型。\n *\n * isObject({}) // true\n */\nexport const isObject = (obj: any) => typeOf(obj) === 'object'\n\n/**\n * 判断对象是否为 function 类型。\n *\n * isObject(function (){) // true\n\n */\nexport const isFunction = (fn: any) => ['asyncFunction', 'function'].includes(typeOf(fn))\n\n/**\n * 判断对象是否为简单对象。\n *\n * 即不是 HTML 节点对象,也不是 window 对象,而是纯粹的对象(通过 '{}' 或者 'new Object' 创建的)。\n *\n * let obj = {}\n * isPlainObject(obj) //true\n */\nexport const isPlainObject = (obj: any) => {\n if (!obj || toString.call(obj) !== '[object Object]') {\n return false\n }\n\n const proto = getProto(obj)\n if (!proto) {\n return true\n }\n\n const Ctor = hasOwn.call(proto, 'constructor') && proto.constructor\n return typeof Ctor === 'function' && fnToString.call(Ctor) === ObjectFunctionString\n}\n\n/**\n * 检查对象是否为空(不包含任何属性)。\n *\n * let obj = {}\n * isEmptyObject(obj) // true\n */\nexport const isEmptyObject = (obj: any) => {\n const type = typeOf(obj)\n\n if (type === 'object' || type === 'array') {\n for (const name in obj) {\n if (hasOwn.call(obj, name)) {\n return false\n }\n }\n }\n\n return true\n}\n\n/**\n * 判断对象是否为数字类型。\n *\n * isNumber(369) // true\n */\nexport const isNumber = (value: any) => typeof value === 'number' && isFinite(value)\n\n/**\n * 判断对象是否代表一个数值。\n *\n * isNumeric('-10') // true\n * isNumeric(16) // true\n * isNumeric(0xFF) // true\n * isNumeric('0xFF') // true\n * isNumeric('8e5') // true\n * isNumeric(3.1415) // true\n * isNumeric(+10) // true\n * isNumeric('') // false\n * isNumeric({}) // false\n * isNumeric(NaN) // false\n * isNumeric(null) // false\n * isNumeric(true) // false\n * isNumeric(Infinity) // false\n * isNumeric(undefined) // false\n */\nexport const isNumeric = (value: any) => value - parseFloat(value) >= 0\n\n/**\n * 判断对象是否为日期类型。\n *\n * let date = new Date()\n * isDate(date) // true\n */\nexport const isDate = (value) => typeOf(value) === 'date'\n\n/**\n * 判断两个值是否值相同且类型相同。\n *\n * 注:在 JavaScript 里 NaN === NaN 为 false,因此不能简单的用 === 来判断。\n *\n * isSame(1, 1) // true\n * isSame(NaN, NaN) // true\n */\nexport const isSame = (x: any, y: any) =>\n x === y || (typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y))\n\n/** 判断是否是正则表达式 */\nexport const isRegExp = (value: any) => typeOf(value) === 'regExp'\n\nexport const isPromise = (val) => isObject(val) && isFunction(val.then) && isFunction(val.catch)\n\nconst daysInMonths = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\nconst yyyymmddReg = new RegExp(\n '^(\\\\d{4})(/|-)(((0)?[1-9])|(1[0-2]))((/|-)(((0)?[1-9])|([1-2][0-9])|(3[0-1])))' +\n '?( ((0)?[0-9]|1[0-9]|20|21|22|23):([0-5]?[0-9])((:([0-5]?[0-9]))?(.([0-9]{1,6}))?)?)?$'\n)\nconst mmddyyyyReg = new RegExp(\n '^(((0)?[1-9])|(1[0-2]))(/|-)(((0)?[1-9])|([1-2][0-9])|(3[0-1]))?(/|-)?(\\\\d{4})' +\n '( ((0)?[0-9]|1[0-9]|20|21|22|23):([0-5]?[0-9])((:([0-5]?[0-9]))?(.([0-9]{1,6}))?)?)?$'\n)\nconst iso8601Reg = new RegExp(\n '^(\\\\d{4})-(((0)?[1-9])|(1[0-2]))-(((0)?[1-9])|([1-2][0-9])|(3[0-1]))T' +\n '(((0)?[0-9]|1[0-9]|20|21|22|23):([0-5]?[0-9])((:([0-5]?[0-9]))?(.([0-9]{1,6}))?)?)?(Z|([+-])' +\n '((0)?[0-9]|1[0-9]|20|21|22|23):?([0-5]?[0-9]))$'\n)\n\nconst dateFormatRegs = {\n 'y{1,4}': /y{1,4}/,\n 'M{1,2}': /M{1,2}/,\n 'd{1,2}': /d{1,2}/,\n 'h{1,2}': /h{1,2}/,\n 'H{1,2}': /H{1,2}/,\n 'm{1,2}': /m{1,2}/,\n 's{1,2}': /s{1,2}/,\n 'S{1,3}': /S{1,3}/,\n 'Z{1,1}': /Z{1,1}/\n}\n\nconst maxDateValues = {\n YEAR: 9999,\n MONTH: 11,\n DATE: 31,\n HOUR: 23,\n MINUTE: 59,\n SECOND: 59,\n MILLISECOND: 999\n}\n\nconst timezone1 = '-12:00,-11:00,-10:00,-09:30,-08:00,-07:00,-06:00,-05:00,-04:30,-04:00,-03:30,-02:00,-01:00'\nconst timezone2 = '-00:00,+00:00,+01:00,+02:00,+03:00,+03:30,+04:00,+04:30,+05:00,+05:30,+05:45,+06:00'\nconst timezone3 = '+06:30,+07:00,+08:00,+09:00,+10:00,+10:30,+11:00,+11:30,+12:00,+12:45,+13:00,+14:00'\nconst timezones = [].concat(timezone1.split(','), timezone2.split(','), timezone3.split(','))\n\nconst getTimezone = (date) => {\n const timezoneoffset = 0 - date.getTimezoneOffset() / 60\n let timezone\n\n if (timezoneoffset === 0) {\n timezone = 'Z'\n } else if (timezoneoffset > 0) {\n timezone = '+' + (timezoneoffset > 10 ? timezoneoffset : '0' + timezoneoffset) + '00'\n } else {\n timezone = (timezoneoffset < -10 ? timezoneoffset : '-0' + -timezoneoffset) + '00'\n }\n\n return timezone\n}\n\n/**\n * 判断年份是否为闰年。\n *\n * isLeapYear(2017) // false\n * isLeapYear(2000) // true\n *\n * @param {Number} year 年份\n * @returns {Boolean}\n */\nexport const isLeapYear = (year) => year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)\n\nconst getMilliseconds = (milliseconds) =>\n milliseconds > maxDateValues.MILLISECOND ? Number(String(milliseconds).substring(0, 3)) : milliseconds\n\nconst getDateFromData = ({ year, month, date, hours, minutes, seconds, milliseconds }) => {\n let daysInMonth = daysInMonths[month]\n\n if (isLeapYear(year) && month === 1) {\n daysInMonth += 1\n }\n\n if (date <= daysInMonth) {\n return new Date(year, month, date, hours, minutes, seconds, getMilliseconds(milliseconds))\n }\n}\n\nconst yyyymmddDateParser = (m) => {\n /* istanbul ignore else */\n if (m.length === 23) {\n const year = Number(m[1])\n const month = m[3] - 1\n const date = Number(m[9] || 1)\n const hours = m[15] || 0\n const minutes = m[17] || 0\n const seconds = m[20] || 0\n const milliseconds = m[22] || 0\n\n return getDateFromData({\n date,\n year,\n hours,\n month,\n seconds,\n minutes,\n milliseconds\n })\n }\n}\n\nconst mmddyyyyDateParser = (m) => {\n /* istanbul ignore else */\n if (m.length === 22) {\n const year = Number(m[12])\n const month = m[1] - 1\n const date = Number(m[6] || 1)\n const hours = m[14] || 0\n const minutes = m[16] || 0\n const seconds = m[19] || 0\n const milliseconds = m[21] || 0\n\n return getDateFromData({\n year,\n month,\n date,\n hours,\n minutes,\n seconds,\n milliseconds\n })\n }\n}\n\nconst iso8601DateParser = (m) => {\n if (m.length !== 25) {\n return\n }\n const year = Number(m[1])\n const month = m[2] - 1\n const date = Number(m[6])\n const offset = new Date(year, month, date).getTimezoneOffset()\n const hours = m[12] || 0\n const minutes = m[14] || 0\n const seconds = m[17] || 0\n const milliseconds = m[19] || 0\n let timeZone = m[20]\n const sign = m[21]\n const offsetHours = m[22] || 0\n const offsetMinutes = m[24] || 0\n let daysInMonth = daysInMonths[month]\n let actHours\n let actMinutes\n if (isLeapYear(year) && month === 1) {\n daysInMonth += 1\n }\n if (date <= daysInMonth) {\n if (timeZone === 'Z') {\n actHours = hours - offset / 60\n actMinutes = minutes\n } else {\n if (!timeZone.includes(':')) {\n timeZone = timeZone.substr(0, 3) + ':' + timeZone.substr(3)\n }\n if (!timezones.includes(timeZone)) {\n return\n }\n\n actHours = sign === '+' ? hours - offsetHours - offset / 60 : Number(hours) + Number(offsetHours) - offset / 60\n actMinutes = sign === '+' ? minutes - offsetMinutes : Number(minutes) + Number(offsetMinutes)\n }\n\n return new Date(year, month, date, actHours, actMinutes, seconds, getMilliseconds(milliseconds))\n }\n}\n\nconst dateParsers = [\n [yyyymmddReg, yyyymmddDateParser],\n [mmddyyyyReg, mmddyyyyDateParser],\n [iso8601Reg, iso8601DateParser]\n]\n\nconst parseDate = (str) => {\n for (let i = 0, len = dateParsers.length; i < len; i++) {\n const m = dateParsers[i][0].exec(str)\n\n if (m && m.length > 0) {\n return dateParsers[i][1](m)\n }\n }\n}\n\nconst matchDateArray = (arr, value, text) => {\n if (text) {\n switch (text) {\n case 'yyyy':\n case 'yy':\n arr[0] = value\n break\n case 'M':\n case 'MM':\n arr[1] = value - 1\n break\n case 'd':\n case 'dd':\n arr[2] = value\n break\n case 'h':\n case 'hh':\n arr[3] = value\n break\n case 'm':\n case 'mm':\n arr[4] = value\n break\n case 's':\n case 'ss':\n arr[5] = value\n break\n case 'S':\n case 'SS':\n case 'SSS':\n arr[6] = value\n break\n default:\n break\n }\n }\n}\n\nconst getDateArray = (str, dateFormat) => {\n const arr = [0, -1, 0, 0, 0, 0]\n\n if (str.length !== dateFormat.length) {\n return arr\n }\n\n let valuePos = 0\n let textPos = 0\n\n for (let i = 0, len = str.length; i < len; i++) {\n const charValue = str.substr(i, 1)\n const notNum = isNaN(Number(charValue)) || charValue?.trim() === ''\n\n if ((notNum && charValue === dateFormat.substr(i, 1)) || i === len - 1) {\n let value\n let text\n\n if (notNum) {\n value = str.substring(valuePos, i)\n valuePos = i + 1\n const end = dateFormat.indexOf(charValue, textPos)\n\n text = dateFormat.substring(textPos, end === -1 ? dateFormat.length : end)\n\n textPos = end + 1\n } else {\n value = str.substring(valuePos, len)\n text = dateFormat.substring(textPos, len)\n }\n\n if (value.length === text.length || value) {\n matchDateArray(arr, value, text)\n }\n }\n }\n\n return arr\n}\n\nconst invalideTime = (time, min, max) => isNaN(time) || time < min || time > max\n\nconst invalideValue = ({ year, month, date, hours, minutes, seconds, milliseconds }) =>\n invalideTime(year, 0, maxDateValues.YEAR) ||\n invalideTime(month, 0, maxDateValues.MONTH) ||\n invalideTime(date, 0, maxDateValues.DATE) ||\n invalideTime(hours, 0, maxDateValues.HOUR) ||\n invalideTime(minutes, 0, maxDateValues.MINUTE) ||\n invalideTime(seconds, 0, maxDateValues.SECOND) ||\n invalideTime(milliseconds, 0, maxDateValues.MILLISECOND)\n\nconst innerParse = (value, dateFormat) => {\n if (typeof dateFormat === 'string') {\n const arr = getDateArray(value, dateFormat)\n const year = Number(arr[0])\n const month = Number(arr[1])\n const date = Number(arr[2] || 1)\n const hours = Number(arr[3] || 0)\n const minutes = Number(arr[4] || 0)\n const seconds = Number(arr[5] || 0)\n const milliseconds = Number(arr[6] || 0)\n\n if (\n invalideValue({\n year,\n month,\n date,\n hours,\n minutes,\n seconds,\n milliseconds\n })\n ) {\n return\n }\n\n return getDateFromData({\n year,\n date,\n month,\n minutes,\n hours,\n milliseconds,\n seconds\n })\n } else {\n return parseDate(value)\n }\n}\n\n/**\n * 将字符串或数字转换成 Date 类型。\n *\n * toDate('2008/02/02') // new Date(2008, 1, 2)\n * toDate(Date.UTC(2008, 1, 2)) // new Date(Date.UTC(2008, 1, 2))\n * toDate('2008/2/2', 'yyyy/M/d') // new Date(2008, 1, 2)\n * toDate('2008/02') // new Date(2008, 1, 1)\n * toDate('02/2008') // new Date(2008, 1, 1)\n * toDate('2008-02-01T20:08+08:00') // new Date(Date.UTC(2008, 0, 31, 16))\n * toDate('2008-02-01T04:08-08:00') // new Date(Date.UTC(2008, 1, 1, 8))\n *\n * @param {String|Number} value 日期类型字符串或数字\n * @param {String} [dateFormat] 转换格式\n *\n * 当 value 为字符串类型时,如果不提供,则尽可能按常见格式去解析。\n * 常见格式为 yyyy[/-]MM[/-]dd hh:mm:ss.SSS, MM[/-]dd [/-]yyyy hh:mm:ss.SSS 及 ISO8601 时间格式。\n *\n * 如果提供,则按具体格式严格匹配解析,并且年份必须为4位。\n * - yyyy 代表年份\n * - M 或 MM 代表1位或2位的月份\n * - d 或 dd 代表1位或2位的天数\n * - h 或 hh 代表24小时的1位或2位的小时\n * - m 或 mm 代表1位或2位的分钟,\n * - s 或 ss 代表1位或2位的秒\n * - S 或 SS 或 SSS 代表1位或2位或3位的毫秒\n *\n * @param {String} [minDate] 最小时间,默认为 0001-01-01 00:00:00.000\n * @returns {Date}\n */\nexport const toDate = (value, dateFormat, minDate) => {\n let date\n\n if (isNumber(value)) {\n date = new Date(value)\n } else if (typeof value === 'string') {\n date = innerParse(value, dateFormat)\n }\n\n if (minDate) {\n const min = (minDate && toDate(minDate)) || new Date(1, 1, 1, 0, 0, 0)\n return date && date < min ? min : date\n }\n\n return date\n}\n\n/**\n * 将 Date 实例转换成日期字符串。\n * 当 date 为日期字符串时,如果只有2个参数,则第2个参数为格式化后的格式化字符串\n * 如果有3个参数,则第2个参数为转换的格式化参数,第3个参数为格式化后的格式化参数\n *\n * let date = new Date(2014, 4, 4, 1, 2, 3, 4)\n * format(date) // \"2014/05/04 01:02:03\"\n * format(date, 'yyyy/MM/dd hh:mm:ss.SSS') // \"2014/05/04 01:02:03.004\"\n * format(date, 'yyyy/MM/dd hh:mm:ss.SSSZ') // \"2014/05/04 01:02:03.004+0800\"\n * format(date, 'yyyy年MM月dd日 hh时mm分ss秒SSS毫秒') // \"2014年05月04日 01时02分03秒004毫秒\"\n * format('2008/01/02', 'yyyy/MM/dd hh:mm:ss.SSS') // \"2008/02/02 00:00:00.000\"\n * format('2014/01/02/03/04/05/06', 'yyyy/MM/dd/hh/mm/ss', 'yyyy年MM月dd日 hh时mm分ss秒') // \"2014年01月02日 03时04分05秒006毫秒\"\n *\n * @param {Date|String} date Date 实例或日期字符串\n * @param {String} [dateFormat='yyyy/MM/dd hh:mm:ss'] 转换格式\n *\n * 常见格式为 yyyy[/-]MM[/-]dd hh:mm:ss.SSS, MM[/-]dd [/-]yyyy hh:mm:ss.SSS 及 ISO8601 时间格式。\n *\n * 如果提供,则按具体格式严格匹配解析,并且年份必须为4位。\n * - yyyy 代表年份\n * - M 或 MM 代表1位或2位的月份\n * - d 或 dd 代表1位或2位的天数\n * - h 或 hh 代表24小时的1位或2位的小时\n * - m 或 mm 代表1位或2位的分钟,\n * - s 或 ss 代表1位或2位的秒\n * - S 或 SS 或 SSS 代表1位或2位或3位的毫秒\n *\n * @returns {String}\n */\nexport const format = function (date, dateFormat = 'yyyy/MM/dd hh:mm:ss') {\n if (isDate(date)) {\n if (typeof dateFormat === 'string') {\n const o = {\n 'y{1,4}': date.getFullYear(),\n 'M{1,2}': date.getMonth() + 1,\n 'd{1,2}': date.getDate(),\n 'h{1,2}': date.getHours(),\n 'H{1,2}': date.getHours(),\n 'm{1,2}': date.getMinutes(),\n 's{1,2}': date.getSeconds(),\n 'S{1,3}': date.getMilliseconds(),\n 'Z{1,1}': getTimezone(date)\n }\n\n Object.keys(o).forEach((k) => {\n const m = dateFormat.match(dateFormatRegs[k])\n\n if (k && m && m.length) {\n dateFormat = dateFormat.replace(m[0], k === 'Z{1,1}' ? o[k] : fillChar(o[k].toString(), m[0].length))\n }\n })\n\n return dateFormat\n }\n } else if (typeof date === 'string' && arguments.length >= 2) {\n let afterFormat = dateFormat\n\n if (arguments.length === 2) {\n dateFormat = undefined\n } else {\n afterFormat = arguments[2]\n }\n\n const dateValue = toDate(date, dateFormat)\n return dateValue ? format(dateValue, afterFormat) : ''\n }\n}\n\n/**\n * 将当前操作的时间变更时区,主要用于转换一个其他时区的时间。\n *\n * var date = new Date(2017, 0, 1)\n * getDateWithNewTimezone(date, 0, -2)\n *\n * @param {Date} date Date 实例或日期字符串\n * @param {Number} otz 原时区 -12~13\n * @param {Number} ntz 目标时区 -12~13 默认为当前时区\n * @param {Boolean} TimezoneOffset 时区偏移量\n * @returns {Date}\n */\nexport const getDateWithNewTimezone = (date, otz, ntz, timezoneOffset = 0) => {\n if (!isDate(date) || !isNumeric(otz) || !isNumeric(ntz) || !isNumeric(timezoneOffset)) {\n return\n }\n\n const otzOffset = -otz * 60\n const ntzOffset = -ntz * 60\n const dstOffeset = timezoneOffset * 60\n const utc = date.getTime() + otzOffset * 60000\n\n return new Date(utc - (ntzOffset - dstOffeset) * 60000)\n}\n\n/**\n * 按时区将 Date 实例转换成字符串。\n *\n * toDateStr(new Date(2017, 0, 1, 12, 30), 'yyyy/MM/dd hh:mm', 3) // \"2017/01/01 15:30\"\n * toDateStr('2008/01/02', 'yyyy/MM/dd hh:mm', 3) // \"2008/01/02 03:00\"\n *\n * @param {Date|String} date Date 实例或日期字符串\n * @param {String} dateFormat 转换格式\n * @param {Number} [timezone] 时区\n * @returns {String}\n */\nexport const toDateStr = (date, dateFormat, timezone) => {\n if (date && isNumeric(timezone)) {\n timezone = parseFloat(parseFloat(timezone).toFixed(2))\n\n date = getDateWithNewTimezone(isDate(date) ? date : new Date(toDate(date)), 0, timezone)\n }\n\n return format(date, dateFormat)\n}\n\n/**\n * 获取日期所在周的第一天,默认周一为第一天(可扩展周日为第一天)。\n *\n * getWeekOfFirstDay() // 返回当前日期所在周的周一同一时间\n * getWeekOfFirstDay(true) // 返回当前日期所在周的周日同一时间\n * getWeekOfFirstDay(new Date(2019, 8, 5)) // new Date(2019, 8, 2)\n * getWeekOfFirstDay(new Date(2019, 8, 5)), true) // new Date(2019, 8, 1)\n *\n * @param {Date} [date=new Date()] date 日期实例,默认当天\n * @param {Boolean} [isSunFirst] 是否设置周日为第一天,非必填\n * @returns {Date}\n */\nexport const getWeekOfFirstDay = (date, isSunFirst) => {\n typeof date === 'boolean' && (isSunFirst = date)\n isDate(date) || (date = new Date())\n\n const day = date.getDay()\n let dayOfMonth = date.getDate()\n\n if (day === 0) {\n !isSunFirst && (dayOfMonth -= 6)\n } else {\n dayOfMonth = dayOfMonth - day + (!isSunFirst && 1)\n }\n\n return new Date(date.getFullYear(), date.getMonth(), dayOfMonth)\n}\n\nconst TZRE = /(-|\\+)(\\d{2}):?(\\d{2})$/\n\nexport const getLocalTimezone = () => 0 - new Date().getTimezoneOffset() / 60\n\nexport const getStrTimezone = (value) => {\n const localTimeZone = getLocalTimezone()\n const match = typeof value === 'string' && value.match(TZRE)\n\n if (match) {\n const minoffset = Number(match[2]) + Number(match[3]) / 60\n value = minoffset * `${match[1]}1`\n }\n\n if (isNumber(value) && value >= -12 && value <= 12) {\n return value\n }\n\n return localTimeZone\n}\n","/**\n * 下拉框显隐\n * @param state 组件响应式数据\n * @param isShow 是否展示下拉框, 默认展示\n */\nexport const showDropdown = (state, isShow = true) => {\n if (isShow) {\n state.visibleTimer = setTimeout(() => {\n state.visible = true\n }, 0)\n } else {\n clearTimeout(state.visibleTimer)\n state.visibleTimer = null\n state.visible = false\n }\n}\n\n/**\n * 编辑下拉框显隐\n * @param state 组件响应式数据\n * @param isShow 是否展示编辑下拉框, 默认展示\n */\nexport const showPopover = (state, isShow = true) => {\n if (!state.instance) return\n state.popoverVisible = isShow\n const { dropdownRef } = state.instance\n\n if (isShow && dropdownRef.state.visible) {\n clearTimeout(Number(dropdownRef.state.timeout))\n dropdownRef.state.timeout = null\n dropdownRef.state.visible = false\n }\n}\n","export const debounce = (func: Function, delay = 200) => {\n let timer: ReturnType<typeof setTimeout> | null = null;\n\n const debounced = function (this: any, ...args: any) {\n if (timer) clearTimeout(timer);\n timer = setTimeout(() => {\n func.apply(this, args);\n timer = null;\n }, delay);\n };\n\n // 添加取消方法\n debounced.cancel = () => {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n };\n\n return debounced;\n}\n\nexport const isNumber = (value: any) => parseFloat(value).toString() !== 'NaN'\n\n/**\n * 深拷贝方法\n * @param obj 元数据\n * @returns\n */\nexport const deepClone = (obj) => {\n const objClone = Array.isArray(obj) ? [] : {}\n if (obj && typeof obj === 'object') {\n const keys = Object.keys(obj)\n if (keys.length) {\n keys.forEach((key) => {\n if (obj[key] && typeof obj[key] === 'object') {\n objClone[key] = deepClone(obj[key])\n } else {\n objClone[key] = obj[key]\n }\n })\n } else {\n return obj\n }\n }\n\n return objClone\n}\n\n/**\n * 过滤复制对象的key值\n * @param obj 复制对象\n * @param keysToOmit key值\n */\nexport const omitObj = (obj, keysToOmit = ['mergeTag', 'options', 'idMapKey']) => {\n const result = { ...obj }\n keysToOmit.forEach((key) => {\n delete result[key]\n })\n return result\n}\n\n","import type { ISearchBoxNewTag } from '../index.type.ts'\nimport { deepClone } from './index.ts'\nimport { showPopover } from './dropdown.ts'\n\n/**\n * 判断是否已选择此标签\n * @param state searchbox的state变量\n * @param itemValue 标签的value值\n * @param itemLabel 标签的label值,可选参数,默认为空字符串,一般用于当prevItem.label为空时\n * @return 已选择则返回true,未选择则返回false\n */\nexport const hasTagItem = (state, itemValue, itemLabel = '') => {\n const { valueMap, prevItem } = state\n const value = (prevItem.label || itemLabel) + itemValue\n return valueMap.has(value)\n}\n\n/**\n * 清空输入框的值\n * @param state searchbox的state变量\n */\nexport const resetInput = (state) => {\n state.propItem = {}\n state.inputValue = ''\n}\n\n/**\n * update:modelValue和change事件\n * @param emit vue的api\n * @param state searchbox的state变量\n * @param args 其他可选参数:\n * @param tagList 尾部添加的新标签数组\n * @param index 替换某标签的索引\n * @param newTag 表示替换的新标签,主要和索引共用\n * @param newValue 表示替换全部的model-value值\n * @param oldValue 表示旧的model-value值\n */\nexport const emitChangeModelEvent = ({ emit, state, nextTick, ...args }) => {\n showPopover(state, false)\n const { tagList = null, index = -1, newTag = null, newValue = null, oldValue = null, isEdit } = args\n if (!isEdit) {\n resetInput(state)\n }\n if (!tagList && index === -1 && !newValue) {\n return\n }\n\n const oldVal = oldValue || deepClone(state.innerModelValue)\n let innerModelValue = []\n \n if (newValue) {\n innerModelValue = [...newValue]\n } else if (index !== -1) {\n innerModelValue = [...state.innerModelValue]\n newTag ? innerModelValue.splice(index, 1, newTag) : innerModelValue.splice(index, 1)\n } else {\n innerModelValue = [...state.innerModelValue, ...tagList]\n }\n \n // 直接赋值新数组,确保 Vue 2 和 Vue 3 都能触发响应式更新\n state.innerModelValue = innerModelValue\n \n // 同步emit,确保立即触发 - Vue 2 需要立即更新才能逐步显示\n emit('update:modelValue', deepClone(innerModelValue))\n emit('change', deepClone(innerModelValue), oldVal)\n}\n\n/**\n * 创建新标签,防止多个地方创建的标签不一致,缺少某些属性\n * @param newTag 新标签对象\n * @return 生成的新标签对象\n */\nexport const createNewTag = (newTag: ISearchBoxNewTag) => newTag\n\n/**\n * 获取元素的唯一标识\n * @param props 组件入参对象\n * @param prevItem 当前标签父级对象\n * @param item 要生成的新标签对象\n * @return 此标签的唯一标识\n */\nexport const getTagId = (props, prevItem, item) => {\n const idKey = prevItem.idMapKey || props.idMapKey\n return item && item[idKey] !== undefined ? { [idKey]: item[idKey] } : null\n}\n","import { showDropdown } from '../utils/dropdown.ts'\nimport { emitChangeModelEvent } from '../utils/tag.ts'\nimport { deepClone } from '../utils/index.ts'\n\nexport function useTag({ props, state, emit, nextTick }) {\n let lastInputValue = deepClone(state.inputValue)\n\n const changeIsChecked = (tag) => {\n if (tag) {\n const parent = state.recordItems.find((item) => item.label === tag.label)\n if (parent && parent.options) {\n const child = parent.options.find((item) => item.label === tag.value)\n child && (child.isChecked = false)\n }\n }\n }\n\n const deleteTag = (tag) => {\n showDropdown(state, false)\n changeIsChecked(tag)\n const newValue = props.modelValue.filter((item) => item !== tag)\n emitChangeModelEvent({ emit, state, nextTick, newValue })\n }\n\n const clearTag = () => {\n showDropdown(state, false)\n props.modelValue.forEach((item) => changeIsChecked(item))\n state.propItem = {}\n state.inputValue = ''\n emitChangeModelEvent({ emit, state, nextTick, newValue: [] })\n emit('clear')\n }\n\n const backspaceDeleteTag = () => {\n if (state.inputValue) {\n return\n }\n if (state.propItem.label) {\n state.propItem = {}\n return\n }\n if (lastInputValue === '' && state.inputValue === '') {\n showDropdown(state, false)\n const lastIndex = props.modelValue.length - 1\n changeIsChecked(props.modelValue[lastIndex])\n const newValue = state.innerModelValue.slice(0, props.modelValue.length - 1)\n emitChangeModelEvent({ emit, state, nextTick, newValue })\n }\n lastInputValue = state.inputValue\n if (state?.instance?.refs?.inputRef?.$el) {\n state.instance.refs.inputRef.$el.click()\n }\n }\n\n return {\n deleteTag,\n clearTag,\n backspaceDeleteTag\n }\n}\n","import { createNewTag, getTagId } from './tag.ts'\nimport { isNumber, omitObj } from './index.ts'\n\n/**\n * 校验正常标签的值,并返回相应的新标签\n * @param instance searchbox 的 instance\n * @param state searchbox 的 state\n * @param props searchbox 的 props\n * @return 验证通过则返回新标签对象,否则返回null\n */\nexport const getVerifyTag = async (instance, state, props) => {\n const { prevItem, inputEditValue } = state\n const { operators } = prevItem\n const rest = omitObj(prevItem)\n let newTag = null\n let isPass = true\n\n await instance.$refs.formRef.validateField(['inputEditValue'], (errMsg) => {\n if (errMsg) {\n isPass = false\n }\n })\n\n if (isPass) {\n let id = null\n const operator = state.operatorValue && operators ? { operator: state.operatorValue } : null\n let value = inputEditValue\n const otherAttr = {}\n // 多选\n if (Array.isArray(inputEditValue)) {\n otherAttr.options = []\n value = ''\n inputEditValue.forEach((editValue) => {\n const item = state.currentEditValue.find((item) => item.label === editValue)\n const label = item?.label || editValue\n value = !value ? label : `${value} | ${label}`\n if (item) {\n const itemId = getTagId(props, prevItem, item)\n otherAttr.options.push({ label, ...itemId })\n } else {\n otherAttr.options.push({ label })\n }\n })\n } else if (Array.isArray(state.currentEditValue)) {\n // 单选\n const item = state.currentEditValue.find((item) => item.label === value)\n id = getTagId(props, prevItem, item)\n }\n\n newTag = createNewTag({ ...rest, label: state.selectValue, ...operator, value, ...id, ...otherAttr })\n }\n\n return newTag\n}\n\n/**\n * 校验 numRange 的值,并返回相应的新标签\n * @param instance searchbox 的 instance\n * @param state searchbox 的 state\n * @param props searchbox 的 props\n * @return 验证通过则返回新标签对象,否则返回null\n */\nexport const getVerifyNumTag = async (instance, state, props) => {\n const { prevItem } = state\n const minNum = `min${prevItem.field}`\n const maxNum = `max${prevItem.field}`\n const start = state[minNum]\n const end = state[maxNum]\n const verifyProps = [minNum, maxNum]\n let isPass = true\n let newTag = null\n await instance.$refs.formRef.validateField(verifyProps, (errMsg) => {\n if (errMsg) {\n isPass = false\n }\n })\n\n if (isPass) {\n const { field, label: prevLabel, unit, type, operators } = prevItem\n const label = unit ? `${prevLabel}(${unit})` : prevLabel\n let value = ''\n if (start && end) {\n value = `${start}-${end}`\n } else {\n value = start ? `≥${start}` : `≤${end}`\n }\n const id = getTagId(props, prevItem, prevItem)\n const operator = state.operatorValue && operators ? { operator: state.operatorValue } : null\n newTag = createNewTag({ type, field, label, value, ...id, start, end, ...operator })\n }\n\n return newTag\n}\n\n/**\n * 校验 dateRange datetimeRange 的值,并返回相应的新标签\n * @param instance searchbox 的 instance\n * @param state searchbox 的 state\n * @param props searchbox 的 props\n * @param isDateTimeType 是否 datetimeRange\n * @return 验证通过则返回新标签对象,否则返回null\n */\nexport const getVerifyDateTag = async (instance, state, props, isDateTimeType) => {\n const { prevItem, startDate, endDate, startDateTime, endDateTime } = state\n let start = null\n let end = null\n let isPass = true\n let newTag = null\n let verifyProps = null\n if (isDateTimeType) {\n start = startDateTime\n end = endDateTime\n verifyProps = ['startDateTime', 'endDateTime']\n } else {\n start = startDate\n end = endDate\n verifyProps = ['startDate', 'endDate']\n }\n\n await instance.$refs.formRef.validateField(verifyProps, (errMsg) => {\n if (errMsg) {\n isPass = false\n }\n })\n\n if (isPass) {\n const { operators } = prevItem\n const rest = omitObj(prevItem)\n let value = ''\n if (start && end) {\n if (start > end) {\n return\n } else if (start === end) {\n value = start\n } else {\n value = `${start}-${end}`\n }\n } else {\n value = start ? `≥${start}` : `≤${end}`\n }\n const id = getTagId(props, prevItem, prevItem)\n const operator = state.operatorValue && operators ? { operator: state.operatorValue } : null\n newTag = createNewTag({ ...rest, value, start, end, ...id, ...operator })\n }\n\n return newTag\n}\n\n/**\n * 按需加载 state 里 numRange 类型的变量,按需加载校验规则\n * @param state searchbox 的 state\n * @param item 当前选择的 item 值\n */\nexport const setStateNumRange = (state, item, t) => {\n const { prevItem } = state\n const { field, start, end, min = prevItem.min, max = prevItem.max } = item\n const nextMinNum = `min${field}`\n const nextMaxNum = `max${field}`\n if (state.curMinNumVar !== nextMinNum || state.curMaxNumVar !== nextMaxNum) {\n delete state[state.curMinNumVar]\n delete state[state.curMaxNumVar]\n delete state.formRules[state.curMinNumVar]\n delete state.formRules[state.curMaxNumVar]\n state.curMinNumVar = nextMinNum\n state.curMaxNumVar = nextMaxNum\n }\n state[state.curMinNumVar] = start\n state[state.curMaxNumVar] = end\n const { curMinNumVar, curMaxNumVar } = state\n const minIsNumber = isNumber(min)\n const maxIsNumber = isNumber(max)\n if (minIsNumber || maxIsNumber) {\n state.formRules[curMinNumVar] = {\n validator: (rule, value, cb) => {\n const valueIsNumber = isNumber(value)\n\n if (\n (!valueIsNumber && isNumber(state[curMaxNumVar])) ||\n (valueIsNumber &&\n ((minIsNumber && !maxIsNumber && value >= min) ||\n (!minIsNumber && maxIsNumber && value <= max) ||\n (value >= min && value <= max)))\n ) {\n cb()\n } else {\n state.numberShowMessage = Boolean(value || state[curMaxNumVar])\n cb(new Error(t('tvp.tvpSearchbox.rangeMinErr', [min, max])))\n }\n }\n }\n state.formRules[curMaxNumVar] = {\n validator: (rule, value, cb) => {\n const MinValueIsNumber = isNumber(state[curMinNumVar])\n const curMin = MinValueIsNumber && min < state[curMinNumVar] ? Number(state[curMinNumVar]) : min\n const curMinIsNumber = isNumber(curMin)\n const valueIsNumber = isNumber(value)\n\n if (\n (!valueIsNumber && MinValueIsNumber) ||\n (valueIsNumber &&\n ((curMinIsNumber && !maxIsNumber && value >= curMin) ||\n (!curMinIsNumber && maxIsNumber && value <= max) ||\n (value >= curMin && value <= max)))\n ) {\n cb()\n } else if (!valueIsNumber && !MinValueIsNumber) {\n cb(new Error(t('tvp.tvpSearchbox.rangeNumberTitle')))\n } else {\n cb(new Error(t('tvp.tvpSearchbox.rangeMaxErr')))\n }\n }\n }\n } else {\n state.formRules[curMaxNumVar] = {\n validator: (rule, value, cb) => {\n const curMin = state[curMinNumVar]\n const valueIsNumber = isNumber(value)\n const curMinIsNumber = isNumber(curMin)\n\n if (\n (valueIsNumber && !curMinIsNumber) ||\n (!valueIsNumber && curMinIsNumber) ||\n (valueIsNumber && curMinIsNumber && value >= Number(curMin))\n ) {\n cb()\n } else if (!valueIsNumber && !curMinIsNumber) {\n cb(new Error(t('tvp.tvpSearchbox.rangeNumberTitle')))\n } else {\n cb(new Error(t('tvp.tvpSearchbox.rangeMaxErr')))\n }\n }\n }\n }\n}\n","import { hasTagItem, resetInput, createNewTag, getTagId, emitChangeModelEvent } from '../utils/tag.ts'\nimport { showDropdown } from '../utils/dropdown.ts'\nimport { setStateNumRange } from '../utils/validate.ts'\nimport { deepClone, omitObj } from '../utils/index.ts'\n\nexport function useDropdown({ props, emit, state, t, format, nextTick, vm, cancelHandleInput }) {\n const instance = vm || state.instance\n const showValueItem = (item) => {\n const { start, end, type } = item\n state.backupList = item.options\n if (type === 'numRange') {\n setStateNumRange(state, item, t)\n } else if (type === 'dateRange') {\n const { dateRangeFormat } = state\n if (!state.startDate && start) {\n const newStart = format(start, dateRangeFormat)\n state.startDate = state.endDate < newStart ? null : newStart\n }\n if (!state.endDate && end) {\n const newEnd = format(end, dateRangeFormat)\n state.endDate = newEnd < state.startDate ? null : newEnd\n }\n } else if (type === 'datetimeRange') {\n const { datetimeRangeFormat } = state\n if (!state.startDateTime && start) {\n const newStart = format(start, datetimeRangeFormat)\n state.startDateTime = state.endDateTime < newStart ? null : newStart\n }\n if (!state.endDateTime && end) {\n const newEnd = format(end, datetimeRangeFormat)\n state.endDateTime = newEnd < state.startDateTime ? null : newEnd\n }\n } else if (state.backupList && type === 'checkbox') {\n state.filterList = state.backupList\n state.checkboxGroup = []\n state.backupList?.forEach((subItem) => {\n if (hasTagItem(state, subItem.label)) {\n state.checkboxGroup.push(`${item.label}${subItem.label}`)\n }\n subItem.isFilter = false\n })\n }\n\n if (type !== 'checkbox' && state.backupList?.length) {\n state.backupList?.forEach((option) => {\n option.isFilter = false\n option.isChecked = hasTagItem(state, option.label)\n })\n }\n\n state.currentOperators = null\n if (!state.backupList && !['dateRange', 'datetimeRange', 'numRange', 'custom'].includes(type)) {\n showDropdown(state, false)\n } else {\n showDropdown(state)\n }\n }\n\n const selectPropItem = (item) => {\n const { field, label } = item\n\n // 创建新对象而不是直接修改属性,确保 Vue 2 响应式检测\n state.propItem = { ...state.propItem, label }\n\n emit('first-level-select', field)\n\n const inputRef = instance.$refs?.inputRef\n state.prevItem = item\n state.backupPrevItem = item\n\n // noValue 类型:直接创建空值标签,无需打开二级面板\n if (item.type === 'noValue') {\n state.operatorValue = ':'\n updateModelValue(item, item, label, '')\n return\n }\n\n const { operators } = item\n if (operators?.length) {\n state.operatorValue = ''\n state.currentOperators = operators\n showDropdown(state)\n } else {\n state.operatorValue = ':'\n showValueItem(item)\n }\n state.inputValue = ''\n inputRef.focus()\n }\n\n const setOperator = (operator) => {\n state.operatorValue = operator\n showValueItem(state.prevItem)\n }\n\n /**\n * 更新modelValue值\n * @param prevItem items数组的第一层元素信息,用来识别此类型标签的某些属性作相应处理\n * @param item 当前选中的标签值信息\n * @param label 标签左侧的label\n * @param value 标签右侧值的value\n */\n const updateModelValue = (prevItem, item, label, value) => {\n const { replace, operators, mergeTag } = prevItem\n const rest = omitObj(prevItem)\n const { indexMap } = state\n const index = indexMap.get(label)\n const id = getTagId(props, prevItem, item)\n const operator = state.operatorValue && operators ? { operator: state.operatorValue } : null\n let newTag = null\n\n if (mergeTag) {\n const options = { label: value, ...id }\n if (index >= 0) {\n const newValue = `${state.innerModelValue[index].value} | ${value}`\n const newOptions = [...state.innerModelValue[index].options, options]\n newTag = createNewTag({ ...state.innerModelValue[index], value: newValue, options: newOptions })\n } else {\n newTag = createNewTag({ ...rest, label, value, options: [options] })\n }\n } else {\n newTag = createNewTag({ ...rest, label, value, ...id, ...operator })\n }\n if (hasTagItem(state, value, label)) {\n resetInput(state)\n return\n }\n showDropdown(state, false)\n\n const oldValue = deepClone(state.innerModelValue)\n let newValue = [] as any[]\n if ((replace || mergeTag) && index >= 0) {\n const cloned = [...state.innerModelValue]\n cloned.splice(index, 1)\n newValue = [...cloned, newTag]\n } else {\n newValue = [...state.innerModelValue, newTag]\n }\n emitChangeModelEvent({ emit, state, nextTick, newValue, oldValue })\n }\n /**\n * 使用输入选项\n * @param val 输入框的值\n *\n */\n const selectInputValue = (val: string) => {\n if (state.propItem?.label) {\n selectRadioItem({ label: val })\n } else {\n createTag()\n }\n }\n\n /**\n * 选中单选标签\n * @param item 选中的标签option项\n * @param isPotential 是否为选择潜在匹配项,默认否。参数可选\n */\n const selectRadioItem = (item, isPotential = false) => {\n showDropdown(state, false)\n // 潜在匹配项没有prevItem\n if (isPotential) {\n state.prevItem = item\n state.backupPrevItem = item\n }\n\n const { prevItem } = state\n const value = item.value || item.label\n const inputRef = instance.$refs?.inputRef\n if (!hasTagItem(state, value)) {\n const tagLabel = state.propItem.label || item.label\n updateModelValue(prevItem, item, tagLabel, value)\n }\n inputRef.focus()\n }\n const hasNotInputValueCreateTag = (propItem, prevItem) => {\n // 有label\n if (propItem.label) {\n // 触发 second-level-enter 事件,传递当前选中的 item 和对应的 options\n emit('second-level-enter', prevItem)\n\n if (!prevItem.options || !prevItem.options.length) {\n return\n }\n\n const firstOption = prevItem.options[0]\n if (!firstOption) {\n return\n }\n\n const hasTag = props.modelValue.find((item) => item.value === firstOption.label)\n\n if (!hasTag) {\n const label = prevItem.label\n const value = firstOption.label\n updateModelValue(prevItem, firstOption, label, value)\n return\n }\n } else {\n emit('search', state.innerModelValue)\n }\n }\n\n const newTagUpdateModelValue = (prevItem, propItem, tag) => {\n const item = state.backupList?.find((subItem) => subItem.label === tag)\n updateModelValue(prevItem, item, propItem.label, tag)\n }\n\n const hasInputValueCreateTag = (inputValue, propItem, prevItem) => {\n // 有label的情况\n if (propItem.label) {\n const { regexp, replace, type, mergeTag } = prevItem\n const tagList =\n (type !== 'checkbox' && replace) || (type === 'checkbox' && mergeTag)\n ? [inputValue]\n : inputValue.split(props.splitInputValue)\n\n // 如果配置项有 regexp 校验条件,对每个 tag 单独进行校验\n if (regexp) {\n const invalidTags = []\n for (const tag of tagList) {\n // 每个 tag 单独用 regexp 校验\n if (regexp.test(tag)) {\n newTagUpdateModelValue(prevItem, propItem, tag)\n } else {\n invalidTags.push(tag)\n }\n }\n // 当有校验不合法的值时,抛出事件\n if (invalidTags.length > 0) {\n emit('validate-error', {\n invalidValues: invalidTags,\n field: prevItem.field,\n label: prevItem.label,\n regexp: regexp.toString()\n })\n }\n // 有输入且无正则\n } else {\n for (const tag of tagList) {\n newTagUpdateModelValue(prevItem, propItem, tag)\n }\n }\n // 无label的情况\n } else {\n const { items, defaultField, defaultFieldReplace } = props\n // 先根据 regexp 匹配找到对应的配置项\n const matchedItem = items.find((item) => {\n const { regexp } = item\n return regexp && regexp.test(state.inputValue)\n })\n const defaultItem = defaultField ? items.find((item) => item.field === defaultField) : state.allTypeAttri\n const currentItem = matchedItem || defaultItem\n const normalizedCurrentItem =\n !matchedItem && defaultFieldReplace ? { ...currentItem, replace: true } : currentItem\n const { replace, type, mergeTag, regexp } = normalizedCurrentItem\n const tagList =\n (type !== 'checkbox' && replace) || (type === 'checkbox' && mergeTag)\n ? [inputValue]\n : inputValue.split(props.splitInputValue)\n\n if (currentItem?.options?.length) {\n state.backupList = [...currentItem.options]\n state.backupList?.forEach((item) => {\n const label = item.value || item.label\n if (tagList.includes(label)) {\n item.isChecked = true\n }\n })\n }\n const label = currentItem.label\n \n // 如果配置项有 regexp 校验条件,对每个 tag 单独进行校验\n if (regexp) {\n const invalidTags = []\n for (const tag of tagList) {\n // 每个 tag 单独用 regexp 校验\n if (regexp.test(tag)) {\n updateModelValue(normalizedCurrentItem, {}, label, tag)\n } else {\n invalidTags.push(tag)\n }\n }\n // 当有校验不合法的值时,抛出事件\n if (invalidTags.length > 0) {\n emit('validate-error', {\n invalidValues: invalidTags,\n field: normalizedCurrentItem.field,\n label: normalizedCurrentItem.label,\n regexp: regexp.toString()\n })\n }\n } else {\n for (const tag of tagList) {\n updateModelValue(normalizedCurrentItem, {}, label, tag)\n }\n }\n }\n }\n\n const createTag = () => {\n const { inputValue, propItem, prevItem } = state\n // 取消 handleInput 的防抖,防止快速输入后回车导致面板弹出\n if (cancelHandleInput) {\n cancelHandleInput()\n }\n showDropdown(state, false)\n if (!inputValue) {\n // 输入为空的情况\n hasNotInputValueCreateTag(propItem, prevItem)\n } else {\n // 输入不为空的情况\n const { maxlength } = props\n if (maxlength && maxlength < inputValue.length) {\n emit('exceed', maxlength)\n return\n }\n\n hasInputValueCreateTag(inputValue, propItem, prevItem)\n }\n }\n\n // 帮助图标点击事件\n const helpClick = () => {\n emit('help')\n }\n\n return { selectPropItem, selectRadioItem, selectInputValue, createTag, helpClick, setOperator }\n}\n","// import { ref } from 'vue'\nimport { Loading } from '@opentiny/vue'\nimport { debounce } from '../utils/index.ts'\nimport { hasTagItem, createNewTag, getTagId, emitChangeModelEvent } from '../utils/tag.ts'\nimport { showDropdown } from '../utils/dropdown.ts'\n\nconst escapeRegExp = (string) => string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n\nconst getHighlightMatch = (labelRegex, label) => {\n const match = []\n let lastIndex = 0\n let result\n\n // 当正则表达式在label中找到匹配项时,不断进行匹配\n while ((result = labelRegex.exec(label)) !== null) {\n const startIndex = result.index // 获取当前匹配项的开始位置\n const endIndex = labelRegex.lastIndex // 获取当前匹配项的结束位置\n\n // 如果当前匹配项的开始位置大于上一次匹配项的结束位置,说明中间有未匹配的部分\n if (startIndex > lastIndex) {\n match.push(label.slice(lastIndex, startIndex)) // 将未匹配的部分添加到match数组中\n }\n\n match.push(label.slice(startIndex, endIndex)) // 将当前匹配项添加到match数组中\n lastIndex = endIndex // 更新上一次匹配项的结束位置\n }\n\n // 如果最后一次匹配项的结束位置小于label的长度,说明label的末尾还有未匹配的部分\n if (lastIndex < label.length) {\n match.push(label.slice(lastIndex)) // 将未匹配的部分添加到match数组中\n }\n\n return match\n}\n\nexport function useMatch({ props, state, emit, nextTick }) {\n // const loadingInstance = ref(null)\n\n const getMatchList = async (keyword: string) => {\n state.potentialOptions = await props.potentialOptions.getMatchList(keyword)\n showDropdown(state, true)\n }\n\n const handleSearch = (e) => {\n const { recordItems, propItem } = state\n const raw = typeof e === 'string' ? e : (e && e.target && typeof e.target.value === 'string' ? e.target.value : state.inputValue || '')\n const inputValue = String(raw)?.trim()\n const { maxlength } = props\n\n if (maxlength && maxlength < inputValue.length) {\n emit('exceed', maxlength)\n return\n }\n\n if (inputValue.length === 0) {\n showDropdown(state)\n return\n }\n\n Object.keys(state.matchItems).forEach((key) => {\n state.matchItems[key].attr = []\n state.matchItems[key].attrValue = []\n })\n\n const value = escapeRegExp(inputValue)\n const patt = new RegExp(value, 'i')\n const hasItem =\n propItem.label || !value ? null : recordItems.find((item) => item.type === 'map' && patt.test(item.label))\n if (hasItem) {\n state.propItem = { ...state.propItem, label: hasItem.label }\n state.inputValue = ''\n state.prevItem = hasItem\n state.backupPrevItem = hasItem\n state.backupList = hasItem.options || []\n return\n }\n\n state.filterList = state.backupList?.filter((item) => {\n if (patt.test(item.label)) {\n delete item.isFilter\n if (hasTagItem(state, item.label)) {\n state.checkboxGroup.push(`${state.prevItem.label}${item.label}`)\n }\n\n return true\n } else {\n item.isFilter = true\n return false\n }\n })\n\n const labelRegex = new RegExp(value, 'ig')\n const hightlighStr = inputValue.toLowerCase()\n\n // 有label,只在backupList搜索\n if (state.propItem.label) {\n state.backupList?.forEach((item) => {\n item.hightlighStr = hightlighStr\n const itemLabel = item.label\n if (patt.test(itemLabel)) {\n item.match = getHighlightMatch(labelRegex, itemLabel)\n item.isFilter = false\n } else {\n item.isFilter = true\n }\n })\n // 添加默认选项,未匹配有输入值到也展示面板\n if (state.backupList?.length || inputValue) {\n showDropdown(state)\n } else {\n showDropdown(state, false)\n }\n return\n }\n\n // 无label,需要全局搜\n for (const item of recordItems) {\n const { options = [], groupKey = '0', ...rest } = item\n const itemLabel = rest.label\n if (patt.test(itemLabel)) {\n const match = getHighlightMatch(labelRegex, itemLabel)\n state.matchItems[groupKey].attr.push({ ...item, match, hightlighStr })\n }\n for (const option of options) {\n const optionLabel = state.propItem.label ? itemLabel : `${itemLabel}:${option.label}`\n if (patt.test(optionLabel)) {\n const match = getHighlightMatch(labelRegex, optionLabel)\n state.matchItems[groupKey].attrValue.push({\n ...option,\n ...rest,\n options,\n hightlighStr,\n value: option.label,\n match\n })\n }\n }\n }\n\n if (value && props.potentialOptions && props.potentialOptions.getMatchList) {\n getMatchList(value)\n } else {\n showDropdown(state)\n }\n }\n\n const handleInput = debounce(handleSearch, 500)\n\n // 保存取消函数,供外部调用\n const cancelHandleInput = () => {\n if (handleInput.cancel) {\n handleInput.cancel()\n }\n }\n\n const resetBackupList = () => {\n state.backupList?.forEach((item) => item.isFilter && delete item.isFilter)\n }\n\n const selectFirstMap = (item, isFirst) => {\n const { options } = item\n const { prevItem, propItem } = state\n if (options) {\n showDropdown(state, false)\n state.propItem = { ...state.propItem, value: `${item.label}=` }\n state.isShowTagKey = false\n state.inputValue = ''\n\n state.backupList = item.options || []\n resetBackupList()\n\n state.backupList?.forEach((subItem) => {\n const value = propItem.value + subItem.label\n subItem.isChecked = hasTagItem(state, value)\n })\n } else {\n if (item.isChecked) {\n return\n }\n\n showDropdown(state, false)\n state.isShowTagKey = true\n resetBackupList()\n const { field, type } = prevItem\n const value = propItem.value + item.label\n const id = getTagId(props, prevItem, item)\n const newTag = createNewTag({ type, field, label: propItem.label, value, ...id })\n const tagList = [newTag]\n emitChangeModelEvent({ emit, state, nextTick, tagList })\n }\n if (isFirst) {\n showDropdown(state)\n }\n }\n\n return {\n handleInput,\n selectFirstMap,\n cancelHandleInput\n }\n}\n","import { hasTagItem, createNewTag, getTagId, emitChangeModelEvent } from '../utils/tag.ts'\nimport { deepClone, omitObj } from '../utils/index.ts'\nimport { showDropdown } from '../utils/dropdown.ts'\n\nexport function useCheckbox({ props, state, emit, nextTick }) {\n const selectCheckbox = (confirm: boolean) => {\n showDropdown(state, false)\n const { checkboxGroup, prevItem, propItem } = state\n const rest = omitObj(prevItem)\n if (confirm) {\n const tagList = []\n const oldValue = deepClone(state.innerModelValue)\n const { mergeTag, operators, label: prevLabel } = prevItem\n if (mergeTag) {\n let value = ''\n const options = []\n const { indexMap } = state\n const hasTagIndex = indexMap.get(prevLabel)\n hasTagIndex !== undefined && state.innerModelValue.splice(hasTagIndex, 1)\n\n state.backupList?.forEach((item) => {\n const { label } = item\n const checkboxLabel = `${prevLabel}${label}`\n const hasItem = checkboxGroup.includes(checkboxLabel)\n if (hasItem) {\n delete item.isFilter\n const id = getTagId(props, prevItem, item)\n const newOptions = { label: item.label, ...id }\n value += !value ? label : ` | ${label}`\n options.push(newOptions)\n }\n })\n if (options.length > 0) {\n const newTag = { ...rest, value, options }\n tagList.push(newTag)\n }\n } else {\n const { valueMap } = state\n const indexList = []\n state.backupList?.forEach((item) => {\n const { label } = item\n const value = `${prevLabel}${label}`\n const hasItem = checkboxGroup.includes(value)\n if (hasItem && !hasTagItem(state, label)) {\n const id = getTagId(props, prevItem, item)\n const operator = state.operatorValue && operators ? { operator: state.operatorValue } : null\n const newTag = createNewTag({ ...rest, label: propItem.label, value: label, ...id, ...operator })\n tagList.push(newTag)\n item.isChecked = true\n } else if (!hasItem && hasTagItem(state, label)) {\n item.isChecked = false\n const index = valueMap.get(value)\n indexList.push(index)\n }\n })\n if (indexList.length) {\n const filtered = state.innerModelValue.filter((item, index) => item && !indexList.includes(index))\n // 直接通过 newValue 强制同步到 modelValue(Vue2 需要显式触发)\n emitChangeModelEvent({ emit, state, nextTick, newValue: filtered, oldValue })\n return\n }\n }\n emitChangeModelEvent({ emit, state, nextTick, tagList, oldValue })\n } else {\n state.propItem = { ...propItem, label: '' }\n state.inputValue = ''\n }\n }\n\n\n return {\n selectCheckbox,\n\n }\n}\n","import { showDropdown } from '../utils/dropdown.ts'\nimport { getVerifyDateTag } from '../utils/validate.ts'\nimport { emitChangeModelEvent } from '../utils/tag.ts'\n\nexport function useDatePicker({ props, state, emit, nextTick, vm }) {\n const instance = vm || state.instance\n const onConfirmDate = async (confirm: boolean, isDateTimeType = false) => {\n if (!confirm) {\n state.propItem = { label: '' } \n\n return\n }\n const newTag = await getVerifyDateTag(instance, state, props, isDateTimeType)\n if (newTag) {\n showDropdown(state, false)\n const newValue = props.modelValue.filter((prev) => prev.type !== newTag.type || prev.field !== newTag.field)\n newValue.push(newTag)\n emitChangeModelEvent({ emit, state, nextTick, newValue })\n } else {\n showDropdown(state)\n }\n }\n\n const handleDateShow = () => showDropdown(state)\n\n const pickerOptions = (startDate, endName = '') => ({\n disabledDate(time) {\n const { maxTimeLength = 0, min, max } = state.prevItem\n\n const endDate = state[endName]\n const curTime = time.getTime()\n // 有限制时间跨度timeLength时\n if (maxTimeLength > 0) {\n if (min || max) {\n if (endName && endDate) {\n const end = new Date(endDate).getTime()\n const start = !min && max ? end - maxTimeLength : Math.max(min.getTime(), end - maxTimeLength)\n return curTime < start || curTime > end\n } else if (!endName && startDate) {\n const start = new Date(startDate).getTime()\n const end = min && !max ? start + maxTimeLength : Math.min(max.getTime(), start + maxTimeLength)\n return curTime < start || curTime > end\n } else {\n return (min && curTime < min.getTime()) || (max && curTime > max.getTime())\n }\n } else {\n if (endName && endDate) {\n const end = new Date(endDate).getTime()\n const start = end - maxTimeLength\n return curTime < start || curTime > end\n } else if (!endName && startDate) {\n const start = new Date(startDate).getTime()\n const end = start + maxTimeLength\n return curTime < start || curTime > end\n } else {\n return false\n }\n }\n } else {\n if (min || max) {\n if (endName && endDate) {\n const end = new Date(endDate).getTime()\n return (min && curTime < min.getTime()) || curTime > end\n } else if (!endName && startDate) {\n const start = new Date(startDate).getTime()\n return curTime < start || (max && curTime > max.getTime())\n } else {\n return curTime < min || curTime > max\n }\n } else {\n if (endName && endDate) {\n const end = new Date(endDate).getTime()\n return curTime > end\n } else if (!endName && startDate) {\n const start = new Date(startDate).getTime()\n return curTime < start\n } else {\n return false\n }\n }\n }\n }\n })\n\n return {\n onConfirmDate,\n handleDateShow,\n pickerOptions\n }\n}\n","import { showDropdown } from '../utils/dropdown.ts'\nimport { getVerifyNumTag } from '../utils/validate.ts'\nimport { emitChangeModelEvent } from '../utils/tag.ts'\n\nexport function useNumRange({ props, state, t, emit, nextTick, vm }) {\n const instance = vm || state.instance\n const sizeChange = async (confirm: boolean) => {\n if (!confirm) {\n state.propItem = { ...state.propItem, label: '' }\n return\n }\n\n const newTag = await getVerifyNumTag(instance, state, props)\n if (newTag) {\n showDropdown(state, false)\n const newValue = props.modelValue.filter((prev) => prev.type !== newTag.type || prev.field !== newTag.field)\n newValue.push(newTag)\n emitChangeModelEvent({ emit, state, nextTick, newValue })\n } else {\n showDropdown(state)\n }\n }\n\n /**\n * 创建 type=dateRange 和 type = datetimeRange 的校验规则\n * @param startKey 校验的开始日期名\n * @param endKey 校验的结束日期名\n */\n const createDateRules = (item, startKey, endKey) => {\n const { maxTimeLength = 0 } = item\n return {\n [startKey]: {\n validator: (rule, value, cb) => {\n if (maxTimeLength > 0 && !value) {\n cb(new Error(t('tvp.tvpSearchbox.notBeNull')))\n } else if (!value && !state[endKey]) {\n cb(new Error(t('tvp.tvpSearchbox.rangeDateTitle')))\n } else {\n cb()\n }\n }\n },\n [endKey]: {\n validator: (rule, value, cb) => {\n if (maxTimeLength > 0 && !value) {\n cb(new Error(t('tvp.tvpSearchbox.notBeNull')))\n } else if (!value && !state[startKey]) {\n cb(new Error(t('tvp.tvpSearchbox.rangeDateTitle')))\n } else {\n cb()\n }\n }\n }\n }\n }\n\n const initFormRule = () => {\n let dateRules = {},\n datetimeRules = {}\n props.items.forEach((item) => {\n if (item.type === 'dateRange') {\n dateRules = createDateRules(item, 'startDate', 'endDate')\n }\n\n if (item.type === 'datetimeRange') {\n datetimeRules = createDateRules(item, 'startDateTime', 'endDateTime')\n }\n })\n state.formRules = {\n ...dateRules,\n ...datetimeRules\n }\n if (props.editable) {\n state.formRules.inputEditValue = {\n required: true,\n message: t('tvp.tvpSearchbox.notBeNull'),\n trigger: ['change', 'blur']\n }\n }\n }\n\n return {\n initFormRule,\n sizeChange\n }\n}\n","import { emitChangeModelEvent } from '../utils/tag.ts'\nimport { getVerifyNumTag, getVerifyDateTag, setStateNumRange, getVerifyTag } from '../utils/validate.ts'\nimport { showDropdown } from '../utils/dropdown.ts'\n\nexport function useEdit({ props, state, t, nextTick, format, emit, vm }) {\n const setDropdownProps = (curTag) => {\n const { operator, value, start, end } = curTag\n const { options, operators, type, mergeTag } = state.prevItem\n if (type === 'custom') {\n return\n } else if (type === 'numRange') {\n setStateNumRange(state, curTag, t)\n } else if (type === 'dateRange') {\n const { dateRangeFormat } = state\n state.startDate = format(start, dateRangeFormat)\n state.endDate = format(end, dateRangeFormat)\n } else if (type === 'datetimeRange') {\n const { datetimeRangeFormat } = state\n state.startDateTime = format(start, datetimeRangeFormat)\n state.endDateTime = format(end, datetimeRangeFormat)\n } else {\n if (mergeTag) {\n const labels = curTag.options?.flatMap((item) => item.label) || []\n // 多选编辑态,tiny-select multiple 需要数组\n state.inputEditValue = labels\n state.currentEditSelectTags = labels\n } else {\n // 其他场景使用字符串\n state.inputEditValue = Array.isArray(value) ? value.join(',') : (value || '')\n }\n state.currentEditValue = options\n }\n state.operatorValue = operator\n state.currentOperators = operators\n }\n\n // 检查表单校验状态\n const checkFormValidation = async () => {\n if (!state.instance?.$refs?.formRef) {\n return\n }\n\n const { prevItem } = state\n let verifyProps = []\n\n if (prevItem.type === 'numRange') {\n verifyProps = [state.curMinNumVar, state.curMaxNumVar]\n } else if (prevItem.type === 'dateRange') {\n verifyProps = ['startDate', 'endDate']\n } else if (prevItem.type === 'datetimeRange') {\n verifyProps = ['startDateTime', 'endDateTime']\n } else if (!['custom', 'map'].includes(prevItem.type)) {\n verifyProps = ['inputEditValue']\n }\n\n if (verifyProps?.length === 0) {\n state.hasFormError = false\n return\n }\n\n let hasError = false\n await state.instance.$refs.formRef.validateField(verifyProps, (errMsg) => {\n if (errMsg) {\n hasError = true\n }\n })\n\n state.hasFormError = hasError\n }\n\n const editTag = (tag, index, e) => {\n if (!props.editable || (tag.type && tag.type === 'map')) {\n return\n }\n\n showDropdown(state, false)\n state.popoverVisible = false\n const dom = e.target.classList.contains('tiny-tag') ? e.target : e.srcElement.parentElement\n\n nextTick(() => {\n const { popoverRef } = state.instance.$refs\n popoverRef.state.referenceElm = dom\n popoverRef.state.popperElm && (popoverRef.state.popperElm.style.display = 'none')\n popoverRef.doDestroy()\n state.popoverVisible = true\n // 打开编辑面板时检查校验状态\n checkFormValidation()\n })\n\n state.prevItem = state.recordItems.find((item) => item.field === tag.field)\n !state.prevItem && (state.prevItem = tag)\n state.selectValue = tag.label\n state.currentModelValueIndex = index\n\n emit('tagClick', tag)\n setDropdownProps(tag)\n }\n\n const selectPropChange = (item, disabled) => {\n if (disabled) return\n state.prevItem = item\n setDropdownProps(item)\n // 切换属性类型时检查校验状态\n nextTick(() => {\n checkFormValidation()\n })\n }\n\n const confirmEditTag = async (isConfirm) => {\n if (!isConfirm) {\n state.popoverVisible = false\n\n return\n }\n\n const { prevItem, currentModelValueIndex: index } = state\n\n let newTag = null\n if (prevItem.type === 'numRange') {\n newTag = await getVerifyNumTag(state.instance, state, props)\n } else if (prevItem.type === 'dateRange') {\n newTag = await getVerifyDateTag(state.instance, state, props, false)\n } else if (prevItem.type === 'datetimeRange') {\n newTag = await getVerifyDateTag(state.instance, state, props, true)\n } else {\n newTag = await getVerifyTag(state.instance, state, props)\n }\n\n if (newTag) {\n showDropdown(state, false)\n state.popoverVisible = false\n emitChangeModelEvent({ emit, state, nextTick, index, newTag, isEdit: true })\n } else {\n state.popoverVisible = true\n }\n\n state.currentEditValue = []\n }\n\n const selectItemIsDisable = (item) => {\n if (item.type && item.type === 'map') {\n return true\n }\n\n if (state.prevItem?.operators || item.operators) {\n return state.prevItem.operators?.length !== item.operators?.length\n }\n\n const typeArr = ['radio', 'checkbox']\n if (state.prevItem.type && typeArr.includes(state.prevItem.type)) {\n return !item.type ? false : !typeArr.includes(item.type)\n }\n\n return state.prevItem?.type !== item.type\n }\n\n return {\n editTag,\n confirmEditTag,\n selectPropChange,\n selectItemIsDisable,\n checkFormValidation\n }\n}\n","import { resetInput, emitChangeModelEvent, hasTagItem } from '../utils/tag.ts'\nimport { showDropdown, showPopover } from '../utils/dropdown.ts'\n\nexport function useCustom({ state, emit, nextTick }) {\n const updateCustomValue = (customTag) => {\n showDropdown(state, false)\n const { prevItem, indexMap } = state\n const { replace, label } = prevItem\n\n const tagList = []\n if (replace && indexMap.has(label)) {\n const index = indexMap.get(label)\n const newTag = { ...prevItem, ...customTag }\n emitChangeModelEvent({ emit, state, nextTick, newTag, index })\n\n return\n } else if (!replace && Array.isArray(customTag)) {\n customTag.forEach((tag) => {\n if (!hasTagItem(state, tag.value)) {\n tagList.push({ ...prevItem, ...tag })\n }\n })\n } else {\n if (!hasTagItem(state, customTag.value)) {\n tagList.push({ ...prevItem, ...customTag })\n }\n }\n emitChangeModelEvent({ emit, state, nextTick, tagList })\n }\n\n const handleConfirm = (customTag) => {\n if (!customTag) {\n resetInput(state)\n showDropdown(state, false)\n return\n }\n\n updateCustomValue(customTag)\n }\n\n const handleEditConfirm = (customTag) => {\n if (!customTag) {\n showPopover(state, false)\n return\n }\n\n updateCustomValue(customTag)\n }\n\n return {\n handleConfirm,\n handleEditConfirm\n }\n}\n","import { showDropdown, showPopover } from '../utils/dropdown.ts'\nimport { hasTagItem } from '../utils/tag.ts'\n\nexport function useInit({ props, state }) {\n const initItems = () => {\n state.groupItems = {}\n state.recordItems.forEach((item) => {\n const { groupKey = '0' } = item\n if (state.groupItems[groupKey]) {\n state.groupItems[groupKey].push({ ...item })\n } else {\n state.groupItems[groupKey] = [{ ...item }]\n state.matchItems[groupKey] = { attr: [], attrValue: [] }\n }\n if (state.prevItem && item.field === state.prevItem.field && item !== state.prevItem) {\n const { options, type } = item\n state.prevItem = item\n if (options?.length) {\n state.backupList = options\n }\n if (type === 'checkbox') {\n state.filterList = state.backupList\n state.checkboxGroup = []\n state.backupList?.forEach((subItem) => {\n const { label } = subItem\n if (hasTagItem(state, label)) {\n state.checkboxGroup.push(`${item.label}${label}`)\n }\n subItem.isFilter = false\n })\n }\n showDropdown(state, item.field === state.prevItem.field && item !== state.prevItem)\n }\n })\n }\n\n const handleClick = (e) => {\n const { backupPrevItem, prevItem } = state\n e.stopPropagation()\n if (props.editable) {\n state.popoverVisible = false\n state.currentEditValue = []\n if (state.propItem.label && backupPrevItem && backupPrevItem !== prevItem) {\n state.prevItem = backupPrevItem\n }\n }\n\n if (\n (state.hasBackupList && (state.backupList?.length === 0 || !state.backupList) && !state.inputValue) ||\n props.items.length === 0\n ) {\n showDropdown(state, false)\n } else {\n showDropdown(state)\n }\n }\n\n const watchOutsideClick = () => {\n if (props.editable) {\n showPopover(state, false)\n }\n\n state.isMouseDown = false\n showDropdown(state, false)\n }\n\n const watchMouseDown = () => {\n state.isMouseDown = true\n }\n\n const watchMouseMove = () => {\n if (state.isMouseDown) {\n state.isMouseDown = false\n }\n }\n\n return {\n initItems,\n watchOutsideClick,\n watchMouseDown,\n watchMouseMove,\n handleClick\n }\n}\n","export default {\n tvp: {\n tvpSearchbox: {\n defaultPlaceholder: '请选择属性筛选,或输入关键字',\n addPlaceholder: '添加筛选条件',\n tagPlaceholder: '请选择标签键/值搜索,或输入“键=值”搜索',\n dynamicPlaceholder: '请选择{newValue}搜索',\n attributeType: '属性类型',\n propertyValue: '{0}的值',\n matched: '潜在匹配项',\n allValues: '所有值',\n allProperty: '全部属性',\n operator: '运算符',\n clearAll: '清空',\n emptyValue: '空 值',\n help: '点击查看帮助',\n switchText: '切换到默认搜索项',\n tagKey: '键',\n tagValue: '值',\n minValueText: '最小值',\n maxValueText: '最大值',\n rangeMinErr: '输入值必须在{0}~{1}之间',\n rangeMaxErr: '最大值必须大于等于最小值,或者为空',\n rangeNumberTitle: '请至少输入一个值',\n rangeDateTitle: '请至少输入一个日期',\n timeLengthTitle: '可选时间跨度为{value}天内',\n rangeBeginLabel: '开始日期',\n rangeEndLabel: '结束日期',\n rulekeyword1: '关键字',\n notBeNull: '值不能为空',\n noData: '暂无匹配数据...',\n selectAll: '全选',\n confirm: '确定',\n cancel: '取消',\n equal: '等于',\n notEqual: '不等于',\n contain: '包含',\n notContain: '不包含',\n initUse: '搜索'\n }\n }\n}\n","export default {\n tvp: {\n tvpSearchbox: {\n defaultPlaceholder: 'Select attribute filtering or enter keywords',\n addPlaceholder: 'Add filtering criteria',\n tagPlaceholder: 'Please select tag key/value search, or enter \"key=value\" to search',\n dynamicPlaceholder: 'Please select {newValue} to search',\n attributeType: 'Attribute Type',\n propertyValue: 'The value of {0}',\n matched: 'Potential matching items',\n allValues: 'All values',\n allProperty: 'All Properties',\n operator: 'Operator',\n clearAll: 'Clear',\n emptyValue: 'Empty value',\n help: 'Click to view help',\n switchText: 'Switch to default search terms',\n tagKey: 'Key',\n tagValue: 'Value',\n minValueText: 'Minimum value',\n maxValueText: 'Maximum value',\n rangeMinErr: 'The input value must be between {0} and {1}',\n rangeMaxErr: 'The maximum value must be greater than or equal to the minimum value, or empty',\n rangeNumberTitle: 'Please enter at least one value',\n rangeDateTitle: 'Please enter at least one date',\n timeLengthTitle: 'The optional time span is within {value} days',\n rangeBeginLabel: 'Start date',\n rangeEndLabel: 'End date',\n rulekeyword1: 'Keywords',\n notBeNull: 'The value cannot be empty',\n noData: 'There is currently no matching data available ..',\n selectAll: 'Select All',\n confirm: 'Confirm',\n cancel: 'Cancel',\n equal: 'Equal',\n notEqual: 'Not equal',\n contain: 'Contain',\n notContain: 'Does not contain',\n initUse: 'Search'\n }\n }\n}\n","/**\n * 国际化工具函数\n * 如果使用组件库的项目有i18n则使用父级项目,如果没有则默认使用中文\n */\n\nimport zhCN from './zh_CN'\nimport enUS from './en_US'\n\n// 默认语言包\nconst defaultLocale = 'zh-CN'\nconst locales = {\n 'zh-CN': zhCN,\n 'en-US': enUS\n}\n\n// 全局应用实例\nlet globalApp: any = null\n// 可选的全局 t 覆盖函数(未被 readonly/Proxy 包装)\nlet globalT: any = null\n\n/**\n * 设置全局应用实例\n * @param {any} app - Vue应用实例\n */\nexport const setGlobalApp = (app: any) => {\n globalApp = app\n}\n\n/**\n * 设置全局可写的 t 函数(用于宿主传入未包装的 t,避免只读 Proxy 触发 set 错误)\n * @param {Function} tFn - 翻译函数\n */\nexport const setGlobalT = (tFn: any) => {\n globalT = tFn\n}\n\n/**\n * 获取当前语言\n * @returns {string} 当前语言代码\n */\nexport const getCurrentLocale = () => {\n // Vue3: 从 config.globalProperties 获取\n if (globalApp?.config?.globalProperties?.$i18n?.locale) {\n return globalApp.config.globalProperties.$i18n.locale\n }\n\n // Vue2: 从 $i18n 获取(当传入的是包含 $i18n 的对象时)\n if (globalApp?.$i18n?.locale) {\n return globalApp.$i18n.locale\n }\n\n // 尝试从浏览器语言获取\n if (typeof navigator !== 'undefined') {\n const browserLang = navigator.language || navigator.languages?.[0]\n if (browserLang) {\n return browserLang.startsWith('zh') ? 'zh-CN' : 'en-US'\n }\n }\n\n return defaultLocale\n}\n\n/**\n * 获取语言包\n * @param {string} locale - 语言代码\n * @returns {Object} 语言包对象\n */\nexport const getLocaleMessages = (locale) => {\n return locales[locale] || locales[defaultLocale]\n}\n\n/**\n * 翻译函数\n * @param {string} key - 翻译键,格式为 'namespace.key.subkey'\n * @param {Object} params - 参数对象\n * @returns {string} 翻译后的文本\n */\nexport const t = (key, params = {}) => {\n if (!key) return ''\n\n // 优先使用外部注入的全局 t\n if (typeof globalT === 'function') {\n try {\n const result = globalT(key, params)\n if (result && result !== key) {\n return result\n }\n } catch (error) {\n console.warn('[TinySearchBox] globalT translation failed:', error)\n }\n }\n\n // 尝试使用父级项目的i18n\n if (globalApp?.config?.globalProperties?.$t) {\n try {\n const result = globalApp.config.globalProperties.$t(key, params)\n if (result && result !== key) {\n return result\n }\n } catch (error) {\n console.warn('[TinySearchBox] i18n translation failed:', error)\n }\n }\n\n // 尝试使用Vue实例的$t方法\n if (globalApp?.$t) {\n try {\n const result = globalApp.$t(key, params)\n if (result && result !== key) {\n return result\n }\n } catch (error) {\n console.warn('[TinySearchBox] i18n translation failed:', error)\n }\n }\n\n // 使用默认语言包\n const locale = getCurrentLocale()\n const messages = getLocaleMessages(locale)\n\n // 解析key路径\n const keys = key.split('.')\n let result = messages\n\n for (const k of keys) {\n if (result && typeof result === 'object' && k in result) {\n result = result[k]\n } else {\n // 如果找不到,尝试使用默认语言\n if (locale !== defaultLocale) {\n const defaultMessages = getLocaleMessages(defaultLocale)\n result = defaultMessages\n for (const k2 of keys) {\n if (result && typeof result === 'object' && k2 in result) {\n result = result[k2]\n } else {\n result = key // 最终fallback\n break\n }\n }\n } else {\n result = key // fallback到key本身\n }\n break\n }\n }\n\n // 处理参数替换\n if (typeof result === 'string' && Object.keys(params).length > 0) {\n return result.replace(/\\{(\\w+)\\}/g, (match, paramKey) => {\n return params[paramKey] !== undefined ? params[paramKey] : match\n })\n }\n\n return typeof result === 'string' ? result : key\n}\n\n/**\n * 批量翻译函数\n * @param {Array} keys - 翻译键数组\n * @param {Object} params - 参数对象\n * @returns {Array} 翻译后的文本数组\n */\nexport const tArray = (keys, params = {}) => {\n return keys.map((key) => t(key, params))\n}\n\n/**\n * 检查是否支持某个语言\n * @param {string} locale - 语言代码\n * @returns {boolean} 是否支持\n */\nexport const isLocaleSupported = (locale) => {\n return locale in locales\n}\n\n/**\n * 获取支持的语言列表\n * @returns {Array} 支持的语言代码数组\n */\nexport const getSupportedLocales = () => {\n return Object.keys(locales)\n}\n\n/**\n * 添加自定义语言包\n * @param {string} locale - 语言代码\n * @param {Object} messages - 语言包对象\n */\nexport const addLocale = (locale, messages) => {\n locales[locale] = messages\n}\n\n/**\n * 移除语言包\n * @param {string} locale - 语言代码\n */\nexport const removeLocale = (locale) => {\n if (locale !== defaultLocale) {\n delete locales[locale]\n }\n}\n\n// 默认导出\nexport default {\n t,\n zhCN,\n enUS,\n tArray,\n setGlobalT,\n setGlobalApp,\n getCurrentLocale,\n getLocaleMessages,\n isLocaleSupported,\n getSupportedLocales,\n addLocale,\n removeLocale\n}\n","// 导入工具函数和类型\nimport { format } from './utils/date.ts'\nimport { useTag } from './composables/use-tag.ts'\nimport { useDropdown } from './composables/use-dropdown.ts'\nimport { useMatch } from './composables/use-match.ts'\nimport { useCheckbox } from './composables/use-checkbox.ts'\nimport { useDatePicker } from './composables/use-datepicker.ts'\nimport { useNumRange } from './composables/use-num-range.ts'\nimport { useEdit } from './composables/use-edit.ts'\nimport { useCustom } from './composables/use-custom.ts'\nimport { useInit } from './composables/use-init.ts'\n// 类型导入 - 兼容 Vue 2 和 Vue 3\nimport { showDropdown, showPopover } from './utils/dropdown.ts'\n\nimport { deepClone } from './utils/index.ts'\nimport { resetInput } from './utils/tag.ts'\nimport i18n, { t, getCurrentLocale } from './utils/i18n.ts'\nexport const api = [\n 't',\n 'state',\n 'isShowClose',\n 'showHelp',\n 'maxlength',\n 'panelMaxHeight',\n 'editable',\n 'emptyPlaceholder',\n 'deleteTag',\n 'editTag',\n 'backspaceDeleteTag',\n 'createTag',\n 'clearTag',\n 'helpClick',\n 'handleInput',\n 'handleClick',\n 'handleEvents',\n 'pickerOptions',\n 'resetInput',\n 'selectItemIsDisable',\n 'selectPropChange',\n 'confirmEditTag',\n 'handleConfirm',\n 'handleEditConfirm',\n 'showDropdown',\n 'showPopover'\n]\n\nconst resolveEmptyPlaceholder = (props, t) => props.emptyPlaceholder || t('tvp.tvpSearchbox.addPlaceholder')\n\nconst initState = ({ reactive, computed, api, i18n, watch, props, emit, vm }) => {\n const state = reactive({\n innerModelValue: [...props.modelValue],\n placeholder: props.modelValue.length > 0 ? t('tvp.tvpSearchbox.addPlaceholder') : resolveEmptyPlaceholder(props, t),\n emitter: emit,\n recordItems: [],\n groupItems: {},\n inputValue: '',\n matchItems: {},\n propItem: {},\n backupList: [],\n filterList: [],\n checkboxGroup: [],\n prevItem: {},\n backupPrevItem: null,\n formRules: null,\n validType: 'text',\n numberShowMessage: true,\n startDate: null,\n startDateTime: null,\n endDate: null,\n endDateTime: null,\n isShowTagKey: true,\n potentialOptions: null,\n dateRangeFormat: 'yyyy/MM/dd',\n datetimeRangeFormat: 'yyyy/MM/dd HH:mm:ss',\n indexMap: new Map(),\n valueMap: new Map(),\n popoverVisible: false,\n selectValue: '',\n allTypeAttri: { label: t('tvp.tvpSearchbox.rulekeyword1'), field: 'tvpKeyword', type: 'radio' },\n operatorValue: ':',\n inputEditValue: '',\n currentOperators: null,\n currentEditValue: [],\n currentModelValueIndex: -1,\n curMinNumVar: '',\n curMaxNumVar: '',\n instance: null,\n isMouseDown: false,\n currentEditSelectTags: [],\n visible: false,\n visibleTimer: null,\n hasFormError: false, // 表单校验错误状态\n hasBackupList: computed(() => state.propItem.label && [undefined, 'radio', 'checkbox', 'map'].includes(state.prevItem.type)),\n isIndeterminate: computed(() => state.checkboxGroup.length > 0 && state.checkboxGroup.length !== state.filterList.length),\n checkAll: computed({\n get: () => state.checkboxGroup.length && state.checkboxGroup.length === state.filterList.length,\n set: (val) => {\n if (val) {\n state.checkboxGroup = state.filterList.flatMap((item) => `${state.prevItem.label}${item.label}`)\n } else {\n state.checkboxGroup = []\n }\n }\n })\n })\n return state\n}\n\nexport const renderless = (\n props,\n { getCurrentInstance, onMounted, onBeforeUnmount, computed, reactive, watch },\n { emit: $emit, nextTick, refs, vm, slots }\n) => {\n const api = {} as any\n const emit = props.emitter ? props.emitter.emit : $emit\n const state = initState({ reactive, computed, api, i18n, watch, props, emit, vm })\n initAllApi({ api, state, t, props, emit, nextTick, vm, computed })\n initWatch({ watch, state, props, api, nextTick, vm })\n\n state.instance = vm\n // 在 Vue2 中,slots 可能通过 context 传递,需要设置到 instance 上\n if (vm && slots) {\n vm.slots = slots\n }\n\n // 生命周期\n onMounted(() => {\n if (typeof document !== 'undefined') {\n document.addEventListener('click', api.watchOutsideClick)\n document.addEventListener('mousedown', api.watchMouseDown)\n document.addEventListener('mousemove', api.watchMouseMove)\n }\n })\n\n onBeforeUnmount(() => {\n if (typeof document !== 'undefined') {\n document.removeEventListener('click', api.watchOutsideClick)\n document.removeEventListener('mousedown', api.watchMouseDown)\n document.removeEventListener('mousemove', api.watchMouseMove)\n // 清理语言检查定时器\n if (state.localeCheckInterval) {\n clearInterval(state.localeCheckInterval)\n state.localeCheckInterval = null\n }\n }\n })\n\n // 暴露给模板的方法\n return api\n}\n\n\nconst initAllApi = ({ api, state, t, props, emit, nextTick, vm, computed }) => {\n\n const { deleteTag, clearTag, backspaceDeleteTag } = useTag({ props, state, emit, nextTick })\n const { editTag, confirmEditTag, selectPropChange, selectItemIsDisable, checkFormValidation } = useEdit({ props, state, t, nextTick, format, emit, vm })\n const { handleInput, selectFirstMap, cancelHandleInput } = useMatch({ props, state, emit, nextTick })\n const { selectPropItem, selectRadioItem, selectInputValue, createTag, helpClick, setOperator } = useDropdown({ props, emit, state, t, format, nextTick, vm, cancelHandleInput })\n const { selectCheckbox } = useCheckbox({ props, state, emit, nextTick })\n const { onConfirmDate, handleDateShow, pickerOptions } = useDatePicker({ props, state, emit, nextTick, vm })\n const { sizeChange, initFormRule } = useNumRange({ props, state, t, emit, nextTick, vm })\n const { handleConfirm, handleEditConfirm } = useCustom({ state, emit, nextTick })\n const { initItems, watchOutsideClick, watchMouseDown, watchMouseMove, handleClick } = useInit({ props, state })\n\n const isShowClose = computed(() => props.modelValue.length || state.propItem.label || state.inputValue)\n\n const eventsMap = () => ({\n selectInputValue,\n selectPropItem,\n selectRadioItem,\n setOperator,\n selectCheckbox,\n sizeChange,\n onConfirmDate,\n selectFirstMap,\n handleDateShow\n })\n\n const setPlaceholder = (placeholderValue: string) => {\n state.placeholder = placeholderValue\n }\n\n const getEmptyPlaceholderValue = () => resolveEmptyPlaceholder(props, t)\n\n // 默认显示占位符,emptyPlaceholder 优先\n if (props.modelValue.length > 0) {\n setPlaceholder(t('tvp.tvpSearchbox.addPlaceholder'))\n } else {\n setPlaceholder(getEmptyPlaceholderValue())\n }\n\n\n const handleEvents = (eventName, p1, p2) => {\n const map = eventsMap()\n if (typeof map[eventName] === 'function') {\n map[eventName](p1, p2)\n } else {\n console.warn(`[TinySearchBox] Unknown event: ${eventName}`)\n }\n }\n\n // 解构所有事件方法\n\n Object.assign(api, {\n t,\n state,\n isShowClose,\n deleteTag,\n editTag,\n backspaceDeleteTag,\n createTag,\n clearTag,\n helpClick,\n handleInput,\n handleClick,\n handleEvents,\n pickerOptions,\n resetInput,\n selectItemIsDisable,\n selectPropChange,\n confirmEditTag,\n handleConfirm,\n handleEditConfirm,\n showDropdown,\n showPopover,\n checkFormValidation,\n setPlaceholder,\n initItems,\n initFormRule,\n watchOutsideClick,\n watchMouseDown,\n watchMouseMove,\n })\n}\n\nconst initWatch = ({ watch, state, props, api, nextTick, vm }) => {\n // 更新 placeholder 的函数\n const updatePlaceholder = () => {\n if (state.propItem.label) {\n const { placeholder, type } = state.prevItem\n if (placeholder) {\n api.setPlaceholder(placeholder)\n } else if (type === 'map') {\n api.setPlaceholder(t('tvp.tvpSearchbox.tagPlaceholder'))\n } else if (state.backupList?.length) {\n api.setPlaceholder(t('tvp.tvpSearchbox.dynamicPlaceholder', { newValue: state.propItem.label }))\n } else {\n api.setPlaceholder(t('tvp.tvpSearchbox.addPlaceholder'))\n }\n } else {\n // 默认显示 emptyPlaceholder(如果提供)或 addPlaceholder\n const defaultPlaceholder =\n props.modelValue.length > 0 ? t('tvp.tvpSearchbox.addPlaceholder') : resolveEmptyPlaceholder(props, t)\n api.setPlaceholder(defaultPlaceholder)\n }\n }\n\n // 获取当前语言(优先从组件实例获取)\n const getI18nLocale = () => {\n // Vue2: 从组件实例获取\n if (vm?.$i18n?.locale) {\n return vm.$i18n.locale\n }\n // Vue3: 从组件实例获取\n if (vm?.proxy?.$i18n?.locale) {\n return vm.proxy.$i18n.locale\n }\n // 回退到默认方法\n return getCurrentLocale()\n }\n\n // 监听语言变化,重新设置 placeholder\n let lastLocale = getI18nLocale()\n let watchEstablished = false\n\n // Vue2 环境下,使用 vm.$watch 监听 i18n.locale\n if (vm?.$i18n) {\n try {\n vm.$watch(\n () => vm.$i18n.locale,\n (newLocale) => {\n if (newLocale !== lastLocale) {\n lastLocale = newLocale\n updatePlaceholder()\n }\n },\n { immediate: false }\n )\n watchEstablished = true\n } catch (e) {\n console.warn('[TinySearchBox] Unable to watch i18n.locale via vm.$watch:', e)\n }\n }\n\n // Vue3 环境下,使用 watch 监听\n if (vm?.proxy?.$i18n) {\n try {\n watch(\n () => vm.proxy.$i18n.locale,\n (newLocale) => {\n if (newLocale !== lastLocale) {\n lastLocale = newLocale\n updatePlaceholder()\n }\n },\n { immediate: false }\n )\n watchEstablished = true\n } catch (e) {\n console.warn('[TinySearchBox] Unable to watch i18n.locale via watch:', e)\n }\n }\n\n // 备用方案:仅在 watch 机制不可用时通过轮询检查语言变化\n const checkLocaleChange = () => {\n const currentLocale = getI18nLocale()\n if (currentLocale !== lastLocale) {\n lastLocale = currentLocale\n updatePlaceholder()\n }\n }\n\n if (typeof window !== 'undefined' && !watchEstablished) {\n state.localeCheckInterval = setInterval(checkLocaleChange, 1000)\n }\n\n // 监听 props.modelValue 变化时也检查语言\n watch(\n () => props.modelValue,\n () => {\n checkLocaleChange()\n }\n )\n\n // 监听器\n watch(\n () => props.items,\n (newVal) => {\n const wasOpen = state.visible\n const currentField = state.prevItem && state.prevItem.field\n\n state.recordItems = deepClone(newVal)\n api.initItems()\n api.initFormRule()\n nextTick(() => {\n api.initItems()\n api.initFormRule()\n\n // 如果二级面板已打开,则保持不关闭并刷新当前字段的选项\n if (wasOpen && state.propItem.label) {\n const updated = state.recordItems.find((it) => it.field === currentField) || state.prevItem\n state.prevItem = updated || {}\n state.backupList = updated && updated.options ? [...updated.options] : []\n state.filterList = state.backupList ? [...state.backupList] : []\n showDropdown(state) // 保持展开\n }\n })\n },\n {\n deep: true,\n immediate: true\n }\n )\n\n watch(\n () => state.inputValue,\n (newVal) => {\n if (!newVal && !state.propItem.type) {\n state.visible = false\n }\n },\n {\n immediate: true\n }\n )\n\n watch(\n () => state.popoverVisible,\n (newVal) => {\n if (!newVal && !state.inputEditValue.length) {\n if (state.prevItem && state.prevItem.mergeTag) {\n state.inputEditValue = Array.isArray(state.currentEditSelectTags)\n ? state.currentEditSelectTags\n : []\n } else {\n state.inputEditValue = Array.isArray(state.currentEditSelectTags)\n ? state.currentEditSelectTags.join(',')\n : (state.currentEditSelectTags || '')\n }\n }\n // 关闭编辑面板时重置校验错误状态\n if (!newVal) {\n state.hasFormError = false\n }\n },\n {\n immediate: true\n }\n )\n\n // 监听编辑面板相关字段变化,检查校验状态\n watch(\n () => {\n // 获取需要监听的字段值\n const fields = {\n inputEditValue: state.inputEditValue,\n startDate: state.startDate,\n endDate: state.endDate,\n startDateTime: state.startDateTime,\n endDateTime: state.endDateTime\n }\n // 如果是 numRange 类型,添加动态字段\n if (state.curMinNumVar && state.curMaxNumVar) {\n fields[state.curMinNumVar] = state[state.curMinNumVar]\n fields[state.curMaxNumVar] = state[state.curMaxNumVar]\n }\n return fields\n },\n () => {\n if (state.popoverVisible) {\n nextTick(() => {\n api.checkFormValidation()\n })\n }\n },\n { deep: true }\n )\n\n watch(\n () => state.propItem.label,\n (newValue) => {\n // 使用统一的更新函数\n updatePlaceholder()\n }\n )\n\n watch(\n () => props.modelValue,\n (newVal) => {\n if (newVal) {\n state.indexMap.clear()\n state.valueMap.clear()\n newVal.forEach((item, index) => {\n const value = `${item.label}${item.value}`\n state.indexMap.set(item.label, index)\n state.valueMap.set(value, index)\n if (item.options?.length > 0) {\n item.options.forEach((option) => {\n const optionValue = `${item.label}${option.label}`\n state.valueMap.set(optionValue, index)\n })\n }\n })\n showPopover(state, false)\n if (newVal.length === 0) {\n api.setPlaceholder(resolveEmptyPlaceholder(props, t))\n }\n\n if (props.editable && !state.inputEditValue.length && newVal[0]) {\n const tag = newVal[0]\n const prev = state.recordItems.find((it) => it.field === tag.field) || tag\n if (prev.mergeTag && tag.options) {\n const labels = tag.options.flatMap((o) => o.label) || []\n state.inputEditValue = labels\n state.currentEditSelectTags = labels\n } else {\n const v = tag.value\n state.inputEditValue = Array.isArray(v) ? v.join(',') : (v || '')\n }\n }\n state.innerModelValue = [...newVal]\n }\n },\n {\n deep: true,\n immediate: true\n }\n )\n}","<template>\n <div tiny_mode=\"pc\">\n <tiny-dropdown-item\n v-show=\"isShowSearchOption\"\n class=\"tvp-search-box__filter-item tvp-search-box__dropdown-item tvp-search-box__dropdown-item-init\"\n :item-data=\"{ label: state.inputValue }\"\n @item-click=\"() => selectInputValue(state.inputValue)\"\n >\n <span> {{ t('tvp.tvpSearchbox.initUse') }}"{{ state.inputValue }}"</span>\n </tiny-dropdown-item>\n <div v-show=\"!state.propItem.label && state.inputValue?.trim()\">\n <div\n v-for=\"(value, key) in state.matchItems\"\n :key=\"key\"\n >\n <div v-if=\"value['attr'].length\">\n <span class=\"tvp-search-box__filter-type\">{{ key === '0' ? t('tvp.tvpSearchbox.attributeType') : key }}</span>\n <tiny-dropdown-item\n v-for=\"(item, index) in value['attr']\"\n :key=\"item.label + index\"\n class=\"tvp-search-box__filter-item tvp-search-box__dropdown-item\"\n :item-data=\"item\"\n @item-click=\"() => selectPropItem(item)\"\n >\n <span>\n <span\n v-for=\"text in item.match\"\n :key=\"text\"\n >\n <span\n v-if=\"text.toLowerCase() === item.hightlighStr\"\n class=\"tvp-search-box__text-highlight\"\n >{{ text }}</span\n >\n <span v-else>{{ text }}</span>\n </span>\n </span>\n </tiny-dropdown-item>\n </div>\n <template v-if=\"value['attrValue'].length\">\n <span class=\"tvp-search-box__filter-type\">{{\n t('tvp.tvpSearchbox.propertyValue', [key === '0' ? t('tvp.tvpSearchbox.attributeType') : key])\n }}</span>\n <tiny-dropdown-item\n v-for=\"(item, index) in value['attrValue']\"\n :key=\"item.label + index\"\n :disabled=\"item.isChecked\"\n class=\"tvp-search-box__filter-item tvp-search-box__dropdown-item\"\n :item-data=\"item\"\n @item-click=\"() => selectRadioItem(item, true)\"\n >\n <span>\n <span\n v-for=\"text in item.match\"\n :key=\"text\"\n >\n <span\n v-if=\"text.toLowerCase() === item.hightlighStr\"\n class=\"tvp-search-box__text-highlight\"\n >{{ text }}</span\n >\n <span v-else>{{ text }}</span>\n </span>\n </span>\n </tiny-dropdown-item>\n </template>\n </div>\n <div v-show=\"state.potentialOptions\">\n <span class=\"tvp-search-box__filter-type\">{{ t('tvp.tvpSearchbox.matched') }}</span>\n <div\n id=\"potential-loading\"\n class=\"tvp-search-box__potential-box\"\n >\n <div v-if=\"state.potentialOptions\">\n <tiny-dropdown-item\n v-for=\"(item, index) in state.potentialOptions\"\n :key=\"item.label + index\"\n class=\"tvp-search-box__filter-item tvp-search-box__dropdown-item\"\n :item-data=\"item\"\n @item-click=\"() => selectRadioItem(item, true)\"\n >\n {{ item.label }}:\n <span class=\"tvp-search-box__text-highlight\">{{ item.value }}</span>\n </tiny-dropdown-item>\n </div>\n </div>\n </div>\n </div>\n <div\n v-show=\"state.visible && !state.propItem.label && !state.inputValue?.trim()\"\n class=\"tvp-search-box__first-panel\"\n >\n <div\n v-for=\"(group, key) in state.groupItems\"\n :key=\"key\"\n >\n <span\n v-if=\"group.length\"\n class=\"tvp-search-box__filter-type\"\n >{{ key === '0' ? t('tvp.tvpSearchbox.attributeType') : key }}</span\n >\n <tiny-dropdown-item\n v-for=\"(item, index) in group\"\n :key=\"(item.field || item.label) + index\"\n class=\"tvp-search-box__dropdown-item\"\n :item-data=\"item\"\n @item-click=\"() => selectPropItem(item)\"\n >\n <span :title=\"item.label\">{{ item.label }}</span>\n </tiny-dropdown-item>\n </div>\n </div>\n </div>\n</template>\n\n<script>\n// Vue2 版本,使用 tiny-vue 的 renderless 架构\nimport { defineComponent, setup, $props, $prefix } from '@opentiny/vue-common'\nimport { TinyDropdownItem } from '@opentiny/vue'\nimport { t } from '../utils/i18n.ts'\n\n// 简单的 renderless 函数\nconst renderless = (props, hooks, { emit }) => {\n const { computed } = hooks\n\n // 优先使用传入的 events/handleEvents 函数,如果没有则使用 emit\n const handleEvents =\n props.handleEvents ||\n props.events ||\n ((eventName, p1, p2) => {\n emit('events', eventName, p1, p2)\n })\n\n // 「搜索\"xxxx\"」选项仅在输出框模式和单选模式下显示\n const isShowSearchOption = computed(() => {\n const { inputValue, popoverVisible, currentOperators, propItem, prevItem } = props.state\n return (\n inputValue.trim() &&\n !popoverVisible &&\n !currentOperators?.length &&\n (!propItem.label || [undefined, 'radio'].includes(prevItem.type))\n )\n })\n\n const selectInputValue = (e) => {\n handleEvents('selectInputValue', e)\n }\n\n const selectPropItem = (e) => {\n handleEvents('selectPropItem', e)\n }\n\n const selectRadioItem = (e, v) => {\n handleEvents('selectRadioItem', e, v)\n }\n\n return {\n isShowSearchOption,\n selectInputValue,\n selectPropItem,\n selectRadioItem,\n t\n }\n}\n\nconst api = ['isShowSearchOption', 'selectInputValue', 'selectPropItem', 'selectRadioItem', 't']\n\nexport default defineComponent({\n name: $prefix + 'SearchBoxFirstLevelPanel',\n components: {\n TinyDropdownItem\n },\n props: {\n ...$props,\n state: {\n type: Object,\n default: () => ({})\n },\n potentialOptions: {\n type: Array,\n default: () => []\n },\n events: {\n type: Function,\n default: null\n },\n handleEvents: {\n type: Function,\n default: null\n }\n },\n emits: ['events', 'click'],\n setup(props, context) {\n return setup({ props, context, renderless, api })\n }\n})\n</script>\n","/**\n * 轻量级一维列表虚拟滚动 composable\n * 适用于固定行高的下拉列表场景\n *\n * @param hooks - renderless hooks (提供 reactive, computed)\n * @param options.getList - 返回完整列表的函数\n * @param options.itemHeight - 每行高度(默认 32px,与 tiny-dropdown-item 一致)\n * @param options.bufferSize - 视口外额外渲染的行数(默认 5)\n * @param options.headerHeight - 返回容器内非列表头部高度的函数(默认 () => 0)\n */\nexport function useVirtualScroll(hooks, options) {\n const { reactive, computed } = hooks\n const { getList, itemHeight = 32, bufferSize = 5, headerHeight = () => 0 } = options\n\n const vsState = reactive({\n scrollTop: 0,\n viewportHeight: 300\n })\n\n const totalHeight = computed(() => {\n const list = getList() || []\n return list.length * itemHeight\n })\n\n const startIndex = computed(() => {\n const adjustedScrollTop = Math.max(0, vsState.scrollTop - headerHeight())\n return Math.max(0, Math.floor(adjustedScrollTop / itemHeight) - bufferSize)\n })\n\n const endIndex = computed(() => {\n const list = getList() || []\n const visibleCount = Math.ceil(vsState.viewportHeight / itemHeight)\n return Math.min(list.length, startIndex.value + visibleCount + bufferSize * 2)\n })\n\n const offsetY = computed(() => startIndex.value * itemHeight)\n\n const visibleItems = computed(() => {\n const list = getList() || []\n return list.slice(startIndex.value, endIndex.value)\n })\n\n const handleScroll = (e) => {\n vsState.scrollTop = e.target.scrollTop\n vsState.viewportHeight = e.target.clientHeight\n }\n\n return {\n vsState,\n totalHeight,\n startIndex,\n endIndex,\n offsetY,\n visibleItems,\n handleScroll\n }\n}\n","<template>\n <div tiny_mode=\"pc\">\n <div v-if=\"state.currentOperators?.length\">\n <span class=\"tvp-search-box__filter-type\">{{\n t(\"tvp.tvpSearchbox.operator\")\n }}</span>\n <tiny-dropdown-item\n v-for=\"(item, index) in state.currentOperators\"\n v-show=\"item.includes(state.inputValue)\"\n :key=\"item + index\"\n class=\"tvp-search-box__dropdown-item\"\n :item-data=\"{ label: item }\"\n @item-click=\"() => setOperator(item)\"\n >\n {{ item }}\n </tiny-dropdown-item>\n </div>\n <div\n v-else-if=\"!state.prevItem.type || state.prevItem.type === 'radio'\"\n v-loading=\"isLoading\"\n :class=\"['tvp-search-box__radio-wrap', 'tvp-search-box__virtual-list', isLoading && 'tvp-search-box__loading-box']\"\n :style=\"{ maxHeight: panelMaxHeight }\"\n ref=\"vsScrollEl\"\n @scroll=\"vsHandleScroll\"\n >\n <div class=\"tvp-search-box__virtual-phantom\" :style=\"{ height: vsTotalHeight + 'px' }\">\n <div\n class=\"tvp-search-box__virtual-content\"\n :style=\"{ transform: 'translateY(' + vsOffsetY + 'px)' }\"\n >\n <tiny-dropdown-item\n v-for=\"(item, vsIndex) in vsVisibleItems\"\n :key=\"vsStartIndex + vsIndex + (item.field || item.label)\"\n :disabled=\"item.isChecked\"\n class=\"tvp-search-box__dropdown-item\"\n :item-data=\"item\"\n @item-click=\"() => selectRadioItem(item)\"\n >\n <span v-if=\"item.match\" :title=\"item.label\">\n <span v-for=\"(text, index) in item.match\" :key=\"index\">\n <span\n v-if=\"text.toLowerCase() === item.hightlighStr\"\n class=\"tvp-search-box__text-highlight\"\n >{{ text }}</span\n >\n <span v-else>{{ text }}</span>\n </span>\n </span>\n <span v-else :title=\"item.label\">{{ item.label }}</span>\n </tiny-dropdown-item>\n </div>\n </div>\n </div>\n <div\n v-else-if=\"state.prevItem.type === 'checkbox'\"\n v-loading=\"isLoading\"\n :class=\"isLoading && 'tvp-search-box__loading-box'\"\n >\n <div v-if=\"showCheckBoxList\" class=\"tvp-search-box__checkbox-wrap\" :style=\"{ maxHeight: panelMaxHeight }\">\n <div ref=\"vsScrollEl\" class=\"tvp-search-box__virtual-list tvp-search-box__checkbox-scroll\" @scroll=\"vsHandleScroll\">\n <tiny-checkbox-group v-model=\"state.checkAll\" class=\"tvp-search-box__checkbox\">\n <tiny-dropdown-item class=\"tvp-search-box__dropdown-item tvp-search-box__checkbox-item\">\n <tiny-checkbox\n v-model=\"state.checkAll\"\n :indeterminate=\"state.isIndeterminate\"\n >\n {{ t(\"tvp.tvpSearchbox.selectAll\") }}\n </tiny-checkbox>\n </tiny-dropdown-item>\n </tiny-checkbox-group>\n <tiny-checkbox-group\n v-model=\"state.checkboxGroup\"\n class=\"tvp-search-box__checkbox\"\n >\n <div class=\"tvp-search-box__virtual-phantom\" :style=\"{ height: vsTotalHeight + 'px' }\">\n <div\n class=\"tvp-search-box__virtual-content\"\n :style=\"{ transform: 'translateY(' + vsOffsetY + 'px)' }\"\n >\n <tiny-dropdown-item\n v-for=\"(item, vsIndex) in vsVisibleItems\"\n :key=\"(item.field || item.label) + vsStartIndex + vsIndex\"\n class=\"tvp-search-box__dropdown-item tvp-search-box__checkbox-item\"\n >\n <tiny-checkbox\n :label=\"state.prevItem.label + item.label\"\n :title=\"item.label\"\n class=\"tvp-search-box__checkbox-item-label\"\n >\n {{ item.label }}\n </tiny-checkbox>\n </tiny-dropdown-item>\n </div>\n </div>\n </tiny-checkbox-group>\n </div>\n <div class=\"tvp-search-box__checkbox-btn\">\n <tiny-button size=\"mini\" @click=\"selectCheckbox(false)\">\n {{ t(\"tvp.tvpSearchbox.cancel\") }}\n </tiny-button>\n <tiny-button size=\"mini\" @click=\"selectCheckbox(true)\">\n {{ t(\"tvp.tvpSearchbox.confirm\") }}\n </tiny-button>\n </div>\n </div>\n </div>\n <div v-else-if=\"state.prevItem.type === 'numRange'\" class=\"tvp-search-box__panel-box\">\n <div class=\"tvp-search-box__number\">\n <div class=\"tvp-search-box__dropdown-title\">\n {{ t(\"tvp.tvpSearchbox.rangeNumberTitle\") }}\n </div>\n <div class=\"tvp-search-box__dropdown-start\">\n {{ t(\"tvp.tvpSearchbox.minValueText\") }}{{ state.prevItem.unit ? `(${state.prevItem.unit})` : '' }}\n </div>\n <tiny-form-item\n :prop=\"state.curMinNumVar\"\n class=\"tvp-search-box__number-item\"\n :show-message=\"state.numberShowMessage\"\n >\n <tiny-input\n v-model=\"state[state.curMinNumVar]\"\n type=\"number\"\n class=\"tvp-search-box__number-input\"\n ></tiny-input>\n </tiny-form-item>\n <div class=\"tvp-search-box__dropdown-end\">\n {{ t(\"tvp.tvpSearchbox.maxValueText\") }}{{ state.prevItem.unit ? `(${state.prevItem.unit})` : '' }}\n </div>\n <tiny-form-item :prop=\"state.curMaxNumVar\" class=\"tvp-search-box__number-item\">\n <tiny-input\n v-model=\"state[state.curMaxNumVar]\"\n type=\"number\"\n class=\"tvp-search-box__number-input\"\n ></tiny-input>\n </tiny-form-item>\n </div>\n <div class=\"tvp-search-box__bottom-btn\">\n <tiny-button size=\"mini\" @click=\"sizeChange(false)\">{{\n t(\"tvp.tvpSearchbox.cancel\")\n }}</tiny-button>\n <tiny-button size=\"mini\" @click.stop=\"sizeChange(true)\">\n {{ t(\"tvp.tvpSearchbox.confirm\") }}\n </tiny-button>\n </div>\n </div>\n <div\n v-else-if=\"state.prevItem.type === 'dateRange'\"\n class=\"tvp-search-box__panel-box\"\n >\n <div class=\"tvp-search-box__date-wrap\">\n <div class=\"tvp-search-box__dropdown-title\">\n {{\n state.prevItem.maxTimeLength > 0\n ? t(\"tvp.tvpSearchbox.timeLengthTitle\", {\n value: (state.prevItem.maxTimeLength / 86400000).toFixed(1),\n })\n : t(\"tvp.tvpSearchbox.rangeDateTitle\")\n }}\n </div>\n <div class=\"tvp-search-box__dropdown-start\">\n {{ t(\"tvp.tvpSearchbox.rangeBeginLabel\") }}\n </div>\n <tiny-form-item\n prop=\"startDate\"\n :show-message=\"Boolean(state.prevItem.maxTimeLength)\"\n class=\"tvp-search-box__date-item\"\n >\n <tiny-date-picker\n v-model=\"state.startDate\"\n :format=\"state.prevItem.format || state.dateRangeFormat\"\n :value-format=\"state.prevItem.format || state.dateRangeFormat\"\n :picker-options=\"pickerOptions(state.startDate, 'endDate')\"\n class=\"tvp-search-box__date-picker\"\n @visible-change=\"handleDateShow\"\n ></tiny-date-picker>\n </tiny-form-item>\n <div class=\"tvp-search-box__dropdown-end\">\n {{ t(\"tvp.tvpSearchbox.rangeEndLabel\") }}\n </div>\n <tiny-form-item prop=\"endDate\" class=\"tvp-search-box__date-item\">\n <tiny-date-picker\n v-model=\"state.endDate\"\n :format=\"state.prevItem.format || state.dateRangeFormat\"\n :value-format=\"state.prevItem.format || state.dateRangeFormat\"\n :picker-options=\"pickerOptions(state.startDate)\"\n class=\"tvp-search-box__date-picker\"\n @change=\"handleDateShow\"\n @blur=\"handleDateShow\"\n ></tiny-date-picker>\n </tiny-form-item>\n </div>\n <div class=\"tvp-search-box__bottom-btn\">\n <tiny-button size=\"mini\" @click=\"onConfirmDate(false)\">\n {{ t(\"tvp.tvpSearchbox.cancel\") }}\n </tiny-button>\n <tiny-button size=\"mini\" @click=\"onConfirmDate(true)\">\n {{ t(\"tvp.tvpSearchbox.confirm\") }}\n </tiny-button>\n </div>\n </div>\n\n <div\n v-else-if=\"state.prevItem.type === 'datetimeRange'\"\n class=\"tvp-search-box__panel-box\"\n >\n <div class=\"tvp-search-box__date-wrap\">\n <div class=\"tvp-search-box__dropdown-title\">\n {{\n state.prevItem.maxTimeLength > 0\n ? t(\"tvp.tvpSearchbox.timeLengthTitle\", {\n value: (state.prevItem.maxTimeLength / 86400000).toFixed(1),\n })\n : t(\"tvp.tvpSearchbox.rangeDateTitle\")\n }}\n </div>\n <div class=\"tvp-search-box__dropdown-start\">\n {{ t(\"tvp.tvpSearchbox.rangeBeginLabel\") }}\n </div>\n <tiny-form-item\n prop=\"startDateTime\"\n :show-message=\"Boolean(state.prevItem.maxTimeLength)\"\n class=\"tvp-search-box__date-item\"\n >\n <tiny-date-picker\n v-model=\"state.startDateTime\"\n type=\"datetime\"\n :isutc8=\"true\"\n :format=\"state.prevItem.format || state.datetimeRangeFormat\"\n :value-format=\"state.prevItem.format || state.datetimeRangeFormat\"\n :picker-options=\"pickerOptions(state.startDateTime, 'endDateTime')\"\n class=\"tvp-search-box__date-picker\"\n @change=\"handleDateShow\"\n @blur=\"handleDateShow\"\n ></tiny-date-picker>\n </tiny-form-item>\n <div class=\"tvp-search-box__dropdown-end\">\n {{ t(\"tvp.tvpSearchbox.rangeEndLabel\") }}\n </div>\n <tiny-form-item prop=\"endDateTime\" class=\"tvp-search-box__date-item\">\n <tiny-date-picker\n v-model=\"state.endDateTime\"\n type=\"datetime\"\n :isutc8=\"true\"\n :format=\"state.prevItem.format || state.datetimeRangeFormat\"\n :value-format=\"state.prevItem.format || state.datetimeRangeFormat\"\n :picker-options=\"pickerOptions(state.startDateTime)\"\n class=\"tvp-search-box__date-picker\"\n @change=\"handleDateShow\"\n @blur=\"handleDateShow\"\n ></tiny-date-picker>\n </tiny-form-item>\n </div>\n <div class=\"tvp-search-box__bottom-btn\">\n <tiny-button size=\"mini\" @click=\"onConfirmDate(false, true)\">\n {{ t(\"tvp.tvpSearchbox.cancel\") }}\n </tiny-button>\n <tiny-button size=\"mini\" @click=\"onConfirmDate(true, true)\">\n {{ t(\"tvp.tvpSearchbox.confirm\") }}\n </tiny-button>\n </div>\n </div>\n\n <div v-else-if=\"state.prevItem.type === 'map'\" v-loading=\"isLoading\">\n <div\n ref=\"vsScrollEl\"\n class=\"tvp-search-box__virtual-list\"\n :style=\"{ maxHeight: panelMaxHeight }\"\n @scroll=\"vsHandleScroll\"\n >\n <span v-if=\"state.isShowTagKey\" class=\"tvp-search-box__filter-type\">{{\n t(\"tvp.tvpSearchbox.tagKey\")\n }}</span>\n <span v-else class=\"tvp-search-box__filter-type\">{{\n t(\"tvp.tvpSearchbox.tagValue\")\n }}</span>\n <div class=\"tvp-search-box__virtual-phantom\" :style=\"{ height: vsTotalHeight + 'px' }\">\n <div\n class=\"tvp-search-box__virtual-content\"\n :style=\"{ transform: 'translateY(' + vsOffsetY + 'px)' }\"\n >\n <tiny-dropdown-item\n v-for=\"(item, vsIndex) in vsVisibleItems\"\n :key=\"item.label + item.value + vsStartIndex + vsIndex\"\n :disabled=\"item.isChecked\"\n class=\"tvp-search-box__dropdown-item\"\n :item-data=\"item\"\n @item-click=\"() => selectFirstMap(item, state.isShowTagKey)\"\n >\n <span :title=\"item.label\">{{ item.label }}</span>\n </tiny-dropdown-item>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\n// Vue2 版本,使用 tiny-vue 的 renderless 架构\nimport { defineComponent, setup, $props, $prefix } from '@opentiny/vue-common'\nimport { \n TinyFormItem,\n TinyDropdownItem,\n TinyCheckbox,\n TinyCheckboxGroup,\n TinyDatePicker,\n TinyInput,\n TinyButton,\n TinyLoading\n} from '@opentiny/vue'\nimport { t } from '../utils/i18n.ts'\nimport { useVirtualScroll } from '../composables/use-virtual-scroll.ts'\n\n// 简单的 renderless 函数\nconst renderless = (props, hooks, { emit, nextTick, refs }) => {\n const { computed, reactive, watch, onMounted } = hooks\n\n // 优先使用传入的 events/handleEvents 函数,如果没有则使用 emit\n const handleEvents = props.handleEvents || props.events || ((eventName, p1, p2) => {\n emit('events', eventName, p1, p2)\n })\n\n const setOperator = (e) => {\n handleEvents('setOperator', e)\n }\n\n const selectRadioItem = (e) => {\n handleEvents('selectRadioItem', e)\n }\n\n const selectCheckbox = (e) => {\n handleEvents('selectCheckbox', e)\n }\n\n const sizeChange = (e) => {\n handleEvents('sizeChange', e)\n }\n\n const onConfirmDate = (e, b) => {\n handleEvents('onConfirmDate', e, b)\n }\n\n const selectFirstMap = (e, b) => {\n handleEvents('selectFirstMap', e, b)\n }\n\n const handleDateShow = (e) => {\n handleEvents('handleDateShow', e)\n }\n\n const isLoading = computed(() => {\n return props.state.hasBackupList && props.state.backupList?.length === 0\n })\n\n const showCheckBoxList = computed(() => {\n return props.state.backupList?.find((item) => !item.isFilter)\n })\n\n // 虚拟滚动:根据当前类型计算过滤后的列表\n const currentFilteredList = computed(() => {\n const type = props.state.prevItem.type\n const backupList = props.state.backupList || []\n\n // radio 类型无输入时显示全部\n if (!type || type === 'radio') {\n if (!props.state.inputValue) return backupList\n return backupList.filter((item) => !item.isFilter)\n }\n\n // checkbox 和 map 始终过滤 isFilter\n return backupList.filter((item) => !item.isFilter)\n })\n\n const vs = useVirtualScroll(\n { reactive, computed },\n {\n getList: () => currentFilteredList.value,\n itemHeight: 32,\n bufferSize: 5,\n headerHeight: () => {\n const type = props.state.prevItem.type\n // checkbox 的\"全选\"和 map 的标题在滚动容器内,占 32px\n if (type === 'checkbox' || type === 'map') return 32\n return 0\n }\n }\n )\n\n // 输入变化时重置滚动位置\n watch(\n () => props.state.inputValue,\n () => {\n vs.vsState.scrollTop = 0\n nextTick(() => {\n if (refs.vsScrollEl) {\n refs.vsScrollEl.scrollTop = 0\n }\n })\n }\n )\n\n // 切换面板类型时重置滚动位置并重新测量视口高度\n watch(\n () => props.state.prevItem,\n () => {\n vs.vsState.scrollTop = 0\n nextTick(() => {\n if (refs.vsScrollEl) {\n refs.vsScrollEl.scrollTop = 0\n vs.handleScroll({ target: refs.vsScrollEl })\n }\n })\n },\n { deep: true }\n )\n\n // 挂载后测量实际视口高度,确保首次渲染数量正确\n onMounted(() => {\n if (refs.vsScrollEl) {\n vs.handleScroll({ target: refs.vsScrollEl })\n }\n })\n\n return {\n setOperator,\n selectRadioItem,\n selectCheckbox,\n sizeChange,\n onConfirmDate,\n selectFirstMap,\n handleDateShow,\n isLoading,\n showCheckBoxList,\n vsTotalHeight: vs.totalHeight,\n vsStartIndex: vs.startIndex,\n vsOffsetY: vs.offsetY,\n vsVisibleItems: vs.visibleItems,\n vsHandleScroll: vs.handleScroll,\n t\n }\n}\n\nconst api = [\n 'setOperator',\n 'selectRadioItem',\n 'selectCheckbox',\n 'sizeChange',\n 'onConfirmDate',\n 'selectFirstMap',\n 'handleDateShow',\n 'isLoading',\n 'showCheckBoxList',\n 'vsTotalHeight',\n 'vsStartIndex',\n 'vsOffsetY',\n 'vsVisibleItems',\n 'vsHandleScroll',\n 't'\n]\n\nexport default defineComponent({\n name: $prefix + 'SearchBoxSecondLevelPanel',\n emits: ['events', 'click'],\n components: {\n TinyFormItem,\n TinyDropdownItem,\n TinyCheckbox,\n TinyCheckboxGroup,\n TinyDatePicker,\n TinyInput,\n TinyButton\n },\n directives: {\n loading: TinyLoading.directive\n },\n props: {\n ...$props,\n state: {\n type: Object,\n default: () => ({}),\n },\n pickerOptions: {\n type: Function,\n default: () => {\n // do nothing.\n }\n },\n events: {\n type: Function,\n default: null\n },\n handleEvents: {\n type: Function,\n default: null\n },\n panelMaxHeight: {\n type: String,\n default: '999px'\n }\n },\n setup(props, context) {\n return setup({ props, context, renderless, api })\n }\n})\n</script>\n","<template>\n <div\n :class=\"[\n 'tvp-search-box',\n size === 'small' ? 'tvp-search-box--small' : '',\n showPrefixIcon ? '' : 'hide-prefix-icon'\n ]\"\n @click.stop=\"showPopover(state, false)\"\n >\n <tiny-icon-search\n v-if=\"showPrefixIcon\"\n class=\"tvp-search-box__prefix\"\n />\n <tiny-tag\n v-for=\"(tag, index) in modelValue\"\n :key=\"tag.field + index\"\n closable\n class=\"tvp-search-box__tag\"\n :class=\"editable && tag.type !== 'map' ? 'tvp-search-box__tag-editor' : ''\"\n :title=\"`${tag.label} ${tag.operator || ':'} ${tag.value}`\"\n @close=\"deleteTag(tag)\"\n @click.stop=\"editTag(tag, index, $event)\"\n >\n <span class=\"tvp-search-box__tag-value\">{{ tag.label }} {{ tag.operator || ':' }} {{ tag.value }} </span>\n </tiny-tag>\n <span\n v-if=\"modelValue.length\"\n class=\"tvp-search-box__placeholder\"\n ></span>\n <tiny-form\n ref=\"formRef\"\n :model=\"state\"\n :rules=\"state.formRules\"\n :validate-type=\"state.validType\"\n :size=\"size === 'small' ? 'small' : ''\"\n label-width=\"0px\"\n message-type=\"block\"\n class=\"tvp-search-box__form\"\n >\n <div class=\"tvp-search-box__input-wrapper\">\n <section class=\"tvp-search-box__prop\">\n <span v-show=\"state.propItem.label\"\n >{{ state.propItem.label }} {{ `${state.operatorValue ? state.operatorValue : ''} ` }}</span\n >\n <span v-show=\"state.propItem.value\">{{ state.propItem.value }}</span>\n </section>\n <tiny-popover\n ref=\"dropdownRef\"\n v-model=\"state.visible\"\n trigger=\"manual\"\n placement=\"bottom-start\"\n class=\"tvp-search-box__dropdown\"\n popper-class=\"tvp-search-box__dropdown-menu\"\n :visible-arrow=\"false\"\n :append-to-body=\"appendToBody\"\n >\n <template #reference>\n <tiny-input\n ref=\"inputRef\"\n v-model=\"state.inputValue\"\n class=\"tvp-search-box__input\"\n :placeholder=\"state.placeholder\"\n :maxlength=\"maxlength && maxlength + 1\"\n @keydown.delete.stop=\"backspaceDeleteTag\"\n @keydown.enter.stop=\"createTag\"\n @input=\"handleInput\"\n @click=\"handleClick\"\n >\n <template #suffix>\n <tiny-icon-close\n v-show=\"isShowClose\"\n class=\"tvp-search-box__input-close\"\n @click.stop=\"clearTag\"\n />\n <span\n v-show=\"\n isShowClose &&\n (showHelp || state.instance?.$slots?.['suffix-icon'] || state.instance?.slots?.['suffix-icon'])\n \"\n class=\"tvp-search-box__input-separator\"\n ></span>\n <span\n v-if=\"state.instance?.$slots?.['suffix-icon'] || state.instance?.slots?.['suffix-icon']\"\n :class=\"showHelp ? 'tvp-search-box__suffix-icon-slot' : 'tvp-search-box__suffix-icon-slot-no-help'\"\n >\n <slot name=\"suffix-icon\"></slot>\n </span>\n <tiny-tooltip\n v-if=\"showHelp\"\n effect=\"light\"\n :content=\"t('tvp.tvpSearchbox.help')\"\n placement=\"top\"\n >\n <tiny-icon-help-query\n class=\"tvp-search-box__input-help\"\n @click.stop=\"helpClick\"\n />\n </tiny-tooltip>\n <tiny-icon-search\n class=\"tvp-search-box__input-search\"\n @click.stop=\"createTag\"\n />\n </template>\n </tiny-input>\n </template>\n <div\n class=\"tvp-search-box__dropdown\"\n :style=\"{ 'max-height': panelMaxHeight }\"\n @mouseup.stop=\"() => {}\"\n >\n <div v-show=\"!state.propItem.label || state.inputValue?.trim()\">\n <slot\n v-if=\"state.instance?.slots['first-panel']\"\n name=\"first-panel\"\n v-bind=\"{\n state,\n handleEvents\n }\"\n @click.stop\n ></slot>\n <TinySearchBoxFirstLevelPanel\n v-else\n :state=\"state\"\n :handleEvents=\"handleEvents\"\n >\n </TinySearchBoxFirstLevelPanel>\n </div>\n <div v-show=\"state.propItem.label\">\n <slot\n v-if=\"state.instance?.slots['second-panel']\"\n name=\"second-panel\"\n v-bind=\"{\n state,\n pickerOptions,\n handleEvents,\n back: () => resetInput(state)\n }\"\n @click.stop\n ></slot>\n <TinySearchBoxSecondLevelPanel\n v-else-if=\"state.prevItem.type !== 'custom'\"\n :state=\"state\"\n :picker-options=\"pickerOptions\"\n :panel-max-height=\"panelMaxHeight\"\n @events=\"handleEvents\"\n ></TinySearchBoxSecondLevelPanel>\n <div\n v-else\n class=\"tvp-search-box__panel-box\"\n @click=\"showDropdown(state)\"\n >\n <slot\n :name=\"state.prevItem.slotName\"\n v-bind=\"{\n showDropdown: () => showDropdown(state),\n onConfirm: handleConfirm\n }\"\n @click.stop\n ></slot>\n </div>\n </div>\n </div>\n </tiny-popover>\n </div>\n\n <template v-if=\"editable\">\n <tiny-popover\n ref=\"popoverRef\"\n v-model=\"state.popoverVisible\"\n placement=\"bottom-start\"\n :visible-arrow=\"false\"\n trigger=\"manual\"\n popper-class=\"tvp-search-box__popover\"\n class=\"tvp-search-box__form-popover\"\n :append-to-body=\"appendToBody\"\n >\n <template v-if=\"state.prevItem.type !== 'custom'\">\n <div class=\"tvp-search-box__date-wrap\">\n <div class=\"tvp-search-box__dropdown-start\">\n {{ t('tvp.tvpSearchbox.attributeType') }}\n </div>\n <tiny-form-item class=\"tvp-search-box__number-item\">\n <tiny-select\n v-model=\"state.selectValue\"\n searchable\n :disabled=\"state.prevItem.editAttrDisabled\"\n >\n <tiny-option\n :key=\"state.allTypeAttri.label\"\n :label=\"t('tvp.tvpSearchbox.allProperty')\"\n :value=\"state.allTypeAttri.label\"\n :disabled=\"selectItemIsDisable(state.allTypeAttri)\"\n @click=\"selectPropChange(state.allTypeAttri, selectItemIsDisable(state.allTypeAttri))\"\n >\n </tiny-option>\n <tiny-option\n v-for=\"item in state.recordItems\"\n :key=\"item.label\"\n :label=\"item.label\"\n :value=\"item.label\"\n :disabled=\"selectItemIsDisable(item)\"\n @click=\"selectPropChange(item, selectItemIsDisable(item))\"\n >\n </tiny-option>\n </tiny-select>\n </tiny-form-item>\n <div\n v-if=\"state.prevItem.operators\"\n class=\"tvp-search-box__dropdown-end\"\n >\n {{ t('tvp.tvpSearchbox.operator') }}\n </div>\n <tiny-form-item\n v-if=\"state.prevItem.operators\"\n class=\"tvp-search-box__number-item\"\n >\n <tiny-select v-model=\"state.operatorValue\">\n <tiny-option\n v-for=\"item in state.currentOperators\"\n :key=\"item\"\n :label=\"item\"\n :value=\"item\"\n >\n </tiny-option>\n </tiny-select>\n </tiny-form-item>\n <div\n v-if=\"state.prevItem.type !== 'numRange'\"\n class=\"tvp-search-box__dropdown-end\"\n >\n {{ t('tvp.tvpSearchbox.tagValue') }}\n </div>\n <tiny-form-item\n v-if=\"!['numRange', 'dateRange', 'datetimeRange', 'custom'].includes(state.prevItem.type)\"\n prop=\"inputEditValue\"\n class=\"tvp-search-box__number-item\"\n >\n <tiny-select\n v-if=\"state.currentEditValue?.length > 0\"\n v-model=\"state.inputEditValue\"\n class=\"tvp-search-box-select\"\n :multiple=\"Boolean(state.prevItem.mergeTag)\"\n :allow-create=\"state.prevItem?.allowCreate\"\n filterable\n default-first-option\n clearable\n >\n <tiny-option\n v-for=\"item in state.currentEditValue\"\n :key=\"item.label\"\n :label=\"item.label\"\n :value=\"item.label\"\n >\n </tiny-option>\n </tiny-select>\n <tiny-input\n v-else\n v-model=\"state.inputEditValue\"\n clearable\n ></tiny-input>\n </tiny-form-item>\n <div\n v-if=\"state.prevItem.type === 'numRange'\"\n class=\"tvp-search-box__number\"\n >\n <div class=\"tvp-search-box__dropdown-start\">\n {{ t('tvp.tvpSearchbox.minValueText') }}{{ state.prevItem.unit ? `(${state.prevItem.unit})` : '' }}\n </div>\n <tiny-form-item\n :prop=\"state.curMinNumVar\"\n class=\"tvp-search-box__number-item\"\n :show-message=\"state.numberShowMessage\"\n >\n <tiny-input\n v-model=\"state[state.curMinNumVar]\"\n type=\"number\"\n class=\"tvp-search-box__number-input\"\n ></tiny-input>\n </tiny-form-item>\n <div class=\"tvp-search-box__dropdown-end\">\n {{ t('tvp.tvpSearchbox.maxValueText') }}{{ state.prevItem.unit ? `(${state.prevItem.unit})` : '' }}\n </div>\n <tiny-form-item\n :prop=\"state.curMaxNumVar\"\n class=\"tvp-search-box__number-item\"\n >\n <tiny-input\n v-model=\"state[state.curMaxNumVar]\"\n type=\"number\"\n class=\"tvp-search-box__number-input\"\n ></tiny-input>\n </tiny-form-item>\n </div>\n <div\n v-if=\"state.prevItem.type === 'dateRange'\"\n class=\"tvp-search-box__date-wrap\"\n >\n <div class=\"tvp-search-box__dropdown-title\">\n {{\n state.prevItem.maxTimeLength > 0\n ? t('tvp.tvpSearchbox.timeLengthTitle', {\n value: (state.prevItem.maxTimeLength / 86400000).toFixed(1)\n })\n : t('tvp.tvpSearchbox.rangeDateTitle')\n }}\n </div>\n <div class=\"tvp-search-box__dropdown-start\">\n {{ t('tvp.tvpSearchbox.rangeBeginLabel') }}\n </div>\n <tiny-form-item\n prop=\"startDate\"\n :show-message=\"Boolean(state.prevItem.maxTimeLength)\"\n class=\"tvp-search-box__date-item\"\n >\n <tiny-date-picker\n v-model=\"state.startDate\"\n :format=\"state.prevItem.format || state.dateRangeFormat\"\n :value-format=\"state.prevItem.format || state.dateRangeFormat\"\n :picker-options=\"pickerOptions(state.startDate, 'endDate')\"\n class=\"tvp-search-box__date-picker\"\n ></tiny-date-picker>\n </tiny-form-item>\n <div class=\"tvp-search-box__dropdown-end\">\n {{ t('tvp.tvpSearchbox.rangeEndLabel') }}\n </div>\n <tiny-form-item\n prop=\"endDate\"\n class=\"tvp-search-box__date-item\"\n >\n <tiny-date-picker\n v-model=\"state.endDate\"\n :format=\"state.prevItem.format || state.dateRangeFormat\"\n :value-format=\"state.prevItem.format || state.dateRangeFormat\"\n :picker-options=\"pickerOptions(state.startDate)\"\n class=\"tvp-search-box__date-picker\"\n ></tiny-date-picker>\n </tiny-form-item>\n </div>\n <div\n v-if=\"state.prevItem.type === 'datetimeRange'\"\n class=\"tvp-search-box__date-wrap\"\n >\n <div class=\"tvp-search-box__dropdown-title\">\n {{\n state.prevItem.maxTimeLength > 0\n ? t('tvp.tvpSearchbox.timeLengthTitle', {\n value: (state.prevItem.maxTimeLength / 86400000).toFixed(1)\n })\n : t('tvp.tvpSearchbox.rangeDateTitle')\n }}\n </div>\n <div class=\"tvp-search-box__dropdown-start\">\n {{ t('tvp.tvpSearchbox.rangeBeginLabel') }}\n </div>\n <tiny-form-item\n prop=\"startDateTime\"\n :show-message=\"Boolean(state.prevItem.maxTimeLength)\"\n class=\"tvp-search-box__date-item\"\n >\n <tiny-date-picker\n v-model=\"state.startDateTime\"\n type=\"datetime\"\n :isutc8=\"true\"\n :format=\"state.prevItem.format || state.datetimeRangeFormat\"\n :value-format=\"state.prevItem.format || state.datetimeRangeFormat\"\n :picker-options=\"pickerOptions(state.startDateTime, 'endDateTime')\"\n class=\"tvp-search-box__date-picker\"\n ></tiny-date-picker>\n </tiny-form-item>\n <div class=\"tvp-search-box__dropdown-end\">\n {{ t('tvp.tvpSearchbox.rangeEndLabel') }}\n </div>\n <tiny-form-item\n prop=\"endDateTime\"\n class=\"tvp-search-box__date-item\"\n >\n <tiny-date-picker\n v-model=\"state.endDateTime\"\n type=\"datetime\"\n :isutc8=\"true\"\n :format=\"state.prevItem.format || state.datetimeRangeFormat\"\n :value-format=\"state.prevItem.format || state.datetimeRangeFormat\"\n :picker-options=\"pickerOptions(state.startDateTime)\"\n class=\"tvp-search-box__date-picker\"\n ></tiny-date-picker>\n </tiny-form-item>\n </div>\n </div>\n <div class=\"tvp-search-box__bottom-btn\">\n <tiny-button\n size=\"mini\"\n @click=\"confirmEditTag(false)\"\n >\n {{ t('tvp.tvpSearchbox.cancel') }}\n </tiny-button>\n <tiny-button\n size=\"mini\"\n :disabled=\"state.hasFormError\"\n @click=\"confirmEditTag(true)\"\n >\n {{ t('tvp.tvpSearchbox.confirm') }}\n </tiny-button>\n </div>\n </template>\n <div\n v-else-if=\"state.popoverVisible\"\n class=\"tvp-search-box__panel-box\"\n >\n <slot\n :name=\"`${state.prevItem.slotName}-edit`\"\n v-bind=\"{\n showDropdown: () => showPopover(state),\n onConfirm: handleEditConfirm\n }\"\n @click.stop\n ></slot>\n </div>\n </tiny-popover>\n </template>\n </tiny-form>\n </div>\n</template>\n\n<script lang=\"ts\">\n// Vue2 版本,使用 tiny-vue 的 renderless 架构\nimport { defineComponent, setup, $props, isVue2 } from '@opentiny/vue-common'\nimport { renderless, api } from './renderless'\n// 导入组件\nimport { \n TinyTag,\n TinyInput,\n TinyDropdown,\n TinyDropdownMenu,\n TinyButton,\n TinyTooltip,\n TinyDatePicker,\n TinyForm,\n TinyFormItem,\n TinyPopover,\n TinySelect,\n TinyOption,\n} from '@opentiny/vue'\nimport { iconSearch, iconClose, iconHelpQuery } from '@opentiny/vue-icon'\n\nimport TinySearchBoxFirstLevelPanel from './components/first-level-panel.vue'\nimport TinySearchBoxSecondLevelPanel from './components/second-level-panel.vue'\n// 样式通过构建工具自动导入,开发环境使用别名导入\nimport '@opentiny/vue-search-box-theme'\n\nexport default defineComponent({\n model: {\n prop: 'modelValue',\n event: 'update:modelValue'\n },\n props: {\n ...$props,\n tiny_mode: {\n type: String,\n default: 'pc'\n },\n modelValue: {\n type: Array,\n default: () => []\n },\n items: {\n type: Array,\n default: () => []\n },\n emptyPlaceholder: {\n type: String,\n default: ''\n },\n potentialOptions: {\n type: Object,\n default: () => null\n },\n showHelp: {\n type: Boolean,\n default: true\n },\n showPrefixIcon: {\n type: Boolean,\n default: true\n },\n idMapKey: {\n type: String,\n default: 'id'\n },\n defaultField: {\n type: String,\n default: ''\n },\n defaultFieldReplace: {\n type: Boolean,\n default: false\n },\n editable: {\n type: Boolean,\n default: false\n },\n maxlength: {\n type: Number,\n default: undefined\n },\n panelMaxHeight: {\n type: String,\n default: '999px'\n },\n splitInputValue: {\n type: String,\n default: ','\n },\n appendToBody: {\n type: Boolean,\n default: true\n },\n // 尺寸\n size: {\n type: String,\n default: ''\n }\n },\n emits: ['update:modelValue', 'change', 'search', 'exceed', 'first-level-select', 'second-level-enter', 'clear', 'tagClick', 'help', 'validate-error'],\n components: {\n TinyTag,\n TinyInput,\n TinyDropdown,\n TinyDropdownMenu,\n TinyButton,\n TinyTooltip,\n TinyDatePicker,\n TinyForm,\n TinyFormItem,\n TinyPopover,\n TinySelect,\n TinyOption,\n TinySearchBoxFirstLevelPanel,\n TinySearchBoxSecondLevelPanel,\n // 图标组件\n TinyIconSearch: iconSearch(),\n TinyIconClose: iconClose(),\n TinyIconHelpQuery: iconHelpQuery()\n },\n setup(props, context) {\n return setup({ props, context, renderless, api })\n }\n})\n</script>\n","/**\n * Copyright (c) 2022 - present TinyVue Authors.\n * Copyright (c) 2022 - present Huawei Cloud Computing Technologies Co., Ltd.\n *\n * Use of this source code is governed by an MIT-style license.\n *\n * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL,\n * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR\n * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS.\n *\n */\nimport { $props, $prefix, $setup, defineComponent, isVue2, isVue3 } from '@opentiny/vue-common'\nimport { type PropType } from '@opentiny/vue-common'\nimport template from './pc.vue'\n\nexport const searchBoxProps = {\n ...$props,\n tiny_mode: {\n type: String,\n default: 'pc'\n },\n /** 搜索框的值,支持v-model */\n modelValue: {\n type: Array,\n default: () => []\n },\n /** 搜索项配置数组 */\n items: {\n type: Array,\n default: () => []\n },\n /** 空状态时的占位符文本 */\n emptyPlaceholder: {\n type: String,\n default: ''\n },\n /** 潜在选项配置 */\n potentialOptions: {\n type: Object,\n default: () => null\n },\n /** 是否显示帮助按钮 */\n showHelp: {\n type: Boolean,\n default: true\n },\n /** 是否显示搜索框前面的搜索图标 */\n showPrefixIcon: {\n type: Boolean,\n default: true\n },\n /** ID映射键名 */\n idMapKey: {\n type: String,\n default: 'id'\n },\n /** 默认字段 */\n defaultField: {\n type: String,\n default: ''\n },\n defaultFieldReplace: {\n type: Boolean,\n default: false\n },\n /** 是否可编辑 */\n editable: {\n type: Boolean,\n default: false\n },\n /** 最大长度限制 */\n maxlength: {\n type: Number,\n default: undefined\n },\n /** 面板最大高度 */\n panelMaxHeight: {\n type: String,\n default: '999px'\n },\n /** 输入值分隔符 */\n splitInputValue: {\n type: String,\n default: ','\n },\n /** 自定义类名 */\n customClass: {\n type: String,\n default: ''\n },\n /** 自定义样式 */\n customStyle: {\n type: Object,\n default: () => ({})\n },\n /** 组件尺寸 */\n size: {\n type: String as PropType<'small' | ''>,\n default: ''\n },\n /** 将下拉面板/弹窗挂载到 body,解决父容器 overflow 场景遮挡问题 */\n appendToBody: {\n type: Boolean,\n default: false\n }\n}\n// 组件安装函数\nexport default defineComponent({\n name: $prefix + 'SearchBox',\n props: searchBoxProps,\n ...template\n})\n","/**\n * Copyright (c) 2022 - present TinyVue Authors.\n * Copyright (c) 2022 - present Huawei Cloud Computing Technologies Co., Ltd.\n *\n * Use of this source code is governed by an MIT-style license.\n *\n * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL,\n * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR\n * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS.\n *\n */\n\nimport TinySearchBox from \"./src/index\";\nimport { t, setGlobalApp } from './src/utils/i18n'\nimport zhCN from './src/utils/zh_CN'\nimport enUS from './src/utils/en_US'\nimport TinySearchBoxFirstLevelPanel from './src/components/first-level-panel.vue'\nimport TinySearchBoxSecondLevelPanel from './src/components/second-level-panel.vue'\nimport { version } from \"./package.json\";\n// model 配置已在组件内部定义,无需重复设置\n\n/* istanbul ignore next */\nTinySearchBox.install = function (Vue) {\n const runtime: any = Vue\n\n // Vue3 app instance: install(app)\n if (runtime && runtime.config && runtime.config.globalProperties) {\n setGlobalApp(runtime)\n }\n\n // Vue2 constructor: install(Vue)\n // Capture a runtime vm/root with i18n once available, so users don't need setGlobalApp manually.\n if (runtime && runtime.mixin && !runtime.__TINY_SEARCH_BOX_I18N_MIXIN__) {\n runtime.__TINY_SEARCH_BOX_I18N_MIXIN__ = true\n runtime.mixin({\n beforeCreate() {\n const vm = this as any\n if (vm && (vm.$i18n || vm.$t || (vm.$root && (vm.$root.$i18n || vm.$root.$t)))) {\n setGlobalApp(vm.$root || vm)\n }\n }\n })\n }\n\n runtime.component(TinySearchBox.name, TinySearchBox);\n};\n\nTinySearchBox.version = version;\n\n/* istanbul ignore next */\nif (typeof window !== \"undefined\" && (window as typeof window & { Vue?: unknown }).Vue) {\n TinySearchBox.install((window as typeof window & { Vue: any }).Vue);\n}\n\n// 导出\nexport * from './src/index.type'\nexport { zhCN, enUS, t, setGlobalApp, TinySearchBoxFirstLevelPanel, TinySearchBoxSecondLevelPanel }\n\nexport default TinySearchBox;\n"],"names":["fillChar","string","length","append","chr","isNumber","len","appendStr","s","toString","hasOwn","fnToString","class2type","isNull","x","typeOf","obj","value","isDate","daysInMonths","yyyymmddReg","mmddyyyyReg","iso8601Reg","dateFormatRegs","maxDateValues","timezone1","timezone2","timezone3","timezones","getTimezone","date","timezoneoffset","timezone","isLeapYear","year","getMilliseconds","milliseconds","getDateFromData","month","hours","minutes","seconds","daysInMonth","yyyymmddDateParser","m","mmddyyyyDateParser","iso8601DateParser","offset","timeZone","sign","offsetHours","offsetMinutes","actHours","actMinutes","dateParsers","parseDate","str","i","matchDateArray","arr","text","getDateArray","dateFormat","valuePos","textPos","charValue","notNum","end","invalideTime","time","min","max","invalideValue","innerParse","toDate","minDate","format","k","afterFormat","dateValue","showDropdown","state","isShow","showPopover","dropdownRef","debounce","func","delay","timer","debounced","args","deepClone","objClone","keys","key","omitObj","keysToOmit","result","hasTagItem","itemValue","itemLabel","valueMap","prevItem","resetInput","emitChangeModelEvent","emit","nextTick","tagList","index","newTag","newValue","oldValue","isEdit","oldVal","innerModelValue","createNewTag","getTagId","props","item","idKey","useTag","lastInputValue","changeIsChecked","tag","parent","child","lastIndex","_c","_b","_a","getVerifyTag","instance","inputEditValue","operators","rest","isPass","errMsg","id","operator","otherAttr","editValue","label","itemId","getVerifyNumTag","minNum","maxNum","start","verifyProps","field","prevLabel","unit","type","getVerifyDateTag","isDateTimeType","startDate","endDate","startDateTime","endDateTime","setStateNumRange","t","nextMinNum","nextMaxNum","curMinNumVar","curMaxNumVar","minIsNumber","maxIsNumber","rule","cb","valueIsNumber","MinValueIsNumber","curMin","curMinIsNumber","useDropdown","vm","cancelHandleInput","showValueItem","dateRangeFormat","newStart","newEnd","datetimeRangeFormat","subItem","option","selectPropItem","inputRef","updateModelValue","setOperator","replace","mergeTag","indexMap","options","newOptions","cloned","selectInputValue","val","selectRadioItem","createTag","isPotential","tagLabel","hasNotInputValueCreateTag","propItem","firstOption","newTagUpdateModelValue","hasInputValueCreateTag","inputValue","regexp","invalidTags","items","defaultField","defaultFieldReplace","matchedItem","defaultItem","currentItem","normalizedCurrentItem","maxlength","escapeRegExp","getHighlightMatch","labelRegex","match","startIndex","endIndex","useMatch","getMatchList","keyword","handleInput","e","recordItems","raw","patt","hasItem","hightlighStr","_d","groupKey","optionLabel","resetBackupList","isFirst","useCheckbox","confirm","checkboxGroup","hasTagIndex","checkboxLabel","indexList","filtered","useDatePicker","prev","endName","maxTimeLength","curTime","useNumRange","sizeChange","createDateRules","startKey","endKey","dateRules","datetimeRules","useEdit","setDropdownProps","curTag","labels","checkFormValidation","hasError","dom","popoverRef","isConfirm","disabled","typeArr","useCustom","updateCustomValue","customTag","useInit","backupPrevItem","zhCN","enUS","defaultLocale","locales","globalApp","globalT","setGlobalApp","app","setGlobalT","tFn","getCurrentLocale","browserLang","_e","getLocaleMessages","locale","params","error","messages","k2","paramKey","tArray","isLocaleSupported","getSupportedLocales","addLocale","removeLocale","i18n","api","resolveEmptyPlaceholder","initState","reactive","computed","watch","renderless","getCurrentInstance","onMounted","onBeforeUnmount","$emit","refs","slots","initAllApi","initWatch","deleteTag","clearTag","backspaceDeleteTag","editTag","confirmEditTag","selectPropChange","selectItemIsDisable","selectFirstMap","helpClick","selectCheckbox","onConfirmDate","handleDateShow","pickerOptions","initFormRule","handleConfirm","handleEditConfirm","initItems","watchOutsideClick","watchMouseDown","watchMouseMove","handleClick","isShowClose","eventsMap","setPlaceholder","placeholderValue","getEmptyPlaceholderValue","eventName","p1","p2","map","updatePlaceholder","placeholder","defaultPlaceholder","getI18nLocale","lastLocale","watchEstablished","newLocale","checkLocaleChange","currentLocale","newVal","wasOpen","currentField","updated","it","fields","optionValue","o","v","hooks","handleEvents","popoverVisible","currentOperators","_sfc_main","defineComponent","$prefix","TinyDropdownItem","$props","context","setup","_hoisted_1","_hoisted_3","_hoisted_6","_hoisted_9","_hoisted_12","_hoisted_13","_hoisted_15","_openBlock","_createElementBlock","_createVNode","_component_tiny_dropdown_item","_ctx","_cache","_withCtx","_createElementVNode","_toDisplayString","_Fragment","_renderList","_hoisted_2","_createBlock","_hoisted_4","_hoisted_5","_createCommentVNode","_hoisted_7","_hoisted_8","_hoisted_10","_hoisted_11","_createTextVNode","_vShow","_withDirectives","group","_hoisted_14","useVirtualScroll","getList","itemHeight","bufferSize","headerHeight","vsState","totalHeight","adjustedScrollTop","list","visibleCount","offsetY","visibleItems","b","isLoading","showCheckBoxList","currentFilteredList","backupList","vs","TinyFormItem","TinyCheckbox","TinyCheckboxGroup","TinyDatePicker","TinyInput","TinyButton","TinyLoading","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_30","_normalizeClass","_normalizeStyle","vsIndex","_component_tiny_checkbox_group","$event","_component_tiny_checkbox","_component_tiny_button","_component_tiny_form_item","_component_tiny_input","_withModifiers","_component_tiny_date_picker","_hoisted_21","_hoisted_27","_hoisted_28","_hoisted_29","TinyTag","TinyDropdown","TinyDropdownMenu","TinyTooltip","TinyForm","TinyPopover","TinySelect","TinyOption","TinySearchBoxFirstLevelPanel","TinySearchBoxSecondLevelPanel","iconSearch","iconClose","iconHelpQuery","_component_tiny_icon_search","_component_tiny_tag","_component_tiny_form","_component_tiny_popover","_withKeys","_component_tiny_icon_close","_f","_h","_g","_renderSlot","_component_tiny_tooltip","_component_tiny_icon_help_query","_mergeProps","_component_TinySearchBoxFirstLevelPanel","_component_TinySearchBoxSecondLevelPanel","_component_tiny_select","_component_tiny_option","searchBoxProps","TinySearchBox","template","Vue","runtime","version"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/utils/date.ts","../../src/utils/dropdown.ts","../../src/utils/index.ts","../../src/utils/tag.ts","../../src/composables/use-tag.ts","../../src/utils/validate.ts","../../src/composables/use-dropdown.ts","../../src/composables/use-match.ts","../../src/composables/use-checkbox.ts","../../src/composables/use-datepicker.ts","../../src/composables/use-num-range.ts","../../src/composables/use-edit.ts","../../src/composables/use-custom.ts","../../src/composables/use-init.ts","../../src/utils/zh_CN.ts","../../src/utils/en_US.ts","../../src/utils/i18n.ts","../../src/renderless.ts","../../src/components/first-level-panel.vue","../../src/composables/use-virtual-scroll.ts","../../src/components/second-level-panel.vue","../../src/pc.vue","../../src/index.ts","../../index.ts"],"sourcesContent":["/* eslint-disable prefer-rest-params */\n/**\n * Copyright (c) 2022 - present TinyVue Authors.\n * Copyright (c) 2022 - present Huawei Cloud Computing Technologies Co., Ltd.\n *\n * Use of this source code is governed by an MIT-style license.\n *\n * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL,\n * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR\n * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS.\n *\n */\n/**\n * 填充字符串,根据填充模式参数,在字符串前面或后面补充字附到指定的长度。\n *\n * fillChar('1', 3) // \"001\"\n * fillChar('1', 3, true) // \"100\"\n * fillChar('1', 3, true, ' ') // \"1 \"\n *\n * @param {String} string 被填充的字符串\n * @param {Number} length 填充到某个长度\n * @param {Boolean} [append=false] 是否在后面填充,默认为在前面填充\n * @param {String} [chr=\"0\"] 填充的字符,默认为0\n * @returns {String}\n */\nexport const fillChar = (string, length, append, chr = '0') => {\n if (typeof string === 'string' && typeof chr === 'string' && isNumber(length)) {\n let len = string.length - length\n\n if (len > 0) {\n return append ? string.substr(0, length) : string.substr(len, length)\n } else {\n const appendStr = []\n len = Math.abs(len) / chr.length\n\n for (; len > 0; len--) {\n appendStr.push(chr)\n }\n\n const s = appendStr.join('')\n\n return append ? string + s : s + string\n }\n }\n}\n\nexport const toString = Object.prototype.toString\nexport const hasOwn = Object.prototype.hasOwnProperty\n\nconst getProto = Object.getPrototypeOf\nconst fnToString = hasOwn.toString\nconst ObjectFunctionString = fnToString.call(Object)\n\nconst class2type = {\n '[object Error]': 'error',\n '[object Object]': 'object',\n '[object RegExp]': 'regExp',\n '[object Date]': 'date',\n '[object Array]': 'array',\n '[object Function]': 'function',\n '[object AsyncFunction]': 'asyncFunction',\n '[object String]': 'string',\n '[object Number]': 'number',\n '[object Boolean]': 'boolean'\n}\n\n/** 判断是否为 null / undefined */\nexport const isNull = (x: any) => x === null || x === undefined\n\n/**\n * 返回 JavaScript 对象的类型。\n *\n * 如果对象是 undefined 或 null,则返回相应的'undefined'或'null'。\n *\n * 其他一切都将返回它的类型'object'。\n *\n * typeOf( undefined ) === 'undefined'\n * typeOf() === 'undefined'\n * typeOf( window.notDefined ) === 'undefined'\n * typeOf( null ) === 'null'\n * typeOf( true ) === 'boolean'\n * typeOf( 3 ) === 'number'\n * typeOf( \"test\" ) === 'string'\n * typeOf( function (){} ) === 'function'\n * typeOf( [] ) === 'array'\n * typeOf( new Date() ) === 'date'\n * typeOf( new Error() ) === 'error'\n * typeOf( /test/ ) === 'regExp'\n *\n */\nexport const typeOf: (obj: any) => string = (obj) =>\n isNull(obj) ? String(obj) : class2type[toString.call(obj)] || 'object'\n\n/**\n * 判断对象是否为 object 类型。\n *\n * isObject({}) // true\n */\nexport const isObject = (obj: any) => typeOf(obj) === 'object'\n\n/**\n * 判断对象是否为 function 类型。\n *\n * isObject(function (){) // true\n\n */\nexport const isFunction = (fn: any) => ['asyncFunction', 'function'].includes(typeOf(fn))\n\n/**\n * 判断对象是否为简单对象。\n *\n * 即不是 HTML 节点对象,也不是 window 对象,而是纯粹的对象(通过 '{}' 或者 'new Object' 创建的)。\n *\n * let obj = {}\n * isPlainObject(obj) //true\n */\nexport const isPlainObject = (obj: any) => {\n if (!obj || toString.call(obj) !== '[object Object]') {\n return false\n }\n\n const proto = getProto(obj)\n if (!proto) {\n return true\n }\n\n const Ctor = hasOwn.call(proto, 'constructor') && proto.constructor\n return typeof Ctor === 'function' && fnToString.call(Ctor) === ObjectFunctionString\n}\n\n/**\n * 检查对象是否为空(不包含任何属性)。\n *\n * let obj = {}\n * isEmptyObject(obj) // true\n */\nexport const isEmptyObject = (obj: any) => {\n const type = typeOf(obj)\n\n if (type === 'object' || type === 'array') {\n for (const name in obj) {\n if (hasOwn.call(obj, name)) {\n return false\n }\n }\n }\n\n return true\n}\n\n/**\n * 判断对象是否为数字类型。\n *\n * isNumber(369) // true\n */\nexport const isNumber = (value: any) => typeof value === 'number' && isFinite(value)\n\n/**\n * 判断对象是否代表一个数值。\n *\n * isNumeric('-10') // true\n * isNumeric(16) // true\n * isNumeric(0xFF) // true\n * isNumeric('0xFF') // true\n * isNumeric('8e5') // true\n * isNumeric(3.1415) // true\n * isNumeric(+10) // true\n * isNumeric('') // false\n * isNumeric({}) // false\n * isNumeric(NaN) // false\n * isNumeric(null) // false\n * isNumeric(true) // false\n * isNumeric(Infinity) // false\n * isNumeric(undefined) // false\n */\nexport const isNumeric = (value: any) => value - parseFloat(value) >= 0\n\n/**\n * 判断对象是否为日期类型。\n *\n * let date = new Date()\n * isDate(date) // true\n */\nexport const isDate = (value) => typeOf(value) === 'date'\n\n/**\n * 判断两个值是否值相同且类型相同。\n *\n * 注:在 JavaScript 里 NaN === NaN 为 false,因此不能简单的用 === 来判断。\n *\n * isSame(1, 1) // true\n * isSame(NaN, NaN) // true\n */\nexport const isSame = (x: any, y: any) =>\n x === y || (typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y))\n\n/** 判断是否是正则表达式 */\nexport const isRegExp = (value: any) => typeOf(value) === 'regExp'\n\nexport const isPromise = (val) => isObject(val) && isFunction(val.then) && isFunction(val.catch)\n\nconst daysInMonths = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\nconst yyyymmddReg = new RegExp(\n '^(\\\\d{4})(/|-)(((0)?[1-9])|(1[0-2]))((/|-)(((0)?[1-9])|([1-2][0-9])|(3[0-1])))' +\n '?( ((0)?[0-9]|1[0-9]|20|21|22|23):([0-5]?[0-9])((:([0-5]?[0-9]))?(.([0-9]{1,6}))?)?)?$'\n)\nconst mmddyyyyReg = new RegExp(\n '^(((0)?[1-9])|(1[0-2]))(/|-)(((0)?[1-9])|([1-2][0-9])|(3[0-1]))?(/|-)?(\\\\d{4})' +\n '( ((0)?[0-9]|1[0-9]|20|21|22|23):([0-5]?[0-9])((:([0-5]?[0-9]))?(.([0-9]{1,6}))?)?)?$'\n)\nconst iso8601Reg = new RegExp(\n '^(\\\\d{4})-(((0)?[1-9])|(1[0-2]))-(((0)?[1-9])|([1-2][0-9])|(3[0-1]))T' +\n '(((0)?[0-9]|1[0-9]|20|21|22|23):([0-5]?[0-9])((:([0-5]?[0-9]))?(.([0-9]{1,6}))?)?)?(Z|([+-])' +\n '((0)?[0-9]|1[0-9]|20|21|22|23):?([0-5]?[0-9]))$'\n)\n\nconst dateFormatRegs = {\n 'y{1,4}': /y{1,4}/,\n 'M{1,2}': /M{1,2}/,\n 'd{1,2}': /d{1,2}/,\n 'h{1,2}': /h{1,2}/,\n 'H{1,2}': /H{1,2}/,\n 'm{1,2}': /m{1,2}/,\n 's{1,2}': /s{1,2}/,\n 'S{1,3}': /S{1,3}/,\n 'Z{1,1}': /Z{1,1}/\n}\n\nconst maxDateValues = {\n YEAR: 9999,\n MONTH: 11,\n DATE: 31,\n HOUR: 23,\n MINUTE: 59,\n SECOND: 59,\n MILLISECOND: 999\n}\n\nconst timezone1 = '-12:00,-11:00,-10:00,-09:30,-08:00,-07:00,-06:00,-05:00,-04:30,-04:00,-03:30,-02:00,-01:00'\nconst timezone2 = '-00:00,+00:00,+01:00,+02:00,+03:00,+03:30,+04:00,+04:30,+05:00,+05:30,+05:45,+06:00'\nconst timezone3 = '+06:30,+07:00,+08:00,+09:00,+10:00,+10:30,+11:00,+11:30,+12:00,+12:45,+13:00,+14:00'\nconst timezones = [].concat(timezone1.split(','), timezone2.split(','), timezone3.split(','))\n\nconst getTimezone = (date) => {\n const timezoneoffset = 0 - date.getTimezoneOffset() / 60\n let timezone\n\n if (timezoneoffset === 0) {\n timezone = 'Z'\n } else if (timezoneoffset > 0) {\n timezone = '+' + (timezoneoffset > 10 ? timezoneoffset : '0' + timezoneoffset) + '00'\n } else {\n timezone = (timezoneoffset < -10 ? timezoneoffset : '-0' + -timezoneoffset) + '00'\n }\n\n return timezone\n}\n\n/**\n * 判断年份是否为闰年。\n *\n * isLeapYear(2017) // false\n * isLeapYear(2000) // true\n *\n * @param {Number} year 年份\n * @returns {Boolean}\n */\nexport const isLeapYear = (year) => year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)\n\nconst getMilliseconds = (milliseconds) =>\n milliseconds > maxDateValues.MILLISECOND ? Number(String(milliseconds).substring(0, 3)) : milliseconds\n\nconst getDateFromData = ({ year, month, date, hours, minutes, seconds, milliseconds }) => {\n let daysInMonth = daysInMonths[month]\n\n if (isLeapYear(year) && month === 1) {\n daysInMonth += 1\n }\n\n if (date <= daysInMonth) {\n return new Date(year, month, date, hours, minutes, seconds, getMilliseconds(milliseconds))\n }\n}\n\nconst yyyymmddDateParser = (m) => {\n /* istanbul ignore else */\n if (m.length === 23) {\n const year = Number(m[1])\n const month = m[3] - 1\n const date = Number(m[9] || 1)\n const hours = m[15] || 0\n const minutes = m[17] || 0\n const seconds = m[20] || 0\n const milliseconds = m[22] || 0\n\n return getDateFromData({\n date,\n year,\n hours,\n month,\n seconds,\n minutes,\n milliseconds\n })\n }\n}\n\nconst mmddyyyyDateParser = (m) => {\n /* istanbul ignore else */\n if (m.length === 22) {\n const year = Number(m[12])\n const month = m[1] - 1\n const date = Number(m[6] || 1)\n const hours = m[14] || 0\n const minutes = m[16] || 0\n const seconds = m[19] || 0\n const milliseconds = m[21] || 0\n\n return getDateFromData({\n year,\n month,\n date,\n hours,\n minutes,\n seconds,\n milliseconds\n })\n }\n}\n\nconst iso8601DateParser = (m) => {\n if (m.length !== 25) {\n return\n }\n const year = Number(m[1])\n const month = m[2] - 1\n const date = Number(m[6])\n const offset = new Date(year, month, date).getTimezoneOffset()\n const hours = m[12] || 0\n const minutes = m[14] || 0\n const seconds = m[17] || 0\n const milliseconds = m[19] || 0\n let timeZone = m[20]\n const sign = m[21]\n const offsetHours = m[22] || 0\n const offsetMinutes = m[24] || 0\n let daysInMonth = daysInMonths[month]\n let actHours\n let actMinutes\n if (isLeapYear(year) && month === 1) {\n daysInMonth += 1\n }\n if (date <= daysInMonth) {\n if (timeZone === 'Z') {\n actHours = hours - offset / 60\n actMinutes = minutes\n } else {\n if (!timeZone.includes(':')) {\n timeZone = timeZone.substr(0, 3) + ':' + timeZone.substr(3)\n }\n if (!timezones.includes(timeZone)) {\n return\n }\n\n actHours = sign === '+' ? hours - offsetHours - offset / 60 : Number(hours) + Number(offsetHours) - offset / 60\n actMinutes = sign === '+' ? minutes - offsetMinutes : Number(minutes) + Number(offsetMinutes)\n }\n\n return new Date(year, month, date, actHours, actMinutes, seconds, getMilliseconds(milliseconds))\n }\n}\n\nconst dateParsers = [\n [yyyymmddReg, yyyymmddDateParser],\n [mmddyyyyReg, mmddyyyyDateParser],\n [iso8601Reg, iso8601DateParser]\n]\n\nconst parseDate = (str) => {\n for (let i = 0, len = dateParsers.length; i < len; i++) {\n const m = dateParsers[i][0].exec(str)\n\n if (m && m.length > 0) {\n return dateParsers[i][1](m)\n }\n }\n}\n\nconst matchDateArray = (arr, value, text) => {\n if (text) {\n switch (text) {\n case 'yyyy':\n case 'yy':\n arr[0] = value\n break\n case 'M':\n case 'MM':\n arr[1] = value - 1\n break\n case 'd':\n case 'dd':\n arr[2] = value\n break\n case 'h':\n case 'hh':\n arr[3] = value\n break\n case 'm':\n case 'mm':\n arr[4] = value\n break\n case 's':\n case 'ss':\n arr[5] = value\n break\n case 'S':\n case 'SS':\n case 'SSS':\n arr[6] = value\n break\n default:\n break\n }\n }\n}\n\nconst getDateArray = (str, dateFormat) => {\n const arr = [0, -1, 0, 0, 0, 0]\n\n if (str.length !== dateFormat.length) {\n return arr\n }\n\n let valuePos = 0\n let textPos = 0\n\n for (let i = 0, len = str.length; i < len; i++) {\n const charValue = str.substr(i, 1)\n const notNum = isNaN(Number(charValue)) || charValue?.trim() === ''\n\n if ((notNum && charValue === dateFormat.substr(i, 1)) || i === len - 1) {\n let value\n let text\n\n if (notNum) {\n value = str.substring(valuePos, i)\n valuePos = i + 1\n const end = dateFormat.indexOf(charValue, textPos)\n\n text = dateFormat.substring(textPos, end === -1 ? dateFormat.length : end)\n\n textPos = end + 1\n } else {\n value = str.substring(valuePos, len)\n text = dateFormat.substring(textPos, len)\n }\n\n if (value.length === text.length || value) {\n matchDateArray(arr, value, text)\n }\n }\n }\n\n return arr\n}\n\nconst invalideTime = (time, min, max) => isNaN(time) || time < min || time > max\n\nconst invalideValue = ({ year, month, date, hours, minutes, seconds, milliseconds }) =>\n invalideTime(year, 0, maxDateValues.YEAR) ||\n invalideTime(month, 0, maxDateValues.MONTH) ||\n invalideTime(date, 0, maxDateValues.DATE) ||\n invalideTime(hours, 0, maxDateValues.HOUR) ||\n invalideTime(minutes, 0, maxDateValues.MINUTE) ||\n invalideTime(seconds, 0, maxDateValues.SECOND) ||\n invalideTime(milliseconds, 0, maxDateValues.MILLISECOND)\n\nconst innerParse = (value, dateFormat) => {\n if (typeof dateFormat === 'string') {\n const arr = getDateArray(value, dateFormat)\n const year = Number(arr[0])\n const month = Number(arr[1])\n const date = Number(arr[2] || 1)\n const hours = Number(arr[3] || 0)\n const minutes = Number(arr[4] || 0)\n const seconds = Number(arr[5] || 0)\n const milliseconds = Number(arr[6] || 0)\n\n if (\n invalideValue({\n year,\n month,\n date,\n hours,\n minutes,\n seconds,\n milliseconds\n })\n ) {\n return\n }\n\n return getDateFromData({\n year,\n date,\n month,\n minutes,\n hours,\n milliseconds,\n seconds\n })\n } else {\n return parseDate(value)\n }\n}\n\n/**\n * 将字符串或数字转换成 Date 类型。\n *\n * toDate('2008/02/02') // new Date(2008, 1, 2)\n * toDate(Date.UTC(2008, 1, 2)) // new Date(Date.UTC(2008, 1, 2))\n * toDate('2008/2/2', 'yyyy/M/d') // new Date(2008, 1, 2)\n * toDate('2008/02') // new Date(2008, 1, 1)\n * toDate('02/2008') // new Date(2008, 1, 1)\n * toDate('2008-02-01T20:08+08:00') // new Date(Date.UTC(2008, 0, 31, 16))\n * toDate('2008-02-01T04:08-08:00') // new Date(Date.UTC(2008, 1, 1, 8))\n *\n * @param {String|Number} value 日期类型字符串或数字\n * @param {String} [dateFormat] 转换格式\n *\n * 当 value 为字符串类型时,如果不提供,则尽可能按常见格式去解析。\n * 常见格式为 yyyy[/-]MM[/-]dd hh:mm:ss.SSS, MM[/-]dd [/-]yyyy hh:mm:ss.SSS 及 ISO8601 时间格式。\n *\n * 如果提供,则按具体格式严格匹配解析,并且年份必须为4位。\n * - yyyy 代表年份\n * - M 或 MM 代表1位或2位的月份\n * - d 或 dd 代表1位或2位的天数\n * - h 或 hh 代表24小时的1位或2位的小时\n * - m 或 mm 代表1位或2位的分钟,\n * - s 或 ss 代表1位或2位的秒\n * - S 或 SS 或 SSS 代表1位或2位或3位的毫秒\n *\n * @param {String} [minDate] 最小时间,默认为 0001-01-01 00:00:00.000\n * @returns {Date}\n */\nexport const toDate = (value, dateFormat, minDate) => {\n let date\n\n if (isNumber(value)) {\n date = new Date(value)\n } else if (typeof value === 'string') {\n date = innerParse(value, dateFormat)\n }\n\n if (minDate) {\n const min = (minDate && toDate(minDate)) || new Date(1, 1, 1, 0, 0, 0)\n return date && date < min ? min : date\n }\n\n return date\n}\n\n/**\n * 将 Date 实例转换成日期字符串。\n * 当 date 为日期字符串时,如果只有2个参数,则第2个参数为格式化后的格式化字符串\n * 如果有3个参数,则第2个参数为转换的格式化参数,第3个参数为格式化后的格式化参数\n *\n * let date = new Date(2014, 4, 4, 1, 2, 3, 4)\n * format(date) // \"2014/05/04 01:02:03\"\n * format(date, 'yyyy/MM/dd hh:mm:ss.SSS') // \"2014/05/04 01:02:03.004\"\n * format(date, 'yyyy/MM/dd hh:mm:ss.SSSZ') // \"2014/05/04 01:02:03.004+0800\"\n * format(date, 'yyyy年MM月dd日 hh时mm分ss秒SSS毫秒') // \"2014年05月04日 01时02分03秒004毫秒\"\n * format('2008/01/02', 'yyyy/MM/dd hh:mm:ss.SSS') // \"2008/02/02 00:00:00.000\"\n * format('2014/01/02/03/04/05/06', 'yyyy/MM/dd/hh/mm/ss', 'yyyy年MM月dd日 hh时mm分ss秒') // \"2014年01月02日 03时04分05秒006毫秒\"\n *\n * @param {Date|String} date Date 实例或日期字符串\n * @param {String} [dateFormat='yyyy/MM/dd hh:mm:ss'] 转换格式\n *\n * 常见格式为 yyyy[/-]MM[/-]dd hh:mm:ss.SSS, MM[/-]dd [/-]yyyy hh:mm:ss.SSS 及 ISO8601 时间格式。\n *\n * 如果提供,则按具体格式严格匹配解析,并且年份必须为4位。\n * - yyyy 代表年份\n * - M 或 MM 代表1位或2位的月份\n * - d 或 dd 代表1位或2位的天数\n * - h 或 hh 代表24小时的1位或2位的小时\n * - m 或 mm 代表1位或2位的分钟,\n * - s 或 ss 代表1位或2位的秒\n * - S 或 SS 或 SSS 代表1位或2位或3位的毫秒\n *\n * @returns {String}\n */\nexport const format = function (date, dateFormat = 'yyyy/MM/dd hh:mm:ss') {\n if (isDate(date)) {\n if (typeof dateFormat === 'string') {\n const o = {\n 'y{1,4}': date.getFullYear(),\n 'M{1,2}': date.getMonth() + 1,\n 'd{1,2}': date.getDate(),\n 'h{1,2}': date.getHours(),\n 'H{1,2}': date.getHours(),\n 'm{1,2}': date.getMinutes(),\n 's{1,2}': date.getSeconds(),\n 'S{1,3}': date.getMilliseconds(),\n 'Z{1,1}': getTimezone(date)\n }\n\n Object.keys(o).forEach((k) => {\n const m = dateFormat.match(dateFormatRegs[k])\n\n if (k && m && m.length) {\n dateFormat = dateFormat.replace(m[0], k === 'Z{1,1}' ? o[k] : fillChar(o[k].toString(), m[0].length))\n }\n })\n\n return dateFormat\n }\n } else if (typeof date === 'string' && arguments.length >= 2) {\n let afterFormat = dateFormat\n\n if (arguments.length === 2) {\n dateFormat = undefined\n } else {\n afterFormat = arguments[2]\n }\n\n const dateValue = toDate(date, dateFormat)\n return dateValue ? format(dateValue, afterFormat) : ''\n }\n}\n\n/**\n * 将当前操作的时间变更时区,主要用于转换一个其他时区的时间。\n *\n * var date = new Date(2017, 0, 1)\n * getDateWithNewTimezone(date, 0, -2)\n *\n * @param {Date} date Date 实例或日期字符串\n * @param {Number} otz 原时区 -12~13\n * @param {Number} ntz 目标时区 -12~13 默认为当前时区\n * @param {Boolean} TimezoneOffset 时区偏移量\n * @returns {Date}\n */\nexport const getDateWithNewTimezone = (date, otz, ntz, timezoneOffset = 0) => {\n if (!isDate(date) || !isNumeric(otz) || !isNumeric(ntz) || !isNumeric(timezoneOffset)) {\n return\n }\n\n const otzOffset = -otz * 60\n const ntzOffset = -ntz * 60\n const dstOffeset = timezoneOffset * 60\n const utc = date.getTime() + otzOffset * 60000\n\n return new Date(utc - (ntzOffset - dstOffeset) * 60000)\n}\n\n/**\n * 按时区将 Date 实例转换成字符串。\n *\n * toDateStr(new Date(2017, 0, 1, 12, 30), 'yyyy/MM/dd hh:mm', 3) // \"2017/01/01 15:30\"\n * toDateStr('2008/01/02', 'yyyy/MM/dd hh:mm', 3) // \"2008/01/02 03:00\"\n *\n * @param {Date|String} date Date 实例或日期字符串\n * @param {String} dateFormat 转换格式\n * @param {Number} [timezone] 时区\n * @returns {String}\n */\nexport const toDateStr = (date, dateFormat, timezone) => {\n if (date && isNumeric(timezone)) {\n timezone = parseFloat(parseFloat(timezone).toFixed(2))\n\n date = getDateWithNewTimezone(isDate(date) ? date : new Date(toDate(date)), 0, timezone)\n }\n\n return format(date, dateFormat)\n}\n\n/**\n * 获取日期所在周的第一天,默认周一为第一天(可扩展周日为第一天)。\n *\n * getWeekOfFirstDay() // 返回当前日期所在周的周一同一时间\n * getWeekOfFirstDay(true) // 返回当前日期所在周的周日同一时间\n * getWeekOfFirstDay(new Date(2019, 8, 5)) // new Date(2019, 8, 2)\n * getWeekOfFirstDay(new Date(2019, 8, 5)), true) // new Date(2019, 8, 1)\n *\n * @param {Date} [date=new Date()] date 日期实例,默认当天\n * @param {Boolean} [isSunFirst] 是否设置周日为第一天,非必填\n * @returns {Date}\n */\nexport const getWeekOfFirstDay = (date, isSunFirst) => {\n typeof date === 'boolean' && (isSunFirst = date)\n isDate(date) || (date = new Date())\n\n const day = date.getDay()\n let dayOfMonth = date.getDate()\n\n if (day === 0) {\n !isSunFirst && (dayOfMonth -= 6)\n } else {\n dayOfMonth = dayOfMonth - day + (!isSunFirst && 1)\n }\n\n return new Date(date.getFullYear(), date.getMonth(), dayOfMonth)\n}\n\nconst TZRE = /(-|\\+)(\\d{2}):?(\\d{2})$/\n\nexport const getLocalTimezone = () => 0 - new Date().getTimezoneOffset() / 60\n\nexport const getStrTimezone = (value) => {\n const localTimeZone = getLocalTimezone()\n const match = typeof value === 'string' && value.match(TZRE)\n\n if (match) {\n const minoffset = Number(match[2]) + Number(match[3]) / 60\n value = minoffset * `${match[1]}1`\n }\n\n if (isNumber(value) && value >= -12 && value <= 12) {\n return value\n }\n\n return localTimeZone\n}\n","/**\n * 下拉框显隐\n * @param state 组件响应式数据\n * @param isShow 是否展示下拉框, 默认展示\n */\nexport const showDropdown = (state, isShow = true) => {\n clearTimeout(state.visibleTimer)\n state.visibleTimer = null\n if (isShow) {\n if (!state.visible) {\n state.visibleTimer = setTimeout(() => {\n state.visible = true\n }, 0)\n }\n } else {\n state.visible = false\n }\n}\n\n/**\n * 编辑下拉框显隐\n * @param state 组件响应式数据\n * @param isShow 是否展示编辑下拉框, 默认展示\n */\nexport const showPopover = (state, isShow = true) => {\n if (!state.instance) return\n state.popoverVisible = isShow\n const { dropdownRef } = state.instance\n\n if (isShow && dropdownRef.state.visible) {\n clearTimeout(Number(dropdownRef.state.timeout))\n dropdownRef.state.timeout = null\n dropdownRef.state.visible = false\n }\n}\n","export const debounce = (func: Function, delay = 200) => {\n let timer: ReturnType<typeof setTimeout> | null = null;\n\n const debounced = function (this: any, ...args: any) {\n if (timer) clearTimeout(timer);\n timer = setTimeout(() => {\n func.apply(this, args);\n timer = null;\n }, delay);\n };\n\n // 添加取消方法\n debounced.cancel = () => {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n };\n\n return debounced;\n}\n\nexport const isNumber = (value: any) => parseFloat(value).toString() !== 'NaN'\n\n/**\n * 深拷贝方法\n * @param obj 元数据\n * @returns\n */\nexport const deepClone = (obj) => {\n const objClone = Array.isArray(obj) ? [] : {}\n if (obj && typeof obj === 'object') {\n const keys = Object.keys(obj)\n if (keys.length) {\n keys.forEach((key) => {\n if (obj[key] && typeof obj[key] === 'object') {\n objClone[key] = deepClone(obj[key])\n } else {\n objClone[key] = obj[key]\n }\n })\n } else {\n return obj\n }\n }\n\n return objClone\n}\n\n/**\n * 过滤复制对象的key值\n * @param obj 复制对象\n * @param keysToOmit key值\n */\nexport const omitObj = (obj, keysToOmit = ['mergeTag', 'options', 'idMapKey']) => {\n const result = { ...obj }\n keysToOmit.forEach((key) => {\n delete result[key]\n })\n return result\n}\n\n","import type { ISearchBoxNewTag } from '../index.type.ts'\nimport { deepClone } from './index.ts'\nimport { showPopover } from './dropdown.ts'\n\n/**\n * 判断是否已选择此标签\n * @param state searchbox的state变量\n * @param itemValue 标签的value值\n * @param itemLabel 标签的label值,可选参数,默认为空字符串,一般用于当prevItem.label为空时\n * @return 已选择则返回true,未选择则返回false\n */\nexport const hasTagItem = (state, itemValue, itemLabel = '') => {\n const { valueMap, prevItem } = state\n const value = (prevItem.label || itemLabel) + itemValue\n return valueMap.has(value)\n}\n\n/**\n * 清空输入框的值\n * @param state searchbox的state变量\n */\nexport const resetInput = (state) => {\n state.propItem = {}\n state.inputValue = ''\n}\n\n/**\n * update:modelValue和change事件\n * @param emit vue的api\n * @param state searchbox的state变量\n * @param args 其他可选参数:\n * @param tagList 尾部添加的新标签数组\n * @param index 替换某标签的索引\n * @param newTag 表示替换的新标签,主要和索引共用\n * @param newValue 表示替换全部的model-value值\n * @param oldValue 表示旧的model-value值\n */\nexport const emitChangeModelEvent = ({ emit, state, nextTick, ...args }) => {\n showPopover(state, false)\n const { tagList = null, index = -1, newTag = null, newValue = null, oldValue = null, isEdit } = args\n if (!isEdit) {\n resetInput(state)\n }\n if (!tagList && index === -1 && !newValue) {\n return\n }\n\n const oldVal = oldValue || deepClone(state.innerModelValue)\n let innerModelValue = []\n \n if (newValue) {\n innerModelValue = [...newValue]\n } else if (index !== -1) {\n innerModelValue = [...state.innerModelValue]\n newTag ? innerModelValue.splice(index, 1, newTag) : innerModelValue.splice(index, 1)\n } else {\n innerModelValue = [...state.innerModelValue, ...tagList]\n }\n \n // 直接赋值新数组,确保 Vue 2 和 Vue 3 都能触发响应式更新\n state.innerModelValue = innerModelValue\n \n // 同步emit,确保立即触发 - Vue 2 需要立即更新才能逐步显示\n emit('update:modelValue', deepClone(innerModelValue))\n emit('change', deepClone(innerModelValue), oldVal)\n}\n\n/**\n * 创建新标签,防止多个地方创建的标签不一致,缺少某些属性\n * @param newTag 新标签对象\n * @return 生成的新标签对象\n */\nexport const createNewTag = (newTag: ISearchBoxNewTag) => newTag\n\n/**\n * 获取元素的唯一标识\n * @param props 组件入参对象\n * @param prevItem 当前标签父级对象\n * @param item 要生成的新标签对象\n * @return 此标签的唯一标识\n */\nexport const getTagId = (props, prevItem, item) => {\n const idKey = prevItem.idMapKey || props.idMapKey\n return item && item[idKey] !== undefined ? { [idKey]: item[idKey] } : null\n}\n","import { showDropdown } from '../utils/dropdown.ts'\nimport { emitChangeModelEvent } from '../utils/tag.ts'\nimport { deepClone } from '../utils/index.ts'\n\nexport function useTag({ props, state, emit, nextTick }) {\n let lastInputValue = deepClone(state.inputValue)\n\n const changeIsChecked = (tag) => {\n if (tag) {\n const parent = state.recordItems.find((item) => item.label === tag.label)\n if (parent && parent.options) {\n const child = parent.options.find((item) => item.label === tag.value)\n child && (child.isChecked = false)\n }\n }\n }\n\n const deleteTag = (tag) => {\n showDropdown(state, false)\n changeIsChecked(tag)\n const newValue = props.modelValue.filter((item) => item !== tag)\n emitChangeModelEvent({ emit, state, nextTick, newValue })\n }\n\n const clearTag = () => {\n showDropdown(state, false)\n props.modelValue.forEach((item) => changeIsChecked(item))\n state.propItem = {}\n state.inputValue = ''\n emitChangeModelEvent({ emit, state, nextTick, newValue: [] })\n emit('clear')\n }\n\n const backspaceDeleteTag = () => {\n if (state.inputValue) {\n return\n }\n if (state.propItem.label) {\n state.propItem = {}\n return\n }\n if (lastInputValue === '' && state.inputValue === '') {\n showDropdown(state, false)\n const lastIndex = props.modelValue.length - 1\n changeIsChecked(props.modelValue[lastIndex])\n const newValue = state.innerModelValue.slice(0, props.modelValue.length - 1)\n emitChangeModelEvent({ emit, state, nextTick, newValue })\n }\n lastInputValue = state.inputValue\n if (state?.instance?.refs?.inputRef?.$el) {\n state.instance.refs.inputRef.$el.click()\n }\n }\n\n return {\n deleteTag,\n clearTag,\n backspaceDeleteTag\n }\n}\n","import { createNewTag, getTagId } from './tag.ts'\nimport { isNumber, omitObj } from './index.ts'\n\n/**\n * 校验正常标签的值,并返回相应的新标签\n * @param instance searchbox 的 instance\n * @param state searchbox 的 state\n * @param props searchbox 的 props\n * @return 验证通过则返回新标签对象,否则返回null\n */\nexport const getVerifyTag = async (instance, state, props) => {\n const { prevItem, inputEditValue } = state\n const { operators } = prevItem\n const rest = omitObj(prevItem)\n let newTag = null\n let isPass = true\n\n await instance.$refs.formRef.validateField(['inputEditValue'], (errMsg) => {\n if (errMsg) {\n isPass = false\n }\n })\n\n if (isPass) {\n let id = null\n const operator = state.operatorValue && operators ? { operator: state.operatorValue } : null\n let value = inputEditValue\n const otherAttr = {}\n // 多选\n if (Array.isArray(inputEditValue)) {\n otherAttr.options = []\n value = ''\n inputEditValue.forEach((editValue) => {\n const item = state.currentEditValue.find((item) => item.label === editValue)\n const label = item?.label || editValue\n value = !value ? label : `${value} | ${label}`\n if (item) {\n const itemId = getTagId(props, prevItem, item)\n otherAttr.options.push({ label, ...itemId })\n } else {\n otherAttr.options.push({ label })\n }\n })\n } else if (Array.isArray(state.currentEditValue)) {\n // 单选\n const item = state.currentEditValue.find((item) => item.label === value)\n id = getTagId(props, prevItem, item)\n }\n\n newTag = createNewTag({ ...rest, label: state.selectValue, ...operator, value, ...id, ...otherAttr })\n }\n\n return newTag\n}\n\n/**\n * 校验 numRange 的值,并返回相应的新标签\n * @param instance searchbox 的 instance\n * @param state searchbox 的 state\n * @param props searchbox 的 props\n * @return 验证通过则返回新标签对象,否则返回null\n */\nexport const getVerifyNumTag = async (instance, state, props) => {\n const { prevItem } = state\n const minNum = `min${prevItem.field}`\n const maxNum = `max${prevItem.field}`\n const start = state[minNum]\n const end = state[maxNum]\n const verifyProps = [minNum, maxNum]\n let isPass = true\n let newTag = null\n await instance.$refs.formRef.validateField(verifyProps, (errMsg) => {\n if (errMsg) {\n isPass = false\n }\n })\n\n if (isPass) {\n const { field, label: prevLabel, unit, type, operators } = prevItem\n const label = unit ? `${prevLabel}(${unit})` : prevLabel\n let value = ''\n if (start && end) {\n value = `${start}-${end}`\n } else {\n value = start ? `≥${start}` : `≤${end}`\n }\n const id = getTagId(props, prevItem, prevItem)\n const operator = state.operatorValue && operators ? { operator: state.operatorValue } : null\n newTag = createNewTag({ type, field, label, value, ...id, start, end, ...operator })\n }\n\n return newTag\n}\n\n/**\n * 校验 dateRange datetimeRange 的值,并返回相应的新标签\n * @param instance searchbox 的 instance\n * @param state searchbox 的 state\n * @param props searchbox 的 props\n * @param isDateTimeType 是否 datetimeRange\n * @return 验证通过则返回新标签对象,否则返回null\n */\nexport const getVerifyDateTag = async (instance, state, props, isDateTimeType) => {\n const { prevItem, startDate, endDate, startDateTime, endDateTime } = state\n let start = null\n let end = null\n let isPass = true\n let newTag = null\n let verifyProps = null\n if (isDateTimeType) {\n start = startDateTime\n end = endDateTime\n verifyProps = ['startDateTime', 'endDateTime']\n } else {\n start = startDate\n end = endDate\n verifyProps = ['startDate', 'endDate']\n }\n\n await instance.$refs.formRef.validateField(verifyProps, (errMsg) => {\n if (errMsg) {\n isPass = false\n }\n })\n\n if (isPass) {\n const { operators } = prevItem\n const rest = omitObj(prevItem)\n let value = ''\n if (start && end) {\n if (start > end) {\n return\n } else if (start === end) {\n value = start\n } else {\n value = `${start}-${end}`\n }\n } else {\n value = start ? `≥${start}` : `≤${end}`\n }\n const id = getTagId(props, prevItem, prevItem)\n const operator = state.operatorValue && operators ? { operator: state.operatorValue } : null\n newTag = createNewTag({ ...rest, value, start, end, ...id, ...operator })\n }\n\n return newTag\n}\n\n/**\n * 按需加载 state 里 numRange 类型的变量,按需加载校验规则\n * @param state searchbox 的 state\n * @param item 当前选择的 item 值\n */\nexport const setStateNumRange = (state, item, t) => {\n const { prevItem } = state\n const { field, start, end, min = prevItem.min, max = prevItem.max } = item\n const nextMinNum = `min${field}`\n const nextMaxNum = `max${field}`\n if (state.curMinNumVar !== nextMinNum || state.curMaxNumVar !== nextMaxNum) {\n delete state[state.curMinNumVar]\n delete state[state.curMaxNumVar]\n delete state.formRules[state.curMinNumVar]\n delete state.formRules[state.curMaxNumVar]\n state.curMinNumVar = nextMinNum\n state.curMaxNumVar = nextMaxNum\n }\n state[state.curMinNumVar] = start\n state[state.curMaxNumVar] = end\n const { curMinNumVar, curMaxNumVar } = state\n const minIsNumber = isNumber(min)\n const maxIsNumber = isNumber(max)\n if (minIsNumber || maxIsNumber) {\n state.formRules[curMinNumVar] = {\n validator: (rule, value, cb) => {\n const valueIsNumber = isNumber(value)\n\n if (\n (!valueIsNumber && isNumber(state[curMaxNumVar])) ||\n (valueIsNumber &&\n ((minIsNumber && !maxIsNumber && value >= min) ||\n (!minIsNumber && maxIsNumber && value <= max) ||\n (value >= min && value <= max)))\n ) {\n cb()\n } else {\n state.numberShowMessage = Boolean(value || state[curMaxNumVar])\n cb(new Error(t('tvp.tvpSearchbox.rangeMinErr', [min, max])))\n }\n }\n }\n state.formRules[curMaxNumVar] = {\n validator: (rule, value, cb) => {\n const MinValueIsNumber = isNumber(state[curMinNumVar])\n const curMin = MinValueIsNumber && min < state[curMinNumVar] ? Number(state[curMinNumVar]) : min\n const curMinIsNumber = isNumber(curMin)\n const valueIsNumber = isNumber(value)\n\n if (\n (!valueIsNumber && MinValueIsNumber) ||\n (valueIsNumber &&\n ((curMinIsNumber && !maxIsNumber && value >= curMin) ||\n (!curMinIsNumber && maxIsNumber && value <= max) ||\n (value >= curMin && value <= max)))\n ) {\n cb()\n } else if (!valueIsNumber && !MinValueIsNumber) {\n cb(new Error(t('tvp.tvpSearchbox.rangeNumberTitle')))\n } else {\n cb(new Error(t('tvp.tvpSearchbox.rangeMaxErr')))\n }\n }\n }\n } else {\n state.formRules[curMaxNumVar] = {\n validator: (rule, value, cb) => {\n const curMin = state[curMinNumVar]\n const valueIsNumber = isNumber(value)\n const curMinIsNumber = isNumber(curMin)\n\n if (\n (valueIsNumber && !curMinIsNumber) ||\n (!valueIsNumber && curMinIsNumber) ||\n (valueIsNumber && curMinIsNumber && value >= Number(curMin))\n ) {\n cb()\n } else if (!valueIsNumber && !curMinIsNumber) {\n cb(new Error(t('tvp.tvpSearchbox.rangeNumberTitle')))\n } else {\n cb(new Error(t('tvp.tvpSearchbox.rangeMaxErr')))\n }\n }\n }\n }\n}\n","import { hasTagItem, resetInput, createNewTag, getTagId, emitChangeModelEvent } from '../utils/tag.ts'\nimport { showDropdown } from '../utils/dropdown.ts'\nimport { setStateNumRange } from '../utils/validate.ts'\nimport { deepClone, omitObj } from '../utils/index.ts'\n\nexport function useDropdown({ props, emit, state, t, format, nextTick, vm, cancelHandleInput }) {\n const instance = vm || state.instance\n const showValueItem = (item) => {\n const { start, end, type } = item\n state.backupList = item.options\n if (type === 'numRange') {\n setStateNumRange(state, item, t)\n } else if (type === 'dateRange') {\n const { dateRangeFormat } = state\n if (!state.startDate && start) {\n const newStart = format(start, dateRangeFormat)\n state.startDate = state.endDate < newStart ? null : newStart\n }\n if (!state.endDate && end) {\n const newEnd = format(end, dateRangeFormat)\n state.endDate = newEnd < state.startDate ? null : newEnd\n }\n } else if (type === 'datetimeRange') {\n const { datetimeRangeFormat } = state\n if (!state.startDateTime && start) {\n const newStart = format(start, datetimeRangeFormat)\n state.startDateTime = state.endDateTime < newStart ? null : newStart\n }\n if (!state.endDateTime && end) {\n const newEnd = format(end, datetimeRangeFormat)\n state.endDateTime = newEnd < state.startDateTime ? null : newEnd\n }\n } else if (state.backupList && type === 'checkbox') {\n state.filterList = state.backupList\n state.checkboxGroup = []\n state.backupList?.forEach((subItem) => {\n if (hasTagItem(state, subItem.label)) {\n state.checkboxGroup.push(`${item.label}${subItem.label}`)\n }\n subItem.isFilter = false\n })\n }\n\n if (type !== 'checkbox' && state.backupList?.length) {\n state.backupList?.forEach((option) => {\n option.isFilter = false\n option.isChecked = hasTagItem(state, option.label)\n })\n }\n\n state.currentOperators = null\n if (!state.backupList && !['dateRange', 'datetimeRange', 'numRange', 'custom'].includes(type)) {\n showDropdown(state, false)\n } else {\n showDropdown(state)\n }\n }\n\n const selectPropItem = (item) => {\n const { field, label } = item\n\n // 创建新对象而不是直接修改属性,确保 Vue 2 响应式检测\n state.propItem = { ...state.propItem, label }\n\n emit('first-level-select', field)\n\n const inputRef = instance.$refs?.inputRef\n state.prevItem = item\n state.backupPrevItem = item\n\n const { operators } = item\n if (operators?.length) {\n state.operatorValue = ''\n state.currentOperators = operators\n showDropdown(state)\n } else {\n state.operatorValue = ':'\n showValueItem(item)\n }\n state.inputValue = ''\n inputRef.focus()\n }\n\n const setOperator = (operator) => {\n state.operatorValue = operator\n showValueItem(state.prevItem)\n }\n\n /**\n * 更新modelValue值\n * @param prevItem items数组的第一层元素信息,用来识别此类型标签的某些属性作相应处理\n * @param item 当前选中的标签值信息\n * @param label 标签左侧的label\n * @param value 标签右侧值的value\n */\n const updateModelValue = (prevItem, item, label, value) => {\n const { replace, operators, mergeTag } = prevItem\n const rest = omitObj(prevItem)\n const { indexMap } = state\n const index = indexMap.get(label)\n const id = getTagId(props, prevItem, item)\n const operator = state.operatorValue && operators ? { operator: state.operatorValue } : null\n let newTag = null\n\n if (mergeTag) {\n const options = { label: value, ...id }\n if (index >= 0) {\n const newValue = `${state.innerModelValue[index].value} | ${value}`\n const newOptions = [...state.innerModelValue[index].options, options]\n newTag = createNewTag({ ...state.innerModelValue[index], value: newValue, options: newOptions })\n } else {\n newTag = createNewTag({ ...rest, label, value, options: [options] })\n }\n } else {\n newTag = createNewTag({ ...rest, label, value, ...id, ...operator })\n }\n if (hasTagItem(state, value, label)) {\n resetInput(state)\n return\n }\n showDropdown(state, false)\n\n const oldValue = deepClone(state.innerModelValue)\n let newValue = [] as any[]\n if ((replace || mergeTag) && index >= 0) {\n const cloned = [...state.innerModelValue]\n cloned.splice(index, 1)\n newValue = [...cloned, newTag]\n } else {\n newValue = [...state.innerModelValue, newTag]\n }\n emitChangeModelEvent({ emit, state, nextTick, newValue, oldValue })\n }\n /**\n * 使用输入选项\n * @param val 输入框的值\n *\n */\n const selectInputValue = (val: string) => {\n createTag()\n instance.$refs?.inputRef?.focus()\n }\n\n /**\n * 选中单选标签\n * @param item 选中的标签option项\n * @param isPotential 是否为选择潜在匹配项,默认否。参数可选\n */\n const selectRadioItem = (item, isPotential = false) => {\n showDropdown(state, false)\n // 潜在匹配项没有prevItem\n if (isPotential) {\n state.prevItem = item\n state.backupPrevItem = item\n }\n\n const { prevItem } = state\n const value = item.value || item.label\n const inputRef = instance.$refs?.inputRef\n if (!hasTagItem(state, value)) {\n const tagLabel = state.propItem.label || item.label\n updateModelValue(prevItem, item, tagLabel, value)\n }\n inputRef.focus()\n }\n const hasNotInputValueCreateTag = (propItem, prevItem) => {\n // 有label\n if (propItem.label) {\n // 触发 second-level-enter 事件,传递当前选中的 item 和对应的 options\n emit('second-level-enter', prevItem)\n\n if (!prevItem.options || !prevItem.options.length) {\n return\n }\n\n const firstOption = prevItem.options[0]\n if (!firstOption) {\n return\n }\n\n const hasTag = props.modelValue.find((item) => item.value === firstOption.label)\n\n if (!hasTag) {\n const label = prevItem.label\n const value = firstOption.label\n updateModelValue(prevItem, firstOption, label, value)\n return\n }\n } else {\n emit('search', state.innerModelValue)\n }\n }\n\n const newTagUpdateModelValue = (prevItem, propItem, tag) => {\n const item = state.backupList?.find((subItem) => subItem.label === tag)\n updateModelValue(prevItem, item, propItem.label, tag)\n }\n\n const hasInputValueCreateTag = (inputValue, propItem, prevItem) => {\n // 有label的情况\n if (propItem.label) {\n const { regexp, replace, type, mergeTag } = prevItem\n const tagList =\n (type !== 'checkbox' && replace) || (type === 'checkbox' && mergeTag)\n ? [inputValue]\n : inputValue.split(props.splitInputValue)\n\n // 如果配置项有 regexp 校验条件,对每个 tag 单独进行校验\n if (regexp) {\n const invalidTags = []\n for (const tag of tagList) {\n // 每个 tag 单独用 regexp 校验\n if (regexp.test(tag)) {\n newTagUpdateModelValue(prevItem, propItem, tag)\n } else {\n invalidTags.push(tag)\n }\n }\n // 当有校验不合法的值时,抛出事件\n if (invalidTags.length > 0) {\n emit('validate-error', {\n invalidValues: invalidTags,\n field: prevItem.field,\n label: prevItem.label,\n regexp: regexp.toString()\n })\n }\n // 有输入且无正则\n } else {\n for (const tag of tagList) {\n newTagUpdateModelValue(prevItem, propItem, tag)\n }\n }\n // 无label的情况\n } else {\n const { items, defaultField, defaultFieldReplace } = props\n // 先根据 regexp 匹配找到对应的配置项\n const matchedItem = items.find((item) => {\n const { regexp } = item\n return regexp && regexp.test(state.inputValue)\n })\n const defaultItem = defaultField ? items.find((item) => item.field === defaultField) : state.allTypeAttri\n const currentItem = matchedItem || defaultItem\n const normalizedCurrentItem =\n !matchedItem && defaultFieldReplace ? { ...currentItem, replace: true } : currentItem\n const { replace, type, mergeTag, regexp } = normalizedCurrentItem\n const tagList =\n (type !== 'checkbox' && replace) || (type === 'checkbox' && mergeTag)\n ? [inputValue]\n : inputValue.split(props.splitInputValue)\n\n if (currentItem?.options?.length) {\n state.backupList = [...currentItem.options]\n state.backupList?.forEach((item) => {\n const label = item.value || item.label\n if (tagList.includes(label)) {\n item.isChecked = true\n }\n })\n }\n const label = currentItem.label\n \n // 如果配置项有 regexp 校验条件,对每个 tag 单独进行校验\n if (regexp) {\n const invalidTags = []\n for (const tag of tagList) {\n // 每个 tag 单独用 regexp 校验\n if (regexp.test(tag)) {\n updateModelValue(normalizedCurrentItem, {}, label, tag)\n } else {\n invalidTags.push(tag)\n }\n }\n // 当有校验不合法的值时,抛出事件\n if (invalidTags.length > 0) {\n emit('validate-error', {\n invalidValues: invalidTags,\n field: normalizedCurrentItem.field,\n label: normalizedCurrentItem.label,\n regexp: regexp.toString()\n })\n }\n } else {\n for (const tag of tagList) {\n updateModelValue(normalizedCurrentItem, {}, label, tag)\n }\n }\n }\n }\n\n const createTag = () => {\n const { inputValue, propItem, prevItem } = state\n // 取消 handleInput 的防抖,防止快速输入后回车导致面板弹出\n if (cancelHandleInput) {\n cancelHandleInput()\n }\n showDropdown(state, false)\n if (!inputValue) {\n // 输入为空的情况\n hasNotInputValueCreateTag(propItem, prevItem)\n } else {\n // 输入不为空的情况\n const { maxlength } = props\n if (maxlength && maxlength < inputValue.length) {\n emit('exceed', maxlength)\n return\n }\n\n hasInputValueCreateTag(inputValue, propItem, prevItem)\n }\n }\n\n // 帮助图标点击事件\n const helpClick = () => {\n emit('help')\n }\n\n return { selectPropItem, selectRadioItem, selectInputValue, createTag, helpClick, setOperator }\n}\n","// import { ref } from 'vue'\nimport { Loading } from '@opentiny/vue'\nimport { debounce } from '../utils/index.ts'\nimport { hasTagItem, createNewTag, getTagId, emitChangeModelEvent } from '../utils/tag.ts'\nimport { showDropdown } from '../utils/dropdown.ts'\n\nconst escapeRegExp = (string) => string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n\nconst getHighlightMatch = (labelRegex, label) => {\n const match = []\n let lastIndex = 0\n let result\n\n // 当正则表达式在label中找到匹配项时,不断进行匹配\n while ((result = labelRegex.exec(label)) !== null) {\n const startIndex = result.index // 获取当前匹配项的开始位置\n const endIndex = labelRegex.lastIndex // 获取当前匹配项的结束位置\n\n // 如果当前匹配项的开始位置大于上一次匹配项的结束位置,说明中间有未匹配的部分\n if (startIndex > lastIndex) {\n match.push(label.slice(lastIndex, startIndex)) // 将未匹配的部分添加到match数组中\n }\n\n match.push(label.slice(startIndex, endIndex)) // 将当前匹配项添加到match数组中\n lastIndex = endIndex // 更新上一次匹配项的结束位置\n }\n\n // 如果最后一次匹配项的结束位置小于label的长度,说明label的末尾还有未匹配的部分\n if (lastIndex < label.length) {\n match.push(label.slice(lastIndex)) // 将未匹配的部分添加到match数组中\n }\n\n return match\n}\n\nexport function useMatch({ props, state, emit, nextTick }) {\n // const loadingInstance = ref(null)\n\n const getMatchList = async (keyword: string) => {\n state.potentialOptions = await props.potentialOptions.getMatchList(keyword)\n showDropdown(state, true)\n }\n\n const handleSearch = (e) => {\n const { recordItems, propItem } = state\n const raw = typeof e === 'string' ? e : (e && e.target && typeof e.target.value === 'string' ? e.target.value : state.inputValue || '')\n const inputValue = String(raw)?.trim()\n const { maxlength } = props\n\n if (maxlength && maxlength < inputValue.length) {\n emit('exceed', maxlength)\n return\n }\n\n if (inputValue.length === 0) {\n resetBackupList()\n showDropdown(state)\n return\n }\n\n Object.keys(state.matchItems).forEach((key) => {\n state.matchItems[key].attr = []\n state.matchItems[key].attrValue = []\n })\n\n const value = escapeRegExp(inputValue)\n const patt = new RegExp(value, 'i')\n const hasItem =\n propItem.label || !value ? null : recordItems.find((item) => item.type === 'map' && patt.test(item.label))\n if (hasItem) {\n state.propItem = { ...state.propItem, label: hasItem.label }\n state.inputValue = ''\n state.prevItem = hasItem\n state.backupPrevItem = hasItem\n state.backupList = hasItem.options || []\n return\n }\n\n state.filterList = state.backupList?.filter((item) => {\n if (patt.test(item.label)) {\n delete item.isFilter\n if (hasTagItem(state, item.label)) {\n state.checkboxGroup.push(`${state.prevItem.label}${item.label}`)\n }\n\n return true\n } else {\n item.isFilter = true\n return false\n }\n })\n\n const labelRegex = new RegExp(value, 'ig')\n const hightlighStr = inputValue.toLowerCase()\n\n // 有label,只在backupList搜索\n if (state.propItem.label) {\n state.backupList?.forEach((item) => {\n item.hightlighStr = hightlighStr\n const itemLabel = item.label\n if (patt.test(itemLabel)) {\n item.match = getHighlightMatch(labelRegex, itemLabel)\n item.isFilter = false\n } else {\n item.isFilter = true\n }\n })\n // 添加默认选项,未匹配有输入值到也展示面板\n if (state.backupList?.length || inputValue) {\n showDropdown(state)\n } else {\n showDropdown(state, false)\n }\n return\n }\n\n // 无label,需要全局搜\n for (const item of recordItems) {\n const { options = [], groupKey = '0', ...rest } = item\n const itemLabel = rest.label\n if (patt.test(itemLabel)) {\n const match = getHighlightMatch(labelRegex, itemLabel)\n state.matchItems[groupKey].attr.push({ ...item, match, hightlighStr })\n }\n for (const option of options) {\n const optionLabel = state.propItem.label ? itemLabel : `${itemLabel}:${option.label}`\n if (patt.test(optionLabel)) {\n const match = getHighlightMatch(labelRegex, optionLabel)\n state.matchItems[groupKey].attrValue.push({\n ...option,\n ...rest,\n options,\n hightlighStr,\n value: option.label,\n match\n })\n }\n }\n }\n\n if (value && props.potentialOptions && props.potentialOptions.getMatchList) {\n getMatchList(value)\n } else {\n showDropdown(state)\n }\n }\n\n const handleInput = debounce(handleSearch, 500)\n\n // 保存取消函数,供外部调用\n const cancelHandleInput = () => {\n if (handleInput.cancel) {\n handleInput.cancel()\n }\n }\n\n const resetBackupList = () => {\n state.backupList?.forEach((item) => item.isFilter && delete item.isFilter)\n }\n\n const selectFirstMap = (item, isFirst) => {\n const { options } = item\n const { prevItem, propItem } = state\n if (options) {\n showDropdown(state, false)\n state.propItem = { ...state.propItem, value: `${item.label}=` }\n state.isShowTagKey = false\n state.inputValue = ''\n\n state.backupList = item.options || []\n resetBackupList()\n\n state.backupList?.forEach((subItem) => {\n const value = propItem.value + subItem.label\n subItem.isChecked = hasTagItem(state, value)\n })\n } else {\n if (item.isChecked) {\n return\n }\n\n showDropdown(state, false)\n state.isShowTagKey = true\n resetBackupList()\n const { field, type } = prevItem\n const value = propItem.value + item.label\n const id = getTagId(props, prevItem, item)\n const newTag = createNewTag({ type, field, label: propItem.label, value, ...id })\n const tagList = [newTag]\n emitChangeModelEvent({ emit, state, nextTick, tagList })\n }\n if (isFirst) {\n showDropdown(state)\n }\n }\n\n return {\n handleInput,\n selectFirstMap,\n cancelHandleInput\n }\n}\n","import { hasTagItem, createNewTag, getTagId, emitChangeModelEvent } from '../utils/tag.ts'\nimport { deepClone, omitObj } from '../utils/index.ts'\nimport { showDropdown } from '../utils/dropdown.ts'\n\nexport function useCheckbox({ props, state, emit, nextTick }) {\n const selectCheckbox = (confirm: boolean) => {\n showDropdown(state, false)\n const { checkboxGroup, prevItem, propItem } = state\n const rest = omitObj(prevItem)\n if (confirm) {\n const tagList = []\n const oldValue = deepClone(state.innerModelValue)\n const { mergeTag, operators, label: prevLabel } = prevItem\n if (mergeTag) {\n let value = ''\n const options = []\n const { indexMap } = state\n const hasTagIndex = indexMap.get(prevLabel)\n hasTagIndex !== undefined && state.innerModelValue.splice(hasTagIndex, 1)\n\n state.backupList?.forEach((item) => {\n const { label } = item\n const checkboxLabel = `${prevLabel}${label}`\n const hasItem = checkboxGroup.includes(checkboxLabel)\n if (hasItem) {\n delete item.isFilter\n const id = getTagId(props, prevItem, item)\n const newOptions = { label: item.label, ...id }\n value += !value ? label : ` | ${label}`\n options.push(newOptions)\n }\n })\n if (options.length > 0) {\n const newTag = { ...rest, value, options }\n tagList.push(newTag)\n }\n } else {\n const { valueMap } = state\n const indexList = []\n state.backupList?.forEach((item) => {\n const { label } = item\n const value = `${prevLabel}${label}`\n const hasItem = checkboxGroup.includes(value)\n if (hasItem && !hasTagItem(state, label)) {\n const id = getTagId(props, prevItem, item)\n const operator = state.operatorValue && operators ? { operator: state.operatorValue } : null\n const newTag = createNewTag({ ...rest, label: propItem.label, value: label, ...id, ...operator })\n tagList.push(newTag)\n item.isChecked = true\n } else if (!hasItem && hasTagItem(state, label)) {\n item.isChecked = false\n const index = valueMap.get(value)\n indexList.push(index)\n }\n })\n if (indexList.length) {\n const filtered = state.innerModelValue.filter((item, index) => item && !indexList.includes(index))\n // 直接通过 newValue 强制同步到 modelValue(Vue2 需要显式触发)\n emitChangeModelEvent({ emit, state, nextTick, newValue: filtered, oldValue })\n return\n }\n }\n emitChangeModelEvent({ emit, state, nextTick, tagList, oldValue })\n } else {\n state.propItem = { ...propItem, label: '' }\n state.inputValue = ''\n }\n }\n\n\n return {\n selectCheckbox,\n\n }\n}\n","import { showDropdown } from '../utils/dropdown.ts'\nimport { getVerifyDateTag } from '../utils/validate.ts'\nimport { emitChangeModelEvent } from '../utils/tag.ts'\n\nexport function useDatePicker({ props, state, emit, nextTick, vm }) {\n const instance = vm || state.instance\n const onConfirmDate = async (confirm: boolean, isDateTimeType = false) => {\n if (!confirm) {\n state.propItem = { label: '' } \n\n return\n }\n const newTag = await getVerifyDateTag(instance, state, props, isDateTimeType)\n if (newTag) {\n showDropdown(state, false)\n const newValue = props.modelValue.filter((prev) => prev.type !== newTag.type || prev.field !== newTag.field)\n newValue.push(newTag)\n emitChangeModelEvent({ emit, state, nextTick, newValue })\n } else {\n showDropdown(state)\n }\n }\n\n const handleDateShow = () => showDropdown(state)\n\n const pickerOptions = (startDate, endName = '') => ({\n disabledDate(time) {\n const { maxTimeLength = 0, min, max } = state.prevItem\n\n const endDate = state[endName]\n const curTime = time.getTime()\n // 有限制时间跨度timeLength时\n if (maxTimeLength > 0) {\n if (min || max) {\n if (endName && endDate) {\n const end = new Date(endDate).getTime()\n const start = !min && max ? end - maxTimeLength : Math.max(min.getTime(), end - maxTimeLength)\n return curTime < start || curTime > end\n } else if (!endName && startDate) {\n const start = new Date(startDate).getTime()\n const end = min && !max ? start + maxTimeLength : Math.min(max.getTime(), start + maxTimeLength)\n return curTime < start || curTime > end\n } else {\n return (min && curTime < min.getTime()) || (max && curTime > max.getTime())\n }\n } else {\n if (endName && endDate) {\n const end = new Date(endDate).getTime()\n const start = end - maxTimeLength\n return curTime < start || curTime > end\n } else if (!endName && startDate) {\n const start = new Date(startDate).getTime()\n const end = start + maxTimeLength\n return curTime < start || curTime > end\n } else {\n return false\n }\n }\n } else {\n if (min || max) {\n if (endName && endDate) {\n const end = new Date(endDate).getTime()\n return (min && curTime < min.getTime()) || curTime > end\n } else if (!endName && startDate) {\n const start = new Date(startDate).getTime()\n return curTime < start || (max && curTime > max.getTime())\n } else {\n return curTime < min || curTime > max\n }\n } else {\n if (endName && endDate) {\n const end = new Date(endDate).getTime()\n return curTime > end\n } else if (!endName && startDate) {\n const start = new Date(startDate).getTime()\n return curTime < start\n } else {\n return false\n }\n }\n }\n }\n })\n\n return {\n onConfirmDate,\n handleDateShow,\n pickerOptions\n }\n}\n","import { showDropdown } from '../utils/dropdown.ts'\nimport { getVerifyNumTag } from '../utils/validate.ts'\nimport { emitChangeModelEvent } from '../utils/tag.ts'\n\nexport function useNumRange({ props, state, t, emit, nextTick, vm }) {\n const instance = vm || state.instance\n const sizeChange = async (confirm: boolean) => {\n if (!confirm) {\n state.propItem = { ...state.propItem, label: '' }\n return\n }\n\n const newTag = await getVerifyNumTag(instance, state, props)\n if (newTag) {\n showDropdown(state, false)\n const newValue = props.modelValue.filter((prev) => prev.type !== newTag.type || prev.field !== newTag.field)\n newValue.push(newTag)\n emitChangeModelEvent({ emit, state, nextTick, newValue })\n } else {\n showDropdown(state)\n }\n }\n\n /**\n * 创建 type=dateRange 和 type = datetimeRange 的校验规则\n * @param startKey 校验的开始日期名\n * @param endKey 校验的结束日期名\n */\n const createDateRules = (item, startKey, endKey) => {\n const { maxTimeLength = 0 } = item\n return {\n [startKey]: {\n validator: (rule, value, cb) => {\n if (maxTimeLength > 0 && !value) {\n cb(new Error(t('tvp.tvpSearchbox.notBeNull')))\n } else if (!value && !state[endKey]) {\n cb(new Error(t('tvp.tvpSearchbox.rangeDateTitle')))\n } else {\n cb()\n }\n }\n },\n [endKey]: {\n validator: (rule, value, cb) => {\n if (maxTimeLength > 0 && !value) {\n cb(new Error(t('tvp.tvpSearchbox.notBeNull')))\n } else if (!value && !state[startKey]) {\n cb(new Error(t('tvp.tvpSearchbox.rangeDateTitle')))\n } else {\n cb()\n }\n }\n }\n }\n }\n\n const initFormRule = () => {\n let dateRules = {},\n datetimeRules = {}\n props.items.forEach((item) => {\n if (item.type === 'dateRange') {\n dateRules = createDateRules(item, 'startDate', 'endDate')\n }\n\n if (item.type === 'datetimeRange') {\n datetimeRules = createDateRules(item, 'startDateTime', 'endDateTime')\n }\n })\n state.formRules = {\n ...dateRules,\n ...datetimeRules\n }\n if (props.editable) {\n state.formRules.inputEditValue = {\n required: true,\n message: t('tvp.tvpSearchbox.notBeNull'),\n trigger: ['change', 'blur']\n }\n }\n }\n\n return {\n initFormRule,\n sizeChange\n }\n}\n","import { emitChangeModelEvent } from '../utils/tag.ts'\nimport { getVerifyNumTag, getVerifyDateTag, setStateNumRange, getVerifyTag } from '../utils/validate.ts'\nimport { showDropdown } from '../utils/dropdown.ts'\n\nexport function useEdit({ props, state, t, nextTick, format, emit, vm }) {\n const setDropdownProps = (curTag) => {\n const { operator, value, start, end } = curTag\n const { options, operators, type, mergeTag } = state.prevItem\n if (type === 'custom') {\n return\n } else if (type === 'numRange') {\n setStateNumRange(state, curTag, t)\n } else if (type === 'dateRange') {\n const { dateRangeFormat } = state\n state.startDate = format(start, dateRangeFormat)\n state.endDate = format(end, dateRangeFormat)\n } else if (type === 'datetimeRange') {\n const { datetimeRangeFormat } = state\n state.startDateTime = format(start, datetimeRangeFormat)\n state.endDateTime = format(end, datetimeRangeFormat)\n } else {\n if (mergeTag) {\n const labels = curTag.options?.flatMap((item) => item.label) || []\n // 多选编辑态,tiny-select multiple 需要数组\n state.inputEditValue = labels\n state.currentEditSelectTags = labels\n } else {\n // 其他场景使用字符串\n state.inputEditValue = Array.isArray(value) ? value.join(',') : (value || '')\n }\n state.currentEditValue = options\n }\n state.operatorValue = operator\n state.currentOperators = operators\n }\n\n // 检查表单校验状态\n const checkFormValidation = async () => {\n if (!state.instance?.$refs?.formRef) {\n return\n }\n\n const { prevItem } = state\n let verifyProps = []\n\n if (prevItem.type === 'numRange') {\n verifyProps = [state.curMinNumVar, state.curMaxNumVar]\n } else if (prevItem.type === 'dateRange') {\n verifyProps = ['startDate', 'endDate']\n } else if (prevItem.type === 'datetimeRange') {\n verifyProps = ['startDateTime', 'endDateTime']\n } else if (!['custom', 'map'].includes(prevItem.type)) {\n verifyProps = ['inputEditValue']\n }\n\n if (verifyProps?.length === 0) {\n state.hasFormError = false\n return\n }\n\n let hasError = false\n await state.instance.$refs.formRef.validateField(verifyProps, (errMsg) => {\n if (errMsg) {\n hasError = true\n }\n })\n\n state.hasFormError = hasError\n }\n\n const editTag = (tag, index, e) => {\n if (!props.editable || (tag.type && tag.type === 'map')) {\n return\n }\n\n showDropdown(state, false)\n state.popoverVisible = false\n const dom = e.target.classList.contains('tiny-tag') ? e.target : e.srcElement.parentElement\n\n nextTick(() => {\n const { popoverRef } = state.instance.$refs\n popoverRef.state.referenceElm = dom\n popoverRef.state.popperElm && (popoverRef.state.popperElm.style.display = 'none')\n popoverRef.doDestroy()\n state.popoverVisible = true\n // 打开编辑面板时检查校验状态\n checkFormValidation()\n })\n\n state.prevItem = state.recordItems.find((item) => item.field === tag.field)\n !state.prevItem && (state.prevItem = tag)\n state.selectValue = tag.label\n state.currentModelValueIndex = index\n\n emit('tagClick', tag)\n setDropdownProps(tag)\n }\n\n const selectPropChange = (item, disabled) => {\n if (disabled) return\n state.prevItem = item\n setDropdownProps(item)\n // 切换属性类型时检查校验状态\n nextTick(() => {\n checkFormValidation()\n })\n }\n\n const confirmEditTag = async (isConfirm) => {\n if (!isConfirm) {\n state.popoverVisible = false\n\n return\n }\n\n const { prevItem, currentModelValueIndex: index } = state\n\n let newTag = null\n if (prevItem.type === 'numRange') {\n newTag = await getVerifyNumTag(state.instance, state, props)\n } else if (prevItem.type === 'dateRange') {\n newTag = await getVerifyDateTag(state.instance, state, props, false)\n } else if (prevItem.type === 'datetimeRange') {\n newTag = await getVerifyDateTag(state.instance, state, props, true)\n } else {\n newTag = await getVerifyTag(state.instance, state, props)\n }\n\n if (newTag) {\n showDropdown(state, false)\n state.popoverVisible = false\n emitChangeModelEvent({ emit, state, nextTick, index, newTag, isEdit: true })\n } else {\n state.popoverVisible = true\n }\n\n state.currentEditValue = []\n }\n\n const selectItemIsDisable = (item) => {\n if (item.type && item.type === 'map') {\n return true\n }\n\n if (state.prevItem?.operators || item.operators) {\n return state.prevItem.operators?.length !== item.operators?.length\n }\n\n const typeArr = ['radio', 'checkbox']\n if (state.prevItem.type && typeArr.includes(state.prevItem.type)) {\n return !item.type ? false : !typeArr.includes(item.type)\n }\n\n return state.prevItem?.type !== item.type\n }\n\n return {\n editTag,\n confirmEditTag,\n selectPropChange,\n selectItemIsDisable,\n checkFormValidation\n }\n}\n","import { resetInput, emitChangeModelEvent, hasTagItem } from '../utils/tag.ts'\nimport { showDropdown, showPopover } from '../utils/dropdown.ts'\n\nexport function useCustom({ state, emit, nextTick }) {\n const updateCustomValue = (customTag) => {\n showDropdown(state, false)\n const { prevItem, indexMap } = state\n const { replace, label } = prevItem\n\n const tagList = []\n if (replace && indexMap.has(label)) {\n const index = indexMap.get(label)\n const newTag = { ...prevItem, ...customTag }\n emitChangeModelEvent({ emit, state, nextTick, newTag, index })\n\n return\n } else if (!replace && Array.isArray(customTag)) {\n customTag.forEach((tag) => {\n if (!hasTagItem(state, tag.value)) {\n tagList.push({ ...prevItem, ...tag })\n }\n })\n } else {\n if (!hasTagItem(state, customTag.value)) {\n tagList.push({ ...prevItem, ...customTag })\n }\n }\n emitChangeModelEvent({ emit, state, nextTick, tagList })\n }\n\n const handleConfirm = (customTag) => {\n if (!customTag) {\n resetInput(state)\n showDropdown(state, false)\n return\n }\n\n updateCustomValue(customTag)\n }\n\n const handleEditConfirm = (customTag) => {\n if (!customTag) {\n showPopover(state, false)\n return\n }\n\n updateCustomValue(customTag)\n }\n\n return {\n handleConfirm,\n handleEditConfirm\n }\n}\n","import { showDropdown, showPopover } from '../utils/dropdown.ts'\nimport { hasTagItem } from '../utils/tag.ts'\n\nexport function useInit({ props, state }) {\n const initItems = () => {\n state.groupItems = {}\n state.recordItems.forEach((item) => {\n const { groupKey = '0' } = item\n if (state.groupItems[groupKey]) {\n state.groupItems[groupKey].push({ ...item })\n } else {\n state.groupItems[groupKey] = [{ ...item }]\n state.matchItems[groupKey] = { attr: [], attrValue: [] }\n }\n if (state.prevItem && item.field === state.prevItem.field && item !== state.prevItem) {\n const { options, type } = item\n state.prevItem = item\n if (options?.length) {\n state.backupList = options\n }\n if (type === 'checkbox') {\n state.filterList = state.backupList\n state.checkboxGroup = []\n state.backupList?.forEach((subItem) => {\n const { label } = subItem\n if (hasTagItem(state, label)) {\n state.checkboxGroup.push(`${item.label}${label}`)\n }\n subItem.isFilter = false\n })\n }\n showDropdown(state, item.field === state.prevItem.field && item !== state.prevItem)\n }\n })\n }\n\n const handleClick = (e) => {\n const { backupPrevItem, prevItem } = state\n e.stopPropagation()\n if (props.editable) {\n state.popoverVisible = false\n state.currentEditValue = []\n if (state.propItem.label && backupPrevItem && backupPrevItem !== prevItem) {\n state.prevItem = backupPrevItem\n }\n }\n\n if (\n (state.hasBackupList && (state.backupList?.length === 0 || !state.backupList) && !state.inputValue) ||\n props.items.length === 0\n ) {\n showDropdown(state, false)\n } else {\n showDropdown(state)\n }\n }\n\n const watchOutsideClick = () => {\n if (props.editable) {\n showPopover(state, false)\n }\n\n state.isMouseDown = false\n showDropdown(state, false)\n }\n\n const watchMouseDown = () => {\n state.isMouseDown = true\n }\n\n const watchMouseMove = () => {\n if (state.isMouseDown) {\n state.isMouseDown = false\n }\n }\n\n return {\n initItems,\n watchOutsideClick,\n watchMouseDown,\n watchMouseMove,\n handleClick\n }\n}\n","export default {\n tvp: {\n tvpSearchbox: {\n defaultPlaceholder: '请选择属性筛选,或输入关键字',\n addPlaceholder: '添加筛选条件',\n tagPlaceholder: '请选择标签键/值搜索,或输入“键=值”搜索',\n dynamicPlaceholder: '请选择{newValue}搜索',\n attributeType: '属性类型',\n propertyValue: '{0}的值',\n matched: '潜在匹配项',\n allValues: '所有值',\n allProperty: '全部属性',\n operator: '运算符',\n clearAll: '清空',\n emptyValue: '空 值',\n help: '点击查看帮助',\n switchText: '切换到默认搜索项',\n tagKey: '键',\n tagValue: '值',\n minValueText: '最小值',\n maxValueText: '最大值',\n rangeMinErr: '输入值必须在{0}~{1}之间',\n rangeMaxErr: '最大值必须大于等于最小值,或者为空',\n rangeNumberTitle: '请至少输入一个值',\n rangeDateTitle: '请至少输入一个日期',\n timeLengthTitle: '可选时间跨度为{value}天内',\n rangeBeginLabel: '开始日期',\n rangeEndLabel: '结束日期',\n rulekeyword1: '关键字',\n notBeNull: '值不能为空',\n selectAll: '全选',\n confirm: '确定',\n cancel: '取消',\n equal: '等于',\n notEqual: '不等于',\n contain: '包含',\n notContain: '不包含',\n initUse: '搜索'\n }\n }\n}\n","export default {\n tvp: {\n tvpSearchbox: {\n defaultPlaceholder: 'Select attribute filtering or enter keywords',\n addPlaceholder: 'Add filtering criteria',\n tagPlaceholder: 'Please select tag key/value search, or enter \"key=value\" to search',\n dynamicPlaceholder: 'Please select {newValue} to search',\n attributeType: 'Attribute Type',\n propertyValue: 'The value of {0}',\n matched: 'Potential matching items',\n allValues: 'All values',\n allProperty: 'All Properties',\n operator: 'Operator',\n clearAll: 'Clear',\n emptyValue: 'Empty value',\n help: 'Click to view help',\n switchText: 'Switch to default search terms',\n tagKey: 'Key',\n tagValue: 'Value',\n minValueText: 'Minimum value',\n maxValueText: 'Maximum value',\n rangeMinErr: 'The input value must be between {0} and {1}',\n rangeMaxErr: 'The maximum value must be greater than or equal to the minimum value, or empty',\n rangeNumberTitle: 'Please enter at least one value',\n rangeDateTitle: 'Please enter at least one date',\n timeLengthTitle: 'The optional time span is within {value} days',\n rangeBeginLabel: 'Start date',\n rangeEndLabel: 'End date',\n rulekeyword1: 'Keywords',\n notBeNull: 'The value cannot be empty',\n selectAll: 'Select All',\n confirm: 'Confirm',\n cancel: 'Cancel',\n equal: 'Equal',\n notEqual: 'Not equal',\n contain: 'Contain',\n notContain: 'Does not contain',\n initUse: 'Search'\n }\n }\n}\n","/**\n * 国际化工具函数\n * 如果使用组件库的项目有i18n则使用父级项目,如果没有则默认使用中文\n */\n\nimport zhCN from './zh_CN'\nimport enUS from './en_US'\n\n// 默认语言包\nconst defaultLocale = 'zh-CN'\nconst locales = {\n 'zh-CN': zhCN,\n 'en-US': enUS\n}\n\n// 全局应用实例\nlet globalApp: any = null\n// 可选的全局 t 覆盖函数(未被 readonly/Proxy 包装)\nlet globalT: any = null\n\n/**\n * 设置全局应用实例\n * @param {any} app - Vue应用实例\n */\nexport const setGlobalApp = (app: any) => {\n globalApp = app\n}\n\n/**\n * 设置全局可写的 t 函数(用于宿主传入未包装的 t,避免只读 Proxy 触发 set 错误)\n * @param {Function} tFn - 翻译函数\n */\nexport const setGlobalT = (tFn: any) => {\n globalT = tFn\n}\n\n/**\n * 获取当前语言\n * @returns {string} 当前语言代码\n */\nexport const getCurrentLocale = () => {\n // Vue3: 从 config.globalProperties 获取\n if (globalApp?.config?.globalProperties?.$i18n?.locale) {\n return globalApp.config.globalProperties.$i18n.locale\n }\n\n // Vue2: 从 $i18n 获取(当传入的是包含 $i18n 的对象时)\n if (globalApp?.$i18n?.locale) {\n return globalApp.$i18n.locale\n }\n\n // 尝试从浏览器语言获取\n if (typeof navigator !== 'undefined') {\n const browserLang = navigator.language || navigator.languages?.[0]\n if (browserLang) {\n return browserLang.startsWith('zh') ? 'zh-CN' : 'en-US'\n }\n }\n\n return defaultLocale\n}\n\n/**\n * 获取语言包\n * @param {string} locale - 语言代码\n * @returns {Object} 语言包对象\n */\nexport const getLocaleMessages = (locale) => {\n return locales[locale] || locales[defaultLocale]\n}\n\n/**\n * 翻译函数\n * @param {string} key - 翻译键,格式为 'namespace.key.subkey'\n * @param {Object} params - 参数对象\n * @returns {string} 翻译后的文本\n */\nexport const t = (key, params = {}) => {\n if (!key) return ''\n\n // 优先使用外部注入的全局 t\n if (typeof globalT === 'function') {\n try {\n const result = globalT(key, params)\n if (result && result !== key) {\n return result\n }\n } catch (error) {\n console.warn('[TinySearchBox] globalT translation failed:', error)\n }\n }\n\n // 尝试使用父级项目的i18n\n if (globalApp?.config?.globalProperties?.$t) {\n try {\n const result = globalApp.config.globalProperties.$t(key, params)\n if (result && result !== key) {\n return result\n }\n } catch (error) {\n console.warn('[TinySearchBox] i18n translation failed:', error)\n }\n }\n\n // 尝试使用Vue实例的$t方法\n if (globalApp?.$t) {\n try {\n const result = globalApp.$t(key, params)\n if (result && result !== key) {\n return result\n }\n } catch (error) {\n console.warn('[TinySearchBox] i18n translation failed:', error)\n }\n }\n\n // 使用默认语言包\n const locale = getCurrentLocale()\n const messages = getLocaleMessages(locale)\n\n // 解析key路径\n const keys = key.split('.')\n let result = messages\n\n for (const k of keys) {\n if (result && typeof result === 'object' && k in result) {\n result = result[k]\n } else {\n // 如果找不到,尝试使用默认语言\n if (locale !== defaultLocale) {\n const defaultMessages = getLocaleMessages(defaultLocale)\n result = defaultMessages\n for (const k2 of keys) {\n if (result && typeof result === 'object' && k2 in result) {\n result = result[k2]\n } else {\n result = key // 最终fallback\n break\n }\n }\n } else {\n result = key // fallback到key本身\n }\n break\n }\n }\n\n // 处理参数替换\n if (typeof result === 'string' && Object.keys(params).length > 0) {\n return result.replace(/\\{(\\w+)\\}/g, (match, paramKey) => {\n return params[paramKey] !== undefined ? params[paramKey] : match\n })\n }\n\n return typeof result === 'string' ? result : key\n}\n\n/**\n * 批量翻译函数\n * @param {Array} keys - 翻译键数组\n * @param {Object} params - 参数对象\n * @returns {Array} 翻译后的文本数组\n */\nexport const tArray = (keys, params = {}) => {\n return keys.map((key) => t(key, params))\n}\n\n/**\n * 检查是否支持某个语言\n * @param {string} locale - 语言代码\n * @returns {boolean} 是否支持\n */\nexport const isLocaleSupported = (locale) => {\n return locale in locales\n}\n\n/**\n * 获取支持的语言列表\n * @returns {Array} 支持的语言代码数组\n */\nexport const getSupportedLocales = () => {\n return Object.keys(locales)\n}\n\n/**\n * 添加自定义语言包\n * @param {string} locale - 语言代码\n * @param {Object} messages - 语言包对象\n */\nexport const addLocale = (locale, messages) => {\n locales[locale] = messages\n}\n\n/**\n * 移除语言包\n * @param {string} locale - 语言代码\n */\nexport const removeLocale = (locale) => {\n if (locale !== defaultLocale) {\n delete locales[locale]\n }\n}\n\n// 默认导出\nexport default {\n t,\n zhCN,\n enUS,\n tArray,\n setGlobalT,\n setGlobalApp,\n getCurrentLocale,\n getLocaleMessages,\n isLocaleSupported,\n getSupportedLocales,\n addLocale,\n removeLocale\n}\n","// 导入工具函数和类型\nimport { format } from './utils/date.ts'\nimport { useTag } from './composables/use-tag.ts'\nimport { useDropdown } from './composables/use-dropdown.ts'\nimport { useMatch } from './composables/use-match.ts'\nimport { useCheckbox } from './composables/use-checkbox.ts'\nimport { useDatePicker } from './composables/use-datepicker.ts'\nimport { useNumRange } from './composables/use-num-range.ts'\nimport { useEdit } from './composables/use-edit.ts'\nimport { useCustom } from './composables/use-custom.ts'\nimport { useInit } from './composables/use-init.ts'\n// 类型导入 - 兼容 Vue 2 和 Vue 3\nimport { showDropdown, showPopover } from './utils/dropdown.ts'\n\nimport { deepClone } from './utils/index.ts'\nimport { resetInput } from './utils/tag.ts'\nimport i18n, { t, getCurrentLocale } from './utils/i18n.ts'\nexport const api = [\n 't',\n 'state',\n 'isShowClose',\n 'showHelp',\n 'maxlength',\n 'panelMaxHeight',\n 'editable',\n 'emptyPlaceholder',\n 'deleteTag',\n 'editTag',\n 'backspaceDeleteTag',\n 'createTag',\n 'clearTag',\n 'helpClick',\n 'handleInput',\n 'handleClick',\n 'handleEvents',\n 'pickerOptions',\n 'resetInput',\n 'selectItemIsDisable',\n 'selectPropChange',\n 'confirmEditTag',\n 'handleConfirm',\n 'handleEditConfirm',\n 'showDropdown',\n 'showPopover'\n]\n\nconst resolveEmptyPlaceholder = (props, t) => props.emptyPlaceholder || t('tvp.tvpSearchbox.addPlaceholder')\n\nconst initState = ({ reactive, computed, api, i18n, watch, props, emit, vm }) => {\n const state = reactive({\n innerModelValue: [...props.modelValue],\n placeholder: props.modelValue.length > 0 ? t('tvp.tvpSearchbox.addPlaceholder') : resolveEmptyPlaceholder(props, t),\n emitter: emit,\n recordItems: [],\n groupItems: {},\n inputValue: '',\n matchItems: {},\n propItem: {},\n backupList: [],\n filterList: [],\n checkboxGroup: [],\n prevItem: {},\n backupPrevItem: null,\n formRules: null,\n validType: 'text',\n numberShowMessage: true,\n startDate: null,\n startDateTime: null,\n endDate: null,\n endDateTime: null,\n isShowTagKey: true,\n potentialOptions: null,\n dateRangeFormat: 'yyyy/MM/dd',\n datetimeRangeFormat: 'yyyy/MM/dd HH:mm:ss',\n indexMap: new Map(),\n valueMap: new Map(),\n popoverVisible: false,\n selectValue: '',\n allTypeAttri: { label: t('tvp.tvpSearchbox.rulekeyword1'), field: 'tvpKeyword', type: 'radio' },\n operatorValue: ':',\n inputEditValue: '',\n currentOperators: null,\n currentEditValue: [],\n currentModelValueIndex: -1,\n curMinNumVar: '',\n curMaxNumVar: '',\n instance: null,\n isMouseDown: false,\n currentEditSelectTags: [],\n visible: false,\n visibleTimer: null,\n hasFormError: false, // 表单校验错误状态\n hasBackupList: computed(() => state.propItem.label && [undefined, null, '', 'radio', 'input', 'checkbox', 'map'].includes(state.prevItem.type)),\n isIndeterminate: computed(() => state.checkboxGroup.length > 0 && state.checkboxGroup.length !== state.filterList.length),\n checkAll: computed({\n get: () => state.checkboxGroup.length && state.checkboxGroup.length === state.filterList.length,\n set: (val) => {\n if (val) {\n state.checkboxGroup = state.filterList.flatMap((item) => `${state.prevItem.label}${item.label}`)\n } else {\n state.checkboxGroup = []\n }\n }\n })\n })\n return state\n}\n\nexport const renderless = (\n props,\n { getCurrentInstance, onMounted, onBeforeUnmount, computed, reactive, watch },\n { emit: $emit, nextTick, refs, vm, slots }\n) => {\n const api = {} as any\n const emit = props.emitter ? props.emitter.emit : $emit\n const state = initState({ reactive, computed, api, i18n, watch, props, emit, vm })\n initAllApi({ api, state, t, props, emit, nextTick, vm, computed })\n initWatch({ watch, state, props, api, nextTick, vm })\n\n state.instance = vm\n // 在 Vue2 中,slots 可能通过 context 传递,需要设置到 instance 上\n if (vm && slots) {\n vm.slots = slots\n }\n\n // 生命周期\n onMounted(() => {\n if (typeof document !== 'undefined') {\n document.addEventListener('click', api.watchOutsideClick)\n document.addEventListener('mousedown', api.watchMouseDown)\n document.addEventListener('mousemove', api.watchMouseMove)\n }\n })\n\n onBeforeUnmount(() => {\n if (typeof document !== 'undefined') {\n document.removeEventListener('click', api.watchOutsideClick)\n document.removeEventListener('mousedown', api.watchMouseDown)\n document.removeEventListener('mousemove', api.watchMouseMove)\n // 清理语言检查定时器\n if (state.localeCheckInterval) {\n clearInterval(state.localeCheckInterval)\n state.localeCheckInterval = null\n }\n }\n })\n\n // 暴露给模板的方法\n return api\n}\n\n\nconst initAllApi = ({ api, state, t, props, emit, nextTick, vm, computed }) => {\n\n const { deleteTag, clearTag, backspaceDeleteTag } = useTag({ props, state, emit, nextTick })\n const { editTag, confirmEditTag, selectPropChange, selectItemIsDisable, checkFormValidation } = useEdit({ props, state, t, nextTick, format, emit, vm })\n const { handleInput, selectFirstMap, cancelHandleInput } = useMatch({ props, state, emit, nextTick })\n const { selectPropItem, selectRadioItem, selectInputValue, createTag, helpClick, setOperator } = useDropdown({ props, emit, state, t, format, nextTick, vm, cancelHandleInput })\n const { selectCheckbox } = useCheckbox({ props, state, emit, nextTick })\n const { onConfirmDate, handleDateShow, pickerOptions } = useDatePicker({ props, state, emit, nextTick, vm })\n const { sizeChange, initFormRule } = useNumRange({ props, state, t, emit, nextTick, vm })\n const { handleConfirm, handleEditConfirm } = useCustom({ state, emit, nextTick })\n const { initItems, watchOutsideClick, watchMouseDown, watchMouseMove, handleClick } = useInit({ props, state })\n\n const isShowClose = computed(() => props.modelValue.length || state.propItem.label || state.inputValue)\n\n const eventsMap = () => ({\n selectInputValue,\n selectPropItem,\n selectRadioItem,\n setOperator,\n selectCheckbox,\n sizeChange,\n onConfirmDate,\n selectFirstMap,\n handleDateShow\n })\n\n const setPlaceholder = (placeholderValue: string) => {\n state.placeholder = placeholderValue\n }\n\n const getEmptyPlaceholderValue = () => resolveEmptyPlaceholder(props, t)\n\n // 默认显示占位符,emptyPlaceholder 优先\n if (props.modelValue.length > 0) {\n setPlaceholder(t('tvp.tvpSearchbox.addPlaceholder'))\n } else {\n setPlaceholder(getEmptyPlaceholderValue())\n }\n\n\n const handleEvents = (eventName, p1, p2) => {\n const map = eventsMap()\n if (typeof map[eventName] === 'function') {\n map[eventName](p1, p2)\n } else {\n console.warn(`[TinySearchBox] Unknown event: ${eventName}`)\n }\n }\n\n // 解构所有事件方法\n\n Object.assign(api, {\n t,\n state,\n isShowClose,\n deleteTag,\n editTag,\n backspaceDeleteTag,\n createTag,\n clearTag,\n helpClick,\n handleInput,\n handleClick,\n handleEvents,\n pickerOptions,\n resetInput,\n selectItemIsDisable,\n selectPropChange,\n confirmEditTag,\n handleConfirm,\n handleEditConfirm,\n showDropdown,\n showPopover,\n checkFormValidation,\n setPlaceholder,\n initItems,\n initFormRule,\n watchOutsideClick,\n watchMouseDown,\n watchMouseMove,\n })\n}\n\nconst initWatch = ({ watch, state, props, api, nextTick, vm }) => {\n // 更新 placeholder 的函数\n const updatePlaceholder = () => {\n if (state.propItem.label) {\n const { placeholder, type } = state.prevItem\n if (placeholder) {\n api.setPlaceholder(placeholder)\n } else if (type === 'map') {\n api.setPlaceholder(t('tvp.tvpSearchbox.tagPlaceholder'))\n } else if (state.backupList?.length) {\n api.setPlaceholder(t('tvp.tvpSearchbox.dynamicPlaceholder', { newValue: state.propItem.label }))\n } else {\n api.setPlaceholder(t('tvp.tvpSearchbox.addPlaceholder'))\n }\n } else {\n // 默认显示 emptyPlaceholder(如果提供)或 addPlaceholder\n const defaultPlaceholder =\n props.modelValue.length > 0 ? t('tvp.tvpSearchbox.addPlaceholder') : resolveEmptyPlaceholder(props, t)\n api.setPlaceholder(defaultPlaceholder)\n }\n }\n\n // 获取当前语言(优先从组件实例获取)\n const getI18nLocale = () => {\n // Vue2: 从组件实例获取\n if (vm?.$i18n?.locale) {\n return vm.$i18n.locale\n }\n // Vue3: 从组件实例获取\n if (vm?.proxy?.$i18n?.locale) {\n return vm.proxy.$i18n.locale\n }\n // 回退到默认方法\n return getCurrentLocale()\n }\n\n // 监听语言变化,重新设置 placeholder\n let lastLocale = getI18nLocale()\n let watchEstablished = false\n\n // Vue2 环境下,使用 vm.$watch 监听 i18n.locale\n if (vm?.$i18n) {\n try {\n vm.$watch(\n () => vm.$i18n.locale,\n (newLocale) => {\n if (newLocale !== lastLocale) {\n lastLocale = newLocale\n updatePlaceholder()\n }\n },\n { immediate: false }\n )\n watchEstablished = true\n } catch (e) {\n console.warn('[TinySearchBox] Unable to watch i18n.locale via vm.$watch:', e)\n }\n }\n\n // Vue3 环境下,使用 watch 监听\n if (vm?.proxy?.$i18n) {\n try {\n watch(\n () => vm.proxy.$i18n.locale,\n (newLocale) => {\n if (newLocale !== lastLocale) {\n lastLocale = newLocale\n updatePlaceholder()\n }\n },\n { immediate: false }\n )\n watchEstablished = true\n } catch (e) {\n console.warn('[TinySearchBox] Unable to watch i18n.locale via watch:', e)\n }\n }\n\n // 备用方案:仅在 watch 机制不可用时通过轮询检查语言变化\n const checkLocaleChange = () => {\n const currentLocale = getI18nLocale()\n if (currentLocale !== lastLocale) {\n lastLocale = currentLocale\n updatePlaceholder()\n }\n }\n\n if (typeof window !== 'undefined' && !watchEstablished) {\n state.localeCheckInterval = setInterval(checkLocaleChange, 1000)\n }\n\n // 监听 props.modelValue 变化时也检查语言\n watch(\n () => props.modelValue,\n () => {\n checkLocaleChange()\n }\n )\n\n // 监听器\n watch(\n () => props.items,\n (newVal) => {\n const wasOpen = state.visible\n const currentField = state.prevItem && state.prevItem.field\n\n state.recordItems = deepClone(newVal)\n api.initItems()\n api.initFormRule()\n nextTick(() => {\n api.initItems()\n api.initFormRule()\n\n // 如果二级面板已打开,则保持不关闭并刷新当前字段的选项\n if (wasOpen && state.propItem.label) {\n const updated = state.recordItems.find((it) => it.field === currentField) || state.prevItem\n state.prevItem = updated || {}\n state.backupList = updated && updated.options ? [...updated.options] : []\n state.filterList = state.backupList ? [...state.backupList] : []\n showDropdown(state) // 保持展开\n }\n })\n },\n {\n deep: true,\n immediate: true\n }\n )\n\n watch(\n () => state.popoverVisible,\n (newVal) => {\n if (!newVal && !state.inputEditValue.length) {\n if (state.prevItem && state.prevItem.mergeTag) {\n state.inputEditValue = Array.isArray(state.currentEditSelectTags)\n ? state.currentEditSelectTags\n : []\n } else {\n state.inputEditValue = Array.isArray(state.currentEditSelectTags)\n ? state.currentEditSelectTags.join(',')\n : (state.currentEditSelectTags || '')\n }\n }\n // 关闭编辑面板时重置校验错误状态\n if (!newVal) {\n state.hasFormError = false\n }\n },\n {\n immediate: true\n }\n )\n\n // 监听编辑面板相关字段变化,检查校验状态\n watch(\n () => {\n // 获取需要监听的字段值\n const fields = {\n inputEditValue: state.inputEditValue,\n startDate: state.startDate,\n endDate: state.endDate,\n startDateTime: state.startDateTime,\n endDateTime: state.endDateTime\n }\n // 如果是 numRange 类型,添加动态字段\n if (state.curMinNumVar && state.curMaxNumVar) {\n fields[state.curMinNumVar] = state[state.curMinNumVar]\n fields[state.curMaxNumVar] = state[state.curMaxNumVar]\n }\n return fields\n },\n () => {\n if (state.popoverVisible) {\n nextTick(() => {\n api.checkFormValidation()\n })\n }\n },\n { deep: true }\n )\n\n watch(\n () => state.propItem.label,\n (newValue) => {\n // 使用统一的更新函数\n updatePlaceholder()\n }\n )\n\n watch(\n () => props.modelValue,\n (newVal) => {\n if (newVal) {\n state.indexMap.clear()\n state.valueMap.clear()\n newVal.forEach((item, index) => {\n const value = `${item.label}${item.value}`\n state.indexMap.set(item.label, index)\n state.valueMap.set(value, index)\n if (item.options?.length > 0) {\n item.options.forEach((option) => {\n const optionValue = `${item.label}${option.label}`\n state.valueMap.set(optionValue, index)\n })\n }\n })\n showPopover(state, false)\n if (newVal.length === 0) {\n api.setPlaceholder(resolveEmptyPlaceholder(props, t))\n }\n\n if (props.editable && !state.inputEditValue.length && newVal[0]) {\n const tag = newVal[0]\n const prev = state.recordItems.find((it) => it.field === tag.field) || tag\n if (prev.mergeTag && tag.options) {\n const labels = tag.options.flatMap((o) => o.label) || []\n state.inputEditValue = labels\n state.currentEditSelectTags = labels\n } else {\n const v = tag.value\n state.inputEditValue = Array.isArray(v) ? v.join(',') : (v || '')\n }\n }\n state.innerModelValue = [...newVal]\n }\n },\n {\n deep: true,\n immediate: true\n }\n )\n}","<template>\n <div tiny_mode=\"pc\">\n <tiny-dropdown-item\n v-show=\"isShowSearchOption\"\n class=\"tvp-search-box__filter-item tvp-search-box__dropdown-item tvp-search-box__dropdown-item-init\"\n :item-data=\"{ label: state.inputValue }\"\n @item-click=\"() => selectInputValue(state.inputValue)\"\n >\n <span> {{ t('tvp.tvpSearchbox.initUse') }}"{{ state.inputValue }}"</span>\n </tiny-dropdown-item>\n <div v-show=\"!state.propItem.label && state.inputValue?.trim()\">\n <div\n v-for=\"(value, key) in state.matchItems\"\n :key=\"key\"\n >\n <div v-if=\"value['attr'].length\">\n <span class=\"tvp-search-box__filter-type\">{{ key === '0' ? t('tvp.tvpSearchbox.attributeType') : key }}</span>\n <tiny-dropdown-item\n v-for=\"(item, index) in value['attr']\"\n :key=\"item.label + index\"\n class=\"tvp-search-box__filter-item tvp-search-box__dropdown-item\"\n :item-data=\"item\"\n @item-click=\"() => selectPropItem(item)\"\n >\n <span>\n <span\n v-for=\"text in item.match\"\n :key=\"text\"\n >\n <span\n v-if=\"text.toLowerCase() === item.hightlighStr\"\n class=\"tvp-search-box__text-highlight\"\n >{{ text }}</span\n >\n <span v-else>{{ text }}</span>\n </span>\n </span>\n </tiny-dropdown-item>\n </div>\n <template v-if=\"value['attrValue'].length\">\n <span class=\"tvp-search-box__filter-type\">{{\n t('tvp.tvpSearchbox.propertyValue', [key === '0' ? t('tvp.tvpSearchbox.attributeType') : key])\n }}</span>\n <tiny-dropdown-item\n v-for=\"(item, index) in value['attrValue']\"\n :key=\"item.label + index\"\n :disabled=\"item.isChecked\"\n class=\"tvp-search-box__filter-item tvp-search-box__dropdown-item\"\n :item-data=\"item\"\n @item-click=\"() => selectRadioItem(item, true)\"\n >\n <span>\n <span\n v-for=\"text in item.match\"\n :key=\"text\"\n >\n <span\n v-if=\"text.toLowerCase() === item.hightlighStr\"\n class=\"tvp-search-box__text-highlight\"\n >{{ text }}</span\n >\n <span v-else>{{ text }}</span>\n </span>\n </span>\n </tiny-dropdown-item>\n </template>\n </div>\n <div v-show=\"state.potentialOptions\">\n <span class=\"tvp-search-box__filter-type\">{{ t('tvp.tvpSearchbox.matched') }}</span>\n <div\n id=\"potential-loading\"\n class=\"tvp-search-box__potential-box\"\n >\n <div v-if=\"state.potentialOptions\">\n <tiny-dropdown-item\n v-for=\"(item, index) in state.potentialOptions\"\n :key=\"item.label + index\"\n class=\"tvp-search-box__filter-item tvp-search-box__dropdown-item\"\n :item-data=\"item\"\n @item-click=\"() => selectRadioItem(item, true)\"\n >\n {{ item.label }}:\n <span class=\"tvp-search-box__text-highlight\">{{ item.value }}</span>\n </tiny-dropdown-item>\n </div>\n </div>\n </div>\n </div>\n <div\n v-show=\"state.visible && !state.propItem.label && !state.inputValue?.trim()\"\n class=\"tvp-search-box__first-panel\"\n >\n <div\n v-for=\"(group, key) in state.groupItems\"\n :key=\"key\"\n >\n <span\n v-if=\"group.length\"\n class=\"tvp-search-box__filter-type\"\n >{{ key === '0' ? t('tvp.tvpSearchbox.attributeType') : key }}</span\n >\n <tiny-dropdown-item\n v-for=\"(item, index) in group\"\n :key=\"(item.field || item.label) + index\"\n class=\"tvp-search-box__dropdown-item\"\n :item-data=\"item\"\n @item-click=\"() => selectPropItem(item)\"\n >\n <span :title=\"item.label\">{{ item.label }}</span>\n </tiny-dropdown-item>\n </div>\n </div>\n </div>\n</template>\n\n<script>\n// Vue2 版本,使用 tiny-vue 的 renderless 架构\nimport { defineComponent, setup, $props, $prefix } from '@opentiny/vue-common'\nimport { TinyDropdownItem } from '@opentiny/vue'\nimport { t } from '../utils/i18n.ts'\n\n// 简单的 renderless 函数\nconst renderless = (props, hooks, { emit }) => {\n const { computed } = hooks\n\n // 优先使用传入的 events/handleEvents 函数,如果没有则使用 emit\n const handleEvents =\n props.handleEvents ||\n props.events ||\n ((eventName, p1, p2) => {\n emit('events', eventName, p1, p2)\n })\n\n // 「搜索\"xxxx\"」选项仅在输出框模式和单选模式下显示\n const isShowSearchOption = computed(() => {\n const { inputValue, popoverVisible, currentOperators, propItem, prevItem } = props.state\n return (\n inputValue.trim() &&\n !popoverVisible &&\n !currentOperators?.length &&\n (!propItem.label || [undefined, null, '', 'radio', 'input'].includes(prevItem.type))\n )\n })\n\n const selectInputValue = (e) => {\n handleEvents('selectInputValue', e)\n }\n\n const selectPropItem = (e) => {\n handleEvents('selectPropItem', e)\n }\n\n const selectRadioItem = (e, v) => {\n handleEvents('selectRadioItem', e, v)\n }\n\n return {\n isShowSearchOption,\n selectInputValue,\n selectPropItem,\n selectRadioItem,\n t\n }\n}\n\nconst api = ['isShowSearchOption', 'selectInputValue', 'selectPropItem', 'selectRadioItem', 't']\n\nexport default defineComponent({\n name: $prefix + 'SearchBoxFirstLevelPanel',\n components: {\n TinyDropdownItem\n },\n props: {\n ...$props,\n state: {\n type: Object,\n default: () => ({})\n },\n potentialOptions: {\n type: Array,\n default: () => []\n },\n events: {\n type: Function,\n default: null\n },\n handleEvents: {\n type: Function,\n default: null\n }\n },\n emits: ['events', 'click'],\n setup(props, context) {\n return setup({ props, context, renderless, api })\n }\n})\n</script>\n","/**\n * 轻量级一维列表虚拟滚动 composable\n * 适用于固定行高的下拉列表场景\n *\n * @param hooks - renderless hooks (提供 reactive, computed)\n * @param options.getList - 返回完整列表的函数\n * @param options.itemHeight - 每行高度(默认 32px,与 tiny-dropdown-item 一致)\n * @param options.bufferSize - 视口外额外渲染的行数(默认 5)\n * @param options.headerHeight - 返回容器内非列表头部高度的函数(默认 () => 0)\n */\nexport function useVirtualScroll(hooks, options) {\n const { reactive, computed } = hooks\n const { getList, itemHeight = 32, bufferSize = 5, headerHeight = () => 0 } = options\n\n const vsState = reactive({\n scrollTop: 0,\n viewportHeight: 300\n })\n\n const totalHeight = computed(() => {\n const list = getList() || []\n return list.length * itemHeight\n })\n\n const startIndex = computed(() => {\n const adjustedScrollTop = Math.max(0, vsState.scrollTop - headerHeight())\n return Math.max(0, Math.floor(adjustedScrollTop / itemHeight) - bufferSize)\n })\n\n const endIndex = computed(() => {\n const list = getList() || []\n const visibleCount = Math.ceil(vsState.viewportHeight / itemHeight)\n return Math.min(list.length, startIndex.value + visibleCount + bufferSize * 2)\n })\n\n const offsetY = computed(() => startIndex.value * itemHeight)\n\n const visibleItems = computed(() => {\n const list = getList() || []\n return list.slice(startIndex.value, endIndex.value)\n })\n\n const handleScroll = (e) => {\n vsState.scrollTop = e.target.scrollTop\n vsState.viewportHeight = e.target.clientHeight\n }\n\n return {\n vsState,\n totalHeight,\n startIndex,\n endIndex,\n offsetY,\n visibleItems,\n handleScroll\n }\n}\n","<template>\n <div tiny_mode=\"pc\">\n <div v-if=\"state.currentOperators?.length\">\n <span class=\"tvp-search-box__filter-type\">{{\n t(\"tvp.tvpSearchbox.operator\")\n }}</span>\n <tiny-dropdown-item\n v-for=\"(item, index) in state.currentOperators\"\n v-show=\"item.includes(state.inputValue)\"\n :key=\"item + index\"\n class=\"tvp-search-box__dropdown-item\"\n :item-data=\"{ label: item }\"\n @item-click=\"() => setOperator(item)\"\n >\n {{ item }}\n </tiny-dropdown-item>\n </div>\n <div\n v-else-if=\"!state.prevItem.type || ['radio', 'input'].includes(state.prevItem.type)\"\n v-loading=\"isLoading\"\n :class=\"['tvp-search-box__radio-wrap', 'tvp-search-box__virtual-list', isLoading && 'tvp-search-box__loading-box']\"\n :style=\"{ maxHeight: panelMaxHeight }\"\n ref=\"vsScrollEl\"\n @scroll=\"vsHandleScroll\"\n >\n <div class=\"tvp-search-box__virtual-phantom\" :style=\"{ height: vsTotalHeight + 'px' }\">\n <div\n class=\"tvp-search-box__virtual-content\"\n :style=\"{ transform: 'translateY(' + vsOffsetY + 'px)' }\"\n >\n <tiny-dropdown-item\n v-for=\"(item, vsIndex) in vsVisibleItems\"\n :key=\"vsStartIndex + vsIndex + (item.field || item.label)\"\n :disabled=\"item.isChecked\"\n class=\"tvp-search-box__dropdown-item\"\n :item-data=\"item\"\n @item-click=\"() => selectRadioItem(item)\"\n >\n <span v-if=\"item.match\" :title=\"item.label\">\n <span v-for=\"(text, index) in item.match\" :key=\"index\">\n <span\n v-if=\"text.toLowerCase() === item.hightlighStr\"\n class=\"tvp-search-box__text-highlight\"\n >{{ text }}</span\n >\n <span v-else>{{ text }}</span>\n </span>\n </span>\n <span v-else :title=\"item.label\">{{ item.label }}</span>\n </tiny-dropdown-item>\n </div>\n </div>\n </div>\n <div\n v-else-if=\"state.prevItem.type === 'checkbox'\"\n v-loading=\"isLoading\"\n :class=\"isLoading && 'tvp-search-box__loading-box'\"\n >\n <div v-if=\"showCheckBoxList\" class=\"tvp-search-box__checkbox-wrap\" :style=\"{ maxHeight: panelMaxHeight }\">\n <div ref=\"vsScrollEl\" class=\"tvp-search-box__virtual-list tvp-search-box__checkbox-scroll\" @scroll=\"vsHandleScroll\">\n <tiny-checkbox-group v-model=\"state.checkAll\" class=\"tvp-search-box__checkbox\">\n <tiny-dropdown-item class=\"tvp-search-box__dropdown-item tvp-search-box__checkbox-item\">\n <tiny-checkbox\n v-model=\"state.checkAll\"\n :indeterminate=\"state.isIndeterminate\"\n >\n {{ t(\"tvp.tvpSearchbox.selectAll\") }}\n </tiny-checkbox>\n </tiny-dropdown-item>\n </tiny-checkbox-group>\n <tiny-checkbox-group\n v-model=\"state.checkboxGroup\"\n class=\"tvp-search-box__checkbox\"\n >\n <div class=\"tvp-search-box__virtual-phantom\" :style=\"{ height: vsTotalHeight + 'px' }\">\n <div\n class=\"tvp-search-box__virtual-content\"\n :style=\"{ transform: 'translateY(' + vsOffsetY + 'px)' }\"\n >\n <tiny-dropdown-item\n v-for=\"(item, vsIndex) in vsVisibleItems\"\n :key=\"(item.field || item.label) + vsStartIndex + vsIndex\"\n class=\"tvp-search-box__dropdown-item tvp-search-box__checkbox-item\"\n >\n <tiny-checkbox\n :label=\"state.prevItem.label + item.label\"\n :title=\"item.label\"\n class=\"tvp-search-box__checkbox-item-label\"\n >\n {{ item.label }}\n </tiny-checkbox>\n </tiny-dropdown-item>\n </div>\n </div>\n </tiny-checkbox-group>\n </div>\n <div class=\"tvp-search-box__checkbox-btn\">\n <tiny-button size=\"mini\" @click=\"selectCheckbox(false)\">\n {{ t(\"tvp.tvpSearchbox.cancel\") }}\n </tiny-button>\n <tiny-button size=\"mini\" @click=\"selectCheckbox(true)\">\n {{ t(\"tvp.tvpSearchbox.confirm\") }}\n </tiny-button>\n </div>\n </div>\n </div>\n <div v-else-if=\"state.prevItem.type === 'numRange'\" class=\"tvp-search-box__panel-box\">\n <div class=\"tvp-search-box__number\">\n <div class=\"tvp-search-box__dropdown-title\">\n {{ t(\"tvp.tvpSearchbox.rangeNumberTitle\") }}\n </div>\n <div class=\"tvp-search-box__dropdown-start\">\n {{ t(\"tvp.tvpSearchbox.minValueText\") }}{{ state.prevItem.unit ? `(${state.prevItem.unit})` : '' }}\n </div>\n <tiny-form-item\n :prop=\"state.curMinNumVar\"\n class=\"tvp-search-box__number-item\"\n :show-message=\"state.numberShowMessage\"\n >\n <tiny-input\n v-model=\"state[state.curMinNumVar]\"\n type=\"number\"\n class=\"tvp-search-box__number-input\"\n ></tiny-input>\n </tiny-form-item>\n <div class=\"tvp-search-box__dropdown-end\">\n {{ t(\"tvp.tvpSearchbox.maxValueText\") }}{{ state.prevItem.unit ? `(${state.prevItem.unit})` : '' }}\n </div>\n <tiny-form-item :prop=\"state.curMaxNumVar\" class=\"tvp-search-box__number-item\">\n <tiny-input\n v-model=\"state[state.curMaxNumVar]\"\n type=\"number\"\n class=\"tvp-search-box__number-input\"\n ></tiny-input>\n </tiny-form-item>\n </div>\n <div class=\"tvp-search-box__bottom-btn\">\n <tiny-button size=\"mini\" @click=\"sizeChange(false)\">{{\n t(\"tvp.tvpSearchbox.cancel\")\n }}</tiny-button>\n <tiny-button size=\"mini\" @click.stop=\"sizeChange(true)\">\n {{ t(\"tvp.tvpSearchbox.confirm\") }}\n </tiny-button>\n </div>\n </div>\n <div\n v-else-if=\"state.prevItem.type === 'dateRange'\"\n class=\"tvp-search-box__panel-box\"\n >\n <div class=\"tvp-search-box__date-wrap\">\n <div class=\"tvp-search-box__dropdown-title\">\n {{\n state.prevItem.maxTimeLength > 0\n ? t(\"tvp.tvpSearchbox.timeLengthTitle\", {\n value: (state.prevItem.maxTimeLength / 86400000).toFixed(1),\n })\n : t(\"tvp.tvpSearchbox.rangeDateTitle\")\n }}\n </div>\n <div class=\"tvp-search-box__dropdown-start\">\n {{ t(\"tvp.tvpSearchbox.rangeBeginLabel\") }}\n </div>\n <tiny-form-item\n prop=\"startDate\"\n :show-message=\"Boolean(state.prevItem.maxTimeLength)\"\n class=\"tvp-search-box__date-item\"\n >\n <tiny-date-picker\n v-model=\"state.startDate\"\n :format=\"state.prevItem.format || state.dateRangeFormat\"\n :value-format=\"state.prevItem.format || state.dateRangeFormat\"\n :picker-options=\"pickerOptions(state.startDate, 'endDate')\"\n class=\"tvp-search-box__date-picker\"\n @visible-change=\"handleDateShow\"\n ></tiny-date-picker>\n </tiny-form-item>\n <div class=\"tvp-search-box__dropdown-end\">\n {{ t(\"tvp.tvpSearchbox.rangeEndLabel\") }}\n </div>\n <tiny-form-item prop=\"endDate\" class=\"tvp-search-box__date-item\">\n <tiny-date-picker\n v-model=\"state.endDate\"\n :format=\"state.prevItem.format || state.dateRangeFormat\"\n :value-format=\"state.prevItem.format || state.dateRangeFormat\"\n :picker-options=\"pickerOptions(state.startDate)\"\n class=\"tvp-search-box__date-picker\"\n @change=\"handleDateShow\"\n @blur=\"handleDateShow\"\n ></tiny-date-picker>\n </tiny-form-item>\n </div>\n <div class=\"tvp-search-box__bottom-btn\">\n <tiny-button size=\"mini\" @click=\"onConfirmDate(false)\">\n {{ t(\"tvp.tvpSearchbox.cancel\") }}\n </tiny-button>\n <tiny-button size=\"mini\" @click=\"onConfirmDate(true)\">\n {{ t(\"tvp.tvpSearchbox.confirm\") }}\n </tiny-button>\n </div>\n </div>\n\n <div\n v-else-if=\"state.prevItem.type === 'datetimeRange'\"\n class=\"tvp-search-box__panel-box\"\n >\n <div class=\"tvp-search-box__date-wrap\">\n <div class=\"tvp-search-box__dropdown-title\">\n {{\n state.prevItem.maxTimeLength > 0\n ? t(\"tvp.tvpSearchbox.timeLengthTitle\", {\n value: (state.prevItem.maxTimeLength / 86400000).toFixed(1),\n })\n : t(\"tvp.tvpSearchbox.rangeDateTitle\")\n }}\n </div>\n <div class=\"tvp-search-box__dropdown-start\">\n {{ t(\"tvp.tvpSearchbox.rangeBeginLabel\") }}\n </div>\n <tiny-form-item\n prop=\"startDateTime\"\n :show-message=\"Boolean(state.prevItem.maxTimeLength)\"\n class=\"tvp-search-box__date-item\"\n >\n <tiny-date-picker\n v-model=\"state.startDateTime\"\n type=\"datetime\"\n :isutc8=\"true\"\n :format=\"state.prevItem.format || state.datetimeRangeFormat\"\n :value-format=\"state.prevItem.format || state.datetimeRangeFormat\"\n :picker-options=\"pickerOptions(state.startDateTime, 'endDateTime')\"\n class=\"tvp-search-box__date-picker\"\n @change=\"handleDateShow\"\n @blur=\"handleDateShow\"\n ></tiny-date-picker>\n </tiny-form-item>\n <div class=\"tvp-search-box__dropdown-end\">\n {{ t(\"tvp.tvpSearchbox.rangeEndLabel\") }}\n </div>\n <tiny-form-item prop=\"endDateTime\" class=\"tvp-search-box__date-item\">\n <tiny-date-picker\n v-model=\"state.endDateTime\"\n type=\"datetime\"\n :isutc8=\"true\"\n :format=\"state.prevItem.format || state.datetimeRangeFormat\"\n :value-format=\"state.prevItem.format || state.datetimeRangeFormat\"\n :picker-options=\"pickerOptions(state.startDateTime)\"\n class=\"tvp-search-box__date-picker\"\n @change=\"handleDateShow\"\n @blur=\"handleDateShow\"\n ></tiny-date-picker>\n </tiny-form-item>\n </div>\n <div class=\"tvp-search-box__bottom-btn\">\n <tiny-button size=\"mini\" @click=\"onConfirmDate(false, true)\">\n {{ t(\"tvp.tvpSearchbox.cancel\") }}\n </tiny-button>\n <tiny-button size=\"mini\" @click=\"onConfirmDate(true, true)\">\n {{ t(\"tvp.tvpSearchbox.confirm\") }}\n </tiny-button>\n </div>\n </div>\n\n <div v-else-if=\"state.prevItem.type === 'map'\" v-loading=\"isLoading\">\n <div\n ref=\"vsScrollEl\"\n class=\"tvp-search-box__virtual-list\"\n :style=\"{ maxHeight: panelMaxHeight }\"\n @scroll=\"vsHandleScroll\"\n >\n <span v-if=\"state.isShowTagKey\" class=\"tvp-search-box__filter-type\">{{\n t(\"tvp.tvpSearchbox.tagKey\")\n }}</span>\n <span v-else class=\"tvp-search-box__filter-type\">{{\n t(\"tvp.tvpSearchbox.tagValue\")\n }}</span>\n <div class=\"tvp-search-box__virtual-phantom\" :style=\"{ height: vsTotalHeight + 'px' }\">\n <div\n class=\"tvp-search-box__virtual-content\"\n :style=\"{ transform: 'translateY(' + vsOffsetY + 'px)' }\"\n >\n <tiny-dropdown-item\n v-for=\"(item, vsIndex) in vsVisibleItems\"\n :key=\"item.label + item.value + vsStartIndex + vsIndex\"\n :disabled=\"item.isChecked\"\n class=\"tvp-search-box__dropdown-item\"\n :item-data=\"item\"\n @item-click=\"() => selectFirstMap(item, state.isShowTagKey)\"\n >\n <span :title=\"item.label\">{{ item.label }}</span>\n </tiny-dropdown-item>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\n// Vue2 版本,使用 tiny-vue 的 renderless 架构\nimport { defineComponent, setup, $props, $prefix } from '@opentiny/vue-common'\nimport { \n TinyFormItem,\n TinyDropdownItem,\n TinyCheckbox,\n TinyCheckboxGroup,\n TinyDatePicker,\n TinyInput,\n TinyButton,\n TinyLoading\n} from '@opentiny/vue'\nimport { t } from '../utils/i18n.ts'\nimport { useVirtualScroll } from '../composables/use-virtual-scroll.ts'\n\n// 简单的 renderless 函数\nconst renderless = (props, hooks, { emit, nextTick, refs }) => {\n const { computed, reactive, watch, onMounted } = hooks\n\n // 优先使用传入的 events/handleEvents 函数,如果没有则使用 emit\n const handleEvents = props.handleEvents || props.events || ((eventName, p1, p2) => {\n emit('events', eventName, p1, p2)\n })\n\n const setOperator = (e) => {\n handleEvents('setOperator', e)\n }\n\n const selectRadioItem = (e) => {\n handleEvents('selectRadioItem', e)\n }\n\n const selectCheckbox = (e) => {\n handleEvents('selectCheckbox', e)\n }\n\n const sizeChange = (e) => {\n handleEvents('sizeChange', e)\n }\n\n const onConfirmDate = (e, b) => {\n handleEvents('onConfirmDate', e, b)\n }\n\n const selectFirstMap = (e, b) => {\n handleEvents('selectFirstMap', e, b)\n }\n\n const handleDateShow = (e) => {\n handleEvents('handleDateShow', e)\n }\n\n const isLoading = computed(() => {\n return props.state.hasBackupList && props.state.backupList?.length === 0\n })\n\n const showCheckBoxList = computed(() => {\n return props.state.backupList?.find((item) => !item.isFilter)\n })\n\n // 虚拟滚动:根据当前类型计算过滤后的列表\n const currentFilteredList = computed(() => {\n const type = props.state.prevItem.type\n const backupList = props.state.backupList || []\n\n // radio 类型无输入时显示全部\n if (!type || type === 'radio') {\n if (!props.state.inputValue) return backupList\n return backupList.filter((item) => !item.isFilter)\n }\n\n // checkbox 和 map 始终过滤 isFilter\n return backupList.filter((item) => !item.isFilter)\n })\n\n const vs = useVirtualScroll(\n { reactive, computed },\n {\n getList: () => currentFilteredList.value,\n itemHeight: 32,\n bufferSize: 5,\n headerHeight: () => {\n const type = props.state.prevItem.type\n // checkbox 的\"全选\"和 map 的标题在滚动容器内,占 32px\n if (type === 'checkbox' || type === 'map') return 32\n return 0\n }\n }\n )\n\n // 输入变化时重置滚动位置\n watch(\n () => props.state.inputValue,\n () => {\n vs.vsState.scrollTop = 0\n nextTick(() => {\n if (refs.vsScrollEl) {\n refs.vsScrollEl.scrollTop = 0\n }\n })\n }\n )\n\n // 切换面板类型时重置滚动位置并重新测量视口高度\n watch(\n () => props.state.prevItem,\n () => {\n vs.vsState.scrollTop = 0\n nextTick(() => {\n if (refs.vsScrollEl) {\n refs.vsScrollEl.scrollTop = 0\n vs.handleScroll({ target: refs.vsScrollEl })\n }\n })\n },\n { deep: true }\n )\n\n // 挂载后测量实际视口高度,确保首次渲染数量正确\n onMounted(() => {\n if (refs.vsScrollEl) {\n vs.handleScroll({ target: refs.vsScrollEl })\n }\n })\n\n return {\n setOperator,\n selectRadioItem,\n selectCheckbox,\n sizeChange,\n onConfirmDate,\n selectFirstMap,\n handleDateShow,\n isLoading,\n showCheckBoxList,\n vsTotalHeight: vs.totalHeight,\n vsStartIndex: vs.startIndex,\n vsOffsetY: vs.offsetY,\n vsVisibleItems: vs.visibleItems,\n vsHandleScroll: vs.handleScroll,\n t\n }\n}\n\nconst api = [\n 'setOperator',\n 'selectRadioItem',\n 'selectCheckbox',\n 'sizeChange',\n 'onConfirmDate',\n 'selectFirstMap',\n 'handleDateShow',\n 'isLoading',\n 'showCheckBoxList',\n 'vsTotalHeight',\n 'vsStartIndex',\n 'vsOffsetY',\n 'vsVisibleItems',\n 'vsHandleScroll',\n 't'\n]\n\nexport default defineComponent({\n name: $prefix + 'SearchBoxSecondLevelPanel',\n emits: ['events', 'click'],\n components: {\n TinyFormItem,\n TinyDropdownItem,\n TinyCheckbox,\n TinyCheckboxGroup,\n TinyDatePicker,\n TinyInput,\n TinyButton\n },\n directives: {\n loading: TinyLoading.directive\n },\n props: {\n ...$props,\n state: {\n type: Object,\n default: () => ({}),\n },\n pickerOptions: {\n type: Function,\n default: () => {\n // do nothing.\n }\n },\n events: {\n type: Function,\n default: null\n },\n handleEvents: {\n type: Function,\n default: null\n },\n panelMaxHeight: {\n type: String,\n default: '999px'\n }\n },\n setup(props, context) {\n return setup({ props, context, renderless, api })\n }\n})\n</script>\n","<template>\n <div\n :class=\"[\n 'tvp-search-box',\n size === 'small' ? 'tvp-search-box--small' : '',\n showPrefixIcon ? '' : 'hide-prefix-icon'\n ]\"\n @click.stop=\"showPopover(state, false)\"\n >\n <tiny-icon-search\n v-if=\"showPrefixIcon\"\n class=\"tvp-search-box__prefix\"\n />\n <tiny-tag\n v-for=\"(tag, index) in modelValue\"\n :key=\"tag.field + index\"\n closable\n class=\"tvp-search-box__tag\"\n :class=\"editable && tag.type !== 'map' ? 'tvp-search-box__tag-editor' : ''\"\n :title=\"`${tag.label} ${tag.operator || ':'} ${tag.value}`\"\n @close=\"deleteTag(tag)\"\n @click.stop=\"editTag(tag, index, $event)\"\n >\n <span class=\"tvp-search-box__tag-value\">{{ tag.label }} {{ tag.operator || ':' }} {{ tag.value }} </span>\n </tiny-tag>\n <span\n v-if=\"modelValue.length\"\n class=\"tvp-search-box__placeholder\"\n ></span>\n <tiny-form\n ref=\"formRef\"\n :model=\"state\"\n :rules=\"state.formRules\"\n :validate-type=\"state.validType\"\n :size=\"size === 'small' ? 'small' : ''\"\n label-width=\"0px\"\n message-type=\"block\"\n class=\"tvp-search-box__form\"\n >\n <div class=\"tvp-search-box__input-wrapper\">\n <section class=\"tvp-search-box__prop\">\n <span v-show=\"state.propItem.label\"\n >{{ state.propItem.label }} {{ `${state.operatorValue ? state.operatorValue : ''} ` }}</span\n >\n <span v-show=\"state.propItem.value\">{{ state.propItem.value }}</span>\n </section>\n <tiny-popover\n ref=\"dropdownRef\"\n v-model=\"state.visible\"\n trigger=\"manual\"\n placement=\"bottom-start\"\n class=\"tvp-search-box__dropdown\"\n popper-class=\"tvp-search-box__dropdown-menu\"\n :visible-arrow=\"false\"\n :append-to-body=\"appendToBody\"\n >\n <template #reference>\n <tiny-input\n ref=\"inputRef\"\n v-model=\"state.inputValue\"\n class=\"tvp-search-box__input\"\n :placeholder=\"state.placeholder\"\n :maxlength=\"maxlength && maxlength + 1\"\n @keydown.delete.stop=\"backspaceDeleteTag\"\n @keydown.enter.stop=\"createTag\"\n @input=\"handleInput\"\n @click=\"handleClick\"\n >\n <template #suffix>\n <tiny-icon-close\n v-show=\"isShowClose\"\n class=\"tvp-search-box__input-close\"\n @click.stop=\"clearTag\"\n />\n <span\n v-show=\"\n isShowClose &&\n (showHelp || state.instance?.$slots?.['suffix-icon'] || state.instance?.slots?.['suffix-icon'])\n \"\n class=\"tvp-search-box__input-separator\"\n ></span>\n <span\n v-if=\"state.instance?.$slots?.['suffix-icon'] || state.instance?.slots?.['suffix-icon']\"\n :class=\"showHelp ? 'tvp-search-box__suffix-icon-slot' : 'tvp-search-box__suffix-icon-slot-no-help'\"\n >\n <slot name=\"suffix-icon\"></slot>\n </span>\n <tiny-tooltip\n v-if=\"showHelp\"\n effect=\"light\"\n :content=\"t('tvp.tvpSearchbox.help')\"\n placement=\"top\"\n >\n <tiny-icon-help-query\n class=\"tvp-search-box__input-help\"\n @click.stop=\"helpClick\"\n />\n </tiny-tooltip>\n <tiny-icon-search\n class=\"tvp-search-box__input-search\"\n @click.stop=\"createTag\"\n />\n </template>\n </tiny-input>\n </template>\n <div\n class=\"tvp-search-box__dropdown\"\n :style=\"{ 'max-height': panelMaxHeight }\"\n @mouseup.stop=\"() => {}\"\n >\n <div v-show=\"!state.propItem.label || state.inputValue?.trim()\">\n <slot\n v-if=\"state.instance?.slots['first-panel']\"\n name=\"first-panel\"\n v-bind=\"{\n state,\n handleEvents\n }\"\n @click.stop\n ></slot>\n <TinySearchBoxFirstLevelPanel\n v-else\n :state=\"state\"\n :handleEvents=\"handleEvents\"\n >\n </TinySearchBoxFirstLevelPanel>\n </div>\n <div v-show=\"state.propItem.label\">\n <slot\n v-if=\"state.instance?.slots['second-panel']\"\n name=\"second-panel\"\n v-bind=\"{\n state,\n pickerOptions,\n handleEvents,\n back: () => resetInput(state)\n }\"\n @click.stop\n ></slot>\n <TinySearchBoxSecondLevelPanel\n v-else-if=\"state.prevItem.type !== 'custom'\"\n :state=\"state\"\n :picker-options=\"pickerOptions\"\n :panel-max-height=\"panelMaxHeight\"\n @events=\"handleEvents\"\n ></TinySearchBoxSecondLevelPanel>\n <div\n v-else\n class=\"tvp-search-box__panel-box\"\n @click=\"showDropdown(state)\"\n >\n <slot\n :name=\"state.prevItem.slotName\"\n v-bind=\"{\n showDropdown: () => showDropdown(state),\n onConfirm: handleConfirm\n }\"\n @click.stop\n ></slot>\n </div>\n </div>\n </div>\n </tiny-popover>\n </div>\n\n <template v-if=\"editable\">\n <tiny-popover\n ref=\"popoverRef\"\n v-model=\"state.popoverVisible\"\n placement=\"bottom-start\"\n :visible-arrow=\"false\"\n trigger=\"manual\"\n popper-class=\"tvp-search-box__popover\"\n class=\"tvp-search-box__form-popover\"\n :append-to-body=\"appendToBody\"\n >\n <template v-if=\"state.prevItem.type !== 'custom'\">\n <div class=\"tvp-search-box__date-wrap\">\n <div class=\"tvp-search-box__dropdown-start\">\n {{ t('tvp.tvpSearchbox.attributeType') }}\n </div>\n <tiny-form-item class=\"tvp-search-box__number-item\">\n <tiny-select\n v-model=\"state.selectValue\"\n searchable\n :disabled=\"state.prevItem.editAttrDisabled\"\n >\n <tiny-option\n :key=\"state.allTypeAttri.label\"\n :label=\"t('tvp.tvpSearchbox.allProperty')\"\n :value=\"state.allTypeAttri.label\"\n :disabled=\"selectItemIsDisable(state.allTypeAttri)\"\n @click=\"selectPropChange(state.allTypeAttri, selectItemIsDisable(state.allTypeAttri))\"\n >\n </tiny-option>\n <tiny-option\n v-for=\"item in state.recordItems\"\n :key=\"item.label\"\n :label=\"item.label\"\n :value=\"item.label\"\n :disabled=\"selectItemIsDisable(item)\"\n @click=\"selectPropChange(item, selectItemIsDisable(item))\"\n >\n </tiny-option>\n </tiny-select>\n </tiny-form-item>\n <div\n v-if=\"state.prevItem.operators\"\n class=\"tvp-search-box__dropdown-end\"\n >\n {{ t('tvp.tvpSearchbox.operator') }}\n </div>\n <tiny-form-item\n v-if=\"state.prevItem.operators\"\n class=\"tvp-search-box__number-item\"\n >\n <tiny-select v-model=\"state.operatorValue\">\n <tiny-option\n v-for=\"item in state.currentOperators\"\n :key=\"item\"\n :label=\"item\"\n :value=\"item\"\n >\n </tiny-option>\n </tiny-select>\n </tiny-form-item>\n <div\n v-if=\"state.prevItem.type !== 'numRange'\"\n class=\"tvp-search-box__dropdown-end\"\n >\n {{ t('tvp.tvpSearchbox.tagValue') }}\n </div>\n <tiny-form-item\n v-if=\"!['numRange', 'dateRange', 'datetimeRange', 'custom'].includes(state.prevItem.type)\"\n prop=\"inputEditValue\"\n class=\"tvp-search-box__number-item\"\n >\n <tiny-select\n v-if=\"state.currentEditValue?.length > 0\"\n v-model=\"state.inputEditValue\"\n class=\"tvp-search-box-select\"\n :multiple=\"Boolean(state.prevItem.mergeTag)\"\n :allow-create=\"state.prevItem?.allowCreate\"\n filterable\n default-first-option\n clearable\n >\n <tiny-option\n v-for=\"item in state.currentEditValue\"\n :key=\"item.label\"\n :label=\"item.label\"\n :value=\"item.label\"\n >\n </tiny-option>\n </tiny-select>\n <tiny-input\n v-else\n v-model=\"state.inputEditValue\"\n clearable\n ></tiny-input>\n </tiny-form-item>\n <div\n v-if=\"state.prevItem.type === 'numRange'\"\n class=\"tvp-search-box__number\"\n >\n <div class=\"tvp-search-box__dropdown-start\">\n {{ t('tvp.tvpSearchbox.minValueText') }}{{ state.prevItem.unit ? `(${state.prevItem.unit})` : '' }}\n </div>\n <tiny-form-item\n :prop=\"state.curMinNumVar\"\n class=\"tvp-search-box__number-item\"\n :show-message=\"state.numberShowMessage\"\n >\n <tiny-input\n v-model=\"state[state.curMinNumVar]\"\n type=\"number\"\n class=\"tvp-search-box__number-input\"\n ></tiny-input>\n </tiny-form-item>\n <div class=\"tvp-search-box__dropdown-end\">\n {{ t('tvp.tvpSearchbox.maxValueText') }}{{ state.prevItem.unit ? `(${state.prevItem.unit})` : '' }}\n </div>\n <tiny-form-item\n :prop=\"state.curMaxNumVar\"\n class=\"tvp-search-box__number-item\"\n >\n <tiny-input\n v-model=\"state[state.curMaxNumVar]\"\n type=\"number\"\n class=\"tvp-search-box__number-input\"\n ></tiny-input>\n </tiny-form-item>\n </div>\n <div\n v-if=\"state.prevItem.type === 'dateRange'\"\n class=\"tvp-search-box__date-wrap\"\n >\n <div class=\"tvp-search-box__dropdown-title\">\n {{\n state.prevItem.maxTimeLength > 0\n ? t('tvp.tvpSearchbox.timeLengthTitle', {\n value: (state.prevItem.maxTimeLength / 86400000).toFixed(1)\n })\n : t('tvp.tvpSearchbox.rangeDateTitle')\n }}\n </div>\n <div class=\"tvp-search-box__dropdown-start\">\n {{ t('tvp.tvpSearchbox.rangeBeginLabel') }}\n </div>\n <tiny-form-item\n prop=\"startDate\"\n :show-message=\"Boolean(state.prevItem.maxTimeLength)\"\n class=\"tvp-search-box__date-item\"\n >\n <tiny-date-picker\n v-model=\"state.startDate\"\n :format=\"state.prevItem.format || state.dateRangeFormat\"\n :value-format=\"state.prevItem.format || state.dateRangeFormat\"\n :picker-options=\"pickerOptions(state.startDate, 'endDate')\"\n class=\"tvp-search-box__date-picker\"\n ></tiny-date-picker>\n </tiny-form-item>\n <div class=\"tvp-search-box__dropdown-end\">\n {{ t('tvp.tvpSearchbox.rangeEndLabel') }}\n </div>\n <tiny-form-item\n prop=\"endDate\"\n class=\"tvp-search-box__date-item\"\n >\n <tiny-date-picker\n v-model=\"state.endDate\"\n :format=\"state.prevItem.format || state.dateRangeFormat\"\n :value-format=\"state.prevItem.format || state.dateRangeFormat\"\n :picker-options=\"pickerOptions(state.startDate)\"\n class=\"tvp-search-box__date-picker\"\n ></tiny-date-picker>\n </tiny-form-item>\n </div>\n <div\n v-if=\"state.prevItem.type === 'datetimeRange'\"\n class=\"tvp-search-box__date-wrap\"\n >\n <div class=\"tvp-search-box__dropdown-title\">\n {{\n state.prevItem.maxTimeLength > 0\n ? t('tvp.tvpSearchbox.timeLengthTitle', {\n value: (state.prevItem.maxTimeLength / 86400000).toFixed(1)\n })\n : t('tvp.tvpSearchbox.rangeDateTitle')\n }}\n </div>\n <div class=\"tvp-search-box__dropdown-start\">\n {{ t('tvp.tvpSearchbox.rangeBeginLabel') }}\n </div>\n <tiny-form-item\n prop=\"startDateTime\"\n :show-message=\"Boolean(state.prevItem.maxTimeLength)\"\n class=\"tvp-search-box__date-item\"\n >\n <tiny-date-picker\n v-model=\"state.startDateTime\"\n type=\"datetime\"\n :isutc8=\"true\"\n :format=\"state.prevItem.format || state.datetimeRangeFormat\"\n :value-format=\"state.prevItem.format || state.datetimeRangeFormat\"\n :picker-options=\"pickerOptions(state.startDateTime, 'endDateTime')\"\n class=\"tvp-search-box__date-picker\"\n ></tiny-date-picker>\n </tiny-form-item>\n <div class=\"tvp-search-box__dropdown-end\">\n {{ t('tvp.tvpSearchbox.rangeEndLabel') }}\n </div>\n <tiny-form-item\n prop=\"endDateTime\"\n class=\"tvp-search-box__date-item\"\n >\n <tiny-date-picker\n v-model=\"state.endDateTime\"\n type=\"datetime\"\n :isutc8=\"true\"\n :format=\"state.prevItem.format || state.datetimeRangeFormat\"\n :value-format=\"state.prevItem.format || state.datetimeRangeFormat\"\n :picker-options=\"pickerOptions(state.startDateTime)\"\n class=\"tvp-search-box__date-picker\"\n ></tiny-date-picker>\n </tiny-form-item>\n </div>\n </div>\n <div class=\"tvp-search-box__bottom-btn\">\n <tiny-button\n size=\"mini\"\n @click=\"confirmEditTag(false)\"\n >\n {{ t('tvp.tvpSearchbox.cancel') }}\n </tiny-button>\n <tiny-button\n size=\"mini\"\n :disabled=\"state.hasFormError\"\n @click=\"confirmEditTag(true)\"\n >\n {{ t('tvp.tvpSearchbox.confirm') }}\n </tiny-button>\n </div>\n </template>\n <div\n v-else-if=\"state.popoverVisible\"\n class=\"tvp-search-box__panel-box\"\n >\n <slot\n :name=\"`${state.prevItem.slotName}-edit`\"\n v-bind=\"{\n showDropdown: () => showPopover(state),\n onConfirm: handleEditConfirm\n }\"\n @click.stop\n ></slot>\n </div>\n </tiny-popover>\n </template>\n </tiny-form>\n </div>\n</template>\n\n<script lang=\"ts\">\n// Vue2 版本,使用 tiny-vue 的 renderless 架构\nimport { defineComponent, setup, $props, isVue2 } from '@opentiny/vue-common'\nimport { renderless, api } from './renderless'\n// 导入组件\nimport { \n TinyTag,\n TinyInput,\n TinyDropdown,\n TinyDropdownMenu,\n TinyButton,\n TinyTooltip,\n TinyDatePicker,\n TinyForm,\n TinyFormItem,\n TinyPopover,\n TinySelect,\n TinyOption,\n} from '@opentiny/vue'\nimport { iconSearch, iconClose, iconHelpQuery } from '@opentiny/vue-icon'\n\nimport TinySearchBoxFirstLevelPanel from './components/first-level-panel.vue'\nimport TinySearchBoxSecondLevelPanel from './components/second-level-panel.vue'\n// 样式通过构建工具自动导入,开发环境使用别名导入\nimport '@opentiny/vue-search-box-theme'\n\nexport default defineComponent({\n model: {\n prop: 'modelValue',\n event: 'update:modelValue'\n },\n props: {\n ...$props,\n tiny_mode: {\n type: String,\n default: 'pc'\n },\n modelValue: {\n type: Array,\n default: () => []\n },\n items: {\n type: Array,\n default: () => []\n },\n emptyPlaceholder: {\n type: String,\n default: ''\n },\n potentialOptions: {\n type: Object,\n default: () => null\n },\n showHelp: {\n type: Boolean,\n default: true\n },\n showPrefixIcon: {\n type: Boolean,\n default: true\n },\n idMapKey: {\n type: String,\n default: 'id'\n },\n defaultField: {\n type: String,\n default: ''\n },\n defaultFieldReplace: {\n type: Boolean,\n default: false\n },\n editable: {\n type: Boolean,\n default: false\n },\n maxlength: {\n type: Number,\n default: undefined\n },\n panelMaxHeight: {\n type: String,\n default: '999px'\n },\n splitInputValue: {\n type: String,\n default: ','\n },\n appendToBody: {\n type: Boolean,\n default: true\n },\n // 尺寸\n size: {\n type: String,\n default: ''\n }\n },\n emits: ['update:modelValue', 'change', 'search', 'exceed', 'first-level-select', 'second-level-enter', 'clear', 'tagClick', 'help', 'validate-error'],\n components: {\n TinyTag,\n TinyInput,\n TinyDropdown,\n TinyDropdownMenu,\n TinyButton,\n TinyTooltip,\n TinyDatePicker,\n TinyForm,\n TinyFormItem,\n TinyPopover,\n TinySelect,\n TinyOption,\n TinySearchBoxFirstLevelPanel,\n TinySearchBoxSecondLevelPanel,\n // 图标组件\n TinyIconSearch: iconSearch(),\n TinyIconClose: iconClose(),\n TinyIconHelpQuery: iconHelpQuery()\n },\n setup(props, context) {\n return setup({ props, context, renderless, api })\n }\n})\n</script>\n","/**\n * Copyright (c) 2022 - present TinyVue Authors.\n * Copyright (c) 2022 - present Huawei Cloud Computing Technologies Co., Ltd.\n *\n * Use of this source code is governed by an MIT-style license.\n *\n * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL,\n * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR\n * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS.\n *\n */\nimport { $props, $prefix, $setup, defineComponent, isVue2, isVue3 } from '@opentiny/vue-common'\nimport { type PropType } from '@opentiny/vue-common'\nimport template from './pc.vue'\n\nexport const searchBoxProps = {\n ...$props,\n tiny_mode: {\n type: String,\n default: 'pc'\n },\n /** 搜索框的值,支持v-model */\n modelValue: {\n type: Array,\n default: () => []\n },\n /** 搜索项配置数组 */\n items: {\n type: Array,\n default: () => []\n },\n /** 空状态时的占位符文本 */\n emptyPlaceholder: {\n type: String,\n default: ''\n },\n /** 潜在选项配置 */\n potentialOptions: {\n type: Object,\n default: () => null\n },\n /** 是否显示帮助按钮 */\n showHelp: {\n type: Boolean,\n default: true\n },\n /** 是否显示搜索框前面的搜索图标 */\n showPrefixIcon: {\n type: Boolean,\n default: true\n },\n /** ID映射键名 */\n idMapKey: {\n type: String,\n default: 'id'\n },\n /** 默认字段 */\n defaultField: {\n type: String,\n default: ''\n },\n defaultFieldReplace: {\n type: Boolean,\n default: false\n },\n /** 是否可编辑 */\n editable: {\n type: Boolean,\n default: false\n },\n /** 最大长度限制 */\n maxlength: {\n type: Number,\n default: undefined\n },\n /** 面板最大高度 */\n panelMaxHeight: {\n type: String,\n default: '999px'\n },\n /** 输入值分隔符 */\n splitInputValue: {\n type: String,\n default: ','\n },\n /** 自定义类名 */\n customClass: {\n type: String,\n default: ''\n },\n /** 自定义样式 */\n customStyle: {\n type: Object,\n default: () => ({})\n },\n /** 组件尺寸 */\n size: {\n type: String as PropType<'small' | ''>,\n default: ''\n },\n /** 将下拉面板/弹窗挂载到 body,解决父容器 overflow 场景遮挡问题 */\n appendToBody: {\n type: Boolean,\n default: false\n }\n}\n// 组件安装函数\nexport default defineComponent({\n name: $prefix + 'SearchBox',\n props: searchBoxProps,\n ...template\n})\n","/**\n * Copyright (c) 2022 - present TinyVue Authors.\n * Copyright (c) 2022 - present Huawei Cloud Computing Technologies Co., Ltd.\n *\n * Use of this source code is governed by an MIT-style license.\n *\n * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL,\n * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR\n * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS.\n *\n */\n\nimport TinySearchBox from \"./src/index\";\nimport { t, setGlobalApp } from './src/utils/i18n'\nimport zhCN from './src/utils/zh_CN'\nimport enUS from './src/utils/en_US'\nimport TinySearchBoxFirstLevelPanel from './src/components/first-level-panel.vue'\nimport TinySearchBoxSecondLevelPanel from './src/components/second-level-panel.vue'\nimport { version } from \"./package.json\";\n// model 配置已在组件内部定义,无需重复设置\n\n/* istanbul ignore next */\nTinySearchBox.install = function (Vue) {\n const runtime: any = Vue\n\n // Vue3 app instance: install(app)\n if (runtime && runtime.config && runtime.config.globalProperties) {\n setGlobalApp(runtime)\n }\n\n // Vue2 constructor: install(Vue)\n // Capture a runtime vm/root with i18n once available, so users don't need setGlobalApp manually.\n if (runtime && runtime.mixin && !runtime.__TINY_SEARCH_BOX_I18N_MIXIN__) {\n runtime.__TINY_SEARCH_BOX_I18N_MIXIN__ = true\n runtime.mixin({\n beforeCreate() {\n const vm = this as any\n if (vm && (vm.$i18n || vm.$t || (vm.$root && (vm.$root.$i18n || vm.$root.$t)))) {\n setGlobalApp(vm.$root || vm)\n }\n }\n })\n }\n\n runtime.component(TinySearchBox.name, TinySearchBox);\n};\n\nTinySearchBox.version = version;\n\n/* istanbul ignore next */\nif (typeof window !== \"undefined\" && (window as typeof window & { Vue?: unknown }).Vue) {\n TinySearchBox.install((window as typeof window & { Vue: any }).Vue);\n}\n\n// 导出\nexport * from './src/index.type'\nexport { zhCN, enUS, t, setGlobalApp, TinySearchBoxFirstLevelPanel, TinySearchBoxSecondLevelPanel }\n\nexport default TinySearchBox;\n"],"names":["fillChar","string","length","append","chr","isNumber","len","appendStr","s","toString","hasOwn","fnToString","class2type","isNull","x","typeOf","obj","value","isDate","daysInMonths","yyyymmddReg","mmddyyyyReg","iso8601Reg","dateFormatRegs","maxDateValues","timezone1","timezone2","timezone3","timezones","getTimezone","date","timezoneoffset","timezone","isLeapYear","year","getMilliseconds","milliseconds","getDateFromData","month","hours","minutes","seconds","daysInMonth","yyyymmddDateParser","m","mmddyyyyDateParser","iso8601DateParser","offset","timeZone","sign","offsetHours","offsetMinutes","actHours","actMinutes","dateParsers","parseDate","str","i","matchDateArray","arr","text","getDateArray","dateFormat","valuePos","textPos","charValue","notNum","end","invalideTime","time","min","max","invalideValue","innerParse","toDate","minDate","format","o","k","afterFormat","dateValue","showDropdown","state","isShow","showPopover","dropdownRef","debounce","func","delay","timer","debounced","args","deepClone","objClone","keys","key","omitObj","keysToOmit","result","hasTagItem","itemValue","itemLabel","valueMap","prevItem","resetInput","emitChangeModelEvent","emit","nextTick","tagList","index","newTag","newValue","oldValue","isEdit","oldVal","innerModelValue","createNewTag","getTagId","props","item","idKey","useTag","lastInputValue","changeIsChecked","tag","parent","child","lastIndex","_c","_b","_a","getVerifyTag","instance","inputEditValue","operators","rest","isPass","errMsg","id","operator","otherAttr","editValue","label","itemId","getVerifyNumTag","minNum","maxNum","start","verifyProps","field","prevLabel","unit","type","getVerifyDateTag","isDateTimeType","startDate","endDate","startDateTime","endDateTime","setStateNumRange","t","nextMinNum","nextMaxNum","curMinNumVar","curMaxNumVar","minIsNumber","maxIsNumber","rule","cb","valueIsNumber","MinValueIsNumber","curMin","curMinIsNumber","useDropdown","vm","cancelHandleInput","showValueItem","dateRangeFormat","newStart","newEnd","datetimeRangeFormat","subItem","option","selectPropItem","inputRef","setOperator","updateModelValue","replace","mergeTag","indexMap","options","newOptions","cloned","selectInputValue","val","createTag","selectRadioItem","isPotential","tagLabel","hasNotInputValueCreateTag","propItem","firstOption","newTagUpdateModelValue","hasInputValueCreateTag","inputValue","regexp","invalidTags","items","defaultField","defaultFieldReplace","matchedItem","defaultItem","currentItem","normalizedCurrentItem","maxlength","escapeRegExp","getHighlightMatch","labelRegex","match","startIndex","endIndex","useMatch","getMatchList","keyword","handleInput","e","recordItems","raw","resetBackupList","patt","hasItem","hightlighStr","_d","groupKey","optionLabel","isFirst","useCheckbox","confirm","checkboxGroup","hasTagIndex","checkboxLabel","indexList","filtered","useDatePicker","prev","endName","maxTimeLength","curTime","useNumRange","sizeChange","createDateRules","startKey","endKey","dateRules","datetimeRules","useEdit","setDropdownProps","curTag","labels","checkFormValidation","hasError","dom","popoverRef","isConfirm","disabled","typeArr","useCustom","updateCustomValue","customTag","useInit","backupPrevItem","zhCN","enUS","defaultLocale","locales","globalApp","globalT","setGlobalApp","app","setGlobalT","tFn","getCurrentLocale","browserLang","_e","getLocaleMessages","locale","params","error","messages","k2","paramKey","tArray","isLocaleSupported","getSupportedLocales","addLocale","removeLocale","i18n","api","resolveEmptyPlaceholder","initState","reactive","computed","watch","renderless","getCurrentInstance","onMounted","onBeforeUnmount","$emit","refs","slots","initAllApi","initWatch","deleteTag","clearTag","backspaceDeleteTag","editTag","confirmEditTag","selectPropChange","selectItemIsDisable","selectFirstMap","helpClick","selectCheckbox","onConfirmDate","handleDateShow","pickerOptions","initFormRule","handleConfirm","handleEditConfirm","initItems","watchOutsideClick","watchMouseDown","watchMouseMove","handleClick","isShowClose","eventsMap","setPlaceholder","placeholderValue","getEmptyPlaceholderValue","eventName","p1","p2","map","updatePlaceholder","placeholder","defaultPlaceholder","getI18nLocale","lastLocale","watchEstablished","newLocale","checkLocaleChange","currentLocale","newVal","wasOpen","currentField","updated","it","fields","optionValue","v","hooks","handleEvents","popoverVisible","currentOperators","_sfc_main","defineComponent","$prefix","TinyDropdownItem","$props","context","setup","_hoisted_1","_hoisted_3","_hoisted_6","_hoisted_9","_hoisted_12","_hoisted_13","_hoisted_15","_openBlock","_createElementBlock","_createVNode","_component_tiny_dropdown_item","_ctx","_cache","_withCtx","_createElementVNode","_toDisplayString","_Fragment","_renderList","_hoisted_2","_createBlock","_hoisted_4","_hoisted_5","_createCommentVNode","_hoisted_7","_hoisted_8","_hoisted_10","_hoisted_11","_createTextVNode","_vShow","_withDirectives","group","_hoisted_14","useVirtualScroll","getList","itemHeight","bufferSize","headerHeight","vsState","totalHeight","adjustedScrollTop","list","visibleCount","offsetY","visibleItems","b","isLoading","showCheckBoxList","currentFilteredList","backupList","vs","TinyFormItem","TinyCheckbox","TinyCheckboxGroup","TinyDatePicker","TinyInput","TinyButton","TinyLoading","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_30","_normalizeClass","_normalizeStyle","vsIndex","_component_tiny_checkbox_group","$event","_component_tiny_checkbox","_component_tiny_button","_component_tiny_form_item","_component_tiny_input","_withModifiers","_component_tiny_date_picker","_hoisted_21","_hoisted_27","_hoisted_28","_hoisted_29","TinyTag","TinyDropdown","TinyDropdownMenu","TinyTooltip","TinyForm","TinyPopover","TinySelect","TinyOption","TinySearchBoxFirstLevelPanel","TinySearchBoxSecondLevelPanel","iconSearch","iconClose","iconHelpQuery","_component_tiny_icon_search","_component_tiny_tag","_component_tiny_form","_component_tiny_popover","_withKeys","_component_tiny_icon_close","_f","_h","_g","_renderSlot","_component_tiny_tooltip","_component_tiny_icon_help_query","_mergeProps","_component_TinySearchBoxFirstLevelPanel","_component_TinySearchBoxSecondLevelPanel","_component_tiny_select","_component_tiny_option","searchBoxProps","TinySearchBox","template","Vue","runtime","version"],"mappings":";;;;AAyBO,MAAMA,KAAW,CAACC,GAAQC,GAAQC,GAAQC,IAAM,QAAQ;AACzD,MAAA,OAAOH,KAAW,YAAY,OAAOG,KAAQ,YAAYC,GAASH,CAAM,GAAG;AACzE,QAAAI,IAAML,EAAO,SAASC;AAE1B,QAAII,IAAM;AACD,aAAAH,IAASF,EAAO,OAAO,GAAGC,CAAM,IAAID,EAAO,OAAOK,GAAKJ,CAAM;AAC/D;AACL,YAAMK,IAAY,CAAA;AAGX,WAFPD,IAAM,KAAK,IAAIA,CAAG,IAAIF,EAAI,QAEnBE,IAAM,GAAGA;AACd,QAAAC,EAAU,KAAKH,CAAG;AAGd,YAAAI,IAAID,EAAU,KAAK,EAAE;AAEpB,aAAAJ,IAASF,IAASO,IAAIA,IAAIP;AAAA,IACnC;AAAA,EACF;AACF,GAEaQ,KAAW,OAAO,UAAU,UAC5BC,KAAS,OAAO,UAAU,gBAGjCC,KAAaD,GAAO;AACGC,GAAW,KAAK,MAAM;AAEnD,MAAMC,KAAa;AAAA,EACjB,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,EAClB,qBAAqB;AAAA,EACrB,0BAA0B;AAAA,EAC1B,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,oBAAoB;AACtB,GAGaC,KAAS,CAACC,MAAWA,KAAM,MAuB3BC,KAA+B,CAACC,MAC3CH,GAAOG,CAAG,IAAI,OAAOA,CAAG,IAAIJ,GAAWH,GAAS,KAAKO,CAAG,CAAC,KAAK,UAgEnDX,KAAW,CAACY,MAAe,OAAOA,KAAU,YAAY,SAASA,CAAK,GA4BtEC,KAAS,CAACD,MAAUF,GAAOE,CAAK,MAAM,QAkB7CE,KAAe,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,GAC9DC,KAAc,IAAI;AAAA,EACtB;AAEF,GACMC,KAAc,IAAI;AAAA,EACtB;AAEF,GACMC,KAAa,IAAI;AAAA,EACrB;AAGF,GAEMC,KAAiB;AAAA,EACrB,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AACZ,GAEMC,KAAgB;AAAA,EACpB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,aAAa;AACf,GAEMC,KAAY,8FACZC,KAAY,uFACZC,KAAY,uFACZC,KAAY,CAAA,EAAG,OAAOH,GAAU,MAAM,GAAG,GAAGC,GAAU,MAAM,GAAG,GAAGC,GAAU,MAAM,GAAG,CAAC,GAEtFE,KAAc,CAACC,MAAS;AAC5B,QAAMC,IAAiB,IAAID,EAAK,kBAAA,IAAsB;AAClD,MAAAE;AAEJ,SAAID,MAAmB,IACVC,IAAA,MACFD,IAAiB,IAC1BC,IAAW,OAAOD,IAAiB,KAAKA,IAAiB,MAAMA,KAAkB,OAEjFC,KAAYD,IAAiB,MAAMA,IAAiB,OAAO,CAACA,KAAkB,MAGzEC;AACT,GAWaC,KAAa,CAACC,MAASA,IAAO,QAAQ,KAAMA,IAAO,MAAM,KAAKA,IAAO,QAAQ,GAEpFC,KAAkB,CAACC,MACvBA,IAAeZ,GAAc,cAAc,OAAO,OAAOY,CAAY,EAAE,UAAU,GAAG,CAAC,CAAC,IAAIA,GAEtFC,KAAkB,CAAC,EAAE,MAAAH,GAAM,OAAAI,GAAO,MAAAR,GAAM,OAAAS,GAAO,SAAAC,GAAS,SAAAC,GAAS,cAAAL,QAAmB;AACpF,MAAAM,IAAcvB,GAAamB,CAAK;AAMpC,MAJIL,GAAWC,CAAI,KAAKI,MAAU,MACjBI,KAAA,IAGbZ,KAAQY;AACH,WAAA,IAAI,KAAKR,GAAMI,GAAOR,GAAMS,GAAOC,GAASC,GAASN,GAAgBC,CAAY,CAAC;AAE7F,GAEMO,KAAqB,CAACC,MAAM;AAE5B,MAAAA,EAAE,WAAW,IAAI;AACnB,UAAMV,IAAO,OAAOU,EAAE,CAAC,CAAC,GAClBN,IAAQM,EAAE,CAAC,IAAI,GACfd,IAAO,OAAOc,EAAE,CAAC,KAAK,CAAC,GACvBL,IAAQK,EAAE,EAAE,KAAK,GACjBJ,IAAUI,EAAE,EAAE,KAAK,GACnBH,IAAUG,EAAE,EAAE,KAAK,GACnBR,IAAeQ,EAAE,EAAE,KAAK;AAE9B,WAAOP,GAAgB;AAAA,MACrB,MAAAP;AAAA,MACA,MAAAI;AAAA,MACA,OAAAK;AAAA,MACA,OAAAD;AAAA,MACA,SAAAG;AAAA,MACA,SAAAD;AAAA,MACA,cAAAJ;AAAA,IAAA,CACD;AAAA,EACH;AACF,GAEMS,KAAqB,CAACD,MAAM;AAE5B,MAAAA,EAAE,WAAW,IAAI;AACnB,UAAMV,IAAO,OAAOU,EAAE,EAAE,CAAC,GACnBN,IAAQM,EAAE,CAAC,IAAI,GACfd,IAAO,OAAOc,EAAE,CAAC,KAAK,CAAC,GACvBL,IAAQK,EAAE,EAAE,KAAK,GACjBJ,IAAUI,EAAE,EAAE,KAAK,GACnBH,IAAUG,EAAE,EAAE,KAAK,GACnBR,IAAeQ,EAAE,EAAE,KAAK;AAE9B,WAAOP,GAAgB;AAAA,MACrB,MAAAH;AAAA,MACA,OAAAI;AAAA,MACA,MAAAR;AAAA,MACA,OAAAS;AAAA,MACA,SAAAC;AAAA,MACA,SAAAC;AAAA,MACA,cAAAL;AAAA,IAAA,CACD;AAAA,EACH;AACF,GAEMU,KAAoB,CAACF,MAAM;AAC3B,MAAAA,EAAE,WAAW;AACf;AAEF,QAAMV,IAAO,OAAOU,EAAE,CAAC,CAAC,GAClBN,IAAQM,EAAE,CAAC,IAAI,GACfd,IAAO,OAAOc,EAAE,CAAC,CAAC,GAClBG,IAAS,IAAI,KAAKb,GAAMI,GAAOR,CAAI,EAAE,qBACrCS,IAAQK,EAAE,EAAE,KAAK,GACjBJ,IAAUI,EAAE,EAAE,KAAK,GACnBH,IAAUG,EAAE,EAAE,KAAK,GACnBR,IAAeQ,EAAE,EAAE,KAAK;AAC1B,MAAAI,IAAWJ,EAAE,EAAE;AACb,QAAAK,IAAOL,EAAE,EAAE,GACXM,IAAcN,EAAE,EAAE,KAAK,GACvBO,IAAgBP,EAAE,EAAE,KAAK;AAC3B,MAAAF,IAAcvB,GAAamB,CAAK,GAChCc,GACAC;AAIJ,MAHIpB,GAAWC,CAAI,KAAKI,MAAU,MACjBI,KAAA,IAEbZ,KAAQY,GAAa;AACvB,QAAIM,MAAa;AACf,MAAAI,IAAWb,IAAQQ,IAAS,IACfM,IAAAb;AAAA,SACR;AAIL,UAHKQ,EAAS,SAAS,GAAG,MACbA,IAAAA,EAAS,OAAO,GAAG,CAAC,IAAI,MAAMA,EAAS,OAAO,CAAC,IAExD,CAACpB,GAAU,SAASoB,CAAQ;AAC9B;AAGF,MAAAI,IAAWH,MAAS,MAAMV,IAAQW,IAAcH,IAAS,KAAK,OAAOR,CAAK,IAAI,OAAOW,CAAW,IAAIH,IAAS,IAChGM,IAAAJ,MAAS,MAAMT,IAAUW,IAAgB,OAAOX,CAAO,IAAI,OAAOW,CAAa;AAAA,IAC9F;AAEO,WAAA,IAAI,KAAKjB,GAAMI,GAAOR,GAAMsB,GAAUC,GAAYZ,GAASN,GAAgBC,CAAY,CAAC;AAAA,EACjG;AACF,GAEMkB,KAAc;AAAA,EAClB,CAAClC,IAAauB,EAAkB;AAAA,EAChC,CAACtB,IAAawB,EAAkB;AAAA,EAChC,CAACvB,IAAYwB,EAAiB;AAChC,GAEMS,KAAY,CAACC,MAAQ;AACzB,WAASC,IAAI,GAAGnD,IAAMgD,GAAY,QAAQG,IAAInD,GAAKmD,KAAK;AACtD,UAAMb,IAAIU,GAAYG,CAAC,EAAE,CAAC,EAAE,KAAKD,CAAG;AAEhC,QAAAZ,KAAKA,EAAE,SAAS;AAClB,aAAOU,GAAYG,CAAC,EAAE,CAAC,EAAEb,CAAC;AAAA,EAE9B;AACF,GAEMc,KAAiB,CAACC,GAAK1C,GAAO2C,MAAS;AAC3C,MAAIA;AACF,YAAQA,GAAM;AAAA,MACZ,KAAK;AAAA,MACL,KAAK;AACH,QAAAD,EAAI,CAAC,IAAI1C;AACT;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACC,QAAA0C,EAAA,CAAC,IAAI1C,IAAQ;AACjB;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH,QAAA0C,EAAI,CAAC,IAAI1C;AACT;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH,QAAA0C,EAAI,CAAC,IAAI1C;AACT;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH,QAAA0C,EAAI,CAAC,IAAI1C;AACT;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH,QAAA0C,EAAI,CAAC,IAAI1C;AACT;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,QAAA0C,EAAI,CAAC,IAAI1C;AACT;AAAA,IAGJ;AAEJ,GAEM4C,KAAe,CAACL,GAAKM,MAAe;AACxC,QAAMH,IAAM,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC;AAE1B,MAAAH,EAAI,WAAWM,EAAW;AACrB,WAAAH;AAGT,MAAII,IAAW,GACXC,IAAU;AAEd,WAASP,IAAI,GAAGnD,IAAMkD,EAAI,QAAQC,IAAInD,GAAKmD,KAAK;AAC9C,UAAMQ,IAAYT,EAAI,OAAOC,GAAG,CAAC,GAC3BS,IAAS,MAAM,OAAOD,CAAS,CAAC,MAAKA,KAAA,gBAAAA,EAAW,YAAW;AAE5D,QAAAC,KAAUD,MAAcH,EAAW,OAAOL,GAAG,CAAC,KAAMA,MAAMnD,IAAM,GAAG;AAClE,UAAAW,GACA2C;AAEJ,UAAIM,GAAQ;AACF,QAAAjD,IAAAuC,EAAI,UAAUO,GAAUN,CAAC,GACjCM,IAAWN,IAAI;AACf,cAAMU,IAAML,EAAW,QAAQG,GAAWD,CAAO;AAEjD,QAAAJ,IAAOE,EAAW,UAAUE,GAASG,MAAQ,KAAKL,EAAW,SAASK,CAAG,GAEzEH,IAAUG,IAAM;AAAA,MAAA;AAER,QAAAlD,IAAAuC,EAAI,UAAUO,GAAUzD,CAAG,GAC5BsD,IAAAE,EAAW,UAAUE,GAAS1D,CAAG;AAG1C,OAAIW,EAAM,WAAW2C,EAAK,UAAU3C,MACnByC,GAAAC,GAAK1C,GAAO2C,CAAI;AAAA,IAEnC;AAAA,EACF;AAEO,SAAAD;AACT,GAEMS,KAAe,CAACC,GAAMC,GAAKC,MAAQ,MAAMF,CAAI,KAAKA,IAAOC,KAAOD,IAAOE,GAEvEC,KAAgB,CAAC,EAAE,MAAAtC,GAAM,OAAAI,GAAO,MAAAR,GAAM,OAAAS,GAAO,SAAAC,GAAS,SAAAC,GAAS,cAAAL,EAAa,MAChFgC,GAAalC,GAAM,GAAGV,GAAc,IAAI,KACxC4C,GAAa9B,GAAO,GAAGd,GAAc,KAAK,KAC1C4C,GAAatC,GAAM,GAAGN,GAAc,IAAI,KACxC4C,GAAa7B,GAAO,GAAGf,GAAc,IAAI,KACzC4C,GAAa5B,GAAS,GAAGhB,GAAc,MAAM,KAC7C4C,GAAa3B,GAAS,GAAGjB,GAAc,MAAM,KAC7C4C,GAAahC,GAAc,GAAGZ,GAAc,WAAW,GAEnDiD,KAAa,CAACxD,GAAO6C,MAAe;AACpC,MAAA,OAAOA,KAAe,UAAU;AAC5B,UAAAH,IAAME,GAAa5C,GAAO6C,CAAU,GACpC5B,IAAO,OAAOyB,EAAI,CAAC,CAAC,GACpBrB,IAAQ,OAAOqB,EAAI,CAAC,CAAC,GACrB7B,IAAO,OAAO6B,EAAI,CAAC,KAAK,CAAC,GACzBpB,IAAQ,OAAOoB,EAAI,CAAC,KAAK,CAAC,GAC1BnB,IAAU,OAAOmB,EAAI,CAAC,KAAK,CAAC,GAC5BlB,IAAU,OAAOkB,EAAI,CAAC,KAAK,CAAC,GAC5BvB,IAAe,OAAOuB,EAAI,CAAC,KAAK,CAAC;AAEvC,WACEa,GAAc;AAAA,MACZ,MAAAtC;AAAA,MACA,OAAAI;AAAA,MACA,MAAAR;AAAA,MACA,OAAAS;AAAA,MACA,SAAAC;AAAA,MACA,SAAAC;AAAA,MACA,cAAAL;AAAA,IAAA,CACD,IAED,SAGKC,GAAgB;AAAA,MACrB,MAAAH;AAAA,MACA,MAAAJ;AAAA,MACA,OAAAQ;AAAA,MACA,SAAAE;AAAA,MACA,OAAAD;AAAA,MACA,cAAAH;AAAA,MACA,SAAAK;AAAA,IAAA,CACD;AAAA,EAAA;AAED,WAAOc,GAAUtC,CAAK;AAE1B,GA+BayD,KAAS,CAACzD,GAAO6C,GAAYa,MAAY;AAChD,MAAA7C;AAQJ,MANIzB,GAASY,CAAK,IACTa,IAAA,IAAI,KAAKb,CAAK,IACZ,OAAOA,KAAU,aACnBa,IAAA2C,GAAWxD,GAAO6C,CAAU,IAGjCa,GAAS;AACX,UAAML,IAAOK,KAAWD,GAAOC,CAAO,KAAM,IAAI,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC9D,WAAA7C,KAAQA,IAAOwC,IAAMA,IAAMxC;AAAA,EACpC;AAEO,SAAAA;AACT,GA+Ba8C,KAAS,SAAU9C,GAAMgC,IAAa,uBAAuB;AACpE,MAAA5C,GAAOY,CAAI;AACT,QAAA,OAAOgC,KAAe,UAAU;AAClC,YAAMe,IAAI;AAAA,QACR,UAAU/C,EAAK,YAAY;AAAA,QAC3B,UAAUA,EAAK,SAAA,IAAa;AAAA,QAC5B,UAAUA,EAAK,QAAQ;AAAA,QACvB,UAAUA,EAAK,SAAS;AAAA,QACxB,UAAUA,EAAK,SAAS;AAAA,QACxB,UAAUA,EAAK,WAAW;AAAA,QAC1B,UAAUA,EAAK,WAAW;AAAA,QAC1B,UAAUA,EAAK,gBAAgB;AAAA,QAC/B,UAAUD,GAAYC,CAAI;AAAA,MAAA;AAG5B,oBAAO,KAAK+C,CAAC,EAAE,QAAQ,CAACC,MAAM;AAC5B,cAAMlC,IAAIkB,EAAW,MAAMvC,GAAeuD,CAAC,CAAC;AAExC,QAAAA,KAAKlC,KAAKA,EAAE,WACDkB,IAAAA,EAAW,QAAQlB,EAAE,CAAC,GAAGkC,MAAM,WAAWD,EAAEC,CAAC,IAAI9E,GAAS6E,EAAEC,CAAC,EAAE,SAAS,GAAGlC,EAAE,CAAC,EAAE,MAAM,CAAC;AAAA,MACtG,CACD,GAEMkB;AAAA,IACT;AAAA,aACS,OAAOhC,KAAS,YAAY,UAAU,UAAU,GAAG;AAC5D,QAAIiD,IAAcjB;AAEd,IAAA,UAAU,WAAW,IACVA,IAAA,SAEbiB,IAAc,UAAU,CAAC;AAGrB,UAAAC,IAAYN,GAAO5C,GAAMgC,CAAU;AACzC,WAAOkB,IAAYJ,GAAOI,GAAWD,CAAW,IAAI;AAAA,EACtD;AACF,GC/mBaE,IAAe,CAACC,GAAOC,IAAS,OAAS;AACpD,eAAaD,EAAM,YAAY,GAC/BA,EAAM,eAAe,MACjBC,IACGD,EAAM,YACHA,EAAA,eAAe,WAAW,MAAM;AACpC,IAAAA,EAAM,UAAU;AAAA,KACf,CAAC,KAGNA,EAAM,UAAU;AAEpB,GAOaE,KAAc,CAACF,GAAOC,IAAS,OAAS;AACnD,MAAI,CAACD,EAAM;AAAU;AACrB,EAAAA,EAAM,iBAAiBC;AACjB,QAAA,EAAE,aAAAE,EAAY,IAAIH,EAAM;AAE1B,EAAAC,KAAUE,EAAY,MAAM,YAC9B,aAAa,OAAOA,EAAY,MAAM,OAAO,CAAC,GAC9CA,EAAY,MAAM,UAAU,MAC5BA,EAAY,MAAM,UAAU;AAEhC,GClCaC,KAAW,CAACC,GAAgBC,IAAQ,QAAQ;AACvD,MAAIC,IAA8C;AAE5C,QAAAC,IAAY,YAAwBC,GAAW;AAC/C,IAAAF,KAAO,aAAaA,CAAK,GAC7BA,IAAQ,WAAW,MAAM;AAClB,MAAAF,EAAA,MAAM,MAAMI,CAAI,GACbF,IAAA;AAAA,OACPD,CAAK;AAAA,EAAA;AAIV,SAAAE,EAAU,SAAS,MAAM;AACvB,IAAID,MACF,aAAaA,CAAK,GACVA,IAAA;AAAA,EACV,GAGKC;AACT,GAEarF,KAAW,CAACY,MAAe,WAAWA,CAAK,EAAE,SAAe,MAAA,OAO5D2E,KAAY,CAAC5E,MAAQ;AAChC,QAAM6E,IAAW,MAAM,QAAQ7E,CAAG,IAAI,KAAK;AACvC,MAAAA,KAAO,OAAOA,KAAQ,UAAU;AAC5B,UAAA8E,IAAO,OAAO,KAAK9E,CAAG;AAC5B,QAAI8E,EAAK;AACF,MAAAA,EAAA,QAAQ,CAACC,MAAQ;AACpB,QAAI/E,EAAI+E,CAAG,KAAK,OAAO/E,EAAI+E,CAAG,KAAM,WAClCF,EAASE,CAAG,IAAIH,GAAU5E,EAAI+E,CAAG,CAAC,IAEzBF,EAAAE,CAAG,IAAI/E,EAAI+E,CAAG;AAAA,MACzB,CACD;AAAA;AAEM,aAAA/E;AAAA,EAEX;AAEO,SAAA6E;AACT,GAOaG,KAAU,CAAChF,GAAKiF,IAAa,CAAC,YAAY,WAAW,UAAU,MAAM;AAC1E,QAAAC,IAAS,EAAE,GAAGlF;AACT,SAAAiF,EAAA,QAAQ,CAACF,MAAQ;AAC1B,WAAOG,EAAOH,CAAG;AAAA,EAAA,CAClB,GACMG;AACT,GCjDaC,KAAa,CAACjB,GAAOkB,GAAWC,IAAY,OAAO;AACxD,QAAA,EAAE,UAAAC,GAAU,UAAAC,EAAa,IAAArB,GACzBjE,KAASsF,EAAS,SAASF,KAAaD;AACvC,SAAAE,EAAS,IAAIrF,CAAK;AAC3B,GAMauF,KAAa,CAACtB,MAAU;AACnC,EAAAA,EAAM,WAAW,IACjBA,EAAM,aAAa;AACrB,GAaauB,IAAuB,CAAC,EAAE,MAAAC,GAAM,OAAAxB,GAAO,UAAAyB,GAAU,GAAGhB,QAAW;AAC1E,EAAAP,GAAYF,GAAO,EAAK;AACxB,QAAM,EAAE,SAAA0B,IAAU,MAAM,OAAAC,IAAQ,IAAI,QAAAC,IAAS,MAAM,UAAAC,IAAW,MAAM,UAAAC,IAAW,MAAM,QAAAC,EAAA,IAAWtB;AAIhG,MAHKsB,KACHT,GAAWtB,CAAK,GAEd,CAAC0B,KAAWC,MAAU,MAAM,CAACE;AAC/B;AAGF,QAAMG,IAASF,KAAYpB,GAAUV,EAAM,eAAe;AAC1D,MAAIiC,IAAkB,CAAA;AAEtB,EAAIJ,IACgBI,IAAA,CAAC,GAAGJ,CAAQ,IACrBF,MAAU,MACDM,IAAA,CAAC,GAAGjC,EAAM,eAAe,GAClC4B,IAAAK,EAAgB,OAAON,GAAO,GAAGC,CAAM,IAAIK,EAAgB,OAAON,GAAO,CAAC,KAEnFM,IAAkB,CAAC,GAAGjC,EAAM,iBAAiB,GAAG0B,CAAO,GAIzD1B,EAAM,kBAAkBiC,GAGnBT,EAAA,qBAAqBd,GAAUuB,CAAe,CAAC,GACpDT,EAAK,UAAUd,GAAUuB,CAAe,GAAGD,CAAM;AACnD,GAOaE,KAAe,CAACN,MAA6BA,GAS7CO,KAAW,CAACC,GAAOf,GAAUgB,MAAS;AAC3C,QAAAC,IAAQjB,EAAS,YAAYe,EAAM;AACzC,SAAOC,KAAQA,EAAKC,CAAK,MAAM,SAAY,EAAE,CAACA,CAAK,GAAGD,EAAKC,CAAK,EAAA,IAAM;AACxE;AChFO,SAASC,GAAO,EAAE,OAAAH,GAAO,OAAApC,GAAO,MAAAwB,GAAM,UAAAC,KAAY;AACnD,MAAAe,IAAiB9B,GAAUV,EAAM,UAAU;AAEzC,QAAAyC,IAAkB,CAACC,MAAQ;AAC/B,QAAIA,GAAK;AACD,YAAAC,IAAS3C,EAAM,YAAY,KAAK,CAACqC,MAASA,EAAK,UAAUK,EAAI,KAAK;AACpE,UAAAC,KAAUA,EAAO,SAAS;AACtB,cAAAC,IAAQD,EAAO,QAAQ,KAAK,CAACN,MAASA,EAAK,UAAUK,EAAI,KAAK;AACpE,QAAAE,MAAUA,EAAM,YAAY;AAAA,MAC9B;AAAA,IACF;AAAA,EAAA;AAwCK,SAAA;AAAA,IACL,WAtCgB,CAACF,MAAQ;AACzB,MAAA3C,EAAaC,GAAO,EAAK,GACzByC,EAAgBC,CAAG;AACnB,YAAMb,IAAWO,EAAM,WAAW,OAAO,CAACC,MAASA,MAASK,CAAG;AAC/D,MAAAnB,EAAqB,EAAE,MAAAC,GAAM,OAAAxB,GAAO,UAAAyB,GAAU,UAAAI,EAAU,CAAA;AAAA,IAAA;AAAA,IAmCxD,UAhCe,MAAM;AACrB,MAAA9B,EAAaC,GAAO,EAAK,GACzBoC,EAAM,WAAW,QAAQ,CAACC,MAASI,EAAgBJ,CAAI,CAAC,GACxDrC,EAAM,WAAW,IACjBA,EAAM,aAAa,IACnBuB,EAAqB,EAAE,MAAAC,GAAM,OAAAxB,GAAO,UAAAyB,GAAU,UAAU,IAAI,GAC5DD,EAAK,OAAO;AAAA,IAAA;AAAA,IA2BZ,oBAxByB,MAAM;;AAC/B,UAAI,CAAAxB,EAAM,YAGN;AAAA,YAAAA,EAAM,SAAS,OAAO;AACxB,UAAAA,EAAM,WAAW;AACjB;AAAA,QACF;AACA,YAAIwC,MAAmB,MAAMxC,EAAM,eAAe,IAAI;AACpD,UAAAD,EAAaC,GAAO,EAAK;AACnB,gBAAA6C,IAAYT,EAAM,WAAW,SAAS;AAC5B,UAAAK,EAAAL,EAAM,WAAWS,CAAS,CAAC;AACrC,gBAAAhB,IAAW7B,EAAM,gBAAgB,MAAM,GAAGoC,EAAM,WAAW,SAAS,CAAC;AAC3E,UAAAb,EAAqB,EAAE,MAAAC,GAAM,OAAAxB,GAAO,UAAAyB,GAAU,UAAAI,EAAU,CAAA;AAAA,QAC1D;AACA,QAAAW,IAAiBxC,EAAM,aACnB8C,KAAAC,KAAAC,IAAAhD,KAAA,gBAAAA,EAAO,aAAP,gBAAAgD,EAAiB,SAAjB,gBAAAD,EAAuB,aAAvB,QAAAD,EAAiC,OACnC9C,EAAM,SAAS,KAAK,SAAS,IAAI,MAAM;AAAA;AAAA,IACzC;AAAA,EAMA;AAEJ;ACjDO,MAAMiD,KAAe,OAAOC,GAAUlD,GAAOoC,MAAU;AACtD,QAAA,EAAE,UAAAf,GAAU,gBAAA8B,EAAmB,IAAAnD,GAC/B,EAAE,WAAAoD,EAAc,IAAA/B,GAChBgC,IAAOvC,GAAQO,CAAQ;AAC7B,MAAIO,IAAS,MACT0B,IAAS;AAQb,MANM,MAAAJ,EAAS,MAAM,QAAQ,cAAc,CAAC,gBAAgB,GAAG,CAACK,MAAW;AACzE,IAAIA,MACOD,IAAA;AAAA,EACX,CACD,GAEGA,GAAQ;AACV,QAAIE,IAAK;AACH,UAAAC,IAAWzD,EAAM,iBAAiBoD,IAAY,EAAE,UAAUpD,EAAM,cAAkB,IAAA;AACxF,QAAIjE,IAAQoH;AACZ,UAAMO,IAAY,CAAA;AAEd,QAAA,MAAM,QAAQP,CAAc;AAC9B,MAAAO,EAAU,UAAU,IACZ3H,IAAA,IACOoH,EAAA,QAAQ,CAACQ,MAAc;AAC9B,cAAAtB,IAAOrC,EAAM,iBAAiB,KAAK,CAACqC,MAASA,EAAK,UAAUsB,CAAS,GACrEC,KAAQvB,KAAA,gBAAAA,EAAM,UAASsB;AAE7B,YADA5H,IAASA,IAAgB,GAAGA,CAAK,MAAM6H,CAAK,KAA3BA,GACbvB,GAAM;AACR,gBAAMwB,IAAS1B,GAASC,GAAOf,GAAUgB,CAAI;AAC7C,UAAAqB,EAAU,QAAQ,KAAK,EAAE,OAAAE,GAAO,GAAGC,GAAQ;AAAA,QAAA;AAE3C,UAAAH,EAAU,QAAQ,KAAK,EAAE,OAAAE,EAAO,CAAA;AAAA,MAClC,CACD;AAAA,aACQ,MAAM,QAAQ5D,EAAM,gBAAgB,GAAG;AAE1C,YAAAqC,IAAOrC,EAAM,iBAAiB,KAAK,CAACqC,MAASA,EAAK,UAAUtG,CAAK;AAClE,MAAAyH,IAAArB,GAASC,GAAOf,GAAUgB,CAAI;AAAA,IACrC;AAEA,IAAAT,IAASM,GAAa,EAAE,GAAGmB,GAAM,OAAOrD,EAAM,aAAa,GAAGyD,GAAU,OAAA1H,GAAO,GAAGyH,GAAI,GAAGE,EAAW,CAAA;AAAA,EACtG;AAEO,SAAA9B;AACT,GASakC,KAAkB,OAAOZ,GAAUlD,GAAOoC,MAAU;AACzD,QAAA,EAAE,UAAAf,EAAa,IAAArB,GACf+D,IAAS,MAAM1C,EAAS,KAAK,IAC7B2C,IAAS,MAAM3C,EAAS,KAAK,IAC7B4C,IAAQjE,EAAM+D,CAAM,GACpB9E,IAAMe,EAAMgE,CAAM,GAClBE,IAAc,CAACH,GAAQC,CAAM;AACnC,MAAIV,IAAS,IACT1B,IAAS;AAOb,MANA,MAAMsB,EAAS,MAAM,QAAQ,cAAcgB,GAAa,CAACX,MAAW;AAClE,IAAIA,MACOD,IAAA;AAAA,EACX,CACD,GAEGA,GAAQ;AACV,UAAM,EAAE,OAAAa,GAAO,OAAOC,GAAW,MAAAC,GAAM,MAAAC,GAAM,WAAAlB,EAAc,IAAA/B,GACrDuC,IAAQS,IAAO,GAAGD,CAAS,IAAIC,CAAI,MAAMD;AAC/C,QAAIrI,IAAQ;AACZ,IAAIkI,KAAShF,IACHlD,IAAA,GAAGkI,CAAK,IAAIhF,CAAG,KAEvBlD,IAAQkI,IAAQ,IAAIA,CAAK,KAAK,IAAIhF,CAAG;AAEvC,UAAMuE,IAAKrB,GAASC,GAAOf,GAAUA,CAAQ,GACvCoC,IAAWzD,EAAM,iBAAiBoD,IAAY,EAAE,UAAUpD,EAAM,cAAkB,IAAA;AACxF,IAAA4B,IAASM,GAAa,EAAE,MAAAoC,GAAM,OAAAH,GAAO,OAAAP,GAAO,OAAA7H,GAAO,GAAGyH,GAAI,OAAAS,GAAO,KAAAhF,GAAK,GAAGwE,EAAU,CAAA;AAAA,EACrF;AAEO,SAAA7B;AACT,GAUa2C,KAAmB,OAAOrB,GAAUlD,GAAOoC,GAAOoC,MAAmB;AAChF,QAAM,EAAE,UAAAnD,GAAU,WAAAoD,GAAW,SAAAC,GAAS,eAAAC,GAAe,aAAAC,EAAgB,IAAA5E;AACrE,MAAIiE,IAAQ,MACRhF,IAAM,MACNqE,IAAS,IACT1B,IAAS,MACTsC,IAAc;AAiBlB,MAhBIM,KACMP,IAAAU,GACF1F,IAAA2F,GACQV,IAAA,CAAC,iBAAiB,aAAa,MAErCD,IAAAQ,GACFxF,IAAAyF,GACQR,IAAA,CAAC,aAAa,SAAS,IAGvC,MAAMhB,EAAS,MAAM,QAAQ,cAAcgB,GAAa,CAACX,MAAW;AAClE,IAAIA,MACOD,IAAA;AAAA,EACX,CACD,GAEGA,GAAQ;AACJ,UAAA,EAAE,WAAAF,EAAc,IAAA/B,GAChBgC,IAAOvC,GAAQO,CAAQ;AAC7B,QAAItF,IAAQ;AACZ,QAAIkI,KAAShF,GAAK;AAChB,UAAIgF,IAAQhF;AACV;AACF,MAAWgF,MAAUhF,IACXlD,IAAAkI,IAEAlI,IAAA,GAAGkI,CAAK,IAAIhF,CAAG;AAAA,IACzB;AAEA,MAAAlD,IAAQkI,IAAQ,IAAIA,CAAK,KAAK,IAAIhF,CAAG;AAEvC,UAAMuE,IAAKrB,GAASC,GAAOf,GAAUA,CAAQ,GACvCoC,IAAWzD,EAAM,iBAAiBoD,IAAY,EAAE,UAAUpD,EAAM,cAAkB,IAAA;AAC/E,IAAA4B,IAAAM,GAAa,EAAE,GAAGmB,GAAM,OAAAtH,GAAO,OAAAkI,GAAO,KAAAhF,GAAK,GAAGuE,GAAI,GAAGC,EAAU,CAAA;AAAA,EAC1E;AAEO,SAAA7B;AACT,GAOaiD,KAAmB,CAAC7E,GAAOqC,GAAMyC,MAAM;AAC5C,QAAA,EAAE,UAAAzD,EAAa,IAAArB,GACf,EAAE,OAAAmE,GAAO,OAAAF,GAAO,KAAAhF,GAAK,KAAAG,IAAMiC,EAAS,KAAK,KAAAhC,IAAMgC,EAAS,IAAA,IAAQgB,GAChE0C,IAAa,MAAMZ,CAAK,IACxBa,IAAa,MAAMb,CAAK;AAC9B,GAAInE,EAAM,iBAAiB+E,KAAc/E,EAAM,iBAAiBgF,OACvD,OAAAhF,EAAMA,EAAM,YAAY,GACxB,OAAAA,EAAMA,EAAM,YAAY,GACxB,OAAAA,EAAM,UAAUA,EAAM,YAAY,GAClC,OAAAA,EAAM,UAAUA,EAAM,YAAY,GACzCA,EAAM,eAAe+E,GACrB/E,EAAM,eAAegF,IAEjBhF,EAAAA,EAAM,YAAY,IAAIiE,GACtBjE,EAAAA,EAAM,YAAY,IAAIf;AACtB,QAAA,EAAE,cAAAgG,GAAc,cAAAC,EAAiB,IAAAlF,GACjCmF,IAAchK,GAASiE,CAAG,GAC1BgG,IAAcjK,GAASkE,CAAG;AAChC,EAAI8F,KAAeC,KACXpF,EAAA,UAAUiF,CAAY,IAAI;AAAA,IAC9B,WAAW,CAACI,GAAMtJ,GAAOuJ,MAAO;AACxB,YAAAC,IAAgBpK,GAASY,CAAK;AAGjC,MAAA,CAACwJ,KAAiBpK,GAAS6E,EAAMkF,CAAY,CAAC,KAC9CK,MACGJ,KAAe,CAACC,KAAerJ,KAASqD,KACvC,CAAC+F,KAAeC,KAAerJ,KAASsD,KACxCtD,KAASqD,KAAOrD,KAASsD,KAE3BiG,OAEHtF,EAAM,oBAAoB,GAAQjE,KAASiE,EAAMkF,CAAY,IAC1DI,EAAA,IAAI,MAAMR,EAAE,gCAAgC,CAAC1F,GAAKC,CAAG,CAAC,CAAC,CAAC;AAAA,IAE/D;AAAA,EAAA,GAEIW,EAAA,UAAUkF,CAAY,IAAI;AAAA,IAC9B,WAAW,CAACG,GAAMtJ,GAAOuJ,MAAO;AAC9B,YAAME,IAAmBrK,GAAS6E,EAAMiF,CAAY,CAAC,GAC/CQ,IAASD,KAAoBpG,IAAMY,EAAMiF,CAAY,IAAI,OAAOjF,EAAMiF,CAAY,CAAC,IAAI7F,GACvFsG,IAAiBvK,GAASsK,CAAM,GAChCF,IAAgBpK,GAASY,CAAK;AAEpC,MACG,CAACwJ,KAAiBC,KAClBD,MACGG,KAAkB,CAACN,KAAerJ,KAAS0J,KAC1C,CAACC,KAAkBN,KAAerJ,KAASsD,KAC3CtD,KAAS0J,KAAU1J,KAASsD,KAE9BiG,MAEHA,EADS,CAACC,KAAiB,CAACC,IACzB,IAAI,MAAMV,EAAE,mCAAmC,CAAC,IAEhD,IAAI,MAAMA,EAAE,8BAA8B,CAAC,CAFM;AAAA,IAIxD;AAAA,EAAA,KAGI9E,EAAA,UAAUkF,CAAY,IAAI;AAAA,IAC9B,WAAW,CAACG,GAAMtJ,GAAOuJ,MAAO;AACxB,YAAAG,IAASzF,EAAMiF,CAAY,GAC3BM,IAAgBpK,GAASY,CAAK,GAC9B2J,IAAiBvK,GAASsK,CAAM;AAGnC,MAAAF,KAAiB,CAACG,KAClB,CAACH,KAAiBG,KAClBH,KAAiBG,KAAkB3J,KAAS,OAAO0J,CAAM,IAEvDH,MAEHA,EADS,CAACC,KAAiB,CAACG,IACzB,IAAI,MAAMZ,EAAE,mCAAmC,CAAC,IAEhD,IAAI,MAAMA,EAAE,8BAA8B,CAAC,CAFM;AAAA,IAIxD;AAAA,EAAA;AAGN;ACpOgB,SAAAa,GAAY,EAAE,OAAAvD,GAAO,MAAAZ,GAAM,OAAAxB,GAAO,GAAA8E,GAAG,QAAApF,GAAQ,UAAA+B,GAAU,IAAAmE,GAAI,mBAAAC,KAAqB;AACxF,QAAA3C,IAAW0C,KAAM5F,EAAM,UACvB8F,IAAgB,CAACzD,MAAS;;AAC9B,UAAM,EAAE,OAAA4B,GAAO,KAAAhF,GAAK,MAAAqF,EAAA,IAASjC;AAE7B,QADArC,EAAM,aAAaqC,EAAK,SACpBiC,MAAS;AACM,MAAAO,GAAA7E,GAAOqC,GAAMyC,CAAC;AAAA,aACtBR,MAAS,aAAa;AACzB,YAAA,EAAE,iBAAAyB,EAAoB,IAAA/F;AACxB,UAAA,CAACA,EAAM,aAAaiE,GAAO;AACvB,cAAA+B,IAAWtG,EAAOuE,GAAO8B,CAAe;AAC9C,QAAA/F,EAAM,YAAYA,EAAM,UAAUgG,IAAW,OAAOA;AAAA,MACtD;AACI,UAAA,CAAChG,EAAM,WAAWf,GAAK;AACnB,cAAAgH,IAASvG,EAAOT,GAAK8G,CAAe;AAC1C,QAAA/F,EAAM,UAAUiG,IAASjG,EAAM,YAAY,OAAOiG;AAAA,MACpD;AAAA,IAAA,WACS3B,MAAS,iBAAiB;AAC7B,YAAA,EAAE,qBAAA4B,EAAwB,IAAAlG;AAC5B,UAAA,CAACA,EAAM,iBAAiBiE,GAAO;AAC3B,cAAA+B,IAAWtG,EAAOuE,GAAOiC,CAAmB;AAClD,QAAAlG,EAAM,gBAAgBA,EAAM,cAAcgG,IAAW,OAAOA;AAAA,MAC9D;AACI,UAAA,CAAChG,EAAM,eAAef,GAAK;AACvB,cAAAgH,IAASvG,EAAOT,GAAKiH,CAAmB;AAC9C,QAAAlG,EAAM,cAAciG,IAASjG,EAAM,gBAAgB,OAAOiG;AAAA,MAC5D;AAAA,IACS;AAAA,MAAAjG,EAAM,cAAcsE,MAAS,eACtCtE,EAAM,aAAaA,EAAM,YACzBA,EAAM,gBAAgB,KAChBgD,IAAAhD,EAAA,eAAA,QAAAgD,EAAY,QAAQ,CAACmD,MAAY;AACrC,QAAIlF,GAAWjB,GAAOmG,EAAQ,KAAK,KAC3BnG,EAAA,cAAc,KAAK,GAAGqC,EAAK,KAAK,GAAG8D,EAAQ,KAAK,EAAE,GAE1DA,EAAQ,WAAW;AAAA,MAAA;AAIvB,IAAI7B,MAAS,gBAAcvB,IAAA/C,EAAM,eAAN,QAAA+C,EAAkB,aACrCD,IAAA9C,EAAA,eAAA,QAAA8C,EAAY,QAAQ,CAACsD,MAAW;AACpC,MAAAA,EAAO,WAAW,IAClBA,EAAO,YAAYnF,GAAWjB,GAAOoG,EAAO,KAAK;AAAA,IAAA,KAIrDpG,EAAM,mBAAmB,MACrB,CAACA,EAAM,cAAc,CAAC,CAAC,aAAa,iBAAiB,YAAY,QAAQ,EAAE,SAASsE,CAAI,IAC1FvE,EAAaC,GAAO,EAAK,IAEzBD,EAAaC,CAAK;AAAA,EACpB,GAGIqG,IAAiB,CAAChE,MAAS;;AACzB,UAAA,EAAE,OAAA8B,GAAO,OAAAP,EAAU,IAAAvB;AAGzB,IAAArC,EAAM,WAAW,EAAE,GAAGA,EAAM,UAAU,OAAA4D,EAAM,GAE5CpC,EAAK,sBAAsB2C,CAAK;AAE1B,UAAAmC,KAAWtD,IAAAE,EAAS,UAAT,gBAAAF,EAAgB;AACjC,IAAAhD,EAAM,WAAWqC,GACjBrC,EAAM,iBAAiBqC;AAEjB,UAAA,EAAE,WAAAe,EAAc,IAAAf;AACtB,IAAIe,KAAA,QAAAA,EAAW,UACbpD,EAAM,gBAAgB,IACtBA,EAAM,mBAAmBoD,GACzBrD,EAAaC,CAAK,MAElBA,EAAM,gBAAgB,KACtB8F,EAAczD,CAAI,IAEpBrC,EAAM,aAAa,IACnBsG,EAAS,MAAM;AAAA,EAAA,GAGXC,IAAc,CAAC9C,MAAa;AAChC,IAAAzD,EAAM,gBAAgByD,GACtBqC,EAAc9F,EAAM,QAAQ;AAAA,EAAA,GAUxBwG,IAAmB,CAACnF,GAAUgB,GAAMuB,GAAO7H,MAAU;AACzD,UAAM,EAAE,SAAA0K,GAAS,WAAArD,GAAW,UAAAsD,EAAA,IAAarF,GACnCgC,IAAOvC,GAAQO,CAAQ,GACvB,EAAE,UAAAsF,EAAa,IAAA3G,GACf2B,IAAQgF,EAAS,IAAI/C,CAAK,GAC1BJ,IAAKrB,GAASC,GAAOf,GAAUgB,CAAI,GACnCoB,IAAWzD,EAAM,iBAAiBoD,IAAY,EAAE,UAAUpD,EAAM,cAAkB,IAAA;AACxF,QAAI4B,IAAS;AAEb,QAAI8E,GAAU;AACZ,YAAME,IAAU,EAAE,OAAO7K,GAAO,GAAGyH,EAAG;AACtC,UAAI7B,KAAS,GAAG;AACRE,cAAAA,KAAW,GAAG7B,EAAM,gBAAgB2B,CAAK,EAAE,KAAK,MAAM5F,CAAK,IAC3D8K,KAAa,CAAC,GAAG7G,EAAM,gBAAgB2B,CAAK,EAAE,SAASiF,CAAO;AAC3D,QAAAhF,IAAAM,GAAa,EAAE,GAAGlC,EAAM,gBAAgB2B,CAAK,GAAG,OAAOE,IAAU,SAASgF,GAAY,CAAA;AAAA,MAAA;AAEtF,QAAAjF,IAAAM,GAAa,EAAE,GAAGmB,GAAM,OAAAO,GAAO,OAAA7H,GAAO,SAAS,CAAC6K,CAAO,EAAA,CAAG;AAAA,IACrE;AAES,MAAAhF,IAAAM,GAAa,EAAE,GAAGmB,GAAM,OAAAO,GAAO,OAAA7H,GAAO,GAAGyH,GAAI,GAAGC,EAAA,CAAU;AAErE,QAAIxC,GAAWjB,GAAOjE,GAAO6H,CAAK,GAAG;AACnC,MAAAtC,GAAWtB,CAAK;AAChB;AAAA,IACF;AACA,IAAAD,EAAaC,GAAO,EAAK;AAEnB,UAAA8B,KAAWpB,GAAUV,EAAM,eAAe;AAChD,QAAI6B,KAAW,CAAA;AACV,SAAA4E,KAAWC,MAAa/E,KAAS,GAAG;AACvC,YAAMmF,IAAS,CAAC,GAAG9G,EAAM,eAAe;AACjC,MAAA8G,EAAA,OAAOnF,GAAO,CAAC,GACXE,KAAA,CAAC,GAAGiF,GAAQlF,CAAM;AAAA,IAAA;AAE7B,MAAAC,KAAW,CAAC,GAAG7B,EAAM,iBAAiB4B,CAAM;AAE9C,IAAAL,EAAqB,EAAE,MAAAC,GAAM,OAAAxB,GAAO,UAAAyB,GAAU,UAAAI,IAAU,UAAAC,IAAU;AAAA,EAAA,GAO9DiF,IAAmB,CAACC,MAAgB;;AAC9B,IAAAC,MACDlE,KAAAC,IAAAE,EAAA,UAAA,gBAAAF,EAAO,aAAP,QAAAD,EAAiB;AAAA,EAAM,GAQ5BmE,IAAkB,CAAC7E,GAAM8E,IAAc,OAAU;;AACrD,IAAApH,EAAaC,GAAO,EAAK,GAErBmH,MACFnH,EAAM,WAAWqC,GACjBrC,EAAM,iBAAiBqC;AAGnB,UAAA,EAAE,UAAAhB,EAAa,IAAArB,GACfjE,IAAQsG,EAAK,SAASA,EAAK,OAC3BiE,KAAWtD,IAAAE,EAAS,UAAT,gBAAAF,EAAgB;AACjC,QAAI,CAAC/B,GAAWjB,GAAOjE,CAAK,GAAG;AAC7B,YAAMqL,IAAWpH,EAAM,SAAS,SAASqC,EAAK;AAC7B,MAAAmE,EAAAnF,GAAUgB,GAAM+E,GAAUrL,CAAK;AAAA,IAClD;AACA,IAAAuK,EAAS,MAAM;AAAA,EAAA,GAEXe,IAA4B,CAACC,GAAUjG,MAAa;AAExD,QAAIiG,EAAS,OAAO;AAIlB,UAFA9F,EAAK,sBAAsBH,CAAQ,GAE/B,CAACA,EAAS,WAAW,CAACA,EAAS,QAAQ;AACzC;AAGI,YAAAkG,IAAclG,EAAS,QAAQ,CAAC;AACtC,UAAI,CAACkG;AACH;AAKF,UAAI,CAFWnF,EAAM,WAAW,KAAK,CAACC,MAASA,EAAK,UAAUkF,EAAY,KAAK,GAElE;AACX,cAAM3D,IAAQvC,EAAS,OACjBtF,IAAQwL,EAAY;AACT,QAAAf,EAAAnF,GAAUkG,GAAa3D,GAAO7H,CAAK;AACpD;AAAA,MACF;AAAA,IAAA;AAEK,MAAAyF,EAAA,UAAUxB,EAAM,eAAe;AAAA,EACtC,GAGIwH,IAAyB,CAACnG,GAAUiG,GAAU5E,MAAQ;;AACpD,UAAAL,KAAOW,IAAAhD,EAAM,eAAN,gBAAAgD,EAAkB,KAAK,CAACmD,MAAYA,EAAQ,UAAUzD;AACnE,IAAA8D,EAAiBnF,GAAUgB,GAAMiF,EAAS,OAAO5E,CAAG;AAAA,EAAA,GAGhD+E,IAAyB,CAACC,GAAYJ,GAAUjG,MAAa;;AAEjE,QAAIiG,EAAS,OAAO;AAClB,YAAM,EAAE,QAAAK,GAAQ,SAAAlB,GAAS,MAAAnC,GAAM,UAAAoC,MAAarF,GACtCK,IACH4C,MAAS,cAAcmC,KAAanC,MAAS,cAAcoC,IACxD,CAACgB,CAAU,IACXA,EAAW,MAAMtF,EAAM,eAAe;AAG5C,UAAIuF,GAAQ;AACV,cAAMC,IAAc,CAAA;AACpB,mBAAWlF,KAAOhB;AAEZ,UAAAiG,EAAO,KAAKjF,CAAG,IACM8E,EAAAnG,GAAUiG,GAAU5E,CAAG,IAE9CkF,EAAY,KAAKlF,CAAG;AAIpB,QAAAkF,EAAY,SAAS,KACvBpG,EAAK,kBAAkB;AAAA,UACrB,eAAeoG;AAAA,UACf,OAAOvG,EAAS;AAAA,UAChB,OAAOA,EAAS;AAAA,UAChB,QAAQsG,EAAO,SAAS;AAAA,QAAA,CACzB;AAAA,MACH;AAGA,mBAAWjF,KAAOhB;AACO,UAAA8F,EAAAnG,GAAUiG,GAAU5E,CAAG;AAAA,IAElD,OAEK;AACL,YAAM,EAAE,OAAAmF,GAAO,cAAAC,GAAc,qBAAAC,EAAA,IAAwB3F,GAE/C4F,IAAcH,EAAM,KAAK,CAACxF,MAAS;AACjC,cAAA,EAAE,QAAAsF,GAAW,IAAAtF;AACnB,eAAOsF,MAAUA,GAAO,KAAK3H,EAAM,UAAU;AAAA,MAAA,CAC9C,GACKiI,IAAcH,IAAeD,EAAM,KAAK,CAACxF,MAASA,EAAK,UAAUyF,CAAY,IAAI9H,EAAM,cACvFkI,IAAcF,KAAeC,GAC7BE,IACJ,CAACH,KAAeD,IAAsB,EAAE,GAAGG,GAAa,SAAS,GAAS,IAAAA,GACtE,EAAE,SAAAzB,GAAS,MAAAnC,IAAM,UAAAoC,IAAU,QAAAiB,MAAWQ,GACtCzG,KACH4C,OAAS,cAAcmC,KAAanC,OAAS,cAAcoC,KACxD,CAACgB,CAAU,IACXA,EAAW,MAAMtF,EAAM,eAAe;AAExC,OAAAY,IAAAkF,KAAA,gBAAAA,EAAa,YAAb,QAAAlF,EAAsB,WACxBhD,EAAM,aAAa,CAAC,GAAGkI,EAAY,OAAO,IACpCnF,IAAA/C,EAAA,eAAA,QAAA+C,EAAY,QAAQ,CAACV,MAAS;AAC5BuB,cAAAA,KAAQvB,EAAK,SAASA,EAAK;AAC7B,QAAAX,GAAQ,SAASkC,EAAK,MACxBvB,EAAK,YAAY;AAAA,MACnB;AAGJ,YAAMuB,KAAQsE,EAAY;AAG1B,UAAIP,GAAQ;AACV,cAAMC,IAAc,CAAA;AACpB,mBAAWlF,MAAOhB;AAEZ,UAAAiG,EAAO,KAAKjF,EAAG,IACjB8D,EAAiB2B,GAAuB,CAAA,GAAIvE,IAAOlB,EAAG,IAEtDkF,EAAY,KAAKlF,EAAG;AAIpB,QAAAkF,EAAY,SAAS,KACvBpG,EAAK,kBAAkB;AAAA,UACrB,eAAeoG;AAAA,UACf,OAAOO,EAAsB;AAAA,UAC7B,OAAOA,EAAsB;AAAA,UAC7B,QAAQR,EAAO,SAAS;AAAA,QAAA,CACzB;AAAA,MACH;AAEA,mBAAWjF,KAAOhB;AAChB,UAAA8E,EAAiB2B,GAAuB,CAAA,GAAIvE,IAAOlB,CAAG;AAAA,IAG5D;AAAA,EAAA,GAGIuE,IAAY,MAAM;AACtB,UAAM,EAAE,YAAAS,GAAY,UAAAJ,GAAU,UAAAjG,EAAA,IAAarB;AAM3C,QAJI6F,KACgBA,KAEpB9F,EAAaC,GAAO,EAAK,GACrB,CAAC0H;AAEH,MAAAL,EAA0BC,GAAUjG,CAAQ;AAAA,SACvC;AAEC,YAAA,EAAE,WAAA+G,EAAc,IAAAhG;AAClB,UAAAgG,KAAaA,IAAYV,EAAW,QAAQ;AAC9C,QAAAlG,EAAK,UAAU4G,CAAS;AACxB;AAAA,MACF;AAEuB,MAAAX,EAAAC,GAAYJ,GAAUjG,CAAQ;AAAA,IACvD;AAAA,EAAA;AAQF,SAAO,EAAE,gBAAAgF,GAAgB,iBAAAa,GAAiB,kBAAAH,GAAkB,WAAAE,GAAW,WAJrD,MAAM;AACtB,IAAAzF,EAAK,MAAM;AAAA,EAAA,GAGqE,aAAA+E;AACpF;ACxTA,MAAM8B,KAAe,CAACtN,MAAWA,EAAO,QAAQ,uBAAuB,MAAM,GAEvEuN,KAAoB,CAACC,GAAY3E,MAAU;AAC/C,QAAM4E,IAAQ,CAAA;AACd,MAAI3F,IAAY,GACZ7B;AAGJ,UAAQA,IAASuH,EAAW,KAAK3E,CAAK,OAAO,QAAM;AACjD,UAAM6E,IAAazH,EAAO,OACpB0H,IAAWH,EAAW;AAG5B,IAAIE,IAAa5F,KACf2F,EAAM,KAAK5E,EAAM,MAAMf,GAAW4F,CAAU,CAAC,GAG/CD,EAAM,KAAK5E,EAAM,MAAM6E,GAAYC,CAAQ,CAAC,GAChC7F,IAAA6F;AAAA,EACd;AAGI,SAAA7F,IAAYe,EAAM,UACpB4E,EAAM,KAAK5E,EAAM,MAAMf,CAAS,CAAC,GAG5B2F;AACT;AAEO,SAASG,GAAS,EAAE,OAAAvG,GAAO,OAAApC,GAAO,MAAAwB,GAAM,UAAAC,KAAY;AAGnD,QAAAmH,IAAe,OAAOC,MAAoB;AAC9C,IAAA7I,EAAM,mBAAmB,MAAMoC,EAAM,iBAAiB,aAAayG,CAAO,GAC1E9I,EAAaC,GAAO,EAAI;AAAA,EAAA,GA2GpB8I,IAAc1I,GAxGC,CAAC2I,MAAM;;AACpB,UAAA,EAAE,aAAAC,GAAa,UAAA1B,EAAa,IAAAtH,GAC5BiJ,IAAM,OAAOF,KAAM,WAAWA,IAAKA,KAAKA,EAAE,UAAU,OAAOA,EAAE,OAAO,SAAU,WAAWA,EAAE,OAAO,QAAQ/I,EAAM,cAAc,IAC9H0H,KAAa1E,IAAA,OAAOiG,CAAG,MAAV,gBAAAjG,EAAa,QAC1B,EAAE,WAAAoF,EAAc,IAAAhG;AAElB,QAAAgG,KAAaA,IAAYV,EAAW,QAAQ;AAC9C,MAAAlG,EAAK,UAAU4G,CAAS;AACxB;AAAA,IACF;AAEI,QAAAV,EAAW,WAAW,GAAG;AACX,MAAAwB,KAChBnJ,EAAaC,CAAK;AAClB;AAAA,IACF;AAEA,WAAO,KAAKA,EAAM,UAAU,EAAE,QAAQ,CAACa,MAAQ;AAC7C,MAAAb,EAAM,WAAWa,CAAG,EAAE,OAAO,CAAA,GAC7Bb,EAAM,WAAWa,CAAG,EAAE,YAAY,CAAA;AAAA,IAAC,CACpC;AAEK,UAAA9E,IAAQsM,GAAaX,CAAU,GAC/ByB,IAAO,IAAI,OAAOpN,GAAO,GAAG,GAC5BqN,IACJ9B,EAAS,SAAS,CAACvL,IAAQ,OAAOiN,EAAY,KAAK,CAAC3G,MAASA,EAAK,SAAS,SAAS8G,EAAK,KAAK9G,EAAK,KAAK,CAAC;AAC3G,QAAI+G,GAAS;AACX,MAAApJ,EAAM,WAAW,EAAE,GAAGA,EAAM,UAAU,OAAOoJ,EAAQ,SACrDpJ,EAAM,aAAa,IACnBA,EAAM,WAAWoJ,GACjBpJ,EAAM,iBAAiBoJ,GACjBpJ,EAAA,aAAaoJ,EAAQ,WAAW,CAAA;AACtC;AAAA,IACF;AAEA,IAAApJ,EAAM,cAAa+C,IAAA/C,EAAM,eAAN,gBAAA+C,EAAkB,OAAO,CAACV,MACvC8G,EAAK,KAAK9G,EAAK,KAAK,KACtB,OAAOA,EAAK,UACRpB,GAAWjB,GAAOqC,EAAK,KAAK,KACxBrC,EAAA,cAAc,KAAK,GAAGA,EAAM,SAAS,KAAK,GAAGqC,EAAK,KAAK,EAAE,GAG1D,OAEPA,EAAK,WAAW,IACT;AAIX,UAAMkG,IAAa,IAAI,OAAOxM,GAAO,IAAI,GACnCsN,IAAe3B,EAAW;AAG5B,QAAA1H,EAAM,SAAS,OAAO;AAClB,OAAA8C,IAAA9C,EAAA,eAAA,QAAA8C,EAAY,QAAQ,CAACT,MAAS;AAClC,QAAAA,EAAK,eAAegH;AACpB,cAAMlI,IAAYkB,EAAK;AACnB,QAAA8G,EAAK,KAAKhI,CAAS,KAChBkB,EAAA,QAAQiG,GAAkBC,GAAYpH,CAAS,GACpDkB,EAAK,WAAW,MAEhBA,EAAK,WAAW;AAAA,MAClB,KAGEiH,IAAAtJ,EAAM,eAAN,QAAAsJ,EAAkB,UAAU5B,IAC9B3H,EAAaC,CAAK,IAElBD,EAAaC,GAAO,EAAK;AAE3B;AAAA,IACF;AAGA,eAAWqC,KAAQ2G,GAAa;AACxB,YAAA,EAAE,SAAApC,IAAU,IAAI,UAAA2C,IAAW,KAAK,GAAGlG,EAAS,IAAAhB,GAC5ClB,IAAYkC,EAAK;AACnB,UAAA8F,EAAK,KAAKhI,CAAS,GAAG;AAClB,cAAAqH,IAAQF,GAAkBC,GAAYpH,CAAS;AAC/C,QAAAnB,EAAA,WAAWuJ,CAAQ,EAAE,KAAK,KAAK,EAAE,GAAGlH,GAAM,OAAAmG,GAAO,cAAAa,EAAA,CAAc;AAAA,MACvE;AACA,iBAAWjD,KAAUQ,GAAS;AACtB,cAAA4C,IAAcxJ,EAAM,SAAS,QAAQmB,IAAY,GAAGA,CAAS,IAAIiF,EAAO,KAAK;AAC/E,YAAA+C,EAAK,KAAKK,CAAW,GAAG;AACpB,gBAAAhB,IAAQF,GAAkBC,GAAYiB,CAAW;AACvD,UAAAxJ,EAAM,WAAWuJ,CAAQ,EAAE,UAAU,KAAK;AAAA,YACxC,GAAGnD;AAAA,YACH,GAAG/C;AAAA,YACH,SAAAuD;AAAA,YACA,cAAAyC;AAAA,YACA,OAAOjD,EAAO;AAAA,YACd,OAAAoC;AAAA,UAAA,CACD;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAEA,IAAIzM,KAASqG,EAAM,oBAAoBA,EAAM,iBAAiB,eAC5DwG,EAAa7M,CAAK,IAElBgE,EAAaC,CAAK;AAAA,EACpB,GAGyC,GAAG,GAGxC6F,IAAoB,MAAM;AAC9B,IAAIiD,EAAY,UACdA,EAAY,OAAO;AAAA,EACrB,GAGII,IAAkB,MAAM;;AACtB,KAAAlG,IAAAhD,EAAA,eAAA,QAAAgD,EAAY,QAAQ,CAACX,MAASA,EAAK,YAAY,OAAOA,EAAK;AAAA,EAAQ;AAuCpE,SAAA;AAAA,IACL,aAAAyG;AAAA,IACA,gBAtCqB,CAACzG,GAAMoH,MAAY;;AAClC,YAAA,EAAE,SAAA7C,EAAY,IAAAvE,GACd,EAAE,UAAAhB,GAAU,UAAAiG,EAAa,IAAAtH;AAC/B,UAAI4G;AACF,QAAA7G,EAAaC,GAAO,EAAK,GACnBA,EAAA,WAAW,EAAE,GAAGA,EAAM,UAAU,OAAO,GAAGqC,EAAK,KAAK,IAAI,GAC9DrC,EAAM,eAAe,IACrBA,EAAM,aAAa,IAEbA,EAAA,aAAaqC,EAAK,WAAW,CAAA,GACnB6G,MAEVlG,IAAAhD,EAAA,eAAA,QAAAgD,EAAY,QAAQ,CAACmD,MAAY;AAC/B,gBAAApK,IAAQuL,EAAS,QAAQnB,EAAQ;AAC/B,UAAAA,EAAA,YAAYlF,GAAWjB,GAAOjE,CAAK;AAAA,QAAA;AAAA,WAExC;AACL,YAAIsG,EAAK;AACP;AAGF,QAAAtC,EAAaC,GAAO,EAAK,GACzBA,EAAM,eAAe,IACLkJ;AACV,cAAA,EAAE,OAAA/E,GAAO,MAAAG,EAAS,IAAAjD,GAClBtF,IAAQuL,EAAS,QAAQjF,EAAK,OAC9BmB,IAAKrB,GAASC,GAAOf,GAAUgB,CAAI,GAEnCX,IAAU,CADDQ,GAAa,EAAE,MAAAoC,GAAM,OAAAH,GAAO,OAAOmD,EAAS,OAAO,OAAAvL,GAAO,GAAGyH,EAAI,CAAA,CACzD;AACvB,QAAAjC,EAAqB,EAAE,MAAAC,GAAM,OAAAxB,GAAO,UAAAyB,GAAU,SAAAC,EAAS,CAAA;AAAA,MACzD;AACA,MAAI+H,KACF1J,EAAaC,CAAK;AAAA,IACpB;AAAA,IAMA,mBAAA6F;AAAA,EAAA;AAEJ;ACrMO,SAAS6D,GAAY,EAAE,OAAAtH,GAAO,OAAApC,GAAO,MAAAwB,GAAM,UAAAC,KAAY;AAkErD,SAAA;AAAA,IACL,gBAlEqB,CAACkI,MAAqB;;AAC3C,MAAA5J,EAAaC,GAAO,EAAK;AACzB,YAAM,EAAE,eAAA4J,GAAe,UAAAvI,GAAU,UAAAiG,EAAA,IAAatH,GACxCqD,IAAOvC,GAAQO,CAAQ;AAC7B,UAAIsI,GAAS;AACX,cAAMjI,IAAU,CAAA,GACVI,IAAWpB,GAAUV,EAAM,eAAe,GAC1C,EAAE,UAAA0G,GAAU,WAAAtD,GAAW,OAAOgB,MAAc/C;AAClD,YAAIqF,GAAU;AACZ,cAAI3K,IAAQ;AACZ,gBAAM6K,IAAU,CAAA,GACV,EAAE,UAAAD,EAAa,IAAA3G,GACf6J,IAAclD,EAAS,IAAIvC,CAAS;AAetC,cAdJyF,MAAgB,UAAa7J,EAAM,gBAAgB,OAAO6J,GAAa,CAAC,IAElE7G,IAAAhD,EAAA,eAAA,QAAAgD,EAAY,QAAQ,CAACX,MAAS;AAC5B,kBAAA,EAAE,OAAAuB,EAAU,IAAAvB,GACZyH,IAAgB,GAAG1F,CAAS,GAAGR,CAAK;AAE1C,gBADgBgG,EAAc,SAASE,CAAa,GACvC;AACX,qBAAOzH,EAAK;AACZ,oBAAMmB,IAAKrB,GAASC,GAAOf,GAAUgB,CAAI,GACnCwE,IAAa,EAAE,OAAOxE,EAAK,OAAO,GAAGmB;AAC3C,cAAAzH,KAAUA,IAAgB,MAAM6H,CAAK,KAAnBA,GAClBgD,EAAQ,KAAKC,CAAU;AAAA,YACzB;AAAA,UAAA,IAEED,EAAQ,SAAS,GAAG;AACtB,kBAAMhF,IAAS,EAAE,GAAGyB,GAAM,OAAAtH,GAAO,SAAA6K,EAAQ;AACzC,YAAAlF,EAAQ,KAAKE,CAAM;AAAA,UACrB;AAAA,QAAA,OACK;AACC,gBAAA,EAAE,UAAAR,EAAa,IAAApB,GACf+J,IAAY,CAAA;AAiBlB,eAhBMhH,IAAA/C,EAAA,eAAA,QAAA+C,EAAY,QAAQ,CAACV,MAAS;AAC5B,kBAAA,EAAE,OAAAuB,EAAU,IAAAvB,GACZtG,IAAQ,GAAGqI,CAAS,GAAGR,CAAK,IAC5BwF,IAAUQ,EAAc,SAAS7N,CAAK;AAC5C,gBAAIqN,KAAW,CAACnI,GAAWjB,GAAO4D,CAAK,GAAG;AACxC,oBAAMJ,IAAKrB,GAASC,GAAOf,GAAUgB,CAAI,GACnCoB,IAAWzD,EAAM,iBAAiBoD,IAAY,EAAE,UAAUpD,EAAM,cAAkB,IAAA,MAClF4B,IAASM,GAAa,EAAE,GAAGmB,GAAM,OAAOiE,EAAS,OAAO,OAAO1D,GAAO,GAAGJ,GAAI,GAAGC,EAAU,CAAA;AAChG,cAAA/B,EAAQ,KAAKE,CAAM,GACnBS,EAAK,YAAY;AAAA,uBACR,CAAC+G,KAAWnI,GAAWjB,GAAO4D,CAAK,GAAG;AAC/C,cAAAvB,EAAK,YAAY;AACX,oBAAAV,IAAQP,EAAS,IAAIrF,CAAK;AAChC,cAAAgO,EAAU,KAAKpI,CAAK;AAAA,YACtB;AAAA,UAAA,IAEEoI,EAAU,QAAQ;AACpB,kBAAMC,IAAWhK,EAAM,gBAAgB,OAAO,CAACqC,GAAMV,MAAUU,KAAQ,CAAC0H,EAAU,SAASpI,CAAK,CAAC;AAEjG,YAAAJ,EAAqB,EAAE,MAAAC,GAAM,OAAAxB,GAAO,UAAAyB,GAAU,UAAUuI,GAAU,UAAAlI,GAAU;AAC5E;AAAA,UACF;AAAA,QACF;AACA,QAAAP,EAAqB,EAAE,MAAAC,GAAM,OAAAxB,GAAO,UAAAyB,GAAU,SAAAC,GAAS,UAAAI,GAAU;AAAA,MAAA;AAEjE,QAAA9B,EAAM,WAAW,EAAE,GAAGsH,GAAU,OAAO,GAAG,GAC1CtH,EAAM,aAAa;AAAA,IACrB;AAAA,EAKA;AAGJ;ACtEO,SAASiK,GAAc,EAAE,OAAA7H,GAAO,OAAApC,GAAO,MAAAwB,GAAM,UAAAC,GAAU,IAAAmE,KAAM;AAC5D,QAAA1C,IAAW0C,KAAM5F,EAAM;AA+EtB,SAAA;AAAA,IACL,eA/EoB,OAAO2J,GAAkBnF,IAAiB,OAAU;AACxE,UAAI,CAACmF,GAAS;AACN,QAAA3J,EAAA,WAAW,EAAE,OAAO,GAAG;AAE7B;AAAA,MACF;AACA,YAAM4B,IAAS,MAAM2C,GAAiBrB,GAAUlD,GAAOoC,GAAOoC,CAAc;AAC5E,UAAI5C,GAAQ;AACV,QAAA7B,EAAaC,GAAO,EAAK;AACzB,cAAM6B,IAAWO,EAAM,WAAW,OAAO,CAAC8H,MAASA,EAAK,SAAStI,EAAO,QAAQsI,EAAK,UAAUtI,EAAO,KAAK;AAC3G,QAAAC,EAAS,KAAKD,CAAM,GACpBL,EAAqB,EAAE,MAAAC,GAAM,OAAAxB,GAAO,UAAAyB,GAAU,UAAAI,EAAU,CAAA;AAAA,MAAA;AAExD,QAAA9B,EAAaC,CAAK;AAAA,IACpB;AAAA,IAkEA,gBA/DqB,MAAMD,EAAaC,CAAK;AAAA,IAgE7C,eA9DoB,CAACyE,GAAW0F,IAAU,QAAQ;AAAA,MAClD,aAAahL,GAAM;AACjB,cAAM,EAAE,eAAAiL,IAAgB,GAAG,KAAAhL,GAAK,KAAAC,MAAQW,EAAM,UAExC0E,IAAU1E,EAAMmK,CAAO,GACvBE,IAAUlL,EAAK;AAErB,YAAIiL,IAAgB;AAClB,cAAIhL,KAAOC;AACT,gBAAI8K,KAAWzF,GAAS;AACtB,oBAAMzF,IAAM,IAAI,KAAKyF,CAAO,EAAE,QAAQ,GAChCT,IAAQ,CAAC7E,KAAOC,IAAMJ,IAAMmL,IAAgB,KAAK,IAAIhL,EAAI,QAAW,GAAAH,IAAMmL,CAAa;AACtF,qBAAAC,IAAUpG,KAASoG,IAAUpL;AAAA,YAAA,WAC3B,CAACkL,KAAW1F,GAAW;AAChC,oBAAMR,IAAQ,IAAI,KAAKQ,CAAS,EAAE,QAAQ,GACpCxF,IAAMG,KAAO,CAACC,IAAM4E,IAAQmG,IAAgB,KAAK,IAAI/K,EAAI,QAAW,GAAA4E,IAAQmG,CAAa;AACxF,qBAAAC,IAAUpG,KAASoG,IAAUpL;AAAA,YAAA;AAE5B,qBAAAG,KAAOiL,IAAUjL,EAAI,QAAA,KAAeC,KAAOgL,IAAUhL,EAAI;mBAG/D8K,KAAWzF,GAAS;AACtB,kBAAMzF,IAAM,IAAI,KAAKyF,CAAO,EAAE,QAAQ,GAChCT,IAAQhF,IAAMmL;AACb,mBAAAC,IAAUpG,KAASoG,IAAUpL;AAAA,UAAA,WAC3B,CAACkL,KAAW1F,GAAW;AAChC,kBAAMR,IAAQ,IAAI,KAAKQ,CAAS,EAAE,QAAQ,GACpCxF,IAAMgF,IAAQmG;AACb,mBAAAC,IAAUpG,KAASoG,IAAUpL;AAAA,UAAA;AAE7B,mBAAA;AAAA,iBAIPG,KAAOC;AACT,cAAI8K,KAAWzF,GAAS;AACtB,kBAAMzF,IAAM,IAAI,KAAKyF,CAAO,EAAE,QAAQ;AACtC,mBAAQtF,KAAOiL,IAAUjL,EAAI,aAAciL,IAAUpL;AAAA,UAAA,WAC5C,CAACkL,KAAW1F,GAAW;AAChC,kBAAMR,IAAQ,IAAI,KAAKQ,CAAS,EAAE,QAAQ;AAC1C,mBAAO4F,IAAUpG,KAAU5E,KAAOgL,IAAUhL,EAAI;UAAQ;AAEjD,mBAAAgL,IAAUjL,KAAOiL,IAAUhL;AAAA,iBAGhC8K,KAAWzF,GAAS;AACtB,gBAAMzF,IAAM,IAAI,KAAKyF,CAAO,EAAE,QAAQ;AACtC,iBAAO2F,IAAUpL;AAAA,QAAA,WACR,CAACkL,KAAW1F,GAAW;AAChC,gBAAMR,IAAQ,IAAI,KAAKQ,CAAS,EAAE,QAAQ;AAC1C,iBAAO4F,IAAUpG;AAAA,QAAA;AAEV,iBAAA;AAAA,MAIf;AAAA,IAAA;AAAA,EAMA;AAEJ;ACrFgB,SAAAqG,GAAY,EAAE,OAAAlI,GAAO,OAAApC,GAAO,GAAA8E,GAAG,MAAAtD,GAAM,UAAAC,GAAU,IAAAmE,KAAM;AAC7D,QAAA1C,IAAW0C,KAAM5F,EAAM,UACvBuK,IAAa,OAAOZ,MAAqB;AAC7C,QAAI,CAACA,GAAS;AACZ,MAAA3J,EAAM,WAAW,EAAE,GAAGA,EAAM,UAAU,OAAO;AAC7C;AAAA,IACF;AAEA,UAAM4B,IAAS,MAAMkC,GAAgBZ,GAAUlD,GAAOoC,CAAK;AAC3D,QAAIR,GAAQ;AACV,MAAA7B,EAAaC,GAAO,EAAK;AACzB,YAAM6B,IAAWO,EAAM,WAAW,OAAO,CAAC8H,MAASA,EAAK,SAAStI,EAAO,QAAQsI,EAAK,UAAUtI,EAAO,KAAK;AAC3G,MAAAC,EAAS,KAAKD,CAAM,GACpBL,EAAqB,EAAE,MAAAC,GAAM,OAAAxB,GAAO,UAAAyB,GAAU,UAAAI,EAAU,CAAA;AAAA,IAAA;AAExD,MAAA9B,EAAaC,CAAK;AAAA,EACpB,GAQIwK,IAAkB,CAACnI,GAAMoI,GAAUC,MAAW;AAC5C,UAAA,EAAE,eAAAN,IAAgB,EAAM,IAAA/H;AACvB,WAAA;AAAA,MACL,CAACoI,CAAQ,GAAG;AAAA,QACV,WAAW,CAACpF,GAAMtJ,GAAOuJ,MAAO;AAC1B,UAAA8E,IAAgB,KAAK,CAACrO,IACxBuJ,EAAG,IAAI,MAAMR,EAAE,4BAA4B,CAAC,CAAC,IACpC,CAAC/I,KAAS,CAACiE,EAAM0K,CAAM,IAChCpF,EAAG,IAAI,MAAMR,EAAE,iCAAiC,CAAC,CAAC,IAE/CQ;QAEP;AAAA,MACF;AAAA,MACA,CAACoF,CAAM,GAAG;AAAA,QACR,WAAW,CAACrF,GAAMtJ,GAAOuJ,MAAO;AAC1B,UAAA8E,IAAgB,KAAK,CAACrO,IACxBuJ,EAAG,IAAI,MAAMR,EAAE,4BAA4B,CAAC,CAAC,IACpC,CAAC/I,KAAS,CAACiE,EAAMyK,CAAQ,IAClCnF,EAAG,IAAI,MAAMR,EAAE,iCAAiC,CAAC,CAAC,IAE/CQ;QAEP;AAAA,MACF;AAAA,IAAA;AAAA,EACF;AA4BK,SAAA;AAAA,IACL,cA1BmB,MAAM;AACzB,UAAIqF,IAAY,CAAA,GACdC,IAAgB;AACZ,MAAAxI,EAAA,MAAM,QAAQ,CAACC,MAAS;AACxB,QAAAA,EAAK,SAAS,gBACJsI,IAAAH,EAAgBnI,GAAM,aAAa,SAAS,IAGtDA,EAAK,SAAS,oBACAuI,IAAAJ,EAAgBnI,GAAM,iBAAiB,aAAa;AAAA,MACtE,CACD,GACDrC,EAAM,YAAY;AAAA,QAChB,GAAG2K;AAAA,QACH,GAAGC;AAAA,MAAA,GAEDxI,EAAM,aACRpC,EAAM,UAAU,iBAAiB;AAAA,QAC/B,UAAU;AAAA,QACV,SAAS8E,EAAE,4BAA4B;AAAA,QACvC,SAAS,CAAC,UAAU,MAAM;AAAA,MAAA;AAAA,IAE9B;AAAA,IAKA,YAAAyF;AAAA,EAAA;AAEJ;ACjFgB,SAAAM,GAAQ,EAAE,OAAAzI,GAAO,OAAApC,GAAO,GAAA8E,GAAG,UAAArD,GAAU,QAAA/B,GAAQ,MAAA8B,GAAM,IAAAoE,KAAM;AACjE,QAAAkF,IAAmB,CAACC,MAAW;;AACnC,UAAM,EAAE,UAAAtH,GAAU,OAAA1H,GAAO,OAAAkI,GAAO,KAAAhF,MAAQ8L,GAClC,EAAE,SAAAnE,GAAS,WAAAxD,GAAW,MAAAkB,GAAM,UAAAoC,MAAa1G,EAAM;AACrD,QAAIsE,MAAS,UAEb;AAAA,UAAWA,MAAS;AACD,QAAAO,GAAA7E,GAAO+K,GAAQjG,CAAC;AAAA,eACxBR,MAAS,aAAa;AACzB,cAAA,EAAE,iBAAAyB,EAAoB,IAAA/F;AACtB,QAAAA,EAAA,YAAYN,EAAOuE,GAAO8B,CAAe,GACzC/F,EAAA,UAAUN,EAAOT,GAAK8G,CAAe;AAAA,MAAA,WAClCzB,MAAS,iBAAiB;AAC7B,cAAA,EAAE,qBAAA4B,EAAwB,IAAAlG;AAC1B,QAAAA,EAAA,gBAAgBN,EAAOuE,GAAOiC,CAAmB,GACjDlG,EAAA,cAAcN,EAAOT,GAAKiH,CAAmB;AAAA,MAAA,OAC9C;AACL,YAAIQ,GAAU;AACN,gBAAAsE,MAAShI,IAAA+H,EAAO,YAAP,gBAAA/H,EAAgB,QAAQ,CAACX,MAASA,EAAK,WAAU;AAEhE,UAAArC,EAAM,iBAAiBgL,GACvBhL,EAAM,wBAAwBgL;AAAA,QAAA;AAGxB,UAAAhL,EAAA,iBAAiB,MAAM,QAAQjE,CAAK,IAAIA,EAAM,KAAK,GAAG,IAAKA,KAAS;AAE5E,QAAAiE,EAAM,mBAAmB4G;AAAA,MAC3B;AACA,MAAA5G,EAAM,gBAAgByD,GACtBzD,EAAM,mBAAmBoD;AAAA;AAAA,EAAA,GAIrB6H,IAAsB,YAAY;;AACtC,QAAI,GAAClI,KAAAC,IAAAhD,EAAM,aAAN,gBAAAgD,EAAgB,UAAhB,QAAAD,EAAuB;AAC1B;AAGI,UAAA,EAAE,UAAA1B,EAAa,IAAArB;AACrB,QAAIkE,IAAc,CAAA;AAYd,QAVA7C,EAAS,SAAS,aACpB6C,IAAc,CAAClE,EAAM,cAAcA,EAAM,YAAY,IAC5CqB,EAAS,SAAS,cACb6C,IAAA,CAAC,aAAa,SAAS,IAC5B7C,EAAS,SAAS,kBACb6C,IAAA,CAAC,iBAAiB,aAAa,IACnC,CAAC,UAAU,KAAK,EAAE,SAAS7C,EAAS,IAAI,MAClD6C,IAAc,CAAC,gBAAgB,KAG7BA,KAAA,gBAAAA,EAAa,YAAW,GAAG;AAC7B,MAAAlE,EAAM,eAAe;AACrB;AAAA,IACF;AAEA,QAAIkL,IAAW;AACf,UAAMlL,EAAM,SAAS,MAAM,QAAQ,cAAckE,GAAa,CAACX,MAAW;AACxE,MAAIA,MACS2H,IAAA;AAAA,IACb,CACD,GAEDlL,EAAM,eAAekL;AAAA,EAAA;AAyFhB,SAAA;AAAA,IACL,SAvFc,CAACxI,GAAKf,GAAOoH,MAAM;AACjC,UAAI,CAAC3G,EAAM,YAAaM,EAAI,QAAQA,EAAI,SAAS;AAC/C;AAGF,MAAA3C,EAAaC,GAAO,EAAK,GACzBA,EAAM,iBAAiB;AACjB,YAAAmL,IAAMpC,EAAE,OAAO,UAAU,SAAS,UAAU,IAAIA,EAAE,SAASA,EAAE,WAAW;AAE9E,MAAAtH,EAAS,MAAM;AACb,cAAM,EAAE,YAAA2J,EAAe,IAAApL,EAAM,SAAS;AACtC,QAAAoL,EAAW,MAAM,eAAeD,GAChCC,EAAW,MAAM,cAAcA,EAAW,MAAM,UAAU,MAAM,UAAU,SAC1EA,EAAW,UAAU,GACrBpL,EAAM,iBAAiB,IAEHiL;MAAA,CACrB,GAEKjL,EAAA,WAAWA,EAAM,YAAY,KAAK,CAACqC,MAASA,EAAK,UAAUK,EAAI,KAAK,GACzE,CAAA1C,EAAM,aAAaA,EAAM,WAAW0C,IACrC1C,EAAM,cAAc0C,EAAI,OACxB1C,EAAM,yBAAyB2B,GAE/BH,EAAK,YAAYkB,CAAG,GACpBoI,EAAiBpI,CAAG;AAAA,IAAA;AAAA,IA+DpB,gBAlDqB,OAAO2I,MAAc;AAC1C,UAAI,CAACA,GAAW;AACd,QAAArL,EAAM,iBAAiB;AAEvB;AAAA,MACF;AAEA,YAAM,EAAE,UAAAqB,GAAU,wBAAwBM,EAAA,IAAU3B;AAEpD,UAAI4B,IAAS;AACT,MAAAP,EAAS,SAAS,aACpBO,IAAS,MAAMkC,GAAgB9D,EAAM,UAAUA,GAAOoC,CAAK,IAClDf,EAAS,SAAS,cAC3BO,IAAS,MAAM2C,GAAiBvE,EAAM,UAAUA,GAAOoC,GAAO,EAAK,IAC1Df,EAAS,SAAS,kBAC3BO,IAAS,MAAM2C,GAAiBvE,EAAM,UAAUA,GAAOoC,GAAO,EAAI,IAElER,IAAS,MAAMqB,GAAajD,EAAM,UAAUA,GAAOoC,CAAK,GAGtDR,KACF7B,EAAaC,GAAO,EAAK,GACzBA,EAAM,iBAAiB,IACFuB,EAAA,EAAE,MAAAC,GAAM,OAAAxB,GAAO,UAAAyB,GAAU,OAAAE,GAAO,QAAAC,GAAQ,QAAQ,IAAM,KAE3E5B,EAAM,iBAAiB,IAGzBA,EAAM,mBAAmB;IAAC;AAAA,IAuB1B,kBA7DuB,CAACqC,GAAMiJ,MAAa;AACvC,MAAAA,MACJtL,EAAM,WAAWqC,GACjByI,EAAiBzI,CAAI,GAErBZ,EAAS,MAAM;AACO,QAAAwJ;MAAA,CACrB;AAAA,IAAA;AAAA,IAuDD,qBArB0B,CAAC5I,MAAS;;AACpC,UAAIA,EAAK,QAAQA,EAAK,SAAS;AACtB,eAAA;AAGT,WAAIW,IAAAhD,EAAM,aAAN,QAAAgD,EAAgB,aAAaX,EAAK;AACpC,iBAAOU,IAAA/C,EAAM,SAAS,cAAf,gBAAA+C,EAA0B,cAAWD,IAAAT,EAAK,cAAL,gBAAAS,EAAgB;AAGxD,YAAAyI,IAAU,CAAC,SAAS,UAAU;AAChC,aAAAvL,EAAM,SAAS,QAAQuL,EAAQ,SAASvL,EAAM,SAAS,IAAI,IACrDqC,EAAK,OAAe,CAACkJ,EAAQ,SAASlJ,EAAK,IAAI,IAAnC,OAGfiH,IAAAtJ,EAAM,aAAN,gBAAAsJ,EAAgB,UAASjH,EAAK;AAAA,IAAA;AAAA,IAQrC,qBAAA4I;AAAA,EAAA;AAEJ;AChKO,SAASO,GAAU,EAAE,OAAAxL,GAAO,MAAAwB,GAAM,UAAAC,KAAY;AAC7C,QAAAgK,IAAoB,CAACC,MAAc;AACvC,IAAA3L,EAAaC,GAAO,EAAK;AACnB,UAAA,EAAE,UAAAqB,GAAU,UAAAsF,EAAa,IAAA3G,GACzB,EAAE,SAAAyG,GAAS,OAAA7C,EAAU,IAAAvC,GAErBK,IAAU,CAAA;AAChB,QAAI+E,KAAWE,EAAS,IAAI/C,CAAK,GAAG;AAC5B,YAAAjC,IAAQgF,EAAS,IAAI/C,CAAK,GAC1BhC,IAAS,EAAE,GAAGP,GAAU,GAAGqK,EAAU;AAC3C,MAAAnK,EAAqB,EAAE,MAAAC,GAAM,OAAAxB,GAAO,UAAAyB,GAAU,QAAAG,GAAQ,OAAAD,GAAO;AAE7D;AAAA;MACS,CAAC8E,KAAW,MAAM,QAAQiF,CAAS,IAClCA,EAAA,QAAQ,CAAChJ,MAAQ;AACzB,QAAKzB,GAAWjB,GAAO0C,EAAI,KAAK,KAC9BhB,EAAQ,KAAK,EAAE,GAAGL,GAAU,GAAGqB,EAAK,CAAA;AAAA,MACtC,CACD,IAEIzB,GAAWjB,GAAO0L,EAAU,KAAK,KACpChK,EAAQ,KAAK,EAAE,GAAGL,GAAU,GAAGqK,EAAW,CAAA;AAG9C,IAAAnK,EAAqB,EAAE,MAAAC,GAAM,OAAAxB,GAAO,UAAAyB,GAAU,SAAAC,EAAS,CAAA;AAAA,EAAA;AAsBlD,SAAA;AAAA,IACL,eApBoB,CAACgK,MAAc;AACnC,UAAI,CAACA,GAAW;AACd,QAAApK,GAAWtB,CAAK,GAChBD,EAAaC,GAAO,EAAK;AACzB;AAAA,MACF;AAEA,MAAAyL,EAAkBC,CAAS;AAAA,IAAA;AAAA,IAc3B,mBAXwB,CAACA,MAAc;AACvC,UAAI,CAACA,GAAW;AACd,QAAAxL,GAAYF,GAAO,EAAK;AACxB;AAAA,MACF;AAEA,MAAAyL,EAAkBC,CAAS;AAAA,IAAA;AAAA,EAK3B;AAEJ;AClDO,SAASC,GAAQ,EAAE,OAAAvJ,GAAO,OAAApC,KAAS;AAyEjC,SAAA;AAAA,IACL,WAzEgB,MAAM;AACtB,MAAAA,EAAM,aAAa,IACbA,EAAA,YAAY,QAAQ,CAACqC,MAAS;;AAC5B,cAAA,EAAE,UAAAkH,IAAW,IAAQ,IAAAlH;AAOvB,YANArC,EAAM,WAAWuJ,CAAQ,IAC3BvJ,EAAM,WAAWuJ,CAAQ,EAAE,KAAK,EAAE,GAAGlH,GAAM,KAE3CrC,EAAM,WAAWuJ,CAAQ,IAAI,CAAC,EAAE,GAAGlH,GAAM,GACnCrC,EAAA,WAAWuJ,CAAQ,IAAI,EAAE,MAAM,IAAI,WAAW,CAAA,MAElDvJ,EAAM,YAAYqC,EAAK,UAAUrC,EAAM,SAAS,SAASqC,MAASrC,EAAM,UAAU;AAC9E,gBAAA,EAAE,SAAA4G,GAAS,MAAAtC,EAAS,IAAAjC;AAC1B,UAAArC,EAAM,WAAWqC,GACbuE,KAAA,QAAAA,EAAS,WACX5G,EAAM,aAAa4G,IAEjBtC,MAAS,eACXtE,EAAM,aAAaA,EAAM,YACzBA,EAAM,gBAAgB,KAChBgD,IAAAhD,EAAA,eAAA,QAAAgD,EAAY,QAAQ,CAACmD,MAAY;AAC/B,kBAAA,EAAE,OAAAvC,EAAU,IAAAuC;AACd,YAAAlF,GAAWjB,GAAO4D,CAAK,KACzB5D,EAAM,cAAc,KAAK,GAAGqC,EAAK,KAAK,GAAGuB,CAAK,EAAE,GAElDuC,EAAQ,WAAW;AAAA,UAAA,KAGVpG,EAAAC,GAAOqC,EAAK,UAAUrC,EAAM,SAAS,SAASqC,MAASrC,EAAM,QAAQ;AAAA,QACpF;AAAA,MAAA,CACD;AAAA,IAAA;AAAA,IA6CD,mBArBwB,MAAM;AAC9B,MAAIoC,EAAM,YACRlC,GAAYF,GAAO,EAAK,GAG1BA,EAAM,cAAc,IACpBD,EAAaC,GAAO,EAAK;AAAA,IAAA;AAAA,IAgBzB,gBAbqB,MAAM;AAC3B,MAAAA,EAAM,cAAc;AAAA,IAAA;AAAA,IAapB,gBAVqB,MAAM;AAC3B,MAAIA,EAAM,gBACRA,EAAM,cAAc;AAAA,IACtB;AAAA,IAQA,aA7CkB,CAAC+I,MAAM;;AACnB,YAAA,EAAE,gBAAA6C,GAAgB,UAAAvK,EAAa,IAAArB;AACrC,MAAA+I,EAAE,gBAAgB,GACd3G,EAAM,aACRpC,EAAM,iBAAiB,IACvBA,EAAM,mBAAmB,IACrBA,EAAM,SAAS,SAAS4L,KAAkBA,MAAmBvK,MAC/DrB,EAAM,WAAW4L,KAKlB5L,EAAM,oBAAkBgD,IAAAhD,EAAM,eAAN,gBAAAgD,EAAkB,YAAW,KAAK,CAAChD,EAAM,eAAe,CAACA,EAAM,cACxFoC,EAAM,MAAM,WAAW,IAEvBrC,EAAaC,GAAO,EAAK,IAEzBD,EAAaC,CAAK;AAAA,IACpB;AAAA,EA2BA;AAEJ;ACnFA,MAAe6L,KAAA;AAAA,EACb,KAAK;AAAA,IACH,cAAc;AAAA,MACZ,oBAAoB;AAAA,MACpB,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,oBAAoB;AAAA,MACpB,eAAe;AAAA,MACf,eAAe;AAAA,MACf,SAAS;AAAA,MACT,WAAW;AAAA,MACX,aAAa;AAAA,MACb,UAAU;AAAA,MACV,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,cAAc;AAAA,MACd,cAAc;AAAA,MACd,aAAa;AAAA,MACb,aAAa;AAAA,MACb,kBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,eAAe;AAAA,MACf,cAAc;AAAA,MACd,WAAW;AAAA,MACX,WAAW;AAAA,MACX,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,UAAU;AAAA,MACV,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,EACF;AACF,GCxCeC,KAAA;AAAA,EACb,KAAK;AAAA,IACH,cAAc;AAAA,MACZ,oBAAoB;AAAA,MACpB,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,oBAAoB;AAAA,MACpB,eAAe;AAAA,MACf,eAAe;AAAA,MACf,SAAS;AAAA,MACT,WAAW;AAAA,MACX,aAAa;AAAA,MACb,UAAU;AAAA,MACV,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,cAAc;AAAA,MACd,cAAc;AAAA,MACd,aAAa;AAAA,MACb,aAAa;AAAA,MACb,kBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,eAAe;AAAA,MACf,cAAc;AAAA,MACd,WAAW;AAAA,MACX,WAAW;AAAA,MACX,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,UAAU;AAAA,MACV,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,EACF;AACF,GC/BMC,KAAgB,SAChBC,KAAU;AAAA,EACd,SAASH;AAAA,EACT,SAASC;AACX;AAGA,IAAIG,IAAiB,MAEjBC,KAAe;AAMN,MAAAC,KAAe,CAACC,MAAa;AAC5B,EAAAH,IAAAG;AACd,GAMaC,KAAa,CAACC,MAAa;AAC5B,EAAAJ,KAAAI;AACZ,GAMaC,KAAmB,MAAM;;AAEpC,OAAIzJ,KAAAC,KAAAC,IAAAiJ,KAAA,gBAAAA,EAAW,WAAX,gBAAAjJ,EAAmB,qBAAnB,gBAAAD,EAAqC,UAArC,QAAAD,EAA4C;AACvC,WAAAmJ,EAAU,OAAO,iBAAiB,MAAM;AAI7C,OAAA3C,IAAA2C,KAAA,gBAAAA,EAAW,UAAX,QAAA3C,EAAkB;AACpB,WAAO2C,EAAU,MAAM;AAIrB,MAAA,OAAO,YAAc,KAAa;AACpC,UAAMO,IAAc,UAAU,cAAYC,IAAA,UAAU,cAAV,gBAAAA,EAAsB;AAChE,QAAID;AACF,aAAOA,EAAY,WAAW,IAAI,IAAI,UAAU;AAAA,EAEpD;AAEO,SAAAT;AACT,GAOaW,KAAoB,CAACC,MACzBX,GAAQW,CAAM,KAAKX,GAAQD,EAAa,GASpCjH,IAAI,CAACjE,GAAK+L,IAAS,OAAO;;AACrC,MAAI,CAAC/L;AAAY,WAAA;AAGb,MAAA,OAAOqL,MAAY;AACjB,QAAA;AACIlL,YAAAA,IAASkL,GAAQrL,GAAK+L,CAAM;AAC9B5L,UAAAA,KAAUA,MAAWH;AAChBG,eAAAA;AAAAA,aAEF6L,GAAO;AACN,cAAA,KAAK,+CAA+CA,CAAK;AAAA,IACnE;AAIE,OAAA9J,KAAAC,IAAAiJ,KAAA,gBAAAA,EAAW,WAAX,gBAAAjJ,EAAmB,qBAAnB,QAAAD,EAAqC;AACnC,QAAA;AACF,YAAM/B,IAASiL,EAAU,OAAO,iBAAiB,GAAGpL,GAAK+L,CAAM;AAC3D5L,UAAAA,KAAUA,MAAWH;AAChBG,eAAAA;AAAAA,aAEF6L,GAAO;AACN,cAAA,KAAK,4CAA4CA,CAAK;AAAA,IAChE;AAIF,MAAIZ,KAAA,QAAAA,EAAW;AACT,QAAA;AACF,YAAMjL,IAASiL,EAAU,GAAGpL,GAAK+L,CAAM;AACnC5L,UAAAA,KAAUA,MAAWH;AAChBG,eAAAA;AAAAA,aAEF6L,GAAO;AACN,cAAA,KAAK,4CAA4CA,CAAK;AAAA,IAChE;AAIF,QAAMF,IAASJ,MACTO,IAAWJ,GAAkBC,CAAM,GAGnC/L,IAAOC,EAAI,MAAM,GAAG;AAC1B,MAAIG,IAAS8L;AAEb,aAAWlN,KAAKgB;AACd,QAAII,KAAU,OAAOA,KAAW,YAAYpB,KAAKoB;AAC/C,MAAAA,IAASA,EAAOpB,CAAC;AAAA,SACZ;AAEL,UAAI+M,MAAWZ,IAAe;AAEnB,QAAA/K,IADe0L,GAAkBX,EAAa;AAEvD,mBAAWgB,KAAMnM;AACf,cAAII,KAAU,OAAOA,KAAW,YAAY+L,KAAM/L;AAChD,YAAAA,IAASA,EAAO+L,CAAE;AAAA,eACb;AACI,YAAA/L,IAAAH;AACT;AAAA,UACF;AAAA,MACF;AAES,QAAAG,IAAAH;AAEX;AAAA,IACF;AAIE,SAAA,OAAOG,KAAW,YAAY,OAAO,KAAK4L,CAAM,EAAE,SAAS,IACtD5L,EAAO,QAAQ,cAAc,CAACwH,GAAOwE,MACnCJ,EAAOI,CAAQ,MAAM,SAAYJ,EAAOI,CAAQ,IAAIxE,CAC5D,IAGI,OAAOxH,KAAW,WAAWA,IAASH;AAC/C,GAQaoM,KAAS,CAACrM,GAAMgM,IAAS,OAC7BhM,EAAK,IAAI,CAACC,MAAQiE,EAAEjE,GAAK+L,CAAM,CAAC,GAQ5BM,KAAoB,CAACP,MACzBA,KAAUX,IAONmB,KAAsB,MAC1B,OAAO,KAAKnB,EAAO,GAQfoB,KAAY,CAACT,GAAQG,MAAa;AAC7C,EAAAd,GAAQW,CAAM,IAAIG;AACpB,GAMaO,KAAe,CAACV,MAAW;AACtC,EAAIA,MAAWZ,MACb,OAAOC,GAAQW,CAAM;AAEzB,GAGeW,KAAA;AAAA,EACb,GAAAxI;AAAA,EACA,MAAA+G;AAAA,EACA,MAAAC;AAAA,EACA,QAAAmB;AAAA,EACA,YAAAZ;AAAA,EACA,cAAAF;AAAA,EACA,kBAAAI;AAAA,EACA,mBAAAG;AAAA,EACA,mBAAAQ;AAAA,EACA,qBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,cAAAC;AACF,GCxMaE,KAAM;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAEMC,KAA0B,CAACpL,GAAO0C,MAAM1C,EAAM,oBAAoB0C,EAAE,iCAAiC,GAErG2I,KAAY,CAAC,EAAE,UAAAC,GAAU,UAAAC,GAAU,KAAAJ,GAAK,MAAAD,GAAM,OAAAM,GAAO,OAAAxL,GAAO,MAAAZ,GAAM,IAAAoE,QAAS;AAC/E,QAAM5F,IAAQ0N,EAAS;AAAA,IACrB,iBAAiB,CAAC,GAAGtL,EAAM,UAAU;AAAA,IACrC,aAAaA,EAAM,WAAW,SAAS,IAAI0C,EAAE,iCAAiC,IAAI0I,GAAwBpL,GAAO0C,CAAC;AAAA,IAClH,SAAStD;AAAA,IACT,aAAa,CAAC;AAAA,IACd,YAAY,CAAC;AAAA,IACb,YAAY;AAAA,IACZ,YAAY,CAAC;AAAA,IACb,UAAU,CAAC;AAAA,IACX,YAAY,CAAC;AAAA,IACb,YAAY,CAAC;AAAA,IACb,eAAe,CAAC;AAAA,IAChB,UAAU,CAAC;AAAA,IACX,gBAAgB;AAAA,IAChB,WAAW;AAAA,IACX,WAAW;AAAA,IACX,mBAAmB;AAAA,IACnB,WAAW;AAAA,IACX,eAAe;AAAA,IACf,SAAS;AAAA,IACT,aAAa;AAAA,IACb,cAAc;AAAA,IACd,kBAAkB;AAAA,IAClB,iBAAiB;AAAA,IACjB,qBAAqB;AAAA,IACrB,8BAAc,IAAI;AAAA,IAClB,8BAAc,IAAI;AAAA,IAClB,gBAAgB;AAAA,IAChB,aAAa;AAAA,IACb,cAAc,EAAE,OAAOsD,EAAE,+BAA+B,GAAG,OAAO,cAAc,MAAM,QAAQ;AAAA,IAC9F,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,kBAAkB;AAAA,IAClB,kBAAkB,CAAC;AAAA,IACnB,wBAAwB;AAAA,IACxB,cAAc;AAAA,IACd,cAAc;AAAA,IACd,UAAU;AAAA,IACV,aAAa;AAAA,IACb,uBAAuB,CAAC;AAAA,IACxB,SAAS;AAAA,IACT,cAAc;AAAA,IACd,cAAc;AAAA;AAAA,IACd,eAAe6I,EAAS,MAAM3N,EAAM,SAAS,SAAS,CAAC,QAAW,MAAM,IAAI,SAAS,SAAS,YAAY,KAAK,EAAE,SAASA,EAAM,SAAS,IAAI,CAAC;AAAA,IAC9I,iBAAiB2N,EAAS,MAAM3N,EAAM,cAAc,SAAS,KAAKA,EAAM,cAAc,WAAWA,EAAM,WAAW,MAAM;AAAA,IACxH,UAAU2N,EAAS;AAAA,MACjB,KAAK,MAAM3N,EAAM,cAAc,UAAUA,EAAM,cAAc,WAAWA,EAAM,WAAW;AAAA,MACzF,KAAK,CAACgH,MAAQ;AACZ,QAAIA,IACFhH,EAAM,gBAAgBA,EAAM,WAAW,QAAQ,CAACqC,MAAS,GAAGrC,EAAM,SAAS,KAAK,GAAGqC,EAAK,KAAK,EAAE,IAE/FrC,EAAM,gBAAgB;MAE1B;AAAA,IAAA,CACD;AAAA,EAAA,CACF;AACM,SAAAA;AACT,GAEa6N,KAAa,CACxBzL,GACA,EAAE,oBAAA0L,GAAoB,WAAAC,GAAW,iBAAAC,GAAiB,UAAAL,GAAU,UAAAD,GAAU,OAAAE,EAAM,GAC5E,EAAE,MAAMK,GAAO,UAAAxM,GAAU,MAAAyM,GAAM,IAAAtI,GAAI,OAAAuI,QAChC;AACH,QAAMZ,IAAM,CAAA,GACN/L,IAAOY,EAAM,UAAUA,EAAM,QAAQ,OAAO6L,GAC5CjO,IAAQyN,GAAU,EAAE,UAAAC,GAAU,UAAAC,GAAU,KAAAJ,GAAK,MAAAD,IAAM,OAAAM,GAAO,OAAAxL,GAAO,MAAAZ,GAAM,IAAAoE,EAAI,CAAA;AACtE,SAAAwI,GAAA,EAAE,KAAAb,GAAK,OAAAvN,GAAO,GAAA8E,GAAG,OAAA1C,GAAO,MAAAZ,GAAM,UAAAC,GAAU,IAAAmE,GAAI,UAAA+H,EAAU,CAAA,GACvDU,GAAA,EAAE,OAAAT,GAAO,OAAA5N,GAAO,OAAAoC,GAAO,KAAAmL,GAAK,UAAA9L,GAAU,IAAAmE,GAAI,GAEpD5F,EAAM,WAAW4F,GAEbA,KAAMuI,MACRvI,EAAG,QAAQuI,IAIbJ,EAAU,MAAM;AACV,IAAA,OAAO,WAAa,QACb,SAAA,iBAAiB,SAASR,EAAI,iBAAiB,GAC/C,SAAA,iBAAiB,aAAaA,EAAI,cAAc,GAChD,SAAA,iBAAiB,aAAaA,EAAI,cAAc;AAAA,EAC3D,CACD,GAEDS,EAAgB,MAAM;AAChB,IAAA,OAAO,WAAa,QACb,SAAA,oBAAoB,SAAST,EAAI,iBAAiB,GAClD,SAAA,oBAAoB,aAAaA,EAAI,cAAc,GACnD,SAAA,oBAAoB,aAAaA,EAAI,cAAc,GAExDvN,EAAM,wBACR,cAAcA,EAAM,mBAAmB,GACvCA,EAAM,sBAAsB;AAAA,EAEhC,CACD,GAGMuN;AACT,GAGMa,KAAa,CAAC,EAAE,KAAAb,GAAK,OAAAvN,GAAO,GAAA8E,GAAG,OAAA1C,GAAO,MAAAZ,GAAM,UAAAC,GAAU,IAAAmE,GAAI,UAAA+H,QAAe;AAEvE,QAAA,EAAE,WAAAW,GAAW,UAAAC,GAAU,oBAAAC,MAAuBjM,GAAO,EAAE,OAAAH,GAAO,OAAApC,GAAO,MAAAwB,GAAM,UAAAC,EAAU,CAAA,GACrF,EAAE,SAAAgN,GAAS,gBAAAC,GAAgB,kBAAAC,GAAkB,qBAAAC,GAAqB,qBAAA3D,EAAwB,IAAAJ,GAAQ,EAAE,OAAAzI,GAAO,OAAApC,GAAO,GAAA8E,GAAG,UAAArD,GAAU,QAAA/B,IAAQ,MAAA8B,GAAM,IAAAoE,GAAI,GACjJ,EAAE,aAAAkD,GAAa,gBAAA+F,GAAgB,mBAAAhJ,MAAsB8C,GAAS,EAAE,OAAAvG,GAAO,OAAApC,GAAO,MAAAwB,GAAM,UAAAC,EAAU,CAAA,GAC9F,EAAE,gBAAA4E,GAAgB,iBAAAa,GAAiB,kBAAAH,GAAkB,WAAAE,GAAW,WAAA6H,GAAW,aAAAvI,EAAgB,IAAAZ,GAAY,EAAE,OAAAvD,GAAO,MAAAZ,GAAM,OAAAxB,GAAO,GAAA8E,GAAG,QAAApF,IAAQ,UAAA+B,GAAU,IAAAmE,GAAI,mBAAAC,GAAmB,GACzK,EAAE,gBAAAkJ,EAAmB,IAAArF,GAAY,EAAE,OAAAtH,GAAO,OAAApC,GAAO,MAAAwB,GAAM,UAAAC,EAAA,CAAU,GACjE,EAAE,eAAAuN,GAAe,gBAAAC,GAAgB,eAAAC,EAAkB,IAAAjF,GAAc,EAAE,OAAA7H,GAAO,OAAApC,GAAO,MAAAwB,GAAM,UAAAC,GAAU,IAAAmE,EAAI,CAAA,GACrG,EAAE,YAAA2E,GAAY,cAAA4E,MAAiB7E,GAAY,EAAE,OAAAlI,GAAO,OAAApC,GAAO,GAAA8E,GAAG,MAAAtD,GAAM,UAAAC,GAAU,IAAAmE,EAAI,CAAA,GAClF,EAAE,eAAAwJ,GAAe,mBAAAC,MAAsB7D,GAAU,EAAE,OAAAxL,GAAO,MAAAwB,GAAM,UAAAC,EAAA,CAAU,GAC1E,EAAE,WAAA6N,IAAW,mBAAAC,IAAmB,gBAAAC,GAAgB,gBAAAC,IAAgB,aAAAC,GAAY,IAAI/D,GAAQ,EAAE,OAAAvJ,GAAO,OAAApC,EAAO,CAAA,GAExG2P,IAAchC,EAAS,MAAMvL,EAAM,WAAW,UAAUpC,EAAM,SAAS,SAASA,EAAM,UAAU,GAEhG4P,KAAY,OAAO;AAAA,IACvB,kBAAA7I;AAAA,IACA,gBAAAV;AAAA,IACA,iBAAAa;AAAA,IACA,aAAAX;AAAA,IACA,gBAAAwI;AAAA,IACA,YAAAxE;AAAA,IACA,eAAAyE;AAAA,IACA,gBAAAH;AAAA,IACA,gBAAAI;AAAA,EAAA,IAGIY,KAAiB,CAACC,OAA6B;AACnD,IAAA9P,EAAM,cAAc8P;AAAA,EAAA,GAGhBC,KAA2B,MAAMvC,GAAwBpL,GAAO0C,CAAC;AAGnE,EAAA1C,EAAM,WAAW,SAAS,IACb0C,GAAAA,EAAE,iCAAiC,CAAC,IAEnD+K,GAAeE,IAA0B,GAe3C,OAAO,OAAOxC,GAAK;AAAA,IACjB,GAAAzI;AAAAA,IACA,OAAA9E;AAAA,IACA,aAAA2P;AAAA,IACA,WAAArB;AAAA,IACA,SAAAG;AAAA,IACA,oBAAAD;AAAA,IACA,WAAAvH;AAAA,IACA,UAAAsH;AAAA,IACA,WAAAO;AAAA,IACA,aAAAhG;AAAA,IACA,aAAA4G;AAAA,IACA,cAvBmB,CAACM,IAAWC,IAAIC,OAAO;AAC1C,YAAMC,KAAMP;AACZ,MAAI,OAAOO,GAAIH,EAAS,KAAM,aACxBG,GAAAH,EAAS,EAAEC,IAAIC,EAAE,IAEb,QAAA,KAAK,kCAAkCF,EAAS,EAAE;AAAA,IAC5D;AAAA,IAkBA,eAAAd;AAAA,IACA,YAAA5N;AAAA,IACA,qBAAAsN;AAAA,IACA,kBAAAD;AAAA,IACA,gBAAAD;AAAA,IACA,eAAAU;AAAA,IACA,mBAAAC;AAAA,IACA,cAAAtP;AAAA,IACA,aAAAG;AAAA,IACA,qBAAA+K;AAAA,IACA,gBAAA4E;AAAA,IACA,WAAAP;AAAA,IACA,cAAAH;AAAA,IACA,mBAAAI;AAAA,IACA,gBAAAC;AAAA,IACA,gBAAAC;AAAA,EAAA,CACD;AACH,GAEMpB,KAAY,CAAC,EAAE,OAAAT,GAAO,OAAA5N,GAAO,OAAAoC,GAAO,KAAAmL,GAAK,UAAA9L,GAAU,IAAAmE,QAAS;;AAEhE,QAAMwK,IAAoB,MAAM;;AAC1B,QAAApQ,EAAM,SAAS,OAAO;AACxB,YAAM,EAAE,aAAAqQ,GAAa,MAAA/L,MAAStE,EAAM;AACpC,MAAIqQ,IACF9C,EAAI,eAAe8C,CAAW,IACrB/L,MAAS,QAClBiJ,EAAI,eAAezI,EAAE,iCAAiC,CAAC,KAC9C9B,IAAAhD,EAAM,eAAN,QAAAgD,EAAkB,SAC3BuK,EAAI,eAAezI,EAAE,uCAAuC,EAAE,UAAU9E,EAAM,SAAS,MAAO,CAAA,CAAC,IAE/FuN,EAAI,eAAezI,EAAE,iCAAiC,CAAC;AAAA,IACzD,OACK;AAEC,YAAAwL,IACJlO,EAAM,WAAW,SAAS,IAAI0C,EAAE,iCAAiC,IAAI0I,GAAwBpL,GAAO0C,CAAC;AACvGyI,MAAAA,EAAI,eAAe+C,CAAkB;AAAA,IACvC;AAAA,EAAA,GAIIC,IAAgB,MAAM;;AAEtB,YAAAvN,IAAA4C,KAAA,gBAAAA,EAAI,UAAJ,QAAA5C,EAAW,SACN4C,EAAG,MAAM,UAGd9C,KAAAC,IAAA6C,KAAA,gBAAAA,EAAI,UAAJ,gBAAA7C,EAAW,UAAX,QAAAD,EAAkB,SACb8C,EAAG,MAAM,MAAM,SAGjB2G,GAAiB;AAAA,EAAA;AAI1B,MAAIiE,IAAaD,KACbE,IAAmB;AAGvB,MAAI7K,KAAA,QAAAA,EAAI;AACF,QAAA;AACC,MAAAA,EAAA;AAAA,QACD,MAAMA,EAAG,MAAM;AAAA,QACf,CAAC8K,MAAc;AACb,UAAIA,MAAcF,MACHA,IAAAE,GACKN;QAEtB;AAAA,QACA,EAAE,WAAW,GAAM;AAAA,MAAA,GAEFK,IAAA;AAAA,aACZ1H,GAAG;AACF,cAAA,KAAK,8DAA8DA,CAAC;AAAA,IAC9E;AAIE,OAAA/F,IAAA4C,KAAA,gBAAAA,EAAI,UAAJ,QAAA5C,EAAW;AACT,QAAA;AACF,MAAA4K;AAAA,QACE,MAAMhI,EAAG,MAAM,MAAM;AAAA,QACrB,CAAC8K,MAAc;AACb,UAAIA,MAAcF,MACHA,IAAAE,GACKN;QAEtB;AAAA,QACA,EAAE,WAAW,GAAM;AAAA,MAAA,GAEFK,IAAA;AAAA,aACZ1H,GAAG;AACF,cAAA,KAAK,0DAA0DA,CAAC;AAAA,IAC1E;AAIF,QAAM4H,IAAoB,MAAM;AAC9B,UAAMC,IAAgBL;AACtB,IAAIK,MAAkBJ,MACPA,IAAAI,GACKR;EACpB;AAGF,EAAI,OAAO,SAAW,OAAe,CAACK,MAC9BzQ,EAAA,sBAAsB,YAAY2Q,GAAmB,GAAI,IAIjE/C;AAAA,IACE,MAAMxL,EAAM;AAAA,IACZ,MAAM;AACc,MAAAuO;IACpB;AAAA,EAAA,GAIF/C;AAAA,IACE,MAAMxL,EAAM;AAAA,IACZ,CAACyO,MAAW;AACV,YAAMC,IAAU9Q,EAAM,SAChB+Q,IAAe/Q,EAAM,YAAYA,EAAM,SAAS;AAEhD,MAAAA,EAAA,cAAcU,GAAUmQ,CAAM,GACpCtD,EAAI,UAAU,GACdA,EAAI,aAAa,GACjB9L,EAAS,MAAM;AAKT,YAJJ8L,EAAI,UAAU,GACdA,EAAI,aAAa,GAGbuD,KAAW9Q,EAAM,SAAS,OAAO;AAC7B,gBAAAgR,IAAUhR,EAAM,YAAY,KAAK,CAACiR,MAAOA,EAAG,UAAUF,CAAY,KAAK/Q,EAAM;AAC7E,UAAAA,EAAA,WAAWgR,KAAW,IACtBhR,EAAA,aAAagR,KAAWA,EAAQ,UAAU,CAAC,GAAGA,EAAQ,OAAO,IAAI,IACjEhR,EAAA,aAAaA,EAAM,aAAa,CAAC,GAAGA,EAAM,UAAU,IAAI,IAC9DD,EAAaC,CAAK;AAAA,QACpB;AAAA,MAAA,CACD;AAAA,IACH;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,WAAW;AAAA,IACb;AAAA,EAAA,GAGF4N;AAAA,IACE,MAAM5N,EAAM;AAAA,IACZ,CAAC6Q,MAAW;AACV,MAAI,CAACA,KAAU,CAAC7Q,EAAM,eAAe,WAC/BA,EAAM,YAAYA,EAAM,SAAS,WAC7BA,EAAA,iBAAiB,MAAM,QAAQA,EAAM,qBAAqB,IAC5DA,EAAM,wBACN,KAEJA,EAAM,iBAAiB,MAAM,QAAQA,EAAM,qBAAqB,IAC5DA,EAAM,sBAAsB,KAAK,GAAG,IACnCA,EAAM,yBAAyB,KAInC6Q,MACH7Q,EAAM,eAAe;AAAA,IAEzB;AAAA,IACA;AAAA,MACE,WAAW;AAAA,IACb;AAAA,EAAA,GAIF4N;AAAA,IACE,MAAM;AAEJ,YAAMsD,IAAS;AAAA,QACb,gBAAgBlR,EAAM;AAAA,QACtB,WAAWA,EAAM;AAAA,QACjB,SAASA,EAAM;AAAA,QACf,eAAeA,EAAM;AAAA,QACrB,aAAaA,EAAM;AAAA,MAAA;AAGjB,aAAAA,EAAM,gBAAgBA,EAAM,iBAC9BkR,EAAOlR,EAAM,YAAY,IAAIA,EAAMA,EAAM,YAAY,GACrDkR,EAAOlR,EAAM,YAAY,IAAIA,EAAMA,EAAM,YAAY,IAEhDkR;AAAA,IACT;AAAA,IACA,MAAM;AACJ,MAAIlR,EAAM,kBACRyB,EAAS,MAAM;AACb8L,QAAAA,EAAI,oBAAoB;AAAA,MAAA,CACzB;AAAA,IAEL;AAAA,IACA,EAAE,MAAM,GAAK;AAAA,EAAA,GAGfK;AAAA,IACE,MAAM5N,EAAM,SAAS;AAAA,IACrB,CAAC6B,MAAa;AAEM,MAAAuO;IACpB;AAAA,EAAA,GAGFxC;AAAA,IACE,MAAMxL,EAAM;AAAA,IACZ,CAACyO,MAAW;AACV,UAAIA,GAAQ;AAmBN,YAlBJ7Q,EAAM,SAAS,SACfA,EAAM,SAAS,SACR6Q,EAAA,QAAQ,CAACxO,GAAMV,MAAU;;AAC9B,gBAAM5F,IAAQ,GAAGsG,EAAK,KAAK,GAAGA,EAAK,KAAK;AACxC,UAAArC,EAAM,SAAS,IAAIqC,EAAK,OAAOV,CAAK,GAC9B3B,EAAA,SAAS,IAAIjE,GAAO4F,CAAK,KAC3BqB,IAAAX,EAAK,YAAL,gBAAAW,EAAc,UAAS,KACpBX,EAAA,QAAQ,QAAQ,CAAC+D,MAAW;AAC/B,kBAAM+K,IAAc,GAAG9O,EAAK,KAAK,GAAG+D,EAAO,KAAK;AAC1C,YAAApG,EAAA,SAAS,IAAImR,GAAaxP,CAAK;AAAA,UAAA,CACtC;AAAA,QACH,CACD,GACDzB,GAAYF,GAAO,EAAK,GACpB6Q,EAAO,WAAW,KACpBtD,EAAI,eAAeC,GAAwBpL,GAAO0C,CAAC,CAAC,GAGlD1C,EAAM,YAAY,CAACpC,EAAM,eAAe,UAAU6Q,EAAO,CAAC,GAAG;AACzD,gBAAAnO,IAAMmO,EAAO,CAAC;AAEhB,eADS7Q,EAAM,YAAY,KAAK,CAACiR,MAAOA,EAAG,UAAUvO,EAAI,KAAK,KAAKA,GAC9D,YAAYA,EAAI,SAAS;AAC1B,kBAAAsI,IAAStI,EAAI,QAAQ,QAAQ,CAAC/C,MAAMA,EAAE,KAAK,KAAK;AACtD,YAAAK,EAAM,iBAAiBgL,GACvBhL,EAAM,wBAAwBgL;AAAA,UAAA,OACzB;AACL,kBAAMoG,IAAI1O,EAAI;AACR,YAAA1C,EAAA,iBAAiB,MAAM,QAAQoR,CAAC,IAAIA,EAAE,KAAK,GAAG,IAAKA,KAAK;AAAA,UAChE;AAAA,QACF;AACM,QAAApR,EAAA,kBAAkB,CAAC,GAAG6Q,CAAM;AAAA,MACpC;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,WAAW;AAAA,IACb;AAAA,EAAA;AAEJ;;;;;GCxVMhD,KAAa,CAACzL,GAAOiP,GAAO,EAAE,MAAA7P,EAAG,MAAQ;AAC7C,QAAM,EAAE,UAAAmM,EAAS,IAAI0D,GAGfC,IACJlP,EAAM,gBACNA,EAAM,WACL,CAAC4N,GAAWC,GAAIC,MAAO;AACtB,IAAA1O,EAAK,UAAUwO,GAAWC,GAAIC,CAAE;AAAA;AA0BpC,SAAO;AAAA,IACL,oBAvByBvC,EAAS,MAAM;AACxC,YAAM,EAAE,YAAAjG,GAAY,gBAAA6J,GAAgB,kBAAAC,GAAkB,UAAAlK,GAAU,UAAAjG,EAAO,IAAMe,EAAM;AACnF,aACEsF,EAAW,UACX,CAAC6J,KACD,EAACC,KAAA,QAAAA,EAAkB,YAClB,CAAClK,EAAS,SAAS,CAAC,QAAW,MAAM,IAAI,SAAS,OAAO,EAAE,SAASjG,EAAS,IAAI;AAAA,KAErF;AAAA,IAgBC,kBAduB,CAAC0H,MAAM;AAC9B,MAAAuI,EAAa,oBAAoBvI,CAAC;AAAA,IACpC;AAAA,IAaE,gBAXqB,CAACA,MAAM;AAC5B,MAAAuI,EAAa,kBAAkBvI,CAAC;AAAA,IAClC;AAAA,IAUE,iBARsB,CAACA,GAAGqI,MAAM;AAChC,MAAAE,EAAa,mBAAmBvI,GAAGqI,CAAC;AAAA,IACtC;AAAA,IAOE,GAAAtM;AAAA,EACF;AACF,GAEMyI,KAAM,CAAC,sBAAsB,oBAAoB,kBAAkB,mBAAmB,GAAG,GAE1FkE,KAAaC,GAAa;AAAA,EAC7B,MAAMC,KAAU;AAAA,EAChB,YAAY;AAAA,IACV,kBAAAC;AAAA,EACD;AAAA,EACD,OAAO;AAAA,IACL,GAAGC;AAAA,IACH,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS,OAAO,CAAA;AAAA,IACjB;AAAA,IACD,kBAAkB;AAAA,MAChB,MAAM;AAAA,MACN,SAAS,MAAM,CAAC;AAAA,IACjB;AAAA,IACD,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,IACD,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,EACD;AAAA,EACD,OAAO,CAAC,UAAU,OAAO;AAAA,EACzB,MAAMzP,GAAO0P,GAAS;AACpB,WAAOC,GAAM,EAAE,OAAA3P,GAAO,SAAA0P,GAAO,YAAEjE,IAAU,KAAEN,IAAK;AAAA,EAClD;AACF,CAAC,GAlMMyE,KAAA,EAAA,WAAU,KAAI,UADrB,KAAA,EAAA,GAgBgBC,KAAA,EAAA,OAAM,8BAA6B;EAhBnD,KAAA;AAAA,EA+BkB,OAAM;UA/BxB,KAAA,EAAA,GAwCgBC,KAAA,EAAA,OAAM,8BAA6B;EAxCnD,KAAA;AAAA,EA0DkB,OAAM;UA1DxB,KAAA,EAAA,GAoEcC,KAAA,EAAA,OAAM,8BAA6B;EAEvC,IAAG;AAAA,EACH,OAAM;UAvEhB,KAAA,EAAA,GAkFoBC,KAAA,EAAA,OAAM,iCAAgC,GAQpDC,KAAA,EAAA,OAAM,8BAA6B;EA1FzC,KAAA;AAAA,EAkGU,OAAM;GAlGhBC,KAAA,CAAA,OAAA;;;;AACE,SAAAC,EAAA,GAAAC,EA+GM,OA/GNR,IA+GM;AAAA,MA9GJS,EAOqBC,GAAA;AAAA,MALnB,OAAM;AAAA,MACL,aAAS,EAAA,OAAWC,EAAK,MAAC,WAAU;AAAA,MACpC,aAAkBC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,MAAAD,EAAA,iBAAiBA,EAAA,MAAM,UAAU;AAAA;MAN1D,SAAAE,EAQM,MAAyE;AAAA,QAAzEC,EAAyE,QAAA,MAAAC,EAA/DJ,IAAgC,0BAAA,CAAA,IAAA,QAAIA,EAAK,MAAC,UAAU,IAAG,KAAC,CAAA;AAAA;MARxE,GAAA;AAAA;UAGcA,EAAkB,kBAAA;AAAA;MAO5BG,EA6EM,OAAA,MAAA;AAAA,cA5EJN,EAuDMQ,GAAA,MAlEZC,EAY+BN,EAAK,MAAC,YAZrC,CAYgB5W,GAAO8E,YADjB2R,EAuDM,OAAA,EArDH,KAAK3R,KAAG;AAAA,QAEE9E,OAAc,UAAzBwW,KAAAC,EAuBM,OAtCdU,IAAA;AAAA,UAgBUJ,EAA8G,QAA9Gb,IAA8Gc,EAAjElS,MAAc,MAAA8R,EAAA,sCAAsC9R,CAAG,GAAA,CAAA;AAAA,WACpG0R,EAAA,EAAA,GAAAC,EAoBqBQ,SArC/BC,EAkBoClX,QAlBpC,CAkBoBsG,GAAMV,YADhBwR,EAoBqBT,GAAA;AAAA,YAlBlB,KAAKrQ,EAAK,QAAQV;AAAA,YACnB,OAAM;AAAA,YACL,aAAWU;AAAA,YACX,aAAU,MAAQsQ,EAAc,eAACtQ,CAAI;AAAA;YAtBlD,SAAAwQ,EAwBY,MAYO;AAAA,cAZPC,EAYO,QAAA,MAAA;AAAA,iBAXLP,EAAA,EAAA,GAAAC,EAUOQ,SAnCrBC,EA0B+B5Q,EAAK,OA1BpC,CA0BuB3D,YADT8T,EAUO,QAAA,EARJ,KAAK9T,KAAI;AAAA,kBAGFA,EAAK,kBAAkB2D,EAAK,qBADpCmQ,EAIC,QAJDY,IAICL,EADKrU,CAAI,GAAA,CAAA,WAEV8T,EAA8B,QAlC9Ca,MAkCgC3U,CAAI,GAAA,CAAA;AAAA;;;YAlCpC,GAAA;AAAA;cAAA4U,EAAA,IAAA,EAAA;AAAA,QAuCwBvX,YAAmB,UAAnCwW,EAAA,GAAAC,EA0BWQ,KAjEnB,KAAA,EAAA,GAAA;AAAA,UAwCUF,EAES,QAFTZ,IACEa,EAAAJ,EAAA,qCAAqC9R,MAAG,MAAW8R,EAAC,EAAA,gCAAA,IAAqC9R,CAAG,CAAA,CAAA,GAAA,CAAA;AAAA,WAE9F0R,EAAA,EAAA,GAAAC,EAqBqBQ,SAhE/BC,EA4CoClX,aA5CpC,CA4CoBsG,GAAMV,YADhBwR,EAqBqBT,GAAA;AAAA,YAnBlB,KAAKrQ,EAAK,QAAQV;AAAA,YAClB,UAAUU,EAAK;AAAA,YAChB,OAAM;AAAA,YACL,aAAWA;AAAA,YACX,aAAU,MAAQsQ,EAAe,gBAACtQ,GAAI,EAAA;AAAA;YAjDnD,SAAAwQ,EAmDY,MAYO;AAAA,cAZPC,EAYO,QAAA,MAAA;AAAA,iBAXLP,EAAA,EAAA,GAAAC,EAUOQ,SA9DrBC,EAqD+B5Q,EAAK,OArDpC,CAqDuB3D,YADT8T,EAUO,QAAA,EARJ,KAAK9T,KAAI;AAAA,kBAGFA,EAAK,kBAAkB2D,EAAK,qBADpCmQ,EAIC,QAJDe,IAICR,EADKrU,CAAI,GAAA,CAAA,WAEV8T,EAA8B,QA7D9CgB,MA6DgC9U,CAAI,GAAA,CAAA;AAAA;;;YA7DpC,GAAA;AAAA;kBAAA4U,EAAA,IAAA,EAAA;AAAA;QAmEMR,EAmBM,OAAA,MAAA;AAAA,QAlBJA,EAAoF,QAApFX,IAAoFY,EAAvCJ,EAAC,EAAA,0BAAA,CAAA,GAAA,CAAA;AAAA,QAC9CG,EAgBM,OAhBNW,IAgBM;AAAA,UAZOd,EAAA,MAAM,oBAAjBJ,KAAAC,EAWM,OApFhBkB,IAAA;AAAA,oBA0EYlB,EASqBQ,GAAA,MAnFjCC,EA2EsCN,EAAK,MAAC,kBA3E5C,CA2EsBtQ,GAAMV,YADhBwR,EASqBT,GAAA;AAAA,cAPlB,KAAKrQ,EAAK,QAAQV;AAAA,cACnB,OAAM;AAAA,cACL,aAAWU;AAAA,cACX,aAAU,MAAQsQ,EAAe,gBAACtQ,GAAI,EAAA;AAAA;cA/ErD,SAAAwQ,EAiFc,MAAgB;AAAA,gBAjF9Bc,EAAAZ,EAiFiB1Q,EAAK,KAAK,IAAG,MAChB,CAAA;AAAA,gBAAAyQ,EAAoE,QAApEV,IAAgDW,EAAA1Q,EAAK,KAAK,GAAA,CAAA;AAAA;cAlFxE,GAAA;AAAA;gBAAAiR,EAAA,IAAA,EAAA;AAAA;;QAmEmB,CAAAM,GAAAjB,EAAA,MAAM,gBAAgB;AAAA;;WAzDvBA,EAAK,MAAC,SAAS,WAAS3P,IAAA2P,EAAK,MAAC,eAAN,gBAAA3P,EAAkB,OAAI;AAAA;IA8E5D6Q,EAAAf,EAuBM,OAvBNT,IAuBM;AAAA,cAnBJG,EAkBMQ,GAAA,MA9GZC,EA6F+BN,EAAK,MAAC,YA7FrC,CA6FgBmB,GAAOjT,YADjB2R,EAkBM,OAAA,EAhBH,KAAK3R,KAAG;AAAA,QAGDiT,EAAM,UADdvB,EAAA,GAAAC,EAIC,QAJDuB,IAIChB,EADKlS,MAAc,MAAA8R,EAAA,sCAAsC9R,CAAG,GAAA,CAAA,KAnGrEyS,EAAA,IAAA,EAAA;AAAA,SAqGQf,EAAA,EAAA,GAAAC,EAQqBQ,SA7G7BC,EAsGkCa,GAtGlC,CAsGkBzR,GAAMV,YADhBwR,EAQqBT,GAAA;AAAA,UANlB,MAAMrQ,EAAK,SAASA,EAAK,SAASV;AAAA,UACnC,OAAM;AAAA,UACL,aAAWU;AAAA,UACX,aAAU,MAAQsQ,EAAc,eAACtQ,CAAI;AAAA;UA1GhD,SAAAwQ,EA4GU,MAAiD;AAAA,YAAjDC,EAAiD,QAAA;AAAA,cAA1C,OAAOzQ,EAAK;AAAA,iBAAUA,EAAK,KAAK,GA5GjD,GAAAiQ,EAAA;AAAA;UAAA,GAAA;AAAA;;;MAyFc,CAAAsB,GAAAjB,EAAA,MAAM,WAAY,CAAAA,EAAA,MAAM,SAAS,SAAU,GAAA5P,IAAA4P,EAAA,MAAM,eAAN,QAAA5P,EAAkB,OAAI;AAAA;;;;AC/E/D,SAAAiR,GAAiB3C,GAAOzK,GAAS;AACzC,QAAA,EAAE,UAAA8G,GAAU,UAAAC,EAAa,IAAA0D,GACzB,EAAE,SAAA4C,GAAS,YAAAC,IAAa,IAAI,YAAAC,IAAa,GAAG,cAAAC,IAAe,MAAM,EAAM,IAAAxN,GAEvEyN,IAAU3G,EAAS;AAAA,IACvB,WAAW;AAAA,IACX,gBAAgB;AAAA,EAAA,CACjB,GAEK4G,IAAc3G,EAAS,OACdsG,EAAQ,KAAK,IACd,SAASC,CACtB,GAEKzL,IAAakF,EAAS,MAAM;AAChC,UAAM4G,IAAoB,KAAK,IAAI,GAAGF,EAAQ,YAAYD,GAAc;AACjE,WAAA,KAAK,IAAI,GAAG,KAAK,MAAMG,IAAoBL,CAAU,IAAIC,CAAU;AAAA,EAAA,CAC3E,GAEKzL,IAAWiF,EAAS,MAAM;AACxB,UAAA6G,IAAOP,EAAQ,KAAK,IACpBQ,IAAe,KAAK,KAAKJ,EAAQ,iBAAiBH,CAAU;AAC3D,WAAA,KAAK,IAAIM,EAAK,QAAQ/L,EAAW,QAAQgM,IAAeN,IAAa,CAAC;AAAA,EAAA,CAC9E,GAEKO,IAAU/G,EAAS,MAAMlF,EAAW,QAAQyL,CAAU,GAEtDS,IAAehH,EAAS,OACfsG,EAAQ,KAAK,IACd,MAAMxL,EAAW,OAAOC,EAAS,KAAK,CACnD;AAOM,SAAA;AAAA,IACL,SAAA2L;AAAA,IACA,aAAAC;AAAA,IACA,YAAA7L;AAAA,IACA,UAAAC;AAAA,IACA,SAAAgM;AAAA,IACA,cAAAC;AAAA,IACA,cAZmB,CAAC5L,MAAM;AAClB,MAAAsL,EAAA,YAAYtL,EAAE,OAAO,WACrBsL,EAAA,iBAAiBtL,EAAE,OAAO;AAAA,IAAA;AAAA,EAUlC;AAEJ;ACkQA,MAAM8E,KAAa,CAACzL,GAAOiP,GAAO,EAAE,MAAA7P,GAAM,UAAAC,GAAU,MAAAyM,QAAW;AAC7D,QAAM,EAAE,UAAAP,GAAU,UAAAD,GAAU,OAAAE,GAAO,WAAAG,EAAU,IAAIsD,GAG3CC,IAAelP,EAAM,gBAAgBA,EAAM,WAAW,CAAC4N,GAAWC,GAAIC,MAAO;AACjF,IAAA1O,EAAK,UAAUwO,GAAWC,GAAIC,CAAE;AAAA,MAG5B3J,IAAc,CAACwC,MAAM;AACzB,IAAAuI,EAAa,eAAevI,CAAC;AAAA,EAC/B,GAEM7B,IAAkB,CAAC6B,MAAM;AAC7B,IAAAuI,EAAa,mBAAmBvI,CAAC;AAAA,EACnC,GAEMgG,IAAiB,CAAChG,MAAM;AAC5B,IAAAuI,EAAa,kBAAkBvI,CAAC;AAAA,EAClC,GAEMwB,IAAa,CAACxB,MAAM;AACxB,IAAAuI,EAAa,cAAcvI,CAAC;AAAA,EAC9B,GAEMiG,IAAgB,CAACjG,GAAG6L,MAAM;AAC9B,IAAAtD,EAAa,iBAAiBvI,GAAG6L,CAAC;AAAA,EACpC,GAEM/F,IAAiB,CAAC9F,GAAG6L,MAAM;AAC/B,IAAAtD,EAAa,kBAAkBvI,GAAG6L,CAAC;AAAA,EACrC,GAEM3F,IAAiB,CAAClG,MAAM;AAC5B,IAAAuI,EAAa,kBAAkBvI,CAAC;AAAA,EAClC,GAEM8L,IAAYlH,EAAS,MAAM;;AAC/B,WAAOvL,EAAM,MAAM,mBAAiBY,IAAAZ,EAAM,MAAM,eAAZ,gBAAAY,EAAwB,YAAW;AAAA,GACxE,GAEK8R,IAAmBnH,EAAS,MAAM;;AACtC,YAAO3K,IAAAZ,EAAM,MAAM,eAAZ,gBAAAY,EAAwB,KAAK,CAACX,MAAS,CAACA,EAAK;AAAA,GACrD,GAGK0S,IAAsBpH,EAAS,MAAM;AACzC,UAAMrJ,IAAOlC,EAAM,MAAM,SAAS,MAC5B4S,IAAa5S,EAAM,MAAM,cAAc,CAAC;AAG9C,WAAI,CAACkC,KAAQA,MAAS,UACflC,EAAM,MAAM,aACV4S,EAAW,OAAO,CAAC3S,MAAS,CAACA,EAAK,QAAQ,IADb2S,IAK/BA,EAAW,OAAO,CAAC3S,MAAS,CAACA,EAAK,QAAQ;AAAA,GAClD,GAEK4S,IAAKjB;AAAA,IACT,EAAE,UAAAtG,GAAU,UAAAC,EAAU;AAAA,IACtB;AAAA,MACE,SAAS,MAAMoH,EAAoB;AAAA,MACnC,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,cAAc,MAAM;AAClB,cAAMzQ,IAAOlC,EAAM,MAAM,SAAS;AAElC,eAAIkC,MAAS,cAAcA,MAAS,QAAc,KAC3C;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAGA,SAAAsJ;AAAA,IACE,MAAMxL,EAAM,MAAM;AAAA,IAClB,MAAM;AACJ,MAAA6S,EAAG,QAAQ,YAAY,GACvBxT,EAAS,MAAM;AACb,QAAIyM,EAAK,eACPA,EAAK,WAAW,YAAY;AAAA,OAE/B;AAAA,IACH;AAAA,EACF,GAGAN;AAAA,IACE,MAAMxL,EAAM,MAAM;AAAA,IAClB,MAAM;AACJ,MAAA6S,EAAG,QAAQ,YAAY,GACvBxT,EAAS,MAAM;AACb,QAAIyM,EAAK,eACPA,EAAK,WAAW,YAAY,GAC5B+G,EAAG,aAAa,EAAE,QAAQ/G,EAAK,YAAY;AAAA,OAE9C;AAAA,IACF;AAAA,IACD,EAAE,MAAM,GAAK;AAAA,EACf,GAGAH,EAAU,MAAM;AACd,IAAIG,EAAK,cACP+G,EAAG,aAAa,EAAE,QAAQ/G,EAAK,YAAY;AAAA,GAE9C,GAEM;AAAA,IACL,aAAA3H;AAAA,IACA,iBAAAW;AAAA,IACA,gBAAA6H;AAAA,IACA,YAAAxE;AAAA,IACA,eAAAyE;AAAA,IACA,gBAAAH;AAAA,IACA,gBAAAI;AAAA,IACA,WAAA4F;AAAA,IACA,kBAAAC;AAAA,IACA,eAAeG,EAAG;AAAA,IAClB,cAAcA,EAAG;AAAA,IACjB,WAAWA,EAAG;AAAA,IACd,gBAAgBA,EAAG;AAAA,IACnB,gBAAgBA,EAAG;AAAA,IACnB,GAAAnQ;AAAA,EACF;AACF,GAEMyI,KAAM;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAEKkE,KAAaC,GAAa;AAAA,EAC7B,MAAMC,KAAU;AAAA,EAChB,OAAO,CAAC,UAAU,OAAO;AAAA,EACzB,YAAY;AAAA,IACV,cAAAuD;AAAA,IACA,kBAAAtD;AAAA,IACA,cAAAuD;AAAA,IACA,mBAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,WAAAC;AAAA,IACA,YAAAC;AAAA,EACD;AAAA,EACD,YAAY;AAAA,IACV,SAASC,GAAY;AAAA,EACtB;AAAA,EACD,OAAO;AAAA,IACL,GAAG3D;AAAA,IACH,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS,OAAO,CAAA;AAAA,IACjB;AAAA,IACD,eAAe;AAAA,MACb,MAAM;AAAA,MACN,SAAS,MAAM;AAAA,MAEf;AAAA,IACD;AAAA,IACD,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,IACD,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,IACD,gBAAgB;AAAA,MACd,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,EACD;AAAA,EACD,MAAMzP,GAAO0P,GAAS;AACpB,WAAOC,GAAM,EAAE,OAAA3P,GAAO,SAAA0P,GAAS,YAAAjE,IAAY,KAAAN,IAAK;AAAA,EAClD;AACF,CAAC,GAtfMyE,KAAA,EAAA,WAAU,KAAI,UADrB,KAAA,EAAA,GAGYC,KAAA,EAAA,OAAM,8BAA6B,GAH/CmB,KAAA,CAAA,OAAA;EAAA,KAAA;AAAA,EA0CkB,OAAM;UA1CxB,KAAA,EAAA,GAAAG,KAAA,CAAA,OAAA,GAgGaC,KAAA,EAAA,OAAM,+BAA8B;EAhGjD,KAAA;AAAA,EA0GwD,OAAM;GACnDC,KAAA,EAAA,OAAM,yBAAwB,GAC5BC,KAAA,EAAA,OAAM,iCAAgC,GAGtCtB,KAAA,EAAA,OAAM,iCAAgC,GActCC,KAAA,EAAA,OAAM,+BAA8B,GAWtC0B,KAAA,EAAA,OAAM,6BAA4B;EAxI7C,KAAA;AAAA,EAmJM,OAAM;GAED0B,KAAA,EAAA,OAAM,4BAA2B,GAC/BC,KAAA,EAAA,OAAM,iCAAgC,GAStCC,KAAA,EAAA,OAAM,iCAAgC,GAiBtCC,KAAA,EAAA,OAAM,+BAA8B,GAetCC,KAAA,EAAA,OAAM,6BAA4B;EA/L7C,KAAA;AAAA,EA2MM,OAAM;GAEDC,KAAA,EAAA,OAAM,4BAA2B,GAC/BC,KAAA,EAAA,OAAM,iCAAgC,GAStCC,KAAA,EAAA,OAAM,iCAAgC,GAoBtCC,KAAA,EAAA,OAAM,+BAA8B,GAiBtCC,KAAA,EAAA,OAAM,6BAA4B,UA5P7C,KAAA,EAAA;EAAA,KAAA;AAAA,EA6QwC,OAAM;;EA7Q9C,KAAA;AAAA,EAgRqB,OAAM;GAhR3BC,KAAA,CAAA,OAAA;;;;AACE,SAAA5D,EAAA,GAAAC,EAqSM,OArSNR,IAqSM;AAAA,KApSOhP,IAAA2P,EAAK,MAAC,qBAAN,QAAA3P,EAAwB,UAAnCuP,KAAAC,EAcM,OAhBVU,IAAA;AAAA,MAGMJ,EAES,QAFTb,IAESc,EADPJ,EAAC,EAAA,2BAAA,CAAA,GAAA,CAAA;AAAA,cAEHH,EASqBQ,GAAA,MAf3BC,EAOgCN,EAAK,MAAC,kBAPtC,CAOgBtQ,GAAMV,cADhBwR,EASqBT,GAAA;AAAA,QANlB,KAAKrQ,IAAOV;AAAA,QACb,OAAM;AAAA,QACL,sBAAoBU,EAAI;AAAA,QACxB,aAAU,MAAQsQ,EAAW,YAACtQ,CAAI;AAAA;QAZ3C,SAAAwQ,EAcQ,MAAU;AAAA,UAdlBc,EAAAZ,EAcW1Q,CAAI,GAAA,CAAA;AAAA;QAdf,GAAA;AAAA;QAQgB,CAAAuR,GAAAvR,EAAK,SAASsQ,EAAA,MAAM,UAAU,CAAA;AAAA;WAU5BA,EAAK,MAAC,SAAS,QAAI,CAAA,SAAA,OAAA,EAAuB,SAASA,EAAK,MAAC,SAAS,IAAI,YADpFH,EAmCM,OAAA;AAAA,MApDV,KAAA;AAAA,MAoBO,OApBP4D,kEAoB6EzD,EAAS,aAAA,6BAAA,CAAA;AAAA,MAC/E,OArBP0D,gBAqB2B1D,EAAc,eAAA,CAAA;AAAA,MACnC,KAAI;AAAA,MACH,oCAAQA,EAAc,kBAAAA,EAAA,eAAA,GAAAlS,CAAA;AAAA;MAEvBqS,EA0BM,OAAA;AAAA,QA1BD,OAAM;AAAA,QAAmC,OAzBpDuD,aAyBqE1D,EAAa,gBAAA,MAAA;AAAA;QAC1EG,EAwBM,OAAA;AAAA,UAvBJ,OAAM;AAAA,UACL,OA5BXuD,gCA4B+C1D,EAAS,YAAA,OAAA;AAAA;WAE9CJ,EAAA,EAAA,GAAAC,EAmBqBQ,SAjD/BC,EA+BsCN,EAAA,gBA/BtC,CA+BoBtQ,GAAMiU,YADhBnD,EAmBqBT,GAAA;AAAA,YAjBlB,KAAKC,EAAY,eAAG2D,KAAWjU,EAAK,SAASA,EAAK;AAAA,YAClD,UAAUA,EAAK;AAAA,YAChB,OAAM;AAAA,YACL,aAAWA;AAAA,YACX,aAAU,MAAQsQ,EAAe,gBAACtQ,CAAI;AAAA;YApCnD,SAAAwQ,EAsCY,MASO;AAAA,cATKxQ,EAAK,cAAjBmQ,EASO,QAAA;AAAA,gBA/CnB,KAAA;AAAA,gBAsCqC,OAAOnQ,EAAK;AAAA;wBACnCmQ,EAOOQ,GAAA,MA9CrBC,EAuC4C5Q,EAAK,OAvCjD,CAuC4B3D,GAAMiD,YAApB6Q,EAOO,QAAA,EAPoC,KAAK7Q,KAAK;AAAA,kBAE3CjD,EAAK,kBAAkB2D,EAAK,qBADpCmQ,EAIC,QAJDa,IAICN,EADKrU,CAAI,GAAA,CAAA,WAEV8T,EAA8B,QA7C9CN,MA6CgCxT,CAAI,GAAA,CAAA;AAAA;cA7CpC,GAAA,GAAA0U,EAAA,WAgDYZ,EAAwD,QAAA;AAAA,gBAhDpE,KAAA;AAAA,gBAgD0B,OAAOnQ,EAAK;AAAA,mBAAUA,EAAK,KAAK,GAhD1D,GAAAkR,EAAA;AAAA;YAAA,GAAA;AAAA;;;;UAmBiBZ,EAAS,SAAA;AAAA,SAmCTA,EAAK,MAAC,SAAS,SAAI,qBADhCH,EAoDM,OAAA;AAAA,MAzGV,KAAA;AAAA,MAwDO,OAxDP4D,GAwDczD,EAAS,aAAA,6BAAA;AAAA;MAENA,EAAgB,yBAA3BH,EA8CM,OAAA;AAAA,QAxGZ,KAAA;AAAA,QA0DmC,OAAM;AAAA,QAAiC,OA1D1E6D,gBA0D8F1D,EAAc,eAAA,CAAA;AAAA;QACpGG,EAoCM,OAAA;AAAA,UApCD,KAAI;AAAA,UAAa,OAAM;AAAA,UAAgE,oCAAQH,EAAc,kBAAAA,EAAA,eAAA,GAAAlS,CAAA;AAAA;UAChHgS,EASsB8D,GAAA;AAAA,YArEhC,YA4DwC5D,EAAA,MAAM;AAAA,YA5D9C,uBA4DwCC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAA4D,MAAA7D,EAAA,MAAM,WAAQ6D;AAAA,YAAE,OAAM;AAAA;YA5D9D,SAAA3D,EA6DY,MAOqB;AAAA,cAPrBJ,EAOqBC,GAAA,EAPD,OAAM,8DAA6D,GAAA;AAAA,gBA7DnG,SAAAG,EA8Dc,MAKgB;AAAA,kBALhBJ,EAKgBgE,GAAA;AAAA,oBAnE9B,YA+DyB9D,EAAA,MAAM;AAAA,oBA/D/B,uBA+DyBC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAA4D,MAAA7D,EAAA,MAAM,WAAQ6D;AAAA,oBACtB,eAAe7D,EAAK,MAAC;AAAA;oBAhEtC,SAAAE,EAkEgB,MAAqC;AAAA,sBAlErDc,EAAAZ,EAkEmBJ,EAAC,EAAA,4BAAA,CAAA,GAAA,CAAA;AAAA;oBAlEpB,GAAA;AAAA;;gBAAA,GAAA;AAAA;;YAAA,GAAA;AAAA;UAsEUF,EAwBsB8D,GAAA;AAAA,YA9FhC,YAuEqB5D,EAAA,MAAM;AAAA,YAvE3B,uBAuEqBC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAA4D,MAAA7D,EAAA,MAAM,gBAAa6D;AAAA,YAC5B,OAAM;AAAA;YAxElB,SAAA3D,EA0EY,MAmBM;AAAA,cAnBNC,EAmBM,OAAA;AAAA,gBAnBD,OAAM;AAAA,gBAAmC,OA1E1DuD,aA0E2E1D,EAAa,gBAAA,MAAA;AAAA;gBAC1EG,EAiBM,OAAA;AAAA,kBAhBJ,OAAM;AAAA,kBACL,OA7EjBuD,gCA6EqD1D,EAAS,YAAA,OAAA;AAAA;mBAE9CJ,EAAA,EAAA,GAAAC,EAYqBQ,SA3FrCC,EAgF4CN,EAAA,gBAhF5C,CAgF0BtQ,GAAMiU,YADhBnD,EAYqBT,GAAA;AAAA,oBAVlB,MAAMrQ,EAAK,SAASA,EAAK,SAASsQ,EAAY,eAAG2D;AAAA,oBAClD,OAAM;AAAA;oBAlFxB,SAAAzD,EAoFkB,MAMgB;AAAA,sBANhBJ,EAMgBgE,GAAA;AAAA,wBALb,OAAO9D,QAAM,SAAS,QAAQtQ,EAAK;AAAA,wBACnC,OAAOA,EAAK;AAAA,wBACb,OAAM;AAAA;wBAvF1B,SAAAwQ,EAyFoB,MAAgB;AAAA,0BAzFpCc,EAyFuBZ,EAAA1Q,EAAK,KAAK,GAAA,CAAA;AAAA;wBAzFjC,GAAA;AAAA;;oBAAA,GAAA;AAAA;;;;YAAA,GAAA;AAAA;;QAgGQyQ,EAOM,OAPNU,IAOM;AAAA,UANJf,EAEciE,GAAA;AAAA,YAFD,MAAK;AAAA,YAAQ,gCAAO/D,EAAc,eAAA,EAAA;AAAA;YAjGzD,SAAAE,EAkGY,MAAkC;AAAA,cAlG9Cc,EAAAZ,EAkGeJ,EAAC,EAAA,yBAAA,CAAA,GAAA,CAAA;AAAA;YAlGhB,GAAA;AAAA;UAoGUF,EAEciE,GAAA;AAAA,YAFD,MAAK;AAAA,YAAQ,gCAAO/D,EAAc,eAAA,EAAA;AAAA;YApGzD,SAAAE,EAqGY,MAAmC;AAAA,cArG/Cc,EAAAZ,EAqGeJ,EAAC,EAAA,0BAAA,CAAA,GAAA,CAAA;AAAA;YArGhB,GAAA;AAAA;;eAAAW,EAAA,IAAA,EAAA;AAAA;UAuDiBX,EAAS,SAAA;AAAA,SAmDNA,EAAK,MAAC,SAAS,SAAI,cAAnCJ,KAAAC,EAsCM,OAtCNL,IAsCM;AAAA,MArCJW,EA4BM,OA5BNW,IA4BM;AAAA,QA3BJX,EAEM,OAFNY,IAEMX,EADDJ,EAAC,EAAA,mCAAA,CAAA,GAAA,CAAA;AAAA,QAENG,EAEM,OAFNV,IACKW,EAAAJ,EAAA,wCAAwCA,EAAK,MAAC,SAAS,OAAW,IAAAA,EAAA,MAAM,SAAS,IAAI,MAAA,EAAA,GAAA,CAAA;AAAA,QAE1FF,EAUiBkE,GAAA;AAAA,UATd,MAAMhE,EAAK,MAAC;AAAA,UACb,OAAM;AAAA,UACL,gBAAcA,EAAK,MAAC;AAAA;UArH/B,SAAAE,EAuHU,MAIc;AAAA,YAJdJ,EAIcmE,GAAA;AAAA,cA3HxB,YAwHqBjE,EAAK,MAACA,EAAK,MAAC,YAAY;AAAA,cAxH7C,uBAAAC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAA4D,MAwHqB7D,EAAK,MAACA,EAAK,MAAC,YAAY,IAAA6D;AAAA,cACjC,MAAK;AAAA,cACL,OAAM;AAAA;;UA1HlB,GAAA;AAAA;QA6HQ1D,EAEM,OAFNT,IACKU,EAAAJ,EAAA,wCAAwCA,EAAK,MAAC,SAAS,OAAW,IAAAA,EAAA,MAAM,SAAS,IAAI,MAAA,EAAA,GAAA,CAAA;AAAA,QAE1FF,EAMiBkE,GAAA;AAAA,UANA,MAAMhE,EAAK,MAAC;AAAA,UAAc,OAAM;AAAA;UAhIzD,SAAAE,EAiIU,MAIc;AAAA,YAJdJ,EAIcmE,GAAA;AAAA,cArIxB,YAkIqBjE,EAAK,MAACA,EAAK,MAAC,YAAY;AAAA,cAlI7C,uBAAAC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAA4D,MAkIqB7D,EAAK,MAACA,EAAK,MAAC,YAAY,IAAA6D;AAAA,cACjC,MAAK;AAAA,cACL,OAAM;AAAA;;UApIlB,GAAA;AAAA;;MAwIM1D,EAOM,OAPNiB,IAOM;AAAA,QANJtB,EAEgBiE,GAAA;AAAA,UAFH,MAAK;AAAA,UAAQ,gCAAO/D,EAAU,WAAA,EAAA;AAAA;UAzInD,SAAAE,EAyI4D,MAElD;AAAA,YA3IVc,EAAAZ,EA0IUJ,EAAC,EAAA,yBAAA,CAAA,GAAA,CAAA;AAAA;UA1IX,GAAA;AAAA;QA4IQF,EAEciE,GAAA;AAAA,UAFD,MAAK;AAAA,UAAQ,SAAK9D,EAAA,EAAA,MAAAA,EAAA,EAAA,IA5IvCiE,SA4I8ClE,EAAU,WAAA,EAAA,GAAA,CAAA,MAAA,CAAA;AAAA;UA5IxD,SAAAE,EA6IU,MAAmC;AAAA,YA7I7Cc,EAAAZ,EA6IaJ,EAAC,EAAA,0BAAA,CAAA,GAAA,CAAA;AAAA;UA7Id,GAAA;AAAA;;UAkJiBA,EAAK,MAAC,SAAS,SAAI,eADhCJ,KAAAC,EAsDM,OAtDNF,IAsDM;AAAA,MAlDJQ,EAyCM,OAzCN2C,IAyCM;AAAA,QAxCJ3C,EAQM,OARN4C,IAQM3C,EANFJ,QAAM,SAAS,gBAAa,IAAqBA,EAAC,EAAA,oCAAA;AAAA,UAAiE,QAAAA,EAAA,MAAM,SAAS,uBAA0B,QAAO,CAAA;AAAA,aAAwCA,EAAC,EAAA,iCAAA,CAAA,GAAA,CAAA;AAAA,QAOhNG,EAEM,OAFN6C,IAEM5C,EADDJ,EAAC,EAAA,kCAAA,CAAA,GAAA,CAAA;AAAA,QAENF,EAaiBkE,GAAA;AAAA,UAZf,MAAK;AAAA,UACJ,gBAAc,EAAQhE,QAAM,SAAS;AAAA,UACtC,OAAM;AAAA;UArKhB,SAAAE,EAuKU,MAOoB;AAAA,YAPpBJ,EAOoBqE,GAAA;AAAA,cA9K9B,YAwKqBnE,EAAA,MAAM;AAAA,cAxK3B,uBAwKqBC,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA,CAAA4D,MAAA7D,EAAA,MAAM,YAAS6D;AAAA,cACvB,QAAQ7D,QAAM,SAAS,UAAUA,EAAK,MAAC;AAAA,cACvC,gBAAcA,QAAM,SAAS,UAAUA,EAAK,MAAC;AAAA,cAC7C,kBAAgBA,EAAA,cAAcA,EAAA,MAAM,WAAS,SAAA;AAAA,cAC9C,OAAM;AAAA,cACL,iBAAgBA,EAAc;AAAA;;UA7K3C,GAAA;AAAA;QAgLQG,EAEM,OAFN8C,IAEM7C,EADDJ,EAAC,EAAA,gCAAA,CAAA,GAAA,CAAA;AAAA,QAENF,EAUiBkE,GAAA;AAAA,UAVD,MAAK;AAAA,UAAU,OAAM;AAAA;UAnL7C,SAAA9D,EAoLU,MAQoB;AAAA,YARpBJ,EAQoBqE,GAAA;AAAA,cA5L9B,YAqLqBnE,EAAA,MAAM;AAAA,cArL3B,uBAqLqBC,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA,CAAA4D,MAAA7D,EAAA,MAAM,UAAO6D;AAAA,cACrB,QAAQ7D,QAAM,SAAS,UAAUA,EAAK,MAAC;AAAA,cACvC,gBAAcA,QAAM,SAAS,UAAUA,EAAK,MAAC;AAAA,cAC7C,kBAAgBA,EAAA,cAAcA,EAAA,MAAM,SAAS;AAAA,cAC9C,OAAM;AAAA,cACL,UAAQA,EAAc;AAAA,cACtB,QAAMA,EAAc;AAAA;;UA3LjC,GAAA;AAAA;;MA+LMG,EAOM,OAPN+C,IAOM;AAAA,QANJpD,EAEciE,GAAA;AAAA,UAFD,MAAK;AAAA,UAAQ,kCAAO/D,EAAa,cAAA,EAAA;AAAA;UAhMtD,SAAAE,EAiMU,MAAkC;AAAA,YAjM5Cc,EAAAZ,EAiMaJ,EAAC,EAAA,yBAAA,CAAA,GAAA,CAAA;AAAA;UAjMd,GAAA;AAAA;QAmMQF,EAEciE,GAAA;AAAA,UAFD,MAAK;AAAA,UAAQ,kCAAO/D,EAAa,cAAA,EAAA;AAAA;UAnMtD,SAAAE,EAoMU,MAAmC;AAAA,YApM7Cc,EAAAZ,EAoMaJ,EAAC,EAAA,0BAAA,CAAA,GAAA,CAAA;AAAA;UApMd,GAAA;AAAA;;UA0MiBA,EAAK,MAAC,SAAS,SAAI,mBADhCJ,KAAAC,EA2DM,OA3DNuE,IA2DM;AAAA,MAvDJjE,EA8CM,OA9CNgD,IA8CM;AAAA,QA7CJhD,EAQM,OARNiD,IAQMhD,EANFJ,QAAM,SAAS,gBAAa,IAAqBA,EAAC,EAAA,oCAAA;AAAA,UAAiE,QAAAA,EAAA,MAAM,SAAS,uBAA0B,QAAO,CAAA;AAAA,aAAwCA,EAAC,EAAA,iCAAA,CAAA,GAAA,CAAA;AAAA,QAOhNG,EAEM,OAFNkD,IAEMjD,EADDJ,EAAC,EAAA,kCAAA,CAAA,GAAA,CAAA;AAAA,QAENF,EAgBiBkE,GAAA;AAAA,UAff,MAAK;AAAA,UACJ,gBAAc,EAAQhE,QAAM,SAAS;AAAA,UACtC,OAAM;AAAA;UA7NhB,SAAAE,EA+NU,MAUoB;AAAA,YAVpBJ,EAUoBqE,GAAA;AAAA,cAzO9B,YAgOqBnE,EAAA,MAAM;AAAA,cAhO3B,uBAgOqBC,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA,CAAA4D,MAAA7D,EAAA,MAAM,gBAAa6D;AAAA,cAC5B,MAAK;AAAA,cACJ,QAAQ;AAAA,cACR,QAAQ7D,QAAM,SAAS,UAAUA,EAAK,MAAC;AAAA,cACvC,gBAAcA,QAAM,SAAS,UAAUA,EAAK,MAAC;AAAA,cAC7C,kBAAgBA,EAAA,cAAcA,EAAA,MAAM,eAAa,aAAA;AAAA,cAClD,OAAM;AAAA,cACL,UAAQA,EAAc;AAAA,cACtB,QAAMA,EAAc;AAAA;;UAxOjC,GAAA;AAAA;QA2OQG,EAEM,OAFNmD,IAEMlD,EADDJ,EAAC,EAAA,gCAAA,CAAA,GAAA,CAAA;AAAA,QAENF,EAYiBkE,GAAA;AAAA,UAZD,MAAK;AAAA,UAAc,OAAM;AAAA;UA9OjD,SAAA9D,EA+OU,MAUoB;AAAA,YAVpBJ,EAUoBqE,GAAA;AAAA,cAzP9B,YAgPqBnE,EAAA,MAAM;AAAA,cAhP3B,uBAgPqBC,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA,CAAA4D,MAAA7D,EAAA,MAAM,cAAW6D;AAAA,cAC1B,MAAK;AAAA,cACJ,QAAQ;AAAA,cACR,QAAQ7D,QAAM,SAAS,UAAUA,EAAK,MAAC;AAAA,cACvC,gBAAcA,QAAM,SAAS,UAAUA,EAAK,MAAC;AAAA,cAC7C,kBAAgBA,EAAA,cAAcA,EAAA,MAAM,aAAa;AAAA,cAClD,OAAM;AAAA,cACL,UAAQA,EAAc;AAAA,cACtB,QAAMA,EAAc;AAAA;;UAxPjC,GAAA;AAAA;;MA4PMG,EAOM,OAPNoD,IAOM;AAAA,QANJzD,EAEciE,GAAA;AAAA,UAFD,MAAK;AAAA,UAAQ,kCAAO/D,EAAa,cAAA,IAAA,EAAA;AAAA;UA7PtD,SAAAE,EA8PU,MAAkC;AAAA,YA9P5Cc,EAAAZ,EA8PaJ,EAAC,EAAA,yBAAA,CAAA,GAAA,CAAA;AAAA;UA9Pd,GAAA;AAAA;QAgQQF,EAEciE,GAAA;AAAA,UAFD,MAAK;AAAA,UAAQ,kCAAO/D,EAAa,cAAA,IAAA,EAAA;AAAA;UAhQtD,SAAAE,EAiQU,MAAmC;AAAA,YAjQ7Cc,EAAAZ,EAiQaJ,EAAC,EAAA,0BAAA,CAAA,GAAA,CAAA;AAAA;UAjQd,GAAA;AAAA;;UAsQoBA,EAAK,MAAC,SAAS,SAAI,QAAnCkB,GAAAtB,EAAA,GAAAC,EA+BM,OArSVwE,IAAA;AAAA,MAuQMlE,EA6BM,OAAA;AAAA,QA5BJ,KAAI;AAAA,QACJ,OAAM;AAAA,QACL,OA1QTuD,gBA0Q6B1D,EAAc,eAAA,CAAA;AAAA,QAClC,sCAAQA,EAAc,kBAAAA,EAAA,eAAA,GAAAlS,CAAA;AAAA;QAEXkS,EAAA,MAAM,qBAAlBH,EAES,QAFTyE,IAESlE,EADPJ,EAAC,EAAA,yBAAA,CAAA,GAAA,CAAA,WAEHH,EAES,QAFT0E,IAESnE,EADPJ,EAAC,EAAA,2BAAA,CAAA,GAAA,CAAA;AAAA,QAEHG,EAgBM,OAAA;AAAA,UAhBD,OAAM;AAAA,UAAmC,OAnRtDuD,aAmRuE1D,EAAa,gBAAA,MAAA;AAAA;UAC1EG,EAcM,OAAA;AAAA,YAbJ,OAAM;AAAA,YACL,OAtRbuD,gCAsRiD1D,EAAS,YAAA,OAAA;AAAA;aAE9CJ,EAAA,EAAA,GAAAC,EASqBQ,SAjSjCC,EAyRwCN,EAAA,gBAzRxC,CAyRsBtQ,GAAMiU,YADhBnD,EASqBT,GAAA;AAAA,cAPlB,KAAKrQ,EAAK,QAAQA,EAAK,QAAQsQ,EAAY,eAAG2D;AAAA,cAC9C,UAAUjU,EAAK;AAAA,cAChB,OAAM;AAAA,cACL,aAAWA;AAAA,cACX,mBAAkBsQ,EAAc,eAACtQ,GAAMsQ,EAAA,MAAM,YAAY;AAAA;cA9RxE,SAAAE,EAgSc,MAAiD;AAAA,gBAAjDC,EAAiD,QAAA;AAAA,kBAA1C,OAAOzQ,EAAK;AAAA,qBAAUA,EAAK,KAAK,GAhSrD,GAAA8T,EAAA;AAAA;cAAA,GAAA;AAAA;;;;;UAsQ8DxD,EAAS,SAAA;AAAA,SAtQvEW,EAAA,IAAA,EAAA;AAAA;;qDCkcA7B,KAAeC,GAAgB;AAAA,EAC7B,OAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA,IACL,GAAGG;AAAA,IACH,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS,MAAM,CAAC;AAAA,IAClB;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS,MAAM,CAAC;AAAA,IAClB;AAAA,IACA,kBAAkB;AAAA,MAChB,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,kBAAkB;AAAA,MAChB,MAAM;AAAA,MACN,SAAS,MAAM;AAAA,IACjB;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,gBAAgB;AAAA,MACd,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,qBAAqB;AAAA,MACnB,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,gBAAgB;AAAA,MACd,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA;AAAA,IAEA,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA,OAAO,CAAC,qBAAqB,UAAU,UAAU,UAAU,sBAAsB,sBAAsB,SAAS,YAAY,QAAQ,gBAAgB;AAAA,EACpJ,YAAY;AAAA,IACV,SAAAsF;AAAA,IACA,WAAA7B;AAAA,IACA,cAAA8B;AAAA,IACA,kBAAAC;AAAA,IACA,YAAA9B;AAAA,IACA,aAAA+B;AAAA,IACA,gBAAAjC;AAAA,IACA,UAAAkC;AAAA,IACA,cAAArC;AAAA,IACA,aAAAsC;AAAA,IACA,YAAAC;AAAA,IACA,YAAAC;AAAA,IACA,8BAAAC;AAAA,IACA,+BAAAC;AAAA;AAAA,IAEA,gBAAgBC,GAAW;AAAA,IAC3B,eAAeC,GAAU;AAAA,IACzB,mBAAmBC,GAAc;AAAA,EACnC;AAAA,EACA,MAAM3V,GAAO0P,GAAS;AACpB,WAAOC,GAAM,EAAE,OAAA3P,GAAO,SAAA0P,GAAS,YAAAjE,IAAA,KAAYN,IAAK;AAAA,EAClD;AACF,CAAC,GA5gBWyE,KAAA,EAAA,OAAM;EAvBlB,KAAA;AAAA,EA2BM,OAAM;GAYDC,KAAA,EAAA,OAAM,mCACAmB,KAAA,EAAA,OAAM,0BAwCLC,KAAA,EAAA,OAAM,qCAkGPnB,KAAA,EAAA,OAAM,+BACJqB,KAAA,EAAA,OAAM;EAnLzB,KAAA;AAAA,EAiNgB,OAAM;;EAjNtB,KAAA;AAAA,EAqOgB,OAAM;;EArOtB,KAAA;AAAA,EAwQgB,OAAM;GAEDG,KAAA,EAAA,OAAM,oCAcNtB,KAAA,EAAA,OAAM;EAxR3B,KAAA;AAAA,EAwSgB,OAAM;GAED2B,KAAA,EAAA,OAAM,oCASNzB,KAAA,EAAA,OAAM,oCAgBNmD,KAAA,EAAA,OAAM;EAnU3B,KAAA;AAAA,EAqVgB,OAAM;GAEDE,KAAA,EAAA,OAAM,oCASNC,KAAA,EAAA,OAAM,oCAkBNC,KAAA,EAAA,OAAM,kCAmBVkB,KAAA,EAAA,OAAM;EArYvB,KAAA;AAAA,EAuZY,OAAM;;;;cAtZhBvE,EAoaM,OAAA;AAAA,IAnaH,OAFL4D,GAAA;AAAA,MAAA;AAAA,MAE4CzD,EAAI,SAAA,UAAA,0BAAA;AAAA,MAAmDA,EAAc,iBAAA,KAAA;AAAA,IAAA,CAAA;AAAA,IAK5G,SAAKC,EAAA,EAAA,MAAAA,EAAA,EAAA,IAPViE,EAOiB,CAAAL,MAAA7D,EAAA,YAAYA,EAAK,OAAA,EAAA,GAAA,CAAA,MAAA,CAAA;AAAA,EAAA,GAAA;AAAA,IAGtBA,EAAA,kBAAAJ,KADRY,EAGE6E,GAAA;AAAA,MAZN,KAAA;AAAA,MAWM,OAAM;AAAA,IAAA,CAXZ,KAAA1E,EAAA,IAAA,EAAA;AAAA,KAAAf,EAAA,EAAA,GAaIC,EAWWQ,GAxBf,MAAAC,EAc6BN,EAd7B,YAAA,CAccjQ,GAAKf,YADfwR,EAWW8E,GAAA;AAAA,MATR,KAAKvV,EAAI,QAAQf;AAAA,MAClB,UAAA;AAAA,MACA,OAjBNyU,GAAA,CAiBY,uBACEzD,EAAA,YAAYjQ,EAAI,SAAI,QAAA,+BAAA,EAAA,CAAA;AAAA,MAC3B,OAAK,GAAKA,EAAI,KAAK,IAAIA,EAAI,YAAQ,GAAW,IAAAA,EAAI,KAAK;AAAA,MACvD,SAAK,CAAE8T,MAAA7D,EAAA,UAAUjQ,CAAG;AAAA,MACpB,SArBPmU,EAAA,CAAAL,MAqBmB7D,EAAQ,QAAAjQ,GAAKf,GAAO6U,CAAM,GAAA,CAAA,MAAA,CAAA;AAAA,IAAA,GAAA;AAAA,MArB7C,SAAA3D,EAuBM,MAAyG;AAAA,QAAzGC,EAAyG,QAAzGd,IAAyGe,EAA9DrQ,EAAI,KAAK,IAAG,MAACqQ,EAAGrQ,EAAI,YAAQ,GAAA,IAAU,MAACqQ,EAAGrQ,EAAI,KAAK,GAAA,CAAA;AAAA,MAAA,CAAA;AAAA,MAvBpG,GAAA;AAAA,IAAA,GAAA,MAAA,CAAA,SAAA,SAAA,WAAA,SAAA,CAAA;IA0BYiQ,EAAA,WAAW,UADnBJ,KAAAC,EAGQ,QAHRU,EAGQ,KA5BZI,EAAA,IAAA,EAAA;AAAA,IA6BIb,EAuYYyF,GAAA;AAAA,MAtYV,KAAI;AAAA,MACH,OAAOvF,EAAA;AAAA,MACP,OAAOA,EAAM,MAAA;AAAA,MACb,iBAAeA,EAAM,MAAA;AAAA,MACrB,MAAMA,EAAI,SAAA,UAAA,UAAA;AAAA,MACX,eAAY;AAAA,MACZ,gBAAa;AAAA,MACb,OAAM;AAAA,IAAA,GAAA;AAAA,MArCZ,SAAAE,EAuCM,MA6HM;AAAA,QA7HNC,EA6HM,OA7HNb,IA6HM;AAAA,UA5HJa,EAKU,WALVM,IAKU;AAAA,YAJRS,EAAAf,EAEC,QADK,MAAAC,EAAAJ,EAAA,MAAM,SAAS,KAAK,IAAG,MAAMI,EAAM,GAAAJ,EAAA,MAAM,gBAAgBA,EAAA,MAAM,gBAAa,EAAA,GAAA,GAAA,GAAA,GAAA;AAAA,cADpE,CAAAiB,GAAAjB,EAAA,MAAM,SAAS,KAAK;AAAA,YAAA,CAAA;AAAA,cAGlCG,EAAqE,QAAA,MAAAC,EAA9BJ,EAAM,MAAA,SAAS,KAAK,GAAA,GAAA,GAAA;AAAA,cAA7C,CAAAiB,GAAAjB,EAAA,MAAM,SAAS,KAAK;AAAA,YAAA,CAAA;AAAA;UAEpCF,EAqHe0F,GAAA;AAAA,YApHb,KAAI;AAAA,YA/Cd,YAgDmBxF,EAAM,MAAA;AAAA,YAhDzB,uBAAAC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAA4D,MAgDmB7D,QAAM,UAAO6D;AAAA,YACtB,SAAQ;AAAA,YACR,WAAU;AAAA,YACV,OAAM;AAAA,YACN,gBAAa;AAAA,YACZ,iBAAe;AAAA,YACf,kBAAgB7D,EAAA;AAAA,UAAA,GAAA;AAAA,YAEN,WAASE,EAClB,MA+Ca;AAAA,cA/CbJ,EA+CamE,GAAA;AAAA,gBA9CX,KAAI;AAAA,gBA1DlB,YA2DuBjE,EAAM,MAAA;AAAA,gBA3D7B,uBAAAC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAA4D,MA2DuB7D,QAAM,aAAU6D;AAAA,gBACzB,OAAM;AAAA,gBACL,aAAa7D,EAAM,MAAA;AAAA,gBACnB,WAAWA,eAAaA,EAAS,YAAA;AAAA,gBACjC,WAAO;AAAA,kBA/DtByF,KA+DoCzF,EAAkB,oBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,QAAA,CAAA;AAAA,kBA/DtDyF,KAgEmCzF,EAAS,WAAA,CAAA,MAAA,CAAA,GAAA,CAAA,OAAA,CAAA;AAAA,gBAAA;AAAA,gBAC7B,SAAOA,EAAA;AAAA,gBACP,SAAOA,EAAA;AAAA,cAAA,GAAA;AAAA,gBAEG,QAAME,EACf,MAIE;;AAAA;AAAA,oBAAAgB,EAJFpB,EAIE4F,GAAA;AAAA,sBAFA,OAAM;AAAA,sBACL,SAxEnBxB,EAwE+BlE,EAAQ,UAAA,CAAA,MAAA,CAAA;AAAA,oBAAA,GAAA,MAAA,GAAA,CAAA,SAAA,CAAA,GAAA;AAAA,0BAFbA,EAAW,WAAA;AAAA,oBAAA,CAAA;AAAA,oBAIrBkB,EAAAf,EAOQ,QAPRO,IAOQ,MAAA,GAAA,GAAA;AAAA,sBAAA;AAAA;wBANuBV,EAAA,gBAAoCA,gBAAY5P,KAAAC,IAAA2P,EAAM,MAAA,aAAN,gBAAA3P,EAAgB,WAAhB,gBAAAD,EAAsB,qBAAqBuG,KAAAxG,IAAA6P,EAAA,MAAM,aAAN,gBAAA7P,EAAgB,UAAhB,gBAAAwG,EAAqB;AAAA,sBAAA;AAAA;qBAQvIgP,KAAA7L,IAAAkG,EAAA,MAAM,aAAN,gBAAAlG,EAAgB,WAAhB,QAAA6L,EAAsB,mBAAqBC,KAAAC,IAAA7F,QAAM,aAAN,gBAAA6F,EAAgB,UAAhB,QAAAD,EAAqB,uBADxE/F,EAKO,QAAA;AAAA,sBAvFvB,KAAA;AAAA,sBAoFmB,OApFnB4D,GAoF0BzD,EAAQ,WAAA,qCAAA,0CAAA;AAAA,oBAAA,GAAA;AAAA,sBAEhB8F,GAAgC9F,EAAA,QAAA,aAAA;AAAA,oBAtFlD,GAAA,CAAA,KAAAW,EAAA,IAAA,EAAA;AAAA,oBAyFwBX,mBADRQ,EAUeuF,GAAA;AAAA,sBAlG/B,KAAA;AAAA,sBA0FkB,QAAO;AAAA,sBACN,SAAS/F,EAAC,EAAA,uBAAA;AAAA,sBACX,WAAU;AAAA,oBAAA,GAAA;AAAA,sBA5F5B,SAAAE,EA8FkB,MAGE;AAAA,wBAHFJ,EAGEkG,GAAA;AAAA,0BAFA,OAAM;AAAA,0BACL,SAhGrB9B,EAgGiClE,EAAS,WAAA,CAAA,MAAA,CAAA;AAAA,wBAAA,GAAA,MAAA,GAAA,CAAA,SAAA,CAAA;AAAA;sBAhG1C,GAAA;AAAA,oBAAA,GAAA,GAAA,CAAA,SAAA,CAAA,KAAAW,EAAA,IAAA,EAAA;AAAA,oBAmGgBb,EAGEuF,GAAA;AAAA,sBAFA,OAAM;AAAA,sBACL,SArGnBnB,EAqG+BlE,EAAS,WAAA,CAAA,MAAA,CAAA;AAAA,oBAAA,GAAA,MAAA,GAAA,CAAA,SAAA,CAAA;AAAA;;gBArGxC,GAAA;AAAA,cAAA,GAAA,GAAA,CAAA,cAAA,eAAA,aAAA,aAAA,WAAA,SAAA,CAAA;AAAA;YAAA,SAAAE,EA0GU,MAwDM;;AAAA;AAAA,gBAxDNC,EAwDM,OAAA;AAAA,kBAvDJ,OAAM;AAAA,kBACL,OA5GbuD,mBA4GoC1D,EAAc,eAAA,CAAA;AAAA,kBACrC,WA7GbkE,EA6G2B,MAAA;AAAA,kBAAA,GAAQ,CAAA,MAAA,CAAA;AAAA,gBAAA,GAAA;AAAA,oBAEvB/D,EAgBM,OAAA,MAAA;AAAA,qBAdI9P,IAAA2P,QAAM,aAAN,QAAA3P,EAAgB,MAAK,iBAD7ByV,GAQQ9F,EAAA,QAAA,eARRiG,GAQQ,EAxHtB,KAAA,EAAA,GAAA;AAAA,sBAmH4C,OAAAjG,EAAA;AAAA,sBAAyB,cAAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,sBAIpD,SAAKC,gBAvHtBiE,EAuHgB,MAAA;AAAA,sBAAA,GAAW,CAAA,MAAA,CAAA;AAAA,oBAAA,CAAA,CAAA,KAAAtE,KAEbY,EAK+B0F,GAAA;AAAA,sBA9H7C,KAAA;AAAA,sBA2HiB,OAAOlG,EAAA;AAAA,sBACP,cAAcA,EAAA;AAAA,oBAAA,GAAA,MAAA,GAAA,CAAA,SAAA,cAAA,CAAA;AAAA;oBAbL,CAAAiB,GAAA,CAAAjB,EAAA,MAAM,SAAS,WAAS5P,IAAA4P,EAAM,MAAA,eAAN,gBAAA5P,EAAkB,OAAI;AAAA,kBAAA,CAAA;AAAA,oBAiB5D+P,EAiCM,OAAA,MAAA;AAAA,qBA/BIhQ,IAAA6P,QAAM,aAAN,QAAA7P,EAAgB,MAAK,kBAD7B2V,GAUQ9F,EAAA,QAAA,gBAVRiG,GAUQ,EA3ItB,KAAA,EAAA,GAAA;AAAA,sBAoI4C,OAAAjG,EAAA;AAAA,sBAAyB,eAAAA,EAAA;AAAA,sBAAiC,cAAAA,EAAA;AAAA,sBAAA,MAAA,MAA4CA,aAAWA,EAAK,KAAA;AAAA,oBAAA,GAAA;AAAA,sBAMjJ,SAAKC,gBA1ItBiE,EA0IgB,MAAA;AAAA,sBAAA,GAAW,CAAA,MAAA,CAAA;AAAA,oBAAA,CAAA,CAAA,IAGAlE,EAAM,MAAA,SAAS,SAAI,YAAAJ,EAAA,GADhCY,EAMiC2F,GAAA;AAAA,sBAlJ/C,KAAA;AAAA,sBA8IiB,OAAOnG,EAAA;AAAA,sBACP,kBAAgBA,EAAA;AAAA,sBAChB,oBAAkBA,EAAA;AAAA,sBAClB,UAAQA,EAAA;AAAA,oBAAA,GAAA,MAAA,GAAA,CAAA,SAAA,kBAAA,oBAAA,UAAA,CAAA,MAAAJ,KAEXC,EAaM,OAAA;AAAA,sBAhKpB,KAAA;AAAA,sBAqJgB,OAAM;AAAA,sBACL,SAAKI,EAAE,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAA4D,MAAA7D,EAAA,aAAaA,EAAK,KAAA;AAAA,oBAAA,GAAA;AAAA,sBAE1B8F,GAOQ9F,EANC,QAAAA,EAAA,MAAM,SAAS,UADxBiG,GAOQ;AAAA,wBAAA,cAAA,MAL4CjG,eAAaA,EAAK,KAAA;AAAA,wBAAkC,WAAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,wBAIrG,SAAKC,gBA9JxBiE,EA8JkB,MAAA;AAAA,wBAAA,GAAW,CAAA,MAAA,CAAA;AAAA,sBAAA,CAAA,CAAA;AAAA;;oBA9BJ,CAAAjD,GAAAjB,EAAA,MAAM,SAAS,KAAK;AAAA,kBAAA,CAAA;AAAA;;;YAhI7C,GAAA;AAAA,UAAA,GAAA,GAAA,CAAA,cAAA,gBAAA,CAAA;AAAA;QAsKsBA,EAAA,YAAAJ,KACdY,EA2PegF,GAAA;AAAA,UAlavB,KAAA;AAAA,UAwKU,KAAI;AAAA,UAxKd,YAyKmBxF,EAAM,MAAA;AAAA,UAzKzB,uBAAAC,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA,CAAA4D,MAyKmB7D,QAAM,iBAAc6D;AAAA,UAC7B,WAAU;AAAA,UACT,iBAAe;AAAA,UAChB,SAAQ;AAAA,UACR,gBAAa;AAAA,UACb,OAAM;AAAA,UACL,kBAAgB7D,EAAA;AAAA,QAAA,GAAA;AAAA,UA/K3B,SAAAE,EAiLU,MAmOW;AAAA,YAnOKF,EAAM,MAAA,SAAS,SAAI,YAAAJ,KAAnCC,EAmOWQ,GApZrB,EAAA,KAAA,EAAA,GAAA;AAAA,cAkLYF,EAkNM,OAlNNZ,IAkNM;AAAA,gBAjNJY,EAEM,OAFNS,IAEMR,EADDJ,EAAC,EAAA,gCAAA,CAAA,GAAA,CAAA;AAAA,gBAENF,EAwBiBkE,GAxBD,EAAA,OAAM,8BAA6B,GAAA;AAAA,kBAtLjE,WAuLgB,MAsBc;AAAA,oBAtBdlE,EAsBcsG,GAAA;AAAA,sBA7M9B,YAwL2BpG,EAAM,MAAA;AAAA,sBAxLjC,uBAAAC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAA4D,MAwL2B7D,QAAM,cAAW6D;AAAA,sBAC1B,YAAA;AAAA,sBACC,UAAU7D,QAAM,SAAS;AAAA,oBAAA,GAAA;AAAA,sBA1L5C,SAAAE,EA4LkB,MAOc;AAAA,yBAAAN,EAAA,GAPdY,EAOc6F,GAAA;AAAA,0BANX,KAAKrG,QAAM,aAAa;AAAA,0BACxB,OAAOA,EAAC,EAAA,8BAAA;AAAA,0BACR,OAAOA,QAAM,aAAa;AAAA,0BAC1B,UAAUA,EAAoB,oBAAAA,EAAA,MAAM,YAAY;AAAA,0BAChD,SAAKC,EAAE,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAA4D,MAAA7D,EAAA,iBAAiBA,QAAM,cAAcA,EAAA,oBAAoBA,QAAM,YAAY,CAAA;AAAA,wBAAA,GAAA,MAAA,GAAA,CAAA,SAAA,SAAA,UAAA,CAAA;AAAA,yBAGrFJ,EAAA,EAAA,GAAAC,EAQcQ,GA5MhC,MAAAC,EAqMmCN,EAAM,MAAA,aArMzC,CAqM2BtQ,YADT8Q,EAQc6F,GAAA;AAAA,0BANX,KAAK3W,EAAK;AAAA,0BACV,OAAOA,EAAK;AAAA,0BACZ,OAAOA,EAAK;AAAA,0BACZ,UAAUsQ,sBAAoBtQ,CAAI;AAAA,0BAClC,SAAK,CAAAmU,MAAE7D,EAAiB,iBAAAtQ,GAAMsQ,sBAAoBtQ,CAAI,CAAA;AAAA,wBAAA,GAAA,MAAA,GAAA,CAAA,SAAA,SAAA,YAAA,SAAA,CAAA;;sBA1M3E,GAAA;AAAA,oBAAA,GAAA,GAAA,CAAA,cAAA,UAAA,CAAA;AAAA;kBAAA,GAAA;AAAA,gBAAA,CAAA;AAAA,gBAgNsBsQ,EAAA,MAAM,SAAS,aADvBJ,KAAAC,EAKM,OALNgB,IAKMT,EADDJ,IAAC,2BAnNpB,CAAA,GAAA,CAAA,KAAAW,EAAA,IAAA,EAAA;AAAA,gBAsNsBX,EAAA,MAAM,SAAS,aAAAJ,EAAA,GADvBY,EAaiBwD,GAAA;AAAA,kBAlO/B,KAAA;AAAA,kBAuNgB,OAAM;AAAA,gBAAA,GAAA;AAAA,kBAvNtB,SAAA9D,EAyNgB,MAQc;AAAA,oBARdJ,EAQcsG,GAAA;AAAA,sBAjO9B,YAyNsCpG,EAAM,MAAA;AAAA,sBAzN5C,uBAAAC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAA4D,MAyNsC7D,QAAM,gBAAa6D;AAAA,oBAAA,GAAA;AAAA,sBAzNzD,SAAA3D,EA2NoB,MAAsC;AAAA,yBAAAN,EAAA,EAAA,GADxCC,EAMcQ,GAhOhC,MAAAC,EA2NmCN,EAAM,MAAA,kBA3NzC,CA2N2BtQ,YADT8Q,EAMc6F,GAAA;AAAA,0BAJX,KAAK3W;AAAA,0BACL,OAAOA;AAAA,0BACP,OAAOA;AAAA,wBAAA,GAAA,MAAA,GAAA,CAAA,SAAA,OAAA,CAAA;;sBA9N5B,GAAA;AAAA,oBAAA,GAAA,GAAA,CAAA,YAAA,CAAA;AAAA;kBAAA,GAAA;AAAA,gBAAA,CAAA,KAAAiR,EAAA,IAAA,EAAA;AAAA,gBAoOsBX,EAAA,MAAM,SAAS,SAAI,cAAAJ,EAAA,GAD3BC,EAKM,OALNL,IAKMY,EADDJ,EAAA,EAAC,2BAvOpB,CAAA,GAAA,CAAA,KAAAW,EAAA,IAAA,EAAA;AAAA,gBAAA,CAAA,YAAA,aAAA,iBAAA,QAAA,EA0O4E,SAASX,EAAA,MAAM,SAAS,IAAI,IA1OxGW,EAAA,IAAA,EAAA,UAyOcH,EA4BiBwD,GAAA;AAAA,kBArQ/B,KAAA;AAAA,kBA2OgB,MAAK;AAAA,kBACL,OAAM;AAAA,gBAAA,GAAA;AAAA,kBA5OtB,SAAA9D,EA8OgB,MAiBc;;AAAA;AAAA,wBAhBN7P,IAAA2P,EAAM,MAAA,qBAAN,gBAAA3P,EAAwB,UAAM,KAAAuP,EAAA,GADtCY,EAiBc4F,GAAA;AAAA,wBA/P9B,KAAA;AAAA,wBAAA,YAgP2BpG,EAAM,MAAA;AAAA,wBAhPjC,uBAAAC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAA4D,MAgP2B7D,QAAM,iBAAc6D;AAAA,wBAC7B,OAAM;AAAA,wBACL,UAAU,EAAQ7D,EAAM,MAAA,SAAS;AAAA,wBACjC,iBAAc5P,IAAA4P,QAAM,aAAN,gBAAA5P,EAAgB;AAAA,wBAC/B,YAAA;AAAA,wBACA,wBAAA;AAAA,wBACA,WAAA;AAAA,sBAAA,GAAA;AAAA,wBAtPlB,SAAA8P,EAyPoB,MAAsC;AAAA,2BAAAN,EAAA,EAAA,GADxCC,EAMcQ,GA9PhC,MAAAC,EAyPmCN,EAAM,MAAA,kBAzPzC,CAyP2BtQ,YADT8Q,EAMc6F,GAAA;AAAA,4BAJX,KAAK3W,EAAK;AAAA,4BACV,OAAOA,EAAK;AAAA,4BACZ,OAAOA,EAAK;AAAA,0BAAA,GAAA,MAAA,GAAA,CAAA,SAAA,OAAA,CAAA;;wBA5PjC,GAAA;AAAA,sBAAA,GAAA,GAAA,CAAA,cAAA,YAAA,cAAA,CAAA,MAAAkQ,EAAA,GAgQgBY,EAIcyD,GAAA;AAAA,wBApQ9B,KAAA;AAAA,wBAAA,YAkQ2BjE,EAAM,MAAA;AAAA,wBAlQjC,uBAAAC,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA,CAAA4D,MAkQ2B7D,QAAM,iBAAc6D;AAAA,wBAC7B,WAAA;AAAA,sBAAA,GAAA,MAAA,GAAA,CAAA,YAAA,CAAA;AAAA;;kBAnQlB,GAAA;AAAA,gBAAA,CAAA;AAAA,gBAuQsB7D,QAAM,SAAS,SAAI,cAD3BJ,KAAAC,EA+BM,OA/BNiB,IA+BM;AAAA,kBA3BJX,EAEM,OAFNY,IAEMX,EADDJ,EAAC,EAAA,+BAAA,CAAA,IAAAI,EAAuCJ,EAAM,MAAA,SAAS,OAAI,IAAOA,EAAM,MAAA,SAAS,IAAI,MAAA,EAAA,GAAA,CAAA;AAAA,kBAE1FF,EAUiBkE,GAAA;AAAA,oBATd,MAAMhE,EAAM,MAAA;AAAA,oBACb,OAAM;AAAA,oBACL,gBAAcA,EAAM,MAAA;AAAA,kBAAA,GAAA;AAAA,oBAhRvC,SAAAE,EAkRkB,MAIc;AAAA,sBAJdJ,EAIcmE,GAAA;AAAA,wBAtRhC,YAmR6BjE,EAAM,MAAAA,EAAA,MAAM,YAAY;AAAA,wBAnRrD,uBAAAC,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA,CAAA4D,MAmR6B7D,EAAM,MAAAA,EAAA,MAAM,YAAY,IAAA6D;AAAA,wBACjC,MAAK;AAAA,wBACL,OAAM;AAAA,sBAAA,GAAA,MAAA,GAAA,CAAA,YAAA,CAAA;AAAA;oBArR1B,GAAA;AAAA,kBAAA,GAAA,GAAA,CAAA,QAAA,cAAA,CAAA;AAAA,kBAwRgB1D,EAEM,OAFNV,IAEMW,EADDJ,EAAC,EAAA,+BAAA,CAAA,IAAAI,EAAuCJ,EAAM,MAAA,SAAS,OAAI,IAAOA,EAAM,MAAA,SAAS,IAAI,MAAA,EAAA,GAAA,CAAA;AAAA,kBAE1FF,EASiBkE,GAAA;AAAA,oBARd,MAAMhE,EAAM,MAAA;AAAA,oBACb,OAAM;AAAA,kBAAA,GAAA;AAAA,oBA7RxB,SAAAE,EA+RkB,MAIc;AAAA,sBAJdJ,EAIcmE,GAAA;AAAA,wBAnShC,YAgS6BjE,EAAM,MAAAA,EAAA,MAAM,YAAY;AAAA,wBAhSrD,uBAAAC,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA,CAAA4D,MAgS6B7D,EAAM,MAAAA,EAAA,MAAM,YAAY,IAAA6D;AAAA,wBACjC,MAAK;AAAA,wBACL,OAAM;AAAA,sBAAA,GAAA,MAAA,GAAA,CAAA,YAAA,CAAA;AAAA;oBAlS1B,GAAA;AAAA,kBAAA,GAAA,GAAA,CAAA,MAAA,CAAA;AAAA,gBAAA,CAAA,KAAAlD,EAAA,IAAA,EAAA;AAAA,gBAuSsBX,QAAM,SAAS,SAAI,eAD3BJ,KAAAC,EA4CM,OA5CNH,IA4CM;AAAA,kBAxCJS,EAQM,OARNiB,IAQMhB,EANFJ,QAAM,SAAS,gBAAa,IAA6BA,EAAC,EAAA,oCAAA;AAAA,oBAAA,QAAyEA,EAAM,MAAA,SAAS,gBAAa,OAAa,QAAO,CAAA;AAAA,kBAAA,CAAA,IAAuDA,EAAC,EAAA,iCAAA,CAAA,GAAA,CAAA;AAAA,kBAO/OG,EAEM,OAFNR,IAEMS,EADDJ,EAAC,EAAA,kCAAA,CAAA,GAAA,CAAA;AAAA,kBAENF,EAYiBkE,GAAA;AAAA,oBAXf,MAAK;AAAA,oBACJ,gBAAc,EAAQhE,EAAM,MAAA,SAAS;AAAA,oBACtC,OAAM;AAAA,kBAAA,GAAA;AAAA,oBAzTxB,SAAAE,EA2TkB,MAMoB;AAAA,sBANpBJ,EAMoBqE,GAAA;AAAA,wBAjUtC,YA4T6BnE,EAAM,MAAA;AAAA,wBA5TnC,uBAAAC,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA,CAAA4D,MA4T6B7D,QAAM,YAAS6D;AAAA,wBACvB,QAAQ7D,EAAA,MAAM,SAAS,UAAUA,EAAM,MAAA;AAAA,wBACvC,gBAAcA,EAAA,MAAM,SAAS,UAAUA,EAAM,MAAA;AAAA,wBAC7C,kBAAgBA,EAAc,cAAAA,EAAA,MAAM,WAAS,SAAA;AAAA,wBAC9C,OAAM;AAAA,sBAAA,GAAA,MAAA,GAAA,CAAA,cAAA,UAAA,gBAAA,gBAAA,CAAA;AAAA;oBAhU1B,GAAA;AAAA,kBAAA,GAAA,GAAA,CAAA,cAAA,CAAA;AAAA,kBAmUgBG,EAEM,OAFN2C,IAEM1C,EADDJ,EAAC,EAAA,gCAAA,CAAA,GAAA,CAAA;AAAA,kBAENF,EAWiBkE,GAAA;AAAA,oBAVf,MAAK;AAAA,oBACL,OAAM;AAAA,kBAAA,GAAA;AAAA,oBAxUxB,SAAA9D,EA0UkB,MAMoB;AAAA,sBANpBJ,EAMoBqE,GAAA;AAAA,wBAhVtC,YA2U6BnE,EAAM,MAAA;AAAA,wBA3UnC,uBAAAC,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA,CAAA4D,MA2U6B7D,QAAM,UAAO6D;AAAA,wBACrB,QAAQ7D,EAAA,MAAM,SAAS,UAAUA,EAAM,MAAA;AAAA,wBACvC,gBAAcA,EAAA,MAAM,SAAS,UAAUA,EAAM,MAAA;AAAA,wBAC7C,kBAAgBA,EAAc,cAAAA,EAAA,MAAM,SAAS;AAAA,wBAC9C,OAAM;AAAA,sBAAA,GAAA,MAAA,GAAA,CAAA,cAAA,UAAA,gBAAA,gBAAA,CAAA;AAAA;oBA/U1B,GAAA;AAAA,kBAAA,CAAA;AAAA,gBAAA,CAAA,KAAAW,EAAA,IAAA,EAAA;AAAA,gBAoVsBX,QAAM,SAAS,SAAI,mBAD3BJ,KAAAC,EAgDM,OAhDNkD,IAgDM;AAAA,kBA5CJ5C,EAQM,OARN6C,IAQM5C,EANFJ,QAAM,SAAS,gBAAa,IAA6BA,EAAC,EAAA,oCAAA;AAAA,oBAAA,QAAyEA,EAAM,MAAA,SAAS,gBAAa,OAAa,QAAO,CAAA;AAAA,kBAAA,CAAA,IAAuDA,EAAC,EAAA,iCAAA,CAAA,GAAA,CAAA;AAAA,kBAO/OG,EAEM,OAFN8C,IAEM7C,EADDJ,EAAC,EAAA,kCAAA,CAAA,GAAA,CAAA;AAAA,kBAENF,EAciBkE,GAAA;AAAA,oBAbf,MAAK;AAAA,oBACJ,gBAAc,EAAQhE,EAAM,MAAA,SAAS;AAAA,oBACtC,OAAM;AAAA,kBAAA,GAAA;AAAA,oBAtWxB,SAAAE,EAwWkB,MAQoB;AAAA,sBARpBJ,EAQoBqE,GAAA;AAAA,wBAhXtC,YAyW6BnE,EAAM,MAAA;AAAA,wBAzWnC,uBAAAC,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA,CAAA4D,MAyW6B7D,QAAM,gBAAa6D;AAAA,wBAC5B,MAAK;AAAA,wBACJ,QAAQ;AAAA,wBACR,QAAQ7D,EAAA,MAAM,SAAS,UAAUA,EAAM,MAAA;AAAA,wBACvC,gBAAcA,EAAA,MAAM,SAAS,UAAUA,EAAM,MAAA;AAAA,wBAC7C,kBAAgBA,EAAc,cAAAA,EAAA,MAAM,eAAa,aAAA;AAAA,wBAClD,OAAM;AAAA,sBAAA,GAAA,MAAA,GAAA,CAAA,cAAA,UAAA,gBAAA,gBAAA,CAAA;AAAA;oBA/W1B,GAAA;AAAA,kBAAA,GAAA,GAAA,CAAA,cAAA,CAAA;AAAA,kBAkXgBG,EAEM,OAFN+C,IAEM9C,EADDJ,EAAC,EAAA,gCAAA,CAAA,GAAA,CAAA;AAAA,kBAENF,EAaiBkE,GAAA;AAAA,oBAZf,MAAK;AAAA,oBACL,OAAM;AAAA,kBAAA,GAAA;AAAA,oBAvXxB,SAAA9D,EAyXkB,MAQoB;AAAA,sBARpBJ,EAQoBqE,GAAA;AAAA,wBAjYtC,YA0X6BnE,EAAM,MAAA;AAAA,wBA1XnC,uBAAAC,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA,CAAA4D,MA0X6B7D,QAAM,cAAW6D;AAAA,wBAC1B,MAAK;AAAA,wBACJ,QAAQ;AAAA,wBACR,QAAQ7D,EAAA,MAAM,SAAS,UAAUA,EAAM,MAAA;AAAA,wBACvC,gBAAcA,EAAA,MAAM,SAAS,UAAUA,EAAM,MAAA;AAAA,wBAC7C,kBAAgBA,EAAc,cAAAA,EAAA,MAAM,aAAa;AAAA,wBAClD,OAAM;AAAA,sBAAA,GAAA,MAAA,GAAA,CAAA,cAAA,UAAA,gBAAA,gBAAA,CAAA;AAAA;oBAhY1B,GAAA;AAAA,kBAAA,CAAA;AAAA,gBAAA,CAAA,KAAAW,EAAA,IAAA,EAAA;AAAA,cAAA,CAAA;AAAA,cAqYYR,EAcM,OAdNiE,IAcM;AAAA,gBAbJtE,EAKciE,GAAA;AAAA,kBAJZ,MAAK;AAAA,kBACJ,SAAK9D,yBAAED,EAAc,eAAA,EAAA;AAAA,gBAAA,GAAA;AAAA,kBAxYtC,SAAAE,EA0YgB,MAAkC;AAAA,oBA1YlDc,IA0YmBhB,EAAC,EAAA,yBAAA,CAAA,GAAA,CAAA;AAAA,kBAAA,CAAA;AAAA,kBA1YpB,GAAA;AAAA,gBAAA,CAAA;AAAA,gBA4YcF,EAMciE,GAAA;AAAA,kBALZ,MAAK;AAAA,kBACJ,UAAU/D,EAAM,MAAA;AAAA,kBAChB,SAAKC,yBAAED,EAAc,eAAA,EAAA;AAAA,gBAAA,GAAA;AAAA,kBA/YtC,SAAAE,EAiZgB,MAAmC;AAAA,oBAjZnDc,IAiZmBhB,EAAC,EAAA,0BAAA,CAAA,GAAA,CAAA;AAAA,kBAAA,CAAA;AAAA,kBAjZpB,GAAA;AAAA,gBAAA,GAAA,GAAA,CAAA,UAAA,CAAA;AAAA;sBAsZuBA,EAAM,MAAA,kBAAAJ,KADnBC,EAYM,OAZNsD,IAYM;AAAA,cARJ2C,GAOQ9F,EANI,QAAA,GAAAA,EAAA,MAAM,SAAS,QAAQ,SADnCiG,GAOQ;AAAA,gBAAA,cAAA,MALwCjG,cAAYA,EAAK,KAAA;AAAA,gBAA8B,WAAAA,EAAA;AAAA,cAAA,GAAA;AAAA,gBAI5F,SAAKC,kBA/ZpBiE,EA+Zc,MAAA;AAAA,gBAAA,GAAW,CAAA,MAAA,CAAA;AAAA,cAAA,CAAA,CAAA;AAAA,YA/ZzB,CAAA,KAAAvD,EAAA,IAAA,EAAA;AAAA,UAAA,CAAA;AAAA,UAAA,GAAA;AAAA,QAAA,GAAA,GAAA,CAAA,cAAA,gBAAA,CAAA,KAAAA,EAAA,IAAA,EAAA;AAAA,MAAA,CAAA;AAAA,MAAA,GAAA;AAAA,IAAA,GAAA,GAAA,CAAA,SAAA,SAAA,iBAAA,MAAA,CAAA;AAAA;;qDCea2F,KAAiB;AAAA,EAC5B,GAAGpH;AAAA,EACH,WAAW;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AAAA;AAAA,EAEA,YAAY;AAAA,IACV,MAAM;AAAA,IACN,SAAS,MAAM,CAAC;AAAA,EAClB;AAAA;AAAA,EAEA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS,MAAM,CAAC;AAAA,EAClB;AAAA;AAAA,EAEA,kBAAkB;AAAA,IAChB,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AAAA;AAAA,EAEA,kBAAkB;AAAA,IAChB,MAAM;AAAA,IACN,SAAS,MAAM;AAAA,EACjB;AAAA;AAAA,EAEA,UAAU;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AAAA;AAAA,EAEA,gBAAgB;AAAA,IACd,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AAAA;AAAA,EAEA,UAAU;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AAAA;AAAA,EAEA,cAAc;AAAA,IACZ,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AAAA,EACA,qBAAqB;AAAA,IACnB,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AAAA;AAAA,EAEA,UAAU;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AAAA;AAAA,EAEA,WAAW;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AAAA;AAAA,EAEA,gBAAgB;AAAA,IACd,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AAAA;AAAA,EAEA,iBAAiB;AAAA,IACf,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AAAA;AAAA,EAEA,aAAa;AAAA,IACX,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AAAA;AAAA,EAEA,aAAa;AAAA,IACX,MAAM;AAAA,IACN,SAAS,OAAO,CAAA;AAAA,EAClB;AAAA;AAAA,EAEA,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AAAA;AAAA,EAEA,cAAc;AAAA,IACZ,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AACF,GAEAqH,KAAexH,GAAgB;AAAA,EAC7B,MAAMC,KAAU;AAAA,EAChB,OAAOsH;AAAA,EACP,GAAGE;AACL,CAAC;ACzFDD,GAAc,UAAU,SAAUE,GAAK;AACrC,QAAMC,IAAeD;AAGrB,EAAIC,KAAWA,EAAQ,UAAUA,EAAQ,OAAO,oBAC9ClN,GAAakN,CAAO,GAKlBA,KAAWA,EAAQ,SAAS,CAACA,EAAQ,mCACvCA,EAAQ,iCAAiC,IACzCA,EAAQ,MAAM;AAAA,IACZ,eAAe;AACb,YAAMzT,IAAK;AACX,MAAIA,MAAOA,EAAG,SAASA,EAAG,MAAOA,EAAG,UAAUA,EAAG,MAAM,SAASA,EAAG,MAAM,QAC1DuG,GAAAvG,EAAG,SAASA,CAAE;AAAA,IAE/B;AAAA,EAAA,CACD,IAGKyT,EAAA,UAAUH,GAAc,MAAMA,EAAa;AACrD;AAEAA,GAAc,UAAUI;AAGpB,OAAO,SAAW,OAAgB,OAA6C,OACnEJ,GAAA,QAAS,OAAwC,GAAG;"}
|