giime 0.8.0 → 0.8.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/dist/index.css +131 -128
- package/es/components/src/base/autocomplete/Autocomplete.vue.d.ts +3 -3
- package/es/components/src/base/autocomplete/autocomplete.d.ts +1 -1
- package/es/components/src/base/autocomplete/index.d.ts +7 -7
- package/es/components/src/base/input/Input.vue.d.ts +3 -3
- package/es/components/src/base/input/index.d.ts +7 -7
- package/es/components/src/base/input/input.d.ts +1 -1
- package/es/components/src/base/inputNumber/InputNumber.vue.d.ts +3 -3
- package/es/components/src/base/inputNumber/index.d.ts +7 -7
- package/es/components/src/base/inputNumber/inputNumber.d.ts +1 -1
- package/es/components/src/base/mention/Mention.vue.d.ts +3 -3
- package/es/components/src/base/mention/index.d.ts +7 -7
- package/es/components/src/base/mention/mention.d.ts +1 -1
- package/es/components/src/base/upload/Upload.vue.d.ts +1 -1
- package/es/components/src/base/upload/index.d.ts +3 -3
- package/es/components/src/business/loginDialog/LoginDialog.vue2.mjs +4 -1
- package/es/components/src/business/loginDialog/LoginDialog.vue2.mjs.map +1 -1
- package/es/components/src/business/uploadItem/UploadItem.vue.d.ts +1 -1
- package/es/components/src/business/uploadItem/index.d.ts +3 -3
- package/es/components/src/business/uploadPro/UploadPro.vue.d.ts +1 -1
- package/es/components/src/business/uploadPro/index.d.ts +3 -3
- package/es/components/src/composite/tablePro/tableToolbar/TableToolbar.vue2.mjs +2 -1
- package/es/components/src/composite/tablePro/tableToolbar/TableToolbar.vue2.mjs.map +1 -1
- package/es/components/src/composite/uploadFile/UploadFile.vue.d.ts +1 -1
- package/es/components/src/composite/uploadFile/index.d.ts +3 -3
- package/es/giime/index.mjs +4 -2
- package/es/giime/index.mjs.map +1 -1
- package/es/giime/version.d.ts +1 -1
- package/es/giime/version.mjs +1 -1
- package/es/giime/version.mjs.map +1 -1
- package/es/index.css +131 -128
- package/es/utils/__tests__/crypto/base64.test.d.ts +1 -0
- package/es/utils/__tests__/vue/router.test.d.ts +1 -0
- package/es/utils/index.mjs +4 -2
- package/es/utils/index.mjs.map +1 -1
- package/es/utils/src/crypto/base64.d.ts +42 -0
- package/es/utils/src/crypto/base64.mjs +44 -0
- package/es/utils/src/crypto/base64.mjs.map +1 -0
- package/es/utils/src/crypto/index.d.ts +1 -0
- package/es/utils/src/crypto/index.mjs +1 -0
- package/es/utils/src/crypto/index.mjs.map +1 -1
- package/es/utils/src/http/createAxios.mjs +8 -0
- package/es/utils/src/http/createAxios.mjs.map +1 -1
- package/es/utils/src/http/index.mjs +1 -1
- package/es/utils/src/http/url.d.ts +9 -0
- package/es/utils/src/http/url.mjs +6 -1
- package/es/utils/src/http/url.mjs.map +1 -1
- package/es/utils/src/is.d.ts +22 -0
- package/es/utils/src/is.mjs +16 -1
- package/es/utils/src/is.mjs.map +1 -1
- package/es/utils/src/vue/index.d.ts +1 -0
- package/es/utils/src/vue/index.mjs +1 -0
- package/es/utils/src/vue/index.mjs.map +1 -1
- package/es/utils/src/vue/router.d.ts +30 -0
- package/es/utils/src/vue/router.mjs +28 -0
- package/es/utils/src/vue/router.mjs.map +1 -0
- package/lib/components/src/base/autocomplete/Autocomplete.vue.d.ts +3 -3
- package/lib/components/src/base/autocomplete/autocomplete.d.ts +1 -1
- package/lib/components/src/base/autocomplete/index.d.ts +7 -7
- package/lib/components/src/base/input/Input.vue.d.ts +3 -3
- package/lib/components/src/base/input/index.d.ts +7 -7
- package/lib/components/src/base/input/input.d.ts +1 -1
- package/lib/components/src/base/inputNumber/InputNumber.vue.d.ts +3 -3
- package/lib/components/src/base/inputNumber/index.d.ts +7 -7
- package/lib/components/src/base/inputNumber/inputNumber.d.ts +1 -1
- package/lib/components/src/base/mention/Mention.vue.d.ts +3 -3
- package/lib/components/src/base/mention/index.d.ts +7 -7
- package/lib/components/src/base/mention/mention.d.ts +1 -1
- package/lib/components/src/base/upload/Upload.vue.d.ts +1 -1
- package/lib/components/src/base/upload/index.d.ts +3 -3
- package/lib/components/src/business/loginDialog/LoginDialog.vue2.js +3 -0
- package/lib/components/src/business/loginDialog/LoginDialog.vue2.js.map +1 -1
- package/lib/components/src/business/uploadItem/UploadItem.vue.d.ts +1 -1
- package/lib/components/src/business/uploadItem/index.d.ts +3 -3
- package/lib/components/src/business/uploadPro/UploadPro.vue.d.ts +1 -1
- package/lib/components/src/business/uploadPro/index.d.ts +3 -3
- package/lib/components/src/composite/tablePro/tableToolbar/TableToolbar.vue2.js +2 -1
- package/lib/components/src/composite/tablePro/tableToolbar/TableToolbar.vue2.js.map +1 -1
- package/lib/components/src/composite/uploadFile/UploadFile.vue.d.ts +1 -1
- package/lib/components/src/composite/uploadFile/index.d.ts +3 -3
- package/lib/giime/index.js +16 -0
- package/lib/giime/index.js.map +1 -1
- package/lib/giime/version.d.ts +1 -1
- package/lib/giime/version.js +1 -1
- package/lib/giime/version.js.map +1 -1
- package/lib/index.css +131 -128
- package/lib/utils/__tests__/crypto/base64.test.d.ts +1 -0
- package/lib/utils/__tests__/vue/router.test.d.ts +1 -0
- package/lib/utils/index.js +16 -0
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/src/crypto/base64.d.ts +42 -0
- package/lib/utils/src/crypto/base64.js +51 -0
- package/lib/utils/src/crypto/base64.js.map +1 -0
- package/lib/utils/src/crypto/index.d.ts +1 -0
- package/lib/utils/src/crypto/index.js +7 -0
- package/lib/utils/src/crypto/index.js.map +1 -1
- package/lib/utils/src/http/createAxios.js +8 -0
- package/lib/utils/src/http/createAxios.js.map +1 -1
- package/lib/utils/src/http/index.js +1 -0
- package/lib/utils/src/http/index.js.map +1 -1
- package/lib/utils/src/http/url.d.ts +9 -0
- package/lib/utils/src/http/url.js +6 -0
- package/lib/utils/src/http/url.js.map +1 -1
- package/lib/utils/src/is.d.ts +22 -0
- package/lib/utils/src/is.js +20 -0
- package/lib/utils/src/is.js.map +1 -1
- package/lib/utils/src/vue/index.d.ts +1 -0
- package/lib/utils/src/vue/index.js +3 -0
- package/lib/utils/src/vue/index.js.map +1 -1
- package/lib/utils/src/vue/router.d.ts +30 -0
- package/lib/utils/src/vue/router.js +31 -0
- package/lib/utils/src/vue/router.js.map +1 -0
- package/package.json +1 -1
package/lib/utils/src/is.d.ts
CHANGED
|
@@ -105,3 +105,25 @@ export declare const isPSD: (url: string) => boolean;
|
|
|
105
105
|
* @param url 文件链接 或 文件名
|
|
106
106
|
*/
|
|
107
107
|
export declare const isZip: (url: string) => boolean;
|
|
108
|
+
/**
|
|
109
|
+
* 移动设备正则表达式
|
|
110
|
+
*/
|
|
111
|
+
export declare const MOBILE_DEVICE_REGEX: RegExp;
|
|
112
|
+
/**
|
|
113
|
+
* 平板设备正则表达式
|
|
114
|
+
*/
|
|
115
|
+
export declare const TABLET_DEVICE_REGEX: RegExp;
|
|
116
|
+
/**
|
|
117
|
+
* 钉钉浏览器正则表达式
|
|
118
|
+
*/
|
|
119
|
+
export declare const DINGTALK_REGEX: RegExp;
|
|
120
|
+
/**
|
|
121
|
+
* 判断是否为移动设备
|
|
122
|
+
* @returns 是否为移动设备
|
|
123
|
+
*/
|
|
124
|
+
export declare const isMobile: () => boolean;
|
|
125
|
+
/**
|
|
126
|
+
* 判断是否为钉钉浏览器
|
|
127
|
+
* @returns 是否为钉钉浏览器
|
|
128
|
+
*/
|
|
129
|
+
export declare const isDingTalk: () => boolean;
|
package/lib/utils/src/is.js
CHANGED
|
@@ -126,14 +126,33 @@ const isPPT = (url) => isFileType(url, "Ppt" /* Ppt */);
|
|
|
126
126
|
const isText = (url) => isFileType(url, "Text" /* Text */);
|
|
127
127
|
const isPSD = (url) => isFileType(url, "Psd" /* Psd */);
|
|
128
128
|
const isZip = (url) => isFileType(url, "Zip" /* Zip */);
|
|
129
|
+
const MOBILE_DEVICE_REGEX = /android|webos|iphone|ipod|blackberry|iemobile|opera mini/i;
|
|
130
|
+
const TABLET_DEVICE_REGEX = /ipad|android(?!.*mobile)|tablet/i;
|
|
131
|
+
const DINGTALK_REGEX = /dingtalk/i;
|
|
132
|
+
const isMobile = () => {
|
|
133
|
+
if (!isClient) return false;
|
|
134
|
+
const ua = navigator.userAgent.toLowerCase();
|
|
135
|
+
const isMobileDevice = MOBILE_DEVICE_REGEX.test(ua);
|
|
136
|
+
const isTabletDevice = TABLET_DEVICE_REGEX.test(ua);
|
|
137
|
+
return isMobileDevice || isTabletDevice;
|
|
138
|
+
};
|
|
139
|
+
const isDingTalk = () => {
|
|
140
|
+
if (!isClient) return false;
|
|
141
|
+
const ua = navigator.userAgent.toLowerCase();
|
|
142
|
+
return DINGTALK_REGEX.test(ua);
|
|
143
|
+
};
|
|
129
144
|
|
|
145
|
+
exports.DINGTALK_REGEX = DINGTALK_REGEX;
|
|
130
146
|
exports.FILE_EXTENSIONS = FILE_EXTENSIONS;
|
|
131
147
|
exports.FileType = FileType;
|
|
148
|
+
exports.MOBILE_DEVICE_REGEX = MOBILE_DEVICE_REGEX;
|
|
149
|
+
exports.TABLET_DEVICE_REGEX = TABLET_DEVICE_REGEX;
|
|
132
150
|
exports.getTag = getTag;
|
|
133
151
|
exports.isBoolean = isBoolean;
|
|
134
152
|
exports.isClient = isClient;
|
|
135
153
|
exports.isDate = isDate;
|
|
136
154
|
exports.isDecimal = isDecimal;
|
|
155
|
+
exports.isDingTalk = isDingTalk;
|
|
137
156
|
exports.isError = isError;
|
|
138
157
|
exports.isEven = isEven;
|
|
139
158
|
exports.isExcel = isExcel;
|
|
@@ -142,6 +161,7 @@ exports.isHttps = isHttps;
|
|
|
142
161
|
exports.isIOS = isIOS;
|
|
143
162
|
exports.isImageUrl = isImageUrl;
|
|
144
163
|
exports.isInteger = isInteger;
|
|
164
|
+
exports.isMobile = isMobile;
|
|
145
165
|
exports.isNegative = isNegative;
|
|
146
166
|
exports.isNil = isNil;
|
|
147
167
|
exports.isNull = isNull;
|
package/lib/utils/src/is.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"is.js","sources":["../../../../../packages/utils/src/is.ts"],"sourcesContent":["const toString = Object.prototype.toString;\nexport function getTag(value: any): string {\n if (value === null) {\n return '[object Null]';\n } else if (value === undefined) {\n return '[object Undefined]';\n }\n return toString.call(value);\n}\nexport function isObjectLike(value: any): boolean {\n return typeof value === 'object' && value !== null;\n}\nexport function isBoolean(value: any): value is boolean {\n return value === true || value === false || (isObjectLike(value) && getTag(value) === '[object Boolean]');\n}\n\nexport function isString(value: any): value is string {\n return typeof value === 'string' || (isObjectLike(value) && getTag(value) === '[object String]');\n}\n\nexport function isNumber(value: any): value is number {\n return typeof value === 'number' || (isObjectLike(value) && getTag(value) === '[object Number]');\n}\nexport function isSymbol(value: any): value is symbol {\n return typeof value === 'symbol' || (isObjectLike(value) && getTag(value) === '[object Symbol]');\n}\nexport function isDate(value: any): value is Date {\n return isObjectLike(value) && getTag(value) === '[object Date]';\n}\nexport const isFunction = (val: unknown): val is Function => typeof val === 'function';\n/**\n * 整数\n */\nexport function isInteger(val: any): val is number {\n return isNumber(val) && val % 1 === 0;\n}\n/**\n * 小数\n */\nexport function isDecimal(val: any): val is number {\n return isNumber(val) && val % 1 !== 0;\n}\n/**\n * 负数\n */\nexport function isNegative(val: any): val is number {\n return isNumber(val) && val < 0;\n}\n/**\n * 正数\n */\nexport function isPositive(val: any): val is number {\n return isNumber(val) && val > 0;\n}\n/**\n * 奇数\n */\nexport function isOdd(val: any): val is number {\n return isNumber(val) && val % 2 !== 0;\n}\n/**\n * 偶数\n */\nexport function isEven(val: any): val is number {\n return isNumber(val) && val % 2 === 0;\n}\n\nexport function isUndefined(val: any): val is undefined {\n return val === undefined;\n}\nexport function isNull(val: any): val is null {\n return val === null;\n}\nexport function isNil(val: any): val is null | undefined {\n return isUndefined(val) || isNull(val);\n}\n/**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n */\nexport function isError(value: any): value is Error {\n if (!isObjectLike(value)) {\n return false;\n }\n const tag = getTag(value);\n return (\n tag === '[object Error]' ||\n tag === '[object DOMException]' ||\n (typeof value.message === 'string' && typeof value.name === 'string' && !isPlainObject(value))\n );\n}\nexport function isPlainObject(value: any): value is object {\n if (!isObjectLike(value) || getTag(value) !== '[object Object]') {\n return false;\n }\n if (Object.getPrototypeOf(value) === null) {\n return true;\n }\n let proto = value;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(value) === proto;\n}\n\nexport const isHttps = () => {\n return window.location.protocol.startsWith('https');\n};\nexport const isClient = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nexport const isIOS = /* #__PURE__ */ getIsIOS();\n\nfunction getIsIOS() {\n return (\n isClient &&\n window?.navigator?.userAgent &&\n (/iP(?:ad|hone|od)/.test(window.navigator.userAgent) ||\n // The new iPad Pro Gen3 does not identify itself as iPad, but as Macintosh.\n // https://github.com/vueuse/vueuse/issues/3577\n (window?.navigator?.maxTouchPoints > 2 && /iPad|Macintosh/.test(window?.navigator.userAgent)))\n );\n}\n\n/**\n * 文件类型枚举\n */\nexport enum FileType {\n Video = 'Video',\n Image = 'Image',\n Pdf = 'Pdf',\n Word = 'Word',\n Excel = 'Excel',\n Ppt = 'Ppt',\n Text = 'Text',\n Psd = 'Psd',\n Zip = 'Zip',\n}\n\n/**\n * 不同文件类型的扩展名配置\n */\nexport const FILE_EXTENSIONS: Record<FileType, readonly string[]> = {\n [FileType.Video]: ['mp4', 'avi', 'rmvb', 'rm', 'wmv', 'mpg', 'mpeg', 'mov', 'mkv', 'flv'],\n [FileType.Image]: ['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg', 'bmp'],\n [FileType.Pdf]: ['pdf'],\n [FileType.Word]: ['doc', 'docx'],\n [FileType.Excel]: ['xls', 'xlsx'],\n [FileType.Ppt]: ['ppt', 'pptx'],\n [FileType.Text]: ['txt'],\n [FileType.Psd]: ['psd'],\n [FileType.Zip]: ['zip', 'rar', '7z'],\n} as const;\n\n/**\n * 创建用于匹配文件扩展名的正则表达式\n * @param extensions 文件扩展名数组\n * @returns 用于匹配文件扩展名的正则表达式\n */\nconst createExtensionRegex = (extensions: readonly string[]): RegExp => {\n return new RegExp(`\\\\.(${extensions.join('|')})$`, 'i');\n};\n\n/**\n * 通用函数,用于检查URL是否匹配特定文件扩展名\n * @param url 要检查的文件URL或文件名\n * @param type 要检查的文件类型\n * @returns 布尔值,表示URL是否匹配该文件类型\n */\nconst isFileType = (url: string, type: FileType): boolean => {\n if (!isString(url)) return false;\n // 首先通过URL去除查询参数和哈希值\n const baseUrl = url.split('?')[0];\n const regex = createExtensionRegex(FILE_EXTENSIONS[type]);\n return regex.test(baseUrl);\n};\n\n/**\n * @description 判断是否为视频\n * @param url 文件链接 或 文件名\n */\nexport const isVideoUrl = (url: string): boolean => isFileType(url, FileType.Video);\n\n/**\n * @description 判断是否为图片\n * @param url 文件链接 或 文件名\n */\nexport const isImageUrl = (url: string): boolean => isFileType(url, FileType.Image);\n\n/**\n * @description 判断是否为PDF\n * @param url 文件链接 或 文件名\n */\nexport const isPDF = (url: string): boolean => isFileType(url, FileType.Pdf);\n\n/**\n * @description 是否为Word文档\n * @param url 文件链接 或 文件名\n */\nexport const isWord = (url: string): boolean => isFileType(url, FileType.Word);\n\n/**\n * @description 是否为Excel文件\n * @param url 文件链接 或 文件名\n */\nexport const isExcel = (url: string): boolean => isFileType(url, FileType.Excel);\n\n/**\n * @description 是否为PPT文件\n * @param url 文件链接 或 文件名\n */\nexport const isPPT = (url: string): boolean => isFileType(url, FileType.Ppt);\n\n/**\n * @description 是否为文本文件\n * @param url 文件链接 或 文件名\n */\nexport const isText = (url: string): boolean => isFileType(url, FileType.Text);\n\n/**\n * @description 是否为PSD文件\n * @param url 文件链接 或 文件名\n */\nexport const isPSD = (url: string): boolean => isFileType(url, FileType.Psd);\n\n/**\n * @description 判断是否为压缩包\n * @param url 文件链接 或 文件名\n */\nexport const isZip = (url: string): boolean => isFileType(url, FileType.Zip);\n"],"names":["FileType"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"is.js","sources":["../../../../../packages/utils/src/is.ts"],"sourcesContent":["const toString = Object.prototype.toString;\nexport function getTag(value: any): string {\n if (value === null) {\n return '[object Null]';\n } else if (value === undefined) {\n return '[object Undefined]';\n }\n return toString.call(value);\n}\nexport function isObjectLike(value: any): boolean {\n return typeof value === 'object' && value !== null;\n}\nexport function isBoolean(value: any): value is boolean {\n return value === true || value === false || (isObjectLike(value) && getTag(value) === '[object Boolean]');\n}\n\nexport function isString(value: any): value is string {\n return typeof value === 'string' || (isObjectLike(value) && getTag(value) === '[object String]');\n}\n\nexport function isNumber(value: any): value is number {\n return typeof value === 'number' || (isObjectLike(value) && getTag(value) === '[object Number]');\n}\nexport function isSymbol(value: any): value is symbol {\n return typeof value === 'symbol' || (isObjectLike(value) && getTag(value) === '[object Symbol]');\n}\nexport function isDate(value: any): value is Date {\n return isObjectLike(value) && getTag(value) === '[object Date]';\n}\nexport const isFunction = (val: unknown): val is Function => typeof val === 'function';\n/**\n * 整数\n */\nexport function isInteger(val: any): val is number {\n return isNumber(val) && val % 1 === 0;\n}\n/**\n * 小数\n */\nexport function isDecimal(val: any): val is number {\n return isNumber(val) && val % 1 !== 0;\n}\n/**\n * 负数\n */\nexport function isNegative(val: any): val is number {\n return isNumber(val) && val < 0;\n}\n/**\n * 正数\n */\nexport function isPositive(val: any): val is number {\n return isNumber(val) && val > 0;\n}\n/**\n * 奇数\n */\nexport function isOdd(val: any): val is number {\n return isNumber(val) && val % 2 !== 0;\n}\n/**\n * 偶数\n */\nexport function isEven(val: any): val is number {\n return isNumber(val) && val % 2 === 0;\n}\n\nexport function isUndefined(val: any): val is undefined {\n return val === undefined;\n}\nexport function isNull(val: any): val is null {\n return val === null;\n}\nexport function isNil(val: any): val is null | undefined {\n return isUndefined(val) || isNull(val);\n}\n/**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n */\nexport function isError(value: any): value is Error {\n if (!isObjectLike(value)) {\n return false;\n }\n const tag = getTag(value);\n return (\n tag === '[object Error]' ||\n tag === '[object DOMException]' ||\n (typeof value.message === 'string' && typeof value.name === 'string' && !isPlainObject(value))\n );\n}\nexport function isPlainObject(value: any): value is object {\n if (!isObjectLike(value) || getTag(value) !== '[object Object]') {\n return false;\n }\n if (Object.getPrototypeOf(value) === null) {\n return true;\n }\n let proto = value;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(value) === proto;\n}\n\nexport const isHttps = () => {\n return window.location.protocol.startsWith('https');\n};\nexport const isClient = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nexport const isIOS = /* #__PURE__ */ getIsIOS();\n\nfunction getIsIOS() {\n return (\n isClient &&\n window?.navigator?.userAgent &&\n (/iP(?:ad|hone|od)/.test(window.navigator.userAgent) ||\n // The new iPad Pro Gen3 does not identify itself as iPad, but as Macintosh.\n // https://github.com/vueuse/vueuse/issues/3577\n (window?.navigator?.maxTouchPoints > 2 && /iPad|Macintosh/.test(window?.navigator.userAgent)))\n );\n}\n\n/**\n * 文件类型枚举\n */\nexport enum FileType {\n Video = 'Video',\n Image = 'Image',\n Pdf = 'Pdf',\n Word = 'Word',\n Excel = 'Excel',\n Ppt = 'Ppt',\n Text = 'Text',\n Psd = 'Psd',\n Zip = 'Zip',\n}\n\n/**\n * 不同文件类型的扩展名配置\n */\nexport const FILE_EXTENSIONS: Record<FileType, readonly string[]> = {\n [FileType.Video]: ['mp4', 'avi', 'rmvb', 'rm', 'wmv', 'mpg', 'mpeg', 'mov', 'mkv', 'flv'],\n [FileType.Image]: ['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg', 'bmp'],\n [FileType.Pdf]: ['pdf'],\n [FileType.Word]: ['doc', 'docx'],\n [FileType.Excel]: ['xls', 'xlsx'],\n [FileType.Ppt]: ['ppt', 'pptx'],\n [FileType.Text]: ['txt'],\n [FileType.Psd]: ['psd'],\n [FileType.Zip]: ['zip', 'rar', '7z'],\n} as const;\n\n/**\n * 创建用于匹配文件扩展名的正则表达式\n * @param extensions 文件扩展名数组\n * @returns 用于匹配文件扩展名的正则表达式\n */\nconst createExtensionRegex = (extensions: readonly string[]): RegExp => {\n return new RegExp(`\\\\.(${extensions.join('|')})$`, 'i');\n};\n\n/**\n * 通用函数,用于检查URL是否匹配特定文件扩展名\n * @param url 要检查的文件URL或文件名\n * @param type 要检查的文件类型\n * @returns 布尔值,表示URL是否匹配该文件类型\n */\nconst isFileType = (url: string, type: FileType): boolean => {\n if (!isString(url)) return false;\n // 首先通过URL去除查询参数和哈希值\n const baseUrl = url.split('?')[0];\n const regex = createExtensionRegex(FILE_EXTENSIONS[type]);\n return regex.test(baseUrl);\n};\n\n/**\n * @description 判断是否为视频\n * @param url 文件链接 或 文件名\n */\nexport const isVideoUrl = (url: string): boolean => isFileType(url, FileType.Video);\n\n/**\n * @description 判断是否为图片\n * @param url 文件链接 或 文件名\n */\nexport const isImageUrl = (url: string): boolean => isFileType(url, FileType.Image);\n\n/**\n * @description 判断是否为PDF\n * @param url 文件链接 或 文件名\n */\nexport const isPDF = (url: string): boolean => isFileType(url, FileType.Pdf);\n\n/**\n * @description 是否为Word文档\n * @param url 文件链接 或 文件名\n */\nexport const isWord = (url: string): boolean => isFileType(url, FileType.Word);\n\n/**\n * @description 是否为Excel文件\n * @param url 文件链接 或 文件名\n */\nexport const isExcel = (url: string): boolean => isFileType(url, FileType.Excel);\n\n/**\n * @description 是否为PPT文件\n * @param url 文件链接 或 文件名\n */\nexport const isPPT = (url: string): boolean => isFileType(url, FileType.Ppt);\n\n/**\n * @description 是否为文本文件\n * @param url 文件链接 或 文件名\n */\nexport const isText = (url: string): boolean => isFileType(url, FileType.Text);\n\n/**\n * @description 是否为PSD文件\n * @param url 文件链接 或 文件名\n */\nexport const isPSD = (url: string): boolean => isFileType(url, FileType.Psd);\n\n/**\n * @description 判断是否为压缩包\n * @param url 文件链接 或 文件名\n */\nexport const isZip = (url: string): boolean => isFileType(url, FileType.Zip);\n\n/**\n * 移动设备正则表达式\n */\nexport const MOBILE_DEVICE_REGEX = /android|webos|iphone|ipod|blackberry|iemobile|opera mini/i;\n\n/**\n * 平板设备正则表达式\n */\nexport const TABLET_DEVICE_REGEX = /ipad|android(?!.*mobile)|tablet/i;\n\n/**\n * 钉钉浏览器正则表达式\n */\nexport const DINGTALK_REGEX = /dingtalk/i;\n\n/**\n * 判断是否为移动设备\n * @returns 是否为移动设备\n */\nexport const isMobile = () => {\n if (!isClient) return false;\n const ua = navigator.userAgent.toLowerCase();\n\n // 判断是否为移动设备\n const isMobileDevice = MOBILE_DEVICE_REGEX.test(ua);\n\n // 判断是否为平板设备\n const isTabletDevice = TABLET_DEVICE_REGEX.test(ua);\n // console.log(isMobileDevice, isTabletDevice);\n return isMobileDevice || isTabletDevice;\n};\n\n/**\n * 判断是否为钉钉浏览器\n * @returns 是否为钉钉浏览器\n */\nexport const isDingTalk = () => {\n if (!isClient) return false;\n const ua = navigator.userAgent.toLowerCase();\n return DINGTALK_REGEX.test(ua);\n};\n"],"names":["FileType"],"mappings":";;AAAA,MAAM,QAAA,GAAW,OAAO,SAAA,CAAU,QAAA;AAC3B,SAAS,OAAO,KAAA,EAAoB;AACzC,EAAA,IAAI,UAAU,IAAA,EAAM;AAClB,IAAA,OAAO,eAAA;AAAA,EACT,CAAA,MAAA,IAAW,UAAU,KAAA,CAAA,EAAW;AAC9B,IAAA,OAAO,oBAAA;AAAA,EACT;AACA,EAAA,OAAO,QAAA,CAAS,KAAK,KAAK,CAAA;AAC5B;AACO,SAAS,aAAa,KAAA,EAAqB;AAChD,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,IAAA;AAChD;AACO,SAAS,UAAU,KAAA,EAA8B;AACtD,EAAA,OAAO,KAAA,KAAU,QAAQ,KAAA,KAAU,KAAA,IAAU,aAAa,KAAK,CAAA,IAAK,MAAA,CAAO,KAAK,CAAA,KAAM,kBAAA;AACxF;AAEO,SAAS,SAAS,KAAA,EAA6B;AACpD,EAAA,OAAO,OAAO,UAAU,QAAA,IAAa,YAAA,CAAa,KAAK,CAAA,IAAK,MAAA,CAAO,KAAK,CAAA,KAAM,iBAAA;AAChF;AAEO,SAAS,SAAS,KAAA,EAA6B;AACpD,EAAA,OAAO,OAAO,UAAU,QAAA,IAAa,YAAA,CAAa,KAAK,CAAA,IAAK,MAAA,CAAO,KAAK,CAAA,KAAM,iBAAA;AAChF;AACO,SAAS,SAAS,KAAA,EAA6B;AACpD,EAAA,OAAO,OAAO,UAAU,QAAA,IAAa,YAAA,CAAa,KAAK,CAAA,IAAK,MAAA,CAAO,KAAK,CAAA,KAAM,iBAAA;AAChF;AACO,SAAS,OAAO,KAAA,EAA2B;AAChD,EAAA,OAAO,YAAA,CAAa,KAAK,CAAA,IAAK,MAAA,CAAO,KAAK,CAAA,KAAM,eAAA;AAClD;AACO,MAAM,UAAA,GAAa,CAAC,GAAA,KAAkC,OAAO,GAAA,KAAQ;AAIrE,SAAS,UAAU,GAAA,EAAyB;AACjD,EAAA,OAAO,QAAA,CAAS,GAAG,CAAA,IAAK,GAAA,GAAM,CAAA,KAAM,CAAA;AACtC;AAIO,SAAS,UAAU,GAAA,EAAyB;AACjD,EAAA,OAAO,QAAA,CAAS,GAAG,CAAA,IAAK,GAAA,GAAM,CAAA,KAAM,CAAA;AACtC;AAIO,SAAS,WAAW,GAAA,EAAyB;AAClD,EAAA,OAAO,QAAA,CAAS,GAAG,CAAA,IAAK,GAAA,GAAM,CAAA;AAChC;AAIO,SAAS,WAAW,GAAA,EAAyB;AAClD,EAAA,OAAO,QAAA,CAAS,GAAG,CAAA,IAAK,GAAA,GAAM,CAAA;AAChC;AAIO,SAAS,MAAM,GAAA,EAAyB;AAC7C,EAAA,OAAO,QAAA,CAAS,GAAG,CAAA,IAAK,GAAA,GAAM,CAAA,KAAM,CAAA;AACtC;AAIO,SAAS,OAAO,GAAA,EAAyB;AAC9C,EAAA,OAAO,QAAA,CAAS,GAAG,CAAA,IAAK,GAAA,GAAM,CAAA,KAAM,CAAA;AACtC;AAEO,SAAS,YAAY,GAAA,EAA4B;AACtD,EAAA,OAAO,GAAA,KAAQ,KAAA,CAAA;AACjB;AACO,SAAS,OAAO,GAAA,EAAuB;AAC5C,EAAA,OAAO,GAAA,KAAQ,IAAA;AACjB;AACO,SAAS,MAAM,GAAA,EAAmC;AACvD,EAAA,OAAO,WAAA,CAAY,GAAG,CAAA,IAAK,MAAA,CAAO,GAAG,CAAA;AACvC;AAKO,SAAS,QAAQ,KAAA,EAA4B;AAClD,EAAA,IAAI,CAAC,YAAA,CAAa,KAAK,CAAA,EAAG;AACxB,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,MAAM,GAAA,GAAM,OAAO,KAAK,CAAA;AACxB,EAAA,OACE,GAAA,KAAQ,gBAAA,IACR,GAAA,KAAQ,uBAAA,IACP,OAAO,KAAA,CAAM,OAAA,KAAY,QAAA,IAAY,OAAO,KAAA,CAAM,IAAA,KAAS,QAAA,IAAY,CAAC,cAAc,KAAK,CAAA;AAEhG;AACO,SAAS,cAAc,KAAA,EAA6B;AACzD,EAAA,IAAI,CAAC,YAAA,CAAa,KAAK,KAAK,MAAA,CAAO,KAAK,MAAM,iBAAA,EAAmB;AAC/D,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,MAAA,CAAO,cAAA,CAAe,KAAK,CAAA,KAAM,IAAA,EAAM;AACzC,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,IAAI,KAAA,GAAQ,KAAA;AACZ,EAAA,OAAO,MAAA,CAAO,cAAA,CAAe,KAAK,CAAA,KAAM,IAAA,EAAM;AAC5C,IAAA,KAAA,GAAQ,MAAA,CAAO,eAAe,KAAK,CAAA;AAAA,EACrC;AACA,EAAA,OAAO,MAAA,CAAO,cAAA,CAAe,KAAK,CAAA,KAAM,KAAA;AAC1C;AAEO,MAAM,UAAU,MAAM;AAC3B,EAAA,OAAO,MAAA,CAAO,QAAA,CAAS,QAAA,CAAS,UAAA,CAAW,OAAO,CAAA;AACpD;AACO,MAAM,QAAA,GAAW,OAAO,MAAA,KAAW,WAAA,IAAe,OAAO,QAAA,KAAa;AAEtE,MAAM,wBAAwB,QAAA;AAErC,SAAS,QAAA,GAAW;AAClB,EAAA,OACE,QAAA,IACA,QAAQ,SAAA,EAAW,SAAA,KAClB,mBAAmB,IAAA,CAAK,MAAA,CAAO,UAAU,SAAS,CAAA;AAAA;AAAA,EAGhD,MAAA,EAAQ,WAAW,cAAA,GAAiB,CAAA,IAAK,iBAAiB,IAAA,CAAK,MAAA,EAAQ,UAAU,SAAS,CAAA,CAAA;AAEjG;AAKO,IAAK,QAAA,qBAAAA,SAAAA,KAAL;AACL,EAAAA,UAAA,OAAA,CAAA,GAAQ,OAAA;AACR,EAAAA,UAAA,OAAA,CAAA,GAAQ,OAAA;AACR,EAAAA,UAAA,KAAA,CAAA,GAAM,KAAA;AACN,EAAAA,UAAA,MAAA,CAAA,GAAO,MAAA;AACP,EAAAA,UAAA,OAAA,CAAA,GAAQ,OAAA;AACR,EAAAA,UAAA,KAAA,CAAA,GAAM,KAAA;AACN,EAAAA,UAAA,MAAA,CAAA,GAAO,MAAA;AACP,EAAAA,UAAA,KAAA,CAAA,GAAM,KAAA;AACN,EAAAA,UAAA,KAAA,CAAA,GAAM,KAAA;AATI,EAAA,OAAAA,SAAAA;AAAA,CAAA,EAAA,QAAA,IAAA,EAAA;AAeL,MAAM,eAAA,GAAuD;AAAA,EAClE,CAAC,OAAA,eAAiB,CAAC,KAAA,EAAO,KAAA,EAAO,MAAA,EAAQ,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,OAAO,KAAK,CAAA;AAAA,EACxF,CAAC,OAAA,eAAiB,CAAC,KAAA,EAAO,QAAQ,KAAA,EAAO,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,KAAK,CAAA;AAAA,EACpE,CAAC,KAAA,aAAe,CAAC,KAAK,CAAA;AAAA,EACtB,CAAC,MAAA,cAAgB,CAAC,OAAO,MAAM,CAAA;AAAA,EAC/B,CAAC,OAAA,eAAiB,CAAC,OAAO,MAAM,CAAA;AAAA,EAChC,CAAC,KAAA,aAAe,CAAC,OAAO,MAAM,CAAA;AAAA,EAC9B,CAAC,MAAA,cAAgB,CAAC,KAAK,CAAA;AAAA,EACvB,CAAC,KAAA,aAAe,CAAC,KAAK,CAAA;AAAA,EACtB,CAAC,KAAA,aAAe,CAAC,KAAA,EAAO,OAAO,IAAI;AACrC;AAOA,MAAM,oBAAA,GAAuB,CAAC,UAAA,KAA0C;AACtE,EAAA,OAAO,IAAI,OAAO,CAAA,IAAA,EAAO,UAAA,CAAW,KAAK,GAAG,CAAC,MAAM,GAAG,CAAA;AACxD,CAAA;AAQA,MAAM,UAAA,GAAa,CAAC,GAAA,EAAa,IAAA,KAA4B;AAC3D,EAAA,IAAI,CAAC,QAAA,CAAS,GAAG,CAAA,EAAG,OAAO,KAAA;AAE3B,EAAA,MAAM,OAAA,GAAU,GAAA,CAAI,KAAA,CAAM,GAAG,EAAE,CAAC,CAAA;AAChC,EAAA,MAAM,KAAA,GAAQ,oBAAA,CAAqB,eAAA,CAAgB,IAAI,CAAC,CAAA;AACxD,EAAA,OAAO,KAAA,CAAM,KAAK,OAAO,CAAA;AAC3B,CAAA;AAMO,MAAM,UAAA,GAAa,CAAC,GAAA,KAAyB,UAAA,CAAW,KAAK,OAAA;AAM7D,MAAM,UAAA,GAAa,CAAC,GAAA,KAAyB,UAAA,CAAW,KAAK,OAAA;AAM7D,MAAM,KAAA,GAAQ,CAAC,GAAA,KAAyB,UAAA,CAAW,KAAK,KAAA;AAMxD,MAAM,MAAA,GAAS,CAAC,GAAA,KAAyB,UAAA,CAAW,KAAK,MAAA;AAMzD,MAAM,OAAA,GAAU,CAAC,GAAA,KAAyB,UAAA,CAAW,KAAK,OAAA;AAM1D,MAAM,KAAA,GAAQ,CAAC,GAAA,KAAyB,UAAA,CAAW,KAAK,KAAA;AAMxD,MAAM,MAAA,GAAS,CAAC,GAAA,KAAyB,UAAA,CAAW,KAAK,MAAA;AAMzD,MAAM,KAAA,GAAQ,CAAC,GAAA,KAAyB,UAAA,CAAW,KAAK,KAAA;AAMxD,MAAM,KAAA,GAAQ,CAAC,GAAA,KAAyB,UAAA,CAAW,KAAK,KAAA;AAKxD,MAAM,mBAAA,GAAsB;AAK5B,MAAM,mBAAA,GAAsB;AAK5B,MAAM,cAAA,GAAiB;AAMvB,MAAM,WAAW,MAAM;AAC5B,EAAA,IAAI,CAAC,UAAU,OAAO,KAAA;AACtB,EAAA,MAAM,EAAA,GAAK,SAAA,CAAU,SAAA,CAAU,WAAA,EAAY;AAG3C,EAAA,MAAM,cAAA,GAAiB,mBAAA,CAAoB,IAAA,CAAK,EAAE,CAAA;AAGlD,EAAA,MAAM,cAAA,GAAiB,mBAAA,CAAoB,IAAA,CAAK,EAAE,CAAA;AAElD,EAAA,OAAO,cAAA,IAAkB,cAAA;AAC3B;AAMO,MAAM,aAAa,MAAM;AAC9B,EAAA,IAAI,CAAC,UAAU,OAAO,KAAA;AACtB,EAAA,MAAM,EAAA,GAAK,SAAA,CAAU,SAAA,CAAU,WAAA,EAAY;AAC3C,EAAA,OAAO,cAAA,CAAe,KAAK,EAAE,CAAA;AAC/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
var install = require('./install.js');
|
|
4
4
|
var resolver = require('./resolver.js');
|
|
5
5
|
require('./typescript.js');
|
|
6
|
+
var router = require('./router.js');
|
|
6
7
|
|
|
7
8
|
|
|
8
9
|
|
|
@@ -13,4 +14,6 @@ exports.withNoopInstall = install.withNoopInstall;
|
|
|
13
14
|
exports.GiimeResolver = resolver.GiimeResolver;
|
|
14
15
|
exports.bypass = resolver.bypass;
|
|
15
16
|
exports.kebabCase = resolver.kebabCase;
|
|
17
|
+
exports.getRouteParams = router.getRouteParams;
|
|
18
|
+
exports.getRouteQuery = router.getRouteQuery;
|
|
16
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { useRoute } from 'vue-router';
|
|
2
|
+
import type { RouteParamValueRaw } from 'vue-router';
|
|
3
|
+
export type RouteQueryValueRaw = RouteParamValueRaw | string[];
|
|
4
|
+
export type RouteParamsValueRaw = RouteParamValueRaw;
|
|
5
|
+
/** 转换函数类型,可以是函数或包含 get 方法的对象 */
|
|
6
|
+
export type TransformFunction<V, R> = ((val: V) => R) | {
|
|
7
|
+
get?: (value: V) => R;
|
|
8
|
+
};
|
|
9
|
+
export interface GetRouteValueOptions<V, R> {
|
|
10
|
+
/** 默认值 */
|
|
11
|
+
defaultValue?: V;
|
|
12
|
+
/** 路由实例,不传则使用 useRoute() */
|
|
13
|
+
route?: ReturnType<typeof useRoute>;
|
|
14
|
+
/** 转换函数,可以是函数或包含 get 方法的对象 */
|
|
15
|
+
transform?: TransformFunction<V, R>;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* 获取路由 query 参数的值(非响应式)
|
|
19
|
+
* @param name - query 参数名称
|
|
20
|
+
* @param options - 配置选项
|
|
21
|
+
* @returns 转换后的 query 值
|
|
22
|
+
*/
|
|
23
|
+
export declare function getRouteQuery<T extends RouteQueryValueRaw = RouteQueryValueRaw, K = T>(name: string, options?: GetRouteValueOptions<T, K>): K;
|
|
24
|
+
/**
|
|
25
|
+
* 获取路由 params 参数的值(非响应式)
|
|
26
|
+
* @param name - params 参数名称
|
|
27
|
+
* @param options - 配置选项
|
|
28
|
+
* @returns 转换后的 params 值
|
|
29
|
+
*/
|
|
30
|
+
export declare function getRouteParams<T extends RouteParamsValueRaw = RouteParamsValueRaw, K = T>(name: string, options?: GetRouteValueOptions<T, K>): K;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var vueRouter = require('vue-router');
|
|
4
|
+
|
|
5
|
+
function transformRouteValue(value, defaultValue, transform) {
|
|
6
|
+
const finalValue = value !== void 0 ? value : defaultValue;
|
|
7
|
+
if (!transform) {
|
|
8
|
+
return finalValue;
|
|
9
|
+
}
|
|
10
|
+
if (typeof transform === "function") {
|
|
11
|
+
return transform(finalValue);
|
|
12
|
+
}
|
|
13
|
+
if (transform.get) {
|
|
14
|
+
return transform.get(finalValue);
|
|
15
|
+
}
|
|
16
|
+
return finalValue;
|
|
17
|
+
}
|
|
18
|
+
function getRouteQuery(name, options) {
|
|
19
|
+
const { route = vueRouter.useRoute(), transform, defaultValue } = options || {};
|
|
20
|
+
const queryValue = route.query[name];
|
|
21
|
+
return transformRouteValue(queryValue, defaultValue, transform);
|
|
22
|
+
}
|
|
23
|
+
function getRouteParams(name, options) {
|
|
24
|
+
const { route = vueRouter.useRoute(), transform, defaultValue } = options || {};
|
|
25
|
+
const paramsValue = route.params[name];
|
|
26
|
+
return transformRouteValue(paramsValue, defaultValue, transform);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
exports.getRouteParams = getRouteParams;
|
|
30
|
+
exports.getRouteQuery = getRouteQuery;
|
|
31
|
+
//# sourceMappingURL=router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router.js","sources":["../../../../../../packages/utils/src/vue/router.ts"],"sourcesContent":["import { useRoute } from 'vue-router';\nimport type { RouteParamValueRaw } from 'vue-router';\n\nexport type RouteQueryValueRaw = RouteParamValueRaw | string[];\nexport type RouteParamsValueRaw = RouteParamValueRaw;\n\n/** 转换函数类型,可以是函数或包含 get 方法的对象 */\nexport type TransformFunction<V, R> =\n | ((val: V) => R)\n | {\n get?: (value: V) => R;\n };\n\nexport interface GetRouteValueOptions<V, R> {\n /** 默认值 */\n defaultValue?: V;\n /** 路由实例,不传则使用 useRoute() */\n route?: ReturnType<typeof useRoute>;\n /** 转换函数,可以是函数或包含 get 方法的对象 */\n transform?: TransformFunction<V, R>;\n}\n\n/**\n * 通用的路由值获取和转换逻辑\n * @param value - 原始值\n * @param defaultValue - 默认值\n * @param transform - 转换函数\n * @returns 转换后的值\n */\nfunction transformRouteValue<T, K>(value: T | undefined, defaultValue: T | undefined, transform?: TransformFunction<T, K>): K {\n // 确定最终值\n const finalValue = value !== undefined ? value : defaultValue;\n\n // 如果没有 transform,直接返回\n if (!transform) {\n return finalValue as unknown as K;\n }\n\n // 如果 transform 是函数,直接调用\n if (typeof transform === 'function') {\n return transform(finalValue as T);\n }\n\n // 如果 transform 是对象,使用 get 方法\n if (transform.get) {\n return transform.get(finalValue as T);\n }\n\n return finalValue as unknown as K;\n}\n\n/**\n * 获取路由 query 参数的值(非响应式)\n * @param name - query 参数名称\n * @param options - 配置选项\n * @returns 转换后的 query 值\n */\nexport function getRouteQuery<T extends RouteQueryValueRaw = RouteQueryValueRaw, K = T>(name: string, options?: GetRouteValueOptions<T, K>): K {\n const { route = useRoute(), transform, defaultValue } = options || {};\n\n // 获取原始 query 值\n const queryValue = route.query[name] as T | undefined;\n\n return transformRouteValue(queryValue, defaultValue, transform);\n}\n\n/**\n * 获取路由 params 参数的值(非响应式)\n * @param name - params 参数名称\n * @param options - 配置选项\n * @returns 转换后的 params 值\n */\nexport function getRouteParams<T extends RouteParamsValueRaw = RouteParamsValueRaw, K = T>(name: string, options?: GetRouteValueOptions<T, K>): K {\n const { route = useRoute(), transform, defaultValue } = options || {};\n\n // 获取原始 params 值\n const paramsValue = route.params[name] as T | undefined;\n\n return transformRouteValue(paramsValue, defaultValue, transform);\n}\n"],"names":["useRoute"],"mappings":";;;;AA6BA,SAAS,mBAAA,CAA0B,KAAA,EAAsB,YAAA,EAA6B,SAAA,EAAwC;AAE5H,EAAA,MAAM,UAAA,GAAa,KAAA,KAAU,KAAA,CAAA,GAAY,KAAA,GAAQ,YAAA;AAGjD,EAAA,IAAI,CAAC,SAAA,EAAW;AACd,IAAA,OAAO,UAAA;AAAA,EACT;AAGA,EAAA,IAAI,OAAO,cAAc,UAAA,EAAY;AACnC,IAAA,OAAO,UAAU,UAAe,CAAA;AAAA,EAClC;AAGA,EAAA,IAAI,UAAU,GAAA,EAAK;AACjB,IAAA,OAAO,SAAA,CAAU,IAAI,UAAe,CAAA;AAAA,EACtC;AAEA,EAAA,OAAO,UAAA;AACT;AAQO,SAAS,aAAA,CAAwE,MAAc,OAAA,EAAyC;AAC7I,EAAA,MAAM,EAAE,QAAQA,kBAAA,EAAS,EAAG,WAAW,YAAA,EAAa,GAAI,WAAW,EAAC;AAGpE,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,KAAA,CAAM,IAAI,CAAA;AAEnC,EAAA,OAAO,mBAAA,CAAoB,UAAA,EAAY,YAAA,EAAc,SAAS,CAAA;AAChE;AAQO,SAAS,cAAA,CAA2E,MAAc,OAAA,EAAyC;AAChJ,EAAA,MAAM,EAAE,QAAQA,kBAAA,EAAS,EAAG,WAAW,YAAA,EAAa,GAAI,WAAW,EAAC;AAGpE,EAAA,MAAM,WAAA,GAAc,KAAA,CAAM,MAAA,CAAO,IAAI,CAAA;AAErC,EAAA,OAAO,mBAAA,CAAoB,WAAA,EAAa,YAAA,EAAc,SAAS,CAAA;AACjE;;;;;"}
|