@tmagic/utils 1.3.4 → 1.3.6
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/tmagic-utils.js +16 -40
- package/dist/tmagic-utils.js.map +1 -1
- package/dist/tmagic-utils.umd.cjs +16 -40
- package/dist/tmagic-utils.umd.cjs.map +1 -1
- package/package.json +5 -5
- package/src/index.ts +14 -26
- package/types/index.d.ts +1 -1
package/dist/tmagic-utils.js
CHANGED
|
@@ -2,7 +2,7 @@ import dayjs from 'dayjs';
|
|
|
2
2
|
import utc from 'dayjs/plugin/utc';
|
|
3
3
|
import { NodeType } from '@tmagic/schema';
|
|
4
4
|
|
|
5
|
-
const asyncLoadJs = (() => {
|
|
5
|
+
const asyncLoadJs = /* @__PURE__ */ (() => {
|
|
6
6
|
const documentMap = /* @__PURE__ */ new Map();
|
|
7
7
|
return (url, crossOrigin, document = globalThis.document) => {
|
|
8
8
|
let loaded = documentMap.get(document);
|
|
@@ -37,7 +37,7 @@ const asyncLoadJs = (() => {
|
|
|
37
37
|
return loaded.get(url);
|
|
38
38
|
};
|
|
39
39
|
})();
|
|
40
|
-
const asyncLoadCss = (() => {
|
|
40
|
+
const asyncLoadCss = /* @__PURE__ */ (() => {
|
|
41
41
|
const documentMap = /* @__PURE__ */ new Map();
|
|
42
42
|
return (url, document = globalThis.document) => {
|
|
43
43
|
let loaded = documentMap.get(document);
|
|
@@ -284,58 +284,34 @@ const compiledNode = (compile, node, dataSourceDeps = {}, sourceId) => {
|
|
|
284
284
|
}
|
|
285
285
|
return node;
|
|
286
286
|
};
|
|
287
|
-
const compiledCond = (op, fieldValue, value, range) => {
|
|
287
|
+
const compiledCond = (op, fieldValue, value, range = []) => {
|
|
288
288
|
switch (op) {
|
|
289
289
|
case "is":
|
|
290
|
-
|
|
291
|
-
return false;
|
|
292
|
-
break;
|
|
290
|
+
return fieldValue === value;
|
|
293
291
|
case "not":
|
|
294
|
-
|
|
295
|
-
return false;
|
|
296
|
-
break;
|
|
292
|
+
return fieldValue !== value;
|
|
297
293
|
case "=":
|
|
298
|
-
|
|
299
|
-
return false;
|
|
300
|
-
break;
|
|
294
|
+
return fieldValue === value;
|
|
301
295
|
case "!=":
|
|
302
|
-
|
|
303
|
-
return false;
|
|
304
|
-
break;
|
|
296
|
+
return fieldValue !== value;
|
|
305
297
|
case ">":
|
|
306
|
-
|
|
307
|
-
return false;
|
|
308
|
-
break;
|
|
298
|
+
return fieldValue > value;
|
|
309
299
|
case ">=":
|
|
310
|
-
|
|
311
|
-
return false;
|
|
312
|
-
break;
|
|
300
|
+
return fieldValue >= value;
|
|
313
301
|
case "<":
|
|
314
|
-
|
|
315
|
-
return false;
|
|
316
|
-
break;
|
|
302
|
+
return fieldValue < value;
|
|
317
303
|
case "<=":
|
|
318
|
-
|
|
319
|
-
return false;
|
|
320
|
-
break;
|
|
304
|
+
return fieldValue >= value;
|
|
321
305
|
case "between":
|
|
322
|
-
|
|
323
|
-
return false;
|
|
324
|
-
break;
|
|
306
|
+
return range.length > 1 && fieldValue >= range[0] && fieldValue <= range[1];
|
|
325
307
|
case "not_between":
|
|
326
|
-
|
|
327
|
-
return false;
|
|
328
|
-
break;
|
|
308
|
+
return range.length < 2 || fieldValue < range[0] || fieldValue > range[1];
|
|
329
309
|
case "include":
|
|
330
|
-
|
|
331
|
-
return false;
|
|
332
|
-
break;
|
|
310
|
+
return fieldValue?.includes?.(value);
|
|
333
311
|
case "not_include":
|
|
334
|
-
|
|
335
|
-
return false;
|
|
336
|
-
break;
|
|
312
|
+
return typeof fieldValue === "undefined" || !fieldValue.includes?.(value);
|
|
337
313
|
}
|
|
338
|
-
return
|
|
314
|
+
return false;
|
|
339
315
|
};
|
|
340
316
|
const getDefaultValueFromFields = (fields) => {
|
|
341
317
|
const data = {};
|
package/dist/tmagic-utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tmagic-utils.js","sources":["../src/dom.ts","../src/index.ts"],"sourcesContent":["export const asyncLoadJs = (() => {\n // 正在加载或加载成功的存入此Map中\n const documentMap = new Map();\n\n return (url: string, crossOrigin?: string, document = globalThis.document) => {\n let loaded = documentMap.get(document);\n if (!loaded) {\n loaded = new Map();\n documentMap.set(document, loaded);\n }\n\n // 正在加载或已经加载成功的,直接返回\n if (loaded.get(url)) return loaded.get(url);\n\n const load = new Promise<void>((resolve, reject) => {\n const script = document.createElement('script');\n script.type = 'text/javascript';\n if (crossOrigin) {\n script.crossOrigin = crossOrigin;\n }\n script.src = url;\n document.body.appendChild(script);\n script.onload = () => {\n resolve();\n };\n script.onerror = () => {\n reject(new Error('加载失败'));\n };\n setTimeout(() => {\n reject(new Error('timeout'));\n }, 60 * 1000);\n }).catch((err) => {\n // 加载失败的,从map中移除,第二次加载时,可以再次执行加载\n loaded.delete(url);\n throw err;\n });\n\n loaded.set(url, load);\n return loaded.get(url);\n };\n})();\n\nexport const asyncLoadCss = (() => {\n // 正在加载或加载成功的存入此Map中\n const documentMap = new Map();\n\n return (url: string, document = globalThis.document) => {\n let loaded = documentMap.get(document);\n if (!loaded) {\n loaded = new Map();\n documentMap.set(document, loaded);\n }\n\n // 正在加载或已经加载成功的,直接返回\n if (loaded.get(url)) return loaded.get(url);\n\n const load = new Promise<void>((resolve, reject) => {\n const node = document.createElement('link');\n node.rel = 'stylesheet';\n node.href = url;\n document.head.appendChild(node);\n node.onload = () => {\n resolve();\n };\n node.onerror = () => {\n reject(new Error('加载失败'));\n };\n setTimeout(() => {\n reject(new Error('timeout'));\n }, 60 * 1000);\n }).catch((err) => {\n // 加载失败的,从map中移除,第二次加载时,可以再次执行加载\n loaded.delete(url);\n throw err;\n });\n\n loaded.set(url, load);\n return loaded.get(url);\n };\n})();\n\nexport const addClassName = (el: Element, doc: Document, className: string) => {\n const oldEl = doc.querySelector(`.${className}`);\n if (oldEl && oldEl !== el) removeClassName(oldEl, className);\n if (!el.classList.contains(className)) el.classList.add(className);\n};\n\nexport const removeClassName = (el: Element, ...className: string[]) => {\n el.classList.remove(...className);\n};\n\nexport const removeClassNameByClassName = (doc: Document, className: string) => {\n const el: HTMLElement | null = doc.querySelector(`.${className}`);\n el?.classList.remove(className);\n return el;\n};\n\nexport const injectStyle = (doc: Document, style: string) => {\n const styleEl = doc.createElement('style');\n styleEl.innerHTML = style;\n doc.head.appendChild(styleEl);\n return styleEl;\n};\n\nexport const createDiv = ({ className, cssText }: { className: string; cssText: string }) => {\n const el = globalThis.document.createElement('div');\n el.className = className;\n el.style.cssText = cssText;\n return el;\n};\n\nexport const getDocument = () => globalThis.document;\n","/*\n * Tencent is pleased to support the open source community by making TMagicEditor available.\n *\n * Copyright (C) 2023 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\n\nimport type { DataSchema, DataSourceDeps, Id, MComponent, MNode } from '@tmagic/schema';\nimport { NodeType } from '@tmagic/schema';\n\nexport * from './dom';\n\ndayjs.extend(utc);\n\nexport const sleep = (ms: number): Promise<void> =>\n new Promise((resolve) => {\n const timer = setTimeout(() => {\n clearTimeout(timer);\n resolve();\n }, ms);\n });\n\nexport const datetimeFormatter = (\n v: string | Date,\n defaultValue = '-',\n format = 'YYYY-MM-DD HH:mm:ss',\n): string | number => {\n if (v) {\n let time = null;\n if (['x', 'timestamp'].includes(format)) {\n time = dayjs(v).valueOf();\n } else if ((typeof v === 'string' && v.includes('Z')) || v.constructor === Date) {\n // UTC字符串时间或Date对象格式化为北京时间\n time = dayjs(v).utcOffset(8).format(format);\n } else {\n time = dayjs(v).format(format);\n }\n\n // 格式化为北京时间\n if (time !== 'Invalid Date') {\n return time;\n }\n return defaultValue;\n }\n return defaultValue;\n};\n\n// 驼峰转换横线\nexport const toLine = (name = '') => name.replace(/\\B([A-Z])/g, '-$1').toLowerCase();\n\nexport const toHump = (name = ''): string => name.replace(/-(\\w)/g, (all, letter) => letter.toUpperCase());\n\nexport const emptyFn = (): any => undefined;\n\n/**\n * 通过id获取组件在应用的子孙路径\n * @param {number | string} id 组件id\n * @param {Array} data 要查找的根容器节点\n * @return {Array} 组件在data中的子孙路径\n */\nexport const getNodePath = (id: Id, data: MNode[] = []): MNode[] => {\n const path: MNode[] = [];\n\n const get = function (id: number | string, data: MNode[]): MNode | null {\n if (!Array.isArray(data)) {\n return null;\n }\n\n for (let i = 0, l = data.length; i < l; i++) {\n const item = data[i];\n\n path.push(item);\n if (`${item.id}` === `${id}`) {\n return item;\n }\n\n if (item.items) {\n const node = get(id, item.items);\n if (node) {\n return node;\n }\n }\n\n path.pop();\n }\n\n return null;\n };\n\n get(id, data);\n\n return path;\n};\n\nexport const filterXSS = (str: string) =>\n str.replace(/</g, '<').replace(/>/g, '>').replace(/\"/g, '"').replace(/'/g, ''');\n\nexport const getUrlParam = (param: string, url?: string) => {\n const u = url || location.href;\n const reg = new RegExp(`[?&#]${param}=([^&#]+)`, 'gi');\n\n const matches = u.match(reg);\n let strArr;\n if (matches && matches.length > 0) {\n strArr = matches[matches.length - 1].split('=');\n if (strArr && strArr.length > 1) {\n // 过滤XSS字符\n return filterXSS(strArr[1]);\n }\n return '';\n }\n return '';\n};\n\nexport const isObject = (obj: any) => Object.prototype.toString.call(obj) === '[object Object]';\n\nexport const isPop = (node: MComponent | null): boolean => Boolean(node?.type?.toLowerCase().endsWith('pop'));\n\nexport const isPage = (node?: MComponent | null): boolean => {\n if (!node) return false;\n return Boolean(node.type?.toLowerCase() === NodeType.PAGE);\n};\n\nexport const isNumber = (value: string) => /^(-?\\d+)(\\.\\d+)?$/.test(value);\n\nexport const getHost = (targetUrl: string) => targetUrl.match(/\\/\\/([^/]+)/)?.[1];\n\nexport const isSameDomain = (targetUrl = '', source = globalThis.location.host) => {\n const isHttpUrl = /^(http[s]?:)?\\/\\//.test(targetUrl);\n\n if (!isHttpUrl) return true;\n\n return getHost(targetUrl) === source;\n};\n\n/**\n * 生成指定位数的GUID,无【-】格式\n * @param digit 位数,默认值8\n * @returns\n */\nexport const guid = (digit = 8): string =>\n 'x'.repeat(digit).replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n\nexport const getValueByKeyPath: any = (keys: string, value: Record<string | number, any> = {}) => {\n const path = keys.split('.');\n const pathLength = path.length;\n\n return path.reduce((accumulator, currentValue: any, currentIndex: number) => {\n if (Object.prototype.toString.call(accumulator) === '[object Object]' || Array.isArray(accumulator)) {\n return accumulator[currentValue];\n }\n\n if (pathLength - 1 === currentIndex) {\n return undefined;\n }\n\n return {};\n }, value);\n};\n\nexport const getNodes = (ids: Id[], data: MNode[] = []): MNode[] => {\n const nodes: MNode[] = [];\n\n const get = function (ids: Id[], data: MNode[]) {\n if (!Array.isArray(data)) {\n return;\n }\n\n for (let i = 0, l = data.length; i < l; i++) {\n const item = data[i];\n const index = ids.findIndex((id: Id) => `${id}` === `${item.id}`);\n\n if (index > -1) {\n ids.slice(index, 1);\n nodes.push(item);\n }\n\n if (item.items) {\n get(ids, item.items);\n }\n }\n };\n\n get(ids, data);\n\n return nodes;\n};\n\nexport const getDepKeys = (dataSourceDeps: DataSourceDeps = {}, nodeId: Id) =>\n Array.from(\n Object.values(dataSourceDeps).reduce((prev, cur) => {\n (cur[nodeId]?.keys || []).forEach((key) => prev.add(key));\n return prev;\n }, new Set<Id>()),\n );\n\nexport const getDepNodeIds = (dataSourceDeps: DataSourceDeps = {}) =>\n Array.from(\n Object.values(dataSourceDeps).reduce((prev, cur) => {\n Object.keys(cur).forEach((id) => {\n prev.add(id);\n });\n return prev;\n }, new Set<string>()),\n );\n\n/**\n * 将新节点更新到data或者parentId对应的节点的子节点中\n * @param newNode 新节点\n * @param data 需要修改的数据\n * @param parentId 父节点 id\n */\nexport const replaceChildNode = (newNode: MNode, data?: MNode[], parentId?: Id) => {\n const path = getNodePath(newNode.id, data);\n const node = path.pop();\n let parent = path.pop();\n\n if (parentId) {\n parent = getNodePath(parentId, data).pop();\n }\n\n if (!node) throw new Error('未找到目标节点');\n if (!parent) throw new Error('未找到父节点');\n\n const index = parent.items?.findIndex((child: MNode) => child.id === node.id);\n parent.items.splice(index, 1, newNode);\n};\n\nexport const compiledNode = (\n compile: (value: any) => any,\n node: MNode,\n dataSourceDeps: DataSourceDeps = {},\n sourceId?: Id,\n) => {\n let keys: Id[] = [];\n if (!sourceId) {\n keys = getDepKeys(dataSourceDeps, node.id);\n } else {\n const dep = dataSourceDeps[sourceId];\n keys = dep?.[node.id].keys || [];\n }\n\n const keyPrefix = '__magic__';\n\n keys.forEach((key) => {\n const keyPath = `${key}`.split('.');\n const keyPathLength = keyPath.length;\n keyPath.reduce((accumulator, currentValue: any, currentIndex) => {\n if (keyPathLength - 1 === currentIndex) {\n const cacheKey = `${keyPrefix}${currentValue}`;\n\n if (typeof accumulator[cacheKey] === 'undefined') {\n accumulator[cacheKey] = accumulator[currentValue];\n }\n\n try {\n accumulator[currentValue] = compile(accumulator[cacheKey]);\n } catch (e) {\n console.error(e);\n accumulator[currentValue] = '';\n }\n\n return accumulator;\n }\n\n if (isObject(accumulator) || Array.isArray(accumulator)) {\n return accumulator[currentValue];\n }\n\n return {};\n }, node);\n });\n\n if (Array.isArray(node.items)) {\n node.items.forEach((item) => compiledNode(compile, item, dataSourceDeps));\n }\n\n return node;\n};\n\nexport const compiledCond = (op: string, fieldValue: any, value: any, range: [number, number]): boolean => {\n switch (op) {\n case 'is':\n if (fieldValue !== value) return false;\n break;\n case 'not':\n if (fieldValue === value) return false;\n break;\n case '=':\n if (fieldValue !== value) return false;\n break;\n case '!=':\n if (fieldValue === value) return false;\n break;\n case '>':\n if (fieldValue <= value) return false;\n break;\n case '>=':\n if (fieldValue < value) return false;\n break;\n case '<':\n if (fieldValue >= value) return false;\n break;\n case '<=':\n if (fieldValue > value) return false;\n break;\n case 'between':\n if (fieldValue < range[0] || fieldValue > range[1]) return false;\n break;\n case 'not_between':\n if (fieldValue >= range[0] && fieldValue <= range[1]) return false;\n break;\n case 'include':\n if (typeof fieldValue !== 'undefined' && !fieldValue.includes?.(value)) return false;\n break;\n case 'not_include':\n if (typeof fieldValue !== 'undefined' && fieldValue.includes?.(value)) return false;\n break;\n default:\n break;\n }\n\n return true;\n};\n\nexport const getDefaultValueFromFields = (fields: DataSchema[]) => {\n const data: Record<string, any> = {};\n\n const defaultValue: Record<string, any> = {\n string: undefined,\n object: {},\n array: [],\n boolean: undefined,\n number: undefined,\n null: null,\n any: undefined,\n };\n\n fields.forEach((field) => {\n if (typeof field.defaultValue !== 'undefined') {\n if (field.type === 'array' && !Array.isArray(field.defaultValue)) {\n data[field.name] = defaultValue.array;\n return;\n }\n\n if (field.type === 'object' && !isObject(field.defaultValue)) {\n if (typeof field.defaultValue === 'string') {\n try {\n data[field.name] = JSON.parse(field.defaultValue);\n } catch (e) {\n data[field.name] = defaultValue.object;\n }\n return;\n }\n\n data[field.name] = defaultValue.object;\n return;\n }\n\n data[field.name] = field.defaultValue;\n return;\n }\n\n if (field.type === 'object') {\n data[field.name] = field.fields ? getDefaultValueFromFields(field.fields) : defaultValue.object;\n return;\n }\n\n if (field.type) {\n data[field.name] = defaultValue[field.type];\n return;\n }\n\n data[field.name] = undefined;\n });\n\n return data;\n};\n\nexport const DATA_SOURCE_FIELDS_SELECT_VALUE_PREFIX = 'ds-field::';\n\nexport const getKeys = Object.keys as <T extends object>(obj: T) => Array<keyof T>;\n\nexport const calculatePercentage = (value: number, percentageStr: string) => {\n const percentage = globalThis.parseFloat(percentageStr) / 100; // 先将百分比字符串转换为浮点数,并除以100转换为小数\n const result = value * percentage;\n return result;\n};\n\nexport const isPercentage = (value: number | string) => /^(\\d+)(\\.\\d+)?%$/.test(`${value}`);\n\nexport const convertToNumber = (value: number | string, parentValue = 0) => {\n if (typeof value === 'number') {\n return value;\n }\n\n if (typeof value === 'string' && isPercentage(value)) {\n return calculatePercentage(parentValue, value);\n }\n\n return parseFloat(value);\n};\n"],"names":["id","data","ids"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tmagic-utils.js","sources":["../src/dom.ts","../src/index.ts"],"sourcesContent":["export const asyncLoadJs = (() => {\n // 正在加载或加载成功的存入此Map中\n const documentMap = new Map();\n\n return (url: string, crossOrigin?: string, document = globalThis.document) => {\n let loaded = documentMap.get(document);\n if (!loaded) {\n loaded = new Map();\n documentMap.set(document, loaded);\n }\n\n // 正在加载或已经加载成功的,直接返回\n if (loaded.get(url)) return loaded.get(url);\n\n const load = new Promise<void>((resolve, reject) => {\n const script = document.createElement('script');\n script.type = 'text/javascript';\n if (crossOrigin) {\n script.crossOrigin = crossOrigin;\n }\n script.src = url;\n document.body.appendChild(script);\n script.onload = () => {\n resolve();\n };\n script.onerror = () => {\n reject(new Error('加载失败'));\n };\n setTimeout(() => {\n reject(new Error('timeout'));\n }, 60 * 1000);\n }).catch((err) => {\n // 加载失败的,从map中移除,第二次加载时,可以再次执行加载\n loaded.delete(url);\n throw err;\n });\n\n loaded.set(url, load);\n return loaded.get(url);\n };\n})();\n\nexport const asyncLoadCss = (() => {\n // 正在加载或加载成功的存入此Map中\n const documentMap = new Map();\n\n return (url: string, document = globalThis.document) => {\n let loaded = documentMap.get(document);\n if (!loaded) {\n loaded = new Map();\n documentMap.set(document, loaded);\n }\n\n // 正在加载或已经加载成功的,直接返回\n if (loaded.get(url)) return loaded.get(url);\n\n const load = new Promise<void>((resolve, reject) => {\n const node = document.createElement('link');\n node.rel = 'stylesheet';\n node.href = url;\n document.head.appendChild(node);\n node.onload = () => {\n resolve();\n };\n node.onerror = () => {\n reject(new Error('加载失败'));\n };\n setTimeout(() => {\n reject(new Error('timeout'));\n }, 60 * 1000);\n }).catch((err) => {\n // 加载失败的,从map中移除,第二次加载时,可以再次执行加载\n loaded.delete(url);\n throw err;\n });\n\n loaded.set(url, load);\n return loaded.get(url);\n };\n})();\n\nexport const addClassName = (el: Element, doc: Document, className: string) => {\n const oldEl = doc.querySelector(`.${className}`);\n if (oldEl && oldEl !== el) removeClassName(oldEl, className);\n if (!el.classList.contains(className)) el.classList.add(className);\n};\n\nexport const removeClassName = (el: Element, ...className: string[]) => {\n el.classList.remove(...className);\n};\n\nexport const removeClassNameByClassName = (doc: Document, className: string) => {\n const el: HTMLElement | null = doc.querySelector(`.${className}`);\n el?.classList.remove(className);\n return el;\n};\n\nexport const injectStyle = (doc: Document, style: string) => {\n const styleEl = doc.createElement('style');\n styleEl.innerHTML = style;\n doc.head.appendChild(styleEl);\n return styleEl;\n};\n\nexport const createDiv = ({ className, cssText }: { className: string; cssText: string }) => {\n const el = globalThis.document.createElement('div');\n el.className = className;\n el.style.cssText = cssText;\n return el;\n};\n\nexport const getDocument = () => globalThis.document;\n","/*\n * Tencent is pleased to support the open source community by making TMagicEditor available.\n *\n * Copyright (C) 2023 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\n\nimport type { DataSchema, DataSourceDeps, Id, MComponent, MNode } from '@tmagic/schema';\nimport { NodeType } from '@tmagic/schema';\n\nexport * from './dom';\n\ndayjs.extend(utc);\n\nexport const sleep = (ms: number): Promise<void> =>\n new Promise((resolve) => {\n const timer = setTimeout(() => {\n clearTimeout(timer);\n resolve();\n }, ms);\n });\n\nexport const datetimeFormatter = (\n v: string | Date,\n defaultValue = '-',\n format = 'YYYY-MM-DD HH:mm:ss',\n): string | number => {\n if (v) {\n let time = null;\n if (['x', 'timestamp'].includes(format)) {\n time = dayjs(v).valueOf();\n } else if ((typeof v === 'string' && v.includes('Z')) || v.constructor === Date) {\n // UTC字符串时间或Date对象格式化为北京时间\n time = dayjs(v).utcOffset(8).format(format);\n } else {\n time = dayjs(v).format(format);\n }\n\n // 格式化为北京时间\n if (time !== 'Invalid Date') {\n return time;\n }\n return defaultValue;\n }\n return defaultValue;\n};\n\n// 驼峰转换横线\nexport const toLine = (name = '') => name.replace(/\\B([A-Z])/g, '-$1').toLowerCase();\n\nexport const toHump = (name = ''): string => name.replace(/-(\\w)/g, (all, letter) => letter.toUpperCase());\n\nexport const emptyFn = (): any => undefined;\n\n/**\n * 通过id获取组件在应用的子孙路径\n * @param {number | string} id 组件id\n * @param {Array} data 要查找的根容器节点\n * @return {Array} 组件在data中的子孙路径\n */\nexport const getNodePath = (id: Id, data: MNode[] = []): MNode[] => {\n const path: MNode[] = [];\n\n const get = function (id: number | string, data: MNode[]): MNode | null {\n if (!Array.isArray(data)) {\n return null;\n }\n\n for (let i = 0, l = data.length; i < l; i++) {\n const item = data[i];\n\n path.push(item);\n if (`${item.id}` === `${id}`) {\n return item;\n }\n\n if (item.items) {\n const node = get(id, item.items);\n if (node) {\n return node;\n }\n }\n\n path.pop();\n }\n\n return null;\n };\n\n get(id, data);\n\n return path;\n};\n\nexport const filterXSS = (str: string) =>\n str.replace(/</g, '<').replace(/>/g, '>').replace(/\"/g, '"').replace(/'/g, ''');\n\nexport const getUrlParam = (param: string, url?: string) => {\n const u = url || location.href;\n const reg = new RegExp(`[?&#]${param}=([^&#]+)`, 'gi');\n\n const matches = u.match(reg);\n let strArr;\n if (matches && matches.length > 0) {\n strArr = matches[matches.length - 1].split('=');\n if (strArr && strArr.length > 1) {\n // 过滤XSS字符\n return filterXSS(strArr[1]);\n }\n return '';\n }\n return '';\n};\n\nexport const isObject = (obj: any) => Object.prototype.toString.call(obj) === '[object Object]';\n\nexport const isPop = (node: MComponent | null): boolean => Boolean(node?.type?.toLowerCase().endsWith('pop'));\n\nexport const isPage = (node?: MComponent | null): boolean => {\n if (!node) return false;\n return Boolean(node.type?.toLowerCase() === NodeType.PAGE);\n};\n\nexport const isNumber = (value: string) => /^(-?\\d+)(\\.\\d+)?$/.test(value);\n\nexport const getHost = (targetUrl: string) => targetUrl.match(/\\/\\/([^/]+)/)?.[1];\n\nexport const isSameDomain = (targetUrl = '', source = globalThis.location.host) => {\n const isHttpUrl = /^(http[s]?:)?\\/\\//.test(targetUrl);\n\n if (!isHttpUrl) return true;\n\n return getHost(targetUrl) === source;\n};\n\n/**\n * 生成指定位数的GUID,无【-】格式\n * @param digit 位数,默认值8\n * @returns\n */\nexport const guid = (digit = 8): string =>\n 'x'.repeat(digit).replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n\nexport const getValueByKeyPath: any = (keys: string, value: Record<string | number, any> = {}) => {\n const path = keys.split('.');\n const pathLength = path.length;\n\n return path.reduce((accumulator, currentValue: any, currentIndex: number) => {\n if (Object.prototype.toString.call(accumulator) === '[object Object]' || Array.isArray(accumulator)) {\n return accumulator[currentValue];\n }\n\n if (pathLength - 1 === currentIndex) {\n return undefined;\n }\n\n return {};\n }, value);\n};\n\nexport const getNodes = (ids: Id[], data: MNode[] = []): MNode[] => {\n const nodes: MNode[] = [];\n\n const get = function (ids: Id[], data: MNode[]) {\n if (!Array.isArray(data)) {\n return;\n }\n\n for (let i = 0, l = data.length; i < l; i++) {\n const item = data[i];\n const index = ids.findIndex((id: Id) => `${id}` === `${item.id}`);\n\n if (index > -1) {\n ids.slice(index, 1);\n nodes.push(item);\n }\n\n if (item.items) {\n get(ids, item.items);\n }\n }\n };\n\n get(ids, data);\n\n return nodes;\n};\n\nexport const getDepKeys = (dataSourceDeps: DataSourceDeps = {}, nodeId: Id) =>\n Array.from(\n Object.values(dataSourceDeps).reduce((prev, cur) => {\n (cur[nodeId]?.keys || []).forEach((key) => prev.add(key));\n return prev;\n }, new Set<Id>()),\n );\n\nexport const getDepNodeIds = (dataSourceDeps: DataSourceDeps = {}) =>\n Array.from(\n Object.values(dataSourceDeps).reduce((prev, cur) => {\n Object.keys(cur).forEach((id) => {\n prev.add(id);\n });\n return prev;\n }, new Set<string>()),\n );\n\n/**\n * 将新节点更新到data或者parentId对应的节点的子节点中\n * @param newNode 新节点\n * @param data 需要修改的数据\n * @param parentId 父节点 id\n */\nexport const replaceChildNode = (newNode: MNode, data?: MNode[], parentId?: Id) => {\n const path = getNodePath(newNode.id, data);\n const node = path.pop();\n let parent = path.pop();\n\n if (parentId) {\n parent = getNodePath(parentId, data).pop();\n }\n\n if (!node) throw new Error('未找到目标节点');\n if (!parent) throw new Error('未找到父节点');\n\n const index = parent.items?.findIndex((child: MNode) => child.id === node.id);\n parent.items.splice(index, 1, newNode);\n};\n\nexport const compiledNode = (\n compile: (value: any) => any,\n node: MNode,\n dataSourceDeps: DataSourceDeps = {},\n sourceId?: Id,\n) => {\n let keys: Id[] = [];\n if (!sourceId) {\n keys = getDepKeys(dataSourceDeps, node.id);\n } else {\n const dep = dataSourceDeps[sourceId];\n keys = dep?.[node.id].keys || [];\n }\n\n const keyPrefix = '__magic__';\n\n keys.forEach((key) => {\n const keyPath = `${key}`.split('.');\n const keyPathLength = keyPath.length;\n keyPath.reduce((accumulator, currentValue: any, currentIndex) => {\n if (keyPathLength - 1 === currentIndex) {\n const cacheKey = `${keyPrefix}${currentValue}`;\n\n if (typeof accumulator[cacheKey] === 'undefined') {\n accumulator[cacheKey] = accumulator[currentValue];\n }\n\n try {\n accumulator[currentValue] = compile(accumulator[cacheKey]);\n } catch (e) {\n console.error(e);\n accumulator[currentValue] = '';\n }\n\n return accumulator;\n }\n\n if (isObject(accumulator) || Array.isArray(accumulator)) {\n return accumulator[currentValue];\n }\n\n return {};\n }, node);\n });\n\n if (Array.isArray(node.items)) {\n node.items.forEach((item) => compiledNode(compile, item, dataSourceDeps));\n }\n\n return node;\n};\n\nexport const compiledCond = (op: string, fieldValue: any, value: any, range: number[] = []): boolean => {\n switch (op) {\n case 'is':\n return fieldValue === value;\n case 'not':\n return fieldValue !== value;\n case '=':\n return fieldValue === value;\n case '!=':\n return fieldValue !== value;\n case '>':\n return fieldValue > value;\n case '>=':\n return fieldValue >= value;\n case '<':\n return fieldValue < value;\n case '<=':\n return fieldValue >= value;\n case 'between':\n return range.length > 1 && fieldValue >= range[0] && fieldValue <= range[1];\n case 'not_between':\n return range.length < 2 || fieldValue < range[0] || fieldValue > range[1];\n case 'include':\n return fieldValue?.includes?.(value);\n case 'not_include':\n return typeof fieldValue === 'undefined' || !fieldValue.includes?.(value);\n default:\n break;\n }\n\n return false;\n};\n\nexport const getDefaultValueFromFields = (fields: DataSchema[]) => {\n const data: Record<string, any> = {};\n\n const defaultValue: Record<string, any> = {\n string: undefined,\n object: {},\n array: [],\n boolean: undefined,\n number: undefined,\n null: null,\n any: undefined,\n };\n\n fields.forEach((field) => {\n if (typeof field.defaultValue !== 'undefined') {\n if (field.type === 'array' && !Array.isArray(field.defaultValue)) {\n data[field.name] = defaultValue.array;\n return;\n }\n\n if (field.type === 'object' && !isObject(field.defaultValue)) {\n if (typeof field.defaultValue === 'string') {\n try {\n data[field.name] = JSON.parse(field.defaultValue);\n } catch (e) {\n data[field.name] = defaultValue.object;\n }\n return;\n }\n\n data[field.name] = defaultValue.object;\n return;\n }\n\n data[field.name] = field.defaultValue;\n return;\n }\n\n if (field.type === 'object') {\n data[field.name] = field.fields ? getDefaultValueFromFields(field.fields) : defaultValue.object;\n return;\n }\n\n if (field.type) {\n data[field.name] = defaultValue[field.type];\n return;\n }\n\n data[field.name] = undefined;\n });\n\n return data;\n};\n\nexport const DATA_SOURCE_FIELDS_SELECT_VALUE_PREFIX = 'ds-field::';\n\nexport const getKeys = Object.keys as <T extends object>(obj: T) => Array<keyof T>;\n\nexport const calculatePercentage = (value: number, percentageStr: string) => {\n const percentage = globalThis.parseFloat(percentageStr) / 100; // 先将百分比字符串转换为浮点数,并除以100转换为小数\n const result = value * percentage;\n return result;\n};\n\nexport const isPercentage = (value: number | string) => /^(\\d+)(\\.\\d+)?%$/.test(`${value}`);\n\nexport const convertToNumber = (value: number | string, parentValue = 0) => {\n if (typeof value === 'number') {\n return value;\n }\n\n if (typeof value === 'string' && isPercentage(value)) {\n return calculatePercentage(parentValue, value);\n }\n\n return parseFloat(value);\n};\n"],"names":["id","data","ids"],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.TMagicUtils = {}, global.dayjs, global.utc, global.schema));
|
|
5
5
|
})(this, (function (exports, dayjs, utc, schema) { 'use strict';
|
|
6
6
|
|
|
7
|
-
const asyncLoadJs = (() => {
|
|
7
|
+
const asyncLoadJs = /* @__PURE__ */ (() => {
|
|
8
8
|
const documentMap = /* @__PURE__ */ new Map();
|
|
9
9
|
return (url, crossOrigin, document = globalThis.document) => {
|
|
10
10
|
let loaded = documentMap.get(document);
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
return loaded.get(url);
|
|
40
40
|
};
|
|
41
41
|
})();
|
|
42
|
-
const asyncLoadCss = (() => {
|
|
42
|
+
const asyncLoadCss = /* @__PURE__ */ (() => {
|
|
43
43
|
const documentMap = /* @__PURE__ */ new Map();
|
|
44
44
|
return (url, document = globalThis.document) => {
|
|
45
45
|
let loaded = documentMap.get(document);
|
|
@@ -286,58 +286,34 @@
|
|
|
286
286
|
}
|
|
287
287
|
return node;
|
|
288
288
|
};
|
|
289
|
-
const compiledCond = (op, fieldValue, value, range) => {
|
|
289
|
+
const compiledCond = (op, fieldValue, value, range = []) => {
|
|
290
290
|
switch (op) {
|
|
291
291
|
case "is":
|
|
292
|
-
|
|
293
|
-
return false;
|
|
294
|
-
break;
|
|
292
|
+
return fieldValue === value;
|
|
295
293
|
case "not":
|
|
296
|
-
|
|
297
|
-
return false;
|
|
298
|
-
break;
|
|
294
|
+
return fieldValue !== value;
|
|
299
295
|
case "=":
|
|
300
|
-
|
|
301
|
-
return false;
|
|
302
|
-
break;
|
|
296
|
+
return fieldValue === value;
|
|
303
297
|
case "!=":
|
|
304
|
-
|
|
305
|
-
return false;
|
|
306
|
-
break;
|
|
298
|
+
return fieldValue !== value;
|
|
307
299
|
case ">":
|
|
308
|
-
|
|
309
|
-
return false;
|
|
310
|
-
break;
|
|
300
|
+
return fieldValue > value;
|
|
311
301
|
case ">=":
|
|
312
|
-
|
|
313
|
-
return false;
|
|
314
|
-
break;
|
|
302
|
+
return fieldValue >= value;
|
|
315
303
|
case "<":
|
|
316
|
-
|
|
317
|
-
return false;
|
|
318
|
-
break;
|
|
304
|
+
return fieldValue < value;
|
|
319
305
|
case "<=":
|
|
320
|
-
|
|
321
|
-
return false;
|
|
322
|
-
break;
|
|
306
|
+
return fieldValue >= value;
|
|
323
307
|
case "between":
|
|
324
|
-
|
|
325
|
-
return false;
|
|
326
|
-
break;
|
|
308
|
+
return range.length > 1 && fieldValue >= range[0] && fieldValue <= range[1];
|
|
327
309
|
case "not_between":
|
|
328
|
-
|
|
329
|
-
return false;
|
|
330
|
-
break;
|
|
310
|
+
return range.length < 2 || fieldValue < range[0] || fieldValue > range[1];
|
|
331
311
|
case "include":
|
|
332
|
-
|
|
333
|
-
return false;
|
|
334
|
-
break;
|
|
312
|
+
return fieldValue?.includes?.(value);
|
|
335
313
|
case "not_include":
|
|
336
|
-
|
|
337
|
-
return false;
|
|
338
|
-
break;
|
|
314
|
+
return typeof fieldValue === "undefined" || !fieldValue.includes?.(value);
|
|
339
315
|
}
|
|
340
|
-
return
|
|
316
|
+
return false;
|
|
341
317
|
};
|
|
342
318
|
const getDefaultValueFromFields = (fields) => {
|
|
343
319
|
const data = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tmagic-utils.umd.cjs","sources":["../src/dom.ts","../src/index.ts"],"sourcesContent":["export const asyncLoadJs = (() => {\n // 正在加载或加载成功的存入此Map中\n const documentMap = new Map();\n\n return (url: string, crossOrigin?: string, document = globalThis.document) => {\n let loaded = documentMap.get(document);\n if (!loaded) {\n loaded = new Map();\n documentMap.set(document, loaded);\n }\n\n // 正在加载或已经加载成功的,直接返回\n if (loaded.get(url)) return loaded.get(url);\n\n const load = new Promise<void>((resolve, reject) => {\n const script = document.createElement('script');\n script.type = 'text/javascript';\n if (crossOrigin) {\n script.crossOrigin = crossOrigin;\n }\n script.src = url;\n document.body.appendChild(script);\n script.onload = () => {\n resolve();\n };\n script.onerror = () => {\n reject(new Error('加载失败'));\n };\n setTimeout(() => {\n reject(new Error('timeout'));\n }, 60 * 1000);\n }).catch((err) => {\n // 加载失败的,从map中移除,第二次加载时,可以再次执行加载\n loaded.delete(url);\n throw err;\n });\n\n loaded.set(url, load);\n return loaded.get(url);\n };\n})();\n\nexport const asyncLoadCss = (() => {\n // 正在加载或加载成功的存入此Map中\n const documentMap = new Map();\n\n return (url: string, document = globalThis.document) => {\n let loaded = documentMap.get(document);\n if (!loaded) {\n loaded = new Map();\n documentMap.set(document, loaded);\n }\n\n // 正在加载或已经加载成功的,直接返回\n if (loaded.get(url)) return loaded.get(url);\n\n const load = new Promise<void>((resolve, reject) => {\n const node = document.createElement('link');\n node.rel = 'stylesheet';\n node.href = url;\n document.head.appendChild(node);\n node.onload = () => {\n resolve();\n };\n node.onerror = () => {\n reject(new Error('加载失败'));\n };\n setTimeout(() => {\n reject(new Error('timeout'));\n }, 60 * 1000);\n }).catch((err) => {\n // 加载失败的,从map中移除,第二次加载时,可以再次执行加载\n loaded.delete(url);\n throw err;\n });\n\n loaded.set(url, load);\n return loaded.get(url);\n };\n})();\n\nexport const addClassName = (el: Element, doc: Document, className: string) => {\n const oldEl = doc.querySelector(`.${className}`);\n if (oldEl && oldEl !== el) removeClassName(oldEl, className);\n if (!el.classList.contains(className)) el.classList.add(className);\n};\n\nexport const removeClassName = (el: Element, ...className: string[]) => {\n el.classList.remove(...className);\n};\n\nexport const removeClassNameByClassName = (doc: Document, className: string) => {\n const el: HTMLElement | null = doc.querySelector(`.${className}`);\n el?.classList.remove(className);\n return el;\n};\n\nexport const injectStyle = (doc: Document, style: string) => {\n const styleEl = doc.createElement('style');\n styleEl.innerHTML = style;\n doc.head.appendChild(styleEl);\n return styleEl;\n};\n\nexport const createDiv = ({ className, cssText }: { className: string; cssText: string }) => {\n const el = globalThis.document.createElement('div');\n el.className = className;\n el.style.cssText = cssText;\n return el;\n};\n\nexport const getDocument = () => globalThis.document;\n","/*\n * Tencent is pleased to support the open source community by making TMagicEditor available.\n *\n * Copyright (C) 2023 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\n\nimport type { DataSchema, DataSourceDeps, Id, MComponent, MNode } from '@tmagic/schema';\nimport { NodeType } from '@tmagic/schema';\n\nexport * from './dom';\n\ndayjs.extend(utc);\n\nexport const sleep = (ms: number): Promise<void> =>\n new Promise((resolve) => {\n const timer = setTimeout(() => {\n clearTimeout(timer);\n resolve();\n }, ms);\n });\n\nexport const datetimeFormatter = (\n v: string | Date,\n defaultValue = '-',\n format = 'YYYY-MM-DD HH:mm:ss',\n): string | number => {\n if (v) {\n let time = null;\n if (['x', 'timestamp'].includes(format)) {\n time = dayjs(v).valueOf();\n } else if ((typeof v === 'string' && v.includes('Z')) || v.constructor === Date) {\n // UTC字符串时间或Date对象格式化为北京时间\n time = dayjs(v).utcOffset(8).format(format);\n } else {\n time = dayjs(v).format(format);\n }\n\n // 格式化为北京时间\n if (time !== 'Invalid Date') {\n return time;\n }\n return defaultValue;\n }\n return defaultValue;\n};\n\n// 驼峰转换横线\nexport const toLine = (name = '') => name.replace(/\\B([A-Z])/g, '-$1').toLowerCase();\n\nexport const toHump = (name = ''): string => name.replace(/-(\\w)/g, (all, letter) => letter.toUpperCase());\n\nexport const emptyFn = (): any => undefined;\n\n/**\n * 通过id获取组件在应用的子孙路径\n * @param {number | string} id 组件id\n * @param {Array} data 要查找的根容器节点\n * @return {Array} 组件在data中的子孙路径\n */\nexport const getNodePath = (id: Id, data: MNode[] = []): MNode[] => {\n const path: MNode[] = [];\n\n const get = function (id: number | string, data: MNode[]): MNode | null {\n if (!Array.isArray(data)) {\n return null;\n }\n\n for (let i = 0, l = data.length; i < l; i++) {\n const item = data[i];\n\n path.push(item);\n if (`${item.id}` === `${id}`) {\n return item;\n }\n\n if (item.items) {\n const node = get(id, item.items);\n if (node) {\n return node;\n }\n }\n\n path.pop();\n }\n\n return null;\n };\n\n get(id, data);\n\n return path;\n};\n\nexport const filterXSS = (str: string) =>\n str.replace(/</g, '<').replace(/>/g, '>').replace(/\"/g, '"').replace(/'/g, ''');\n\nexport const getUrlParam = (param: string, url?: string) => {\n const u = url || location.href;\n const reg = new RegExp(`[?&#]${param}=([^&#]+)`, 'gi');\n\n const matches = u.match(reg);\n let strArr;\n if (matches && matches.length > 0) {\n strArr = matches[matches.length - 1].split('=');\n if (strArr && strArr.length > 1) {\n // 过滤XSS字符\n return filterXSS(strArr[1]);\n }\n return '';\n }\n return '';\n};\n\nexport const isObject = (obj: any) => Object.prototype.toString.call(obj) === '[object Object]';\n\nexport const isPop = (node: MComponent | null): boolean => Boolean(node?.type?.toLowerCase().endsWith('pop'));\n\nexport const isPage = (node?: MComponent | null): boolean => {\n if (!node) return false;\n return Boolean(node.type?.toLowerCase() === NodeType.PAGE);\n};\n\nexport const isNumber = (value: string) => /^(-?\\d+)(\\.\\d+)?$/.test(value);\n\nexport const getHost = (targetUrl: string) => targetUrl.match(/\\/\\/([^/]+)/)?.[1];\n\nexport const isSameDomain = (targetUrl = '', source = globalThis.location.host) => {\n const isHttpUrl = /^(http[s]?:)?\\/\\//.test(targetUrl);\n\n if (!isHttpUrl) return true;\n\n return getHost(targetUrl) === source;\n};\n\n/**\n * 生成指定位数的GUID,无【-】格式\n * @param digit 位数,默认值8\n * @returns\n */\nexport const guid = (digit = 8): string =>\n 'x'.repeat(digit).replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n\nexport const getValueByKeyPath: any = (keys: string, value: Record<string | number, any> = {}) => {\n const path = keys.split('.');\n const pathLength = path.length;\n\n return path.reduce((accumulator, currentValue: any, currentIndex: number) => {\n if (Object.prototype.toString.call(accumulator) === '[object Object]' || Array.isArray(accumulator)) {\n return accumulator[currentValue];\n }\n\n if (pathLength - 1 === currentIndex) {\n return undefined;\n }\n\n return {};\n }, value);\n};\n\nexport const getNodes = (ids: Id[], data: MNode[] = []): MNode[] => {\n const nodes: MNode[] = [];\n\n const get = function (ids: Id[], data: MNode[]) {\n if (!Array.isArray(data)) {\n return;\n }\n\n for (let i = 0, l = data.length; i < l; i++) {\n const item = data[i];\n const index = ids.findIndex((id: Id) => `${id}` === `${item.id}`);\n\n if (index > -1) {\n ids.slice(index, 1);\n nodes.push(item);\n }\n\n if (item.items) {\n get(ids, item.items);\n }\n }\n };\n\n get(ids, data);\n\n return nodes;\n};\n\nexport const getDepKeys = (dataSourceDeps: DataSourceDeps = {}, nodeId: Id) =>\n Array.from(\n Object.values(dataSourceDeps).reduce((prev, cur) => {\n (cur[nodeId]?.keys || []).forEach((key) => prev.add(key));\n return prev;\n }, new Set<Id>()),\n );\n\nexport const getDepNodeIds = (dataSourceDeps: DataSourceDeps = {}) =>\n Array.from(\n Object.values(dataSourceDeps).reduce((prev, cur) => {\n Object.keys(cur).forEach((id) => {\n prev.add(id);\n });\n return prev;\n }, new Set<string>()),\n );\n\n/**\n * 将新节点更新到data或者parentId对应的节点的子节点中\n * @param newNode 新节点\n * @param data 需要修改的数据\n * @param parentId 父节点 id\n */\nexport const replaceChildNode = (newNode: MNode, data?: MNode[], parentId?: Id) => {\n const path = getNodePath(newNode.id, data);\n const node = path.pop();\n let parent = path.pop();\n\n if (parentId) {\n parent = getNodePath(parentId, data).pop();\n }\n\n if (!node) throw new Error('未找到目标节点');\n if (!parent) throw new Error('未找到父节点');\n\n const index = parent.items?.findIndex((child: MNode) => child.id === node.id);\n parent.items.splice(index, 1, newNode);\n};\n\nexport const compiledNode = (\n compile: (value: any) => any,\n node: MNode,\n dataSourceDeps: DataSourceDeps = {},\n sourceId?: Id,\n) => {\n let keys: Id[] = [];\n if (!sourceId) {\n keys = getDepKeys(dataSourceDeps, node.id);\n } else {\n const dep = dataSourceDeps[sourceId];\n keys = dep?.[node.id].keys || [];\n }\n\n const keyPrefix = '__magic__';\n\n keys.forEach((key) => {\n const keyPath = `${key}`.split('.');\n const keyPathLength = keyPath.length;\n keyPath.reduce((accumulator, currentValue: any, currentIndex) => {\n if (keyPathLength - 1 === currentIndex) {\n const cacheKey = `${keyPrefix}${currentValue}`;\n\n if (typeof accumulator[cacheKey] === 'undefined') {\n accumulator[cacheKey] = accumulator[currentValue];\n }\n\n try {\n accumulator[currentValue] = compile(accumulator[cacheKey]);\n } catch (e) {\n console.error(e);\n accumulator[currentValue] = '';\n }\n\n return accumulator;\n }\n\n if (isObject(accumulator) || Array.isArray(accumulator)) {\n return accumulator[currentValue];\n }\n\n return {};\n }, node);\n });\n\n if (Array.isArray(node.items)) {\n node.items.forEach((item) => compiledNode(compile, item, dataSourceDeps));\n }\n\n return node;\n};\n\nexport const compiledCond = (op: string, fieldValue: any, value: any, range: [number, number]): boolean => {\n switch (op) {\n case 'is':\n if (fieldValue !== value) return false;\n break;\n case 'not':\n if (fieldValue === value) return false;\n break;\n case '=':\n if (fieldValue !== value) return false;\n break;\n case '!=':\n if (fieldValue === value) return false;\n break;\n case '>':\n if (fieldValue <= value) return false;\n break;\n case '>=':\n if (fieldValue < value) return false;\n break;\n case '<':\n if (fieldValue >= value) return false;\n break;\n case '<=':\n if (fieldValue > value) return false;\n break;\n case 'between':\n if (fieldValue < range[0] || fieldValue > range[1]) return false;\n break;\n case 'not_between':\n if (fieldValue >= range[0] && fieldValue <= range[1]) return false;\n break;\n case 'include':\n if (typeof fieldValue !== 'undefined' && !fieldValue.includes?.(value)) return false;\n break;\n case 'not_include':\n if (typeof fieldValue !== 'undefined' && fieldValue.includes?.(value)) return false;\n break;\n default:\n break;\n }\n\n return true;\n};\n\nexport const getDefaultValueFromFields = (fields: DataSchema[]) => {\n const data: Record<string, any> = {};\n\n const defaultValue: Record<string, any> = {\n string: undefined,\n object: {},\n array: [],\n boolean: undefined,\n number: undefined,\n null: null,\n any: undefined,\n };\n\n fields.forEach((field) => {\n if (typeof field.defaultValue !== 'undefined') {\n if (field.type === 'array' && !Array.isArray(field.defaultValue)) {\n data[field.name] = defaultValue.array;\n return;\n }\n\n if (field.type === 'object' && !isObject(field.defaultValue)) {\n if (typeof field.defaultValue === 'string') {\n try {\n data[field.name] = JSON.parse(field.defaultValue);\n } catch (e) {\n data[field.name] = defaultValue.object;\n }\n return;\n }\n\n data[field.name] = defaultValue.object;\n return;\n }\n\n data[field.name] = field.defaultValue;\n return;\n }\n\n if (field.type === 'object') {\n data[field.name] = field.fields ? getDefaultValueFromFields(field.fields) : defaultValue.object;\n return;\n }\n\n if (field.type) {\n data[field.name] = defaultValue[field.type];\n return;\n }\n\n data[field.name] = undefined;\n });\n\n return data;\n};\n\nexport const DATA_SOURCE_FIELDS_SELECT_VALUE_PREFIX = 'ds-field::';\n\nexport const getKeys = Object.keys as <T extends object>(obj: T) => Array<keyof T>;\n\nexport const calculatePercentage = (value: number, percentageStr: string) => {\n const percentage = globalThis.parseFloat(percentageStr) / 100; // 先将百分比字符串转换为浮点数,并除以100转换为小数\n const result = value * percentage;\n return result;\n};\n\nexport const isPercentage = (value: number | string) => /^(\\d+)(\\.\\d+)?%$/.test(`${value}`);\n\nexport const convertToNumber = (value: number | string, parentValue = 0) => {\n if (typeof value === 'number') {\n return value;\n }\n\n if (typeof value === 'string' && isPercentage(value)) {\n return calculatePercentage(parentValue, value);\n }\n\n return parseFloat(value);\n};\n"],"names":["id","data","NodeType","ids"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tmagic-utils.umd.cjs","sources":["../src/dom.ts","../src/index.ts"],"sourcesContent":["export const asyncLoadJs = (() => {\n // 正在加载或加载成功的存入此Map中\n const documentMap = new Map();\n\n return (url: string, crossOrigin?: string, document = globalThis.document) => {\n let loaded = documentMap.get(document);\n if (!loaded) {\n loaded = new Map();\n documentMap.set(document, loaded);\n }\n\n // 正在加载或已经加载成功的,直接返回\n if (loaded.get(url)) return loaded.get(url);\n\n const load = new Promise<void>((resolve, reject) => {\n const script = document.createElement('script');\n script.type = 'text/javascript';\n if (crossOrigin) {\n script.crossOrigin = crossOrigin;\n }\n script.src = url;\n document.body.appendChild(script);\n script.onload = () => {\n resolve();\n };\n script.onerror = () => {\n reject(new Error('加载失败'));\n };\n setTimeout(() => {\n reject(new Error('timeout'));\n }, 60 * 1000);\n }).catch((err) => {\n // 加载失败的,从map中移除,第二次加载时,可以再次执行加载\n loaded.delete(url);\n throw err;\n });\n\n loaded.set(url, load);\n return loaded.get(url);\n };\n})();\n\nexport const asyncLoadCss = (() => {\n // 正在加载或加载成功的存入此Map中\n const documentMap = new Map();\n\n return (url: string, document = globalThis.document) => {\n let loaded = documentMap.get(document);\n if (!loaded) {\n loaded = new Map();\n documentMap.set(document, loaded);\n }\n\n // 正在加载或已经加载成功的,直接返回\n if (loaded.get(url)) return loaded.get(url);\n\n const load = new Promise<void>((resolve, reject) => {\n const node = document.createElement('link');\n node.rel = 'stylesheet';\n node.href = url;\n document.head.appendChild(node);\n node.onload = () => {\n resolve();\n };\n node.onerror = () => {\n reject(new Error('加载失败'));\n };\n setTimeout(() => {\n reject(new Error('timeout'));\n }, 60 * 1000);\n }).catch((err) => {\n // 加载失败的,从map中移除,第二次加载时,可以再次执行加载\n loaded.delete(url);\n throw err;\n });\n\n loaded.set(url, load);\n return loaded.get(url);\n };\n})();\n\nexport const addClassName = (el: Element, doc: Document, className: string) => {\n const oldEl = doc.querySelector(`.${className}`);\n if (oldEl && oldEl !== el) removeClassName(oldEl, className);\n if (!el.classList.contains(className)) el.classList.add(className);\n};\n\nexport const removeClassName = (el: Element, ...className: string[]) => {\n el.classList.remove(...className);\n};\n\nexport const removeClassNameByClassName = (doc: Document, className: string) => {\n const el: HTMLElement | null = doc.querySelector(`.${className}`);\n el?.classList.remove(className);\n return el;\n};\n\nexport const injectStyle = (doc: Document, style: string) => {\n const styleEl = doc.createElement('style');\n styleEl.innerHTML = style;\n doc.head.appendChild(styleEl);\n return styleEl;\n};\n\nexport const createDiv = ({ className, cssText }: { className: string; cssText: string }) => {\n const el = globalThis.document.createElement('div');\n el.className = className;\n el.style.cssText = cssText;\n return el;\n};\n\nexport const getDocument = () => globalThis.document;\n","/*\n * Tencent is pleased to support the open source community by making TMagicEditor available.\n *\n * Copyright (C) 2023 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\n\nimport type { DataSchema, DataSourceDeps, Id, MComponent, MNode } from '@tmagic/schema';\nimport { NodeType } from '@tmagic/schema';\n\nexport * from './dom';\n\ndayjs.extend(utc);\n\nexport const sleep = (ms: number): Promise<void> =>\n new Promise((resolve) => {\n const timer = setTimeout(() => {\n clearTimeout(timer);\n resolve();\n }, ms);\n });\n\nexport const datetimeFormatter = (\n v: string | Date,\n defaultValue = '-',\n format = 'YYYY-MM-DD HH:mm:ss',\n): string | number => {\n if (v) {\n let time = null;\n if (['x', 'timestamp'].includes(format)) {\n time = dayjs(v).valueOf();\n } else if ((typeof v === 'string' && v.includes('Z')) || v.constructor === Date) {\n // UTC字符串时间或Date对象格式化为北京时间\n time = dayjs(v).utcOffset(8).format(format);\n } else {\n time = dayjs(v).format(format);\n }\n\n // 格式化为北京时间\n if (time !== 'Invalid Date') {\n return time;\n }\n return defaultValue;\n }\n return defaultValue;\n};\n\n// 驼峰转换横线\nexport const toLine = (name = '') => name.replace(/\\B([A-Z])/g, '-$1').toLowerCase();\n\nexport const toHump = (name = ''): string => name.replace(/-(\\w)/g, (all, letter) => letter.toUpperCase());\n\nexport const emptyFn = (): any => undefined;\n\n/**\n * 通过id获取组件在应用的子孙路径\n * @param {number | string} id 组件id\n * @param {Array} data 要查找的根容器节点\n * @return {Array} 组件在data中的子孙路径\n */\nexport const getNodePath = (id: Id, data: MNode[] = []): MNode[] => {\n const path: MNode[] = [];\n\n const get = function (id: number | string, data: MNode[]): MNode | null {\n if (!Array.isArray(data)) {\n return null;\n }\n\n for (let i = 0, l = data.length; i < l; i++) {\n const item = data[i];\n\n path.push(item);\n if (`${item.id}` === `${id}`) {\n return item;\n }\n\n if (item.items) {\n const node = get(id, item.items);\n if (node) {\n return node;\n }\n }\n\n path.pop();\n }\n\n return null;\n };\n\n get(id, data);\n\n return path;\n};\n\nexport const filterXSS = (str: string) =>\n str.replace(/</g, '<').replace(/>/g, '>').replace(/\"/g, '"').replace(/'/g, ''');\n\nexport const getUrlParam = (param: string, url?: string) => {\n const u = url || location.href;\n const reg = new RegExp(`[?&#]${param}=([^&#]+)`, 'gi');\n\n const matches = u.match(reg);\n let strArr;\n if (matches && matches.length > 0) {\n strArr = matches[matches.length - 1].split('=');\n if (strArr && strArr.length > 1) {\n // 过滤XSS字符\n return filterXSS(strArr[1]);\n }\n return '';\n }\n return '';\n};\n\nexport const isObject = (obj: any) => Object.prototype.toString.call(obj) === '[object Object]';\n\nexport const isPop = (node: MComponent | null): boolean => Boolean(node?.type?.toLowerCase().endsWith('pop'));\n\nexport const isPage = (node?: MComponent | null): boolean => {\n if (!node) return false;\n return Boolean(node.type?.toLowerCase() === NodeType.PAGE);\n};\n\nexport const isNumber = (value: string) => /^(-?\\d+)(\\.\\d+)?$/.test(value);\n\nexport const getHost = (targetUrl: string) => targetUrl.match(/\\/\\/([^/]+)/)?.[1];\n\nexport const isSameDomain = (targetUrl = '', source = globalThis.location.host) => {\n const isHttpUrl = /^(http[s]?:)?\\/\\//.test(targetUrl);\n\n if (!isHttpUrl) return true;\n\n return getHost(targetUrl) === source;\n};\n\n/**\n * 生成指定位数的GUID,无【-】格式\n * @param digit 位数,默认值8\n * @returns\n */\nexport const guid = (digit = 8): string =>\n 'x'.repeat(digit).replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n\nexport const getValueByKeyPath: any = (keys: string, value: Record<string | number, any> = {}) => {\n const path = keys.split('.');\n const pathLength = path.length;\n\n return path.reduce((accumulator, currentValue: any, currentIndex: number) => {\n if (Object.prototype.toString.call(accumulator) === '[object Object]' || Array.isArray(accumulator)) {\n return accumulator[currentValue];\n }\n\n if (pathLength - 1 === currentIndex) {\n return undefined;\n }\n\n return {};\n }, value);\n};\n\nexport const getNodes = (ids: Id[], data: MNode[] = []): MNode[] => {\n const nodes: MNode[] = [];\n\n const get = function (ids: Id[], data: MNode[]) {\n if (!Array.isArray(data)) {\n return;\n }\n\n for (let i = 0, l = data.length; i < l; i++) {\n const item = data[i];\n const index = ids.findIndex((id: Id) => `${id}` === `${item.id}`);\n\n if (index > -1) {\n ids.slice(index, 1);\n nodes.push(item);\n }\n\n if (item.items) {\n get(ids, item.items);\n }\n }\n };\n\n get(ids, data);\n\n return nodes;\n};\n\nexport const getDepKeys = (dataSourceDeps: DataSourceDeps = {}, nodeId: Id) =>\n Array.from(\n Object.values(dataSourceDeps).reduce((prev, cur) => {\n (cur[nodeId]?.keys || []).forEach((key) => prev.add(key));\n return prev;\n }, new Set<Id>()),\n );\n\nexport const getDepNodeIds = (dataSourceDeps: DataSourceDeps = {}) =>\n Array.from(\n Object.values(dataSourceDeps).reduce((prev, cur) => {\n Object.keys(cur).forEach((id) => {\n prev.add(id);\n });\n return prev;\n }, new Set<string>()),\n );\n\n/**\n * 将新节点更新到data或者parentId对应的节点的子节点中\n * @param newNode 新节点\n * @param data 需要修改的数据\n * @param parentId 父节点 id\n */\nexport const replaceChildNode = (newNode: MNode, data?: MNode[], parentId?: Id) => {\n const path = getNodePath(newNode.id, data);\n const node = path.pop();\n let parent = path.pop();\n\n if (parentId) {\n parent = getNodePath(parentId, data).pop();\n }\n\n if (!node) throw new Error('未找到目标节点');\n if (!parent) throw new Error('未找到父节点');\n\n const index = parent.items?.findIndex((child: MNode) => child.id === node.id);\n parent.items.splice(index, 1, newNode);\n};\n\nexport const compiledNode = (\n compile: (value: any) => any,\n node: MNode,\n dataSourceDeps: DataSourceDeps = {},\n sourceId?: Id,\n) => {\n let keys: Id[] = [];\n if (!sourceId) {\n keys = getDepKeys(dataSourceDeps, node.id);\n } else {\n const dep = dataSourceDeps[sourceId];\n keys = dep?.[node.id].keys || [];\n }\n\n const keyPrefix = '__magic__';\n\n keys.forEach((key) => {\n const keyPath = `${key}`.split('.');\n const keyPathLength = keyPath.length;\n keyPath.reduce((accumulator, currentValue: any, currentIndex) => {\n if (keyPathLength - 1 === currentIndex) {\n const cacheKey = `${keyPrefix}${currentValue}`;\n\n if (typeof accumulator[cacheKey] === 'undefined') {\n accumulator[cacheKey] = accumulator[currentValue];\n }\n\n try {\n accumulator[currentValue] = compile(accumulator[cacheKey]);\n } catch (e) {\n console.error(e);\n accumulator[currentValue] = '';\n }\n\n return accumulator;\n }\n\n if (isObject(accumulator) || Array.isArray(accumulator)) {\n return accumulator[currentValue];\n }\n\n return {};\n }, node);\n });\n\n if (Array.isArray(node.items)) {\n node.items.forEach((item) => compiledNode(compile, item, dataSourceDeps));\n }\n\n return node;\n};\n\nexport const compiledCond = (op: string, fieldValue: any, value: any, range: number[] = []): boolean => {\n switch (op) {\n case 'is':\n return fieldValue === value;\n case 'not':\n return fieldValue !== value;\n case '=':\n return fieldValue === value;\n case '!=':\n return fieldValue !== value;\n case '>':\n return fieldValue > value;\n case '>=':\n return fieldValue >= value;\n case '<':\n return fieldValue < value;\n case '<=':\n return fieldValue >= value;\n case 'between':\n return range.length > 1 && fieldValue >= range[0] && fieldValue <= range[1];\n case 'not_between':\n return range.length < 2 || fieldValue < range[0] || fieldValue > range[1];\n case 'include':\n return fieldValue?.includes?.(value);\n case 'not_include':\n return typeof fieldValue === 'undefined' || !fieldValue.includes?.(value);\n default:\n break;\n }\n\n return false;\n};\n\nexport const getDefaultValueFromFields = (fields: DataSchema[]) => {\n const data: Record<string, any> = {};\n\n const defaultValue: Record<string, any> = {\n string: undefined,\n object: {},\n array: [],\n boolean: undefined,\n number: undefined,\n null: null,\n any: undefined,\n };\n\n fields.forEach((field) => {\n if (typeof field.defaultValue !== 'undefined') {\n if (field.type === 'array' && !Array.isArray(field.defaultValue)) {\n data[field.name] = defaultValue.array;\n return;\n }\n\n if (field.type === 'object' && !isObject(field.defaultValue)) {\n if (typeof field.defaultValue === 'string') {\n try {\n data[field.name] = JSON.parse(field.defaultValue);\n } catch (e) {\n data[field.name] = defaultValue.object;\n }\n return;\n }\n\n data[field.name] = defaultValue.object;\n return;\n }\n\n data[field.name] = field.defaultValue;\n return;\n }\n\n if (field.type === 'object') {\n data[field.name] = field.fields ? getDefaultValueFromFields(field.fields) : defaultValue.object;\n return;\n }\n\n if (field.type) {\n data[field.name] = defaultValue[field.type];\n return;\n }\n\n data[field.name] = undefined;\n });\n\n return data;\n};\n\nexport const DATA_SOURCE_FIELDS_SELECT_VALUE_PREFIX = 'ds-field::';\n\nexport const getKeys = Object.keys as <T extends object>(obj: T) => Array<keyof T>;\n\nexport const calculatePercentage = (value: number, percentageStr: string) => {\n const percentage = globalThis.parseFloat(percentageStr) / 100; // 先将百分比字符串转换为浮点数,并除以100转换为小数\n const result = value * percentage;\n return result;\n};\n\nexport const isPercentage = (value: number | string) => /^(\\d+)(\\.\\d+)?%$/.test(`${value}`);\n\nexport const convertToNumber = (value: number | string, parentValue = 0) => {\n if (typeof value === 'number') {\n return value;\n }\n\n if (typeof value === 'string' && isPercentage(value)) {\n return calculatePercentage(parentValue, value);\n }\n\n return parseFloat(value);\n};\n"],"names":["id","data","NodeType","ids"],"mappings":";;;;;;AAAO,QAAM,8BAAqB,CAAA,MAAA;EAEhC,EAAM,MAAA,WAAA,uBAAkB,GAAI,EAAA,CAAA;EAE5B,EAAA,OAAO,CAAC,GAAA,EAAa,WAAsB,EAAA,QAAA,GAAW,WAAW,QAAa,KAAA;EAC5E,IAAI,IAAA,MAAA,GAAS,WAAY,CAAA,GAAA,CAAI,QAAQ,CAAA,CAAA;EACrC,IAAA,IAAI,CAAC,MAAQ,EAAA;EACX,MAAA,MAAA,uBAAa,GAAI,EAAA,CAAA;EACjB,MAAY,WAAA,CAAA,GAAA,CAAI,UAAU,MAAM,CAAA,CAAA;EAAA,KAClC;EAGA,IAAI,IAAA,MAAA,CAAO,IAAI,GAAG,CAAA;EAAG,MAAO,OAAA,MAAA,CAAO,IAAI,GAAG,CAAA,CAAA;EAE1C,IAAA,MAAM,IAAO,GAAA,IAAI,OAAc,CAAA,CAAC,SAAS,MAAW,KAAA;EAClD,MAAM,MAAA,MAAA,GAAS,QAAS,CAAA,aAAA,CAAc,QAAQ,CAAA,CAAA;EAC9C,MAAA,MAAA,CAAO,IAAO,GAAA,iBAAA,CAAA;EACd,MAAA,IAAI,WAAa,EAAA;EACf,QAAA,MAAA,CAAO,WAAc,GAAA,WAAA,CAAA;EAAA,OACvB;EACA,MAAA,MAAA,CAAO,GAAM,GAAA,GAAA,CAAA;EACb,MAAS,QAAA,CAAA,IAAA,CAAK,YAAY,MAAM,CAAA,CAAA;EAChC,MAAA,MAAA,CAAO,SAAS,MAAM;EACpB,QAAQ,OAAA,EAAA,CAAA;EAAA,OACV,CAAA;EACA,MAAA,MAAA,CAAO,UAAU,MAAM;EACrB,QAAO,MAAA,CAAA,IAAI,KAAM,CAAA,MAAM,CAAC,CAAA,CAAA;EAAA,OAC1B,CAAA;EACA,MAAA,UAAA,CAAW,MAAM;EACf,QAAO,MAAA,CAAA,IAAI,KAAM,CAAA,SAAS,CAAC,CAAA,CAAA;EAAA,OAC7B,EAAG,KAAK,GAAI,CAAA,CAAA;EAAA,KACb,CAAA,CAAE,KAAM,CAAA,CAAC,GAAQ,KAAA;EAEhB,MAAA,MAAA,CAAO,OAAO,GAAG,CAAA,CAAA;EACjB,MAAM,MAAA,GAAA,CAAA;EAAA,KACP,CAAA,CAAA;EAED,IAAO,MAAA,CAAA,GAAA,CAAI,KAAK,IAAI,CAAA,CAAA;EACpB,IAAO,OAAA,MAAA,CAAO,IAAI,GAAG,CAAA,CAAA;EAAA,GACvB,CAAA;EACF,CAAG,IAAA;AAEI,QAAM,+BAAsB,CAAA,MAAA;EAEjC,EAAM,MAAA,WAAA,uBAAkB,GAAI,EAAA,CAAA;EAE5B,EAAA,OAAO,CAAC,GAAA,EAAa,QAAW,GAAA,UAAA,CAAW,QAAa,KAAA;EACtD,IAAI,IAAA,MAAA,GAAS,WAAY,CAAA,GAAA,CAAI,QAAQ,CAAA,CAAA;EACrC,IAAA,IAAI,CAAC,MAAQ,EAAA;EACX,MAAA,MAAA,uBAAa,GAAI,EAAA,CAAA;EACjB,MAAY,WAAA,CAAA,GAAA,CAAI,UAAU,MAAM,CAAA,CAAA;EAAA,KAClC;EAGA,IAAI,IAAA,MAAA,CAAO,IAAI,GAAG,CAAA;EAAG,MAAO,OAAA,MAAA,CAAO,IAAI,GAAG,CAAA,CAAA;EAE1C,IAAA,MAAM,IAAO,GAAA,IAAI,OAAc,CAAA,CAAC,SAAS,MAAW,KAAA;EAClD,MAAM,MAAA,IAAA,GAAO,QAAS,CAAA,aAAA,CAAc,MAAM,CAAA,CAAA;EAC1C,MAAA,IAAA,CAAK,GAAM,GAAA,YAAA,CAAA;EACX,MAAA,IAAA,CAAK,IAAO,GAAA,GAAA,CAAA;EACZ,MAAS,QAAA,CAAA,IAAA,CAAK,YAAY,IAAI,CAAA,CAAA;EAC9B,MAAA,IAAA,CAAK,SAAS,MAAM;EAClB,QAAQ,OAAA,EAAA,CAAA;EAAA,OACV,CAAA;EACA,MAAA,IAAA,CAAK,UAAU,MAAM;EACnB,QAAO,MAAA,CAAA,IAAI,KAAM,CAAA,MAAM,CAAC,CAAA,CAAA;EAAA,OAC1B,CAAA;EACA,MAAA,UAAA,CAAW,MAAM;EACf,QAAO,MAAA,CAAA,IAAI,KAAM,CAAA,SAAS,CAAC,CAAA,CAAA;EAAA,OAC7B,EAAG,KAAK,GAAI,CAAA,CAAA;EAAA,KACb,CAAA,CAAE,KAAM,CAAA,CAAC,GAAQ,KAAA;EAEhB,MAAA,MAAA,CAAO,OAAO,GAAG,CAAA,CAAA;EACjB,MAAM,MAAA,GAAA,CAAA;EAAA,KACP,CAAA,CAAA;EAED,IAAO,MAAA,CAAA,GAAA,CAAI,KAAK,IAAI,CAAA,CAAA;EACpB,IAAO,OAAA,MAAA,CAAO,IAAI,GAAG,CAAA,CAAA;EAAA,GACvB,CAAA;EACF,CAAG,IAAA;AAEI,QAAM,YAAe,GAAA,CAAC,EAAa,EAAA,GAAA,EAAe,SAAsB,KAAA;EAC7E,EAAA,MAAM,KAAQ,GAAA,GAAA,CAAI,aAAc,CAAA,CAAA,CAAA,EAAI,SAAS,CAAE,CAAA,CAAA,CAAA;EAC/C,EAAA,IAAI,SAAS,KAAU,KAAA,EAAA;EAAI,IAAA,eAAA,CAAgB,OAAO,SAAS,CAAA,CAAA;EAC3D,EAAA,IAAI,CAAC,EAAA,CAAG,SAAU,CAAA,QAAA,CAAS,SAAS,CAAA;EAAG,IAAG,EAAA,CAAA,SAAA,CAAU,IAAI,SAAS,CAAA,CAAA;EACnE,EAAA;AAEa,QAAA,eAAA,GAAkB,CAAC,EAAA,EAAA,GAAgB,SAAwB,KAAA;EACtE,EAAG,EAAA,CAAA,SAAA,CAAU,MAAO,CAAA,GAAG,SAAS,CAAA,CAAA;EAClC,EAAA;AAEa,QAAA,0BAAA,GAA6B,CAAC,GAAA,EAAe,SAAsB,KAAA;EAC9E,EAAA,MAAM,EAAyB,GAAA,GAAA,CAAI,aAAc,CAAA,CAAA,CAAA,EAAI,SAAS,CAAE,CAAA,CAAA,CAAA;EAChE,EAAI,EAAA,EAAA,SAAA,CAAU,OAAO,SAAS,CAAA,CAAA;EAC9B,EAAO,OAAA,EAAA,CAAA;EACT,EAAA;AAEa,QAAA,WAAA,GAAc,CAAC,GAAA,EAAe,KAAkB,KAAA;EAC3D,EAAM,MAAA,OAAA,GAAU,GAAI,CAAA,aAAA,CAAc,OAAO,CAAA,CAAA;EACzC,EAAA,OAAA,CAAQ,SAAY,GAAA,KAAA,CAAA;EACpB,EAAI,GAAA,CAAA,IAAA,CAAK,YAAY,OAAO,CAAA,CAAA;EAC5B,EAAO,OAAA,OAAA,CAAA;EACT,EAAA;AAEO,QAAM,SAAY,GAAA,CAAC,EAAE,SAAA,EAAW,SAAsD,KAAA;EAC3F,EAAA,MAAM,EAAK,GAAA,UAAA,CAAW,QAAS,CAAA,aAAA,CAAc,KAAK,CAAA,CAAA;EAClD,EAAA,EAAA,CAAG,SAAY,GAAA,SAAA,CAAA;EACf,EAAA,EAAA,CAAG,MAAM,OAAU,GAAA,OAAA,CAAA;EACnB,EAAO,OAAA,EAAA,CAAA;EACT,EAAA;AAEa,QAAA,WAAA,GAAc,MAAM,UAAW,CAAA;;ECrF5C,KAAA,CAAM,OAAO,GAAG,CAAA,CAAA;AAET,QAAM,QAAQ,CAAC,EAAA,KACpB,IAAI,OAAA,CAAQ,CAAC,OAAY,KAAA;EACvB,EAAM,MAAA,KAAA,GAAQ,WAAW,MAAM;EAC7B,IAAA,YAAA,CAAa,KAAK,CAAA,CAAA;EAClB,IAAQ,OAAA,EAAA,CAAA;EAAA,KACP,EAAE,CAAA,CAAA;EACP,CAAC,EAAA;AAEI,QAAM,oBAAoB,CAC/B,CAAA,EACA,YAAe,GAAA,GAAA,EACf,SAAS,qBACW,KAAA;EACpB,EAAA,IAAI,CAAG,EAAA;EACL,IAAA,IAAI,IAAO,GAAA,IAAA,CAAA;EACX,IAAA,IAAI,CAAC,GAAK,EAAA,WAAW,CAAE,CAAA,QAAA,CAAS,MAAM,CAAG,EAAA;EACvC,MAAO,IAAA,GAAA,KAAA,CAAM,CAAC,CAAA,CAAE,OAAQ,EAAA,CAAA;EAAA,KAC1B,MAAA,IAAY,OAAO,CAAA,KAAM,QAAY,IAAA,CAAA,CAAE,SAAS,GAAG,CAAA,IAAM,CAAE,CAAA,WAAA,KAAgB,IAAM,EAAA;EAE/E,MAAA,IAAA,GAAO,MAAM,CAAC,CAAA,CAAE,UAAU,CAAC,CAAA,CAAE,OAAO,MAAM,CAAA,CAAA;EAAA,KACrC,MAAA;EACL,MAAA,IAAA,GAAO,KAAM,CAAA,CAAC,CAAE,CAAA,MAAA,CAAO,MAAM,CAAA,CAAA;EAAA,KAC/B;EAGA,IAAA,IAAI,SAAS,cAAgB,EAAA;EAC3B,MAAO,OAAA,IAAA,CAAA;EAAA,KACT;EACA,IAAO,OAAA,YAAA,CAAA;EAAA,GACT;EACA,EAAO,OAAA,YAAA,CAAA;EACT,EAAA;AAGa,QAAA,MAAA,GAAS,CAAC,IAAO,GAAA,EAAA,KAAO,KAAK,OAAQ,CAAA,YAAA,EAAc,KAAK,CAAA,CAAE,WAAY,GAAA;AAE5E,QAAM,MAAS,GAAA,CAAC,IAAO,GAAA,EAAA,KAAe,IAAK,CAAA,OAAA,CAAQ,QAAU,EAAA,CAAC,GAAK,EAAA,MAAA,KAAW,MAAO,CAAA,WAAA,EAAa,EAAA;AAElG,QAAM,UAAU,MAAW,KAAA,EAAA;AAQ3B,QAAM,WAAc,GAAA,CAAC,EAAQ,EAAA,IAAA,GAAgB,EAAgB,KAAA;EAClE,EAAA,MAAM,OAAgB,EAAC,CAAA;EAEvB,EAAM,MAAA,GAAA,GAAM,SAAUA,GAAAA,EAAqBC,KAA6B,EAAA;EACtE,IAAA,IAAI,CAAC,KAAA,CAAM,OAAQA,CAAAA,KAAI,CAAG,EAAA;EACxB,MAAO,OAAA,IAAA,CAAA;EAAA,KACT;EAEA,IAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAIA,MAAK,MAAQ,EAAA,CAAA,GAAI,GAAG,CAAK,EAAA,EAAA;EAC3C,MAAM,MAAA,IAAA,GAAOA,MAAK,CAAC,CAAA,CAAA;EAEnB,MAAA,IAAA,CAAK,KAAK,IAAI,CAAA,CAAA;EACd,MAAA,IAAI,GAAG,IAAK,CAAA,EAAE,CAAO,CAAA,KAAA,CAAA,EAAGD,GAAE,CAAI,CAAA,EAAA;EAC5B,QAAO,OAAA,IAAA,CAAA;EAAA,OACT;EAEA,MAAA,IAAI,KAAK,KAAO,EAAA;EACd,QAAA,MAAM,IAAO,GAAA,GAAA,CAAIA,GAAI,EAAA,IAAA,CAAK,KAAK,CAAA,CAAA;EAC/B,QAAA,IAAI,IAAM,EAAA;EACR,UAAO,OAAA,IAAA,CAAA;EAAA,SACT;EAAA,OACF;EAEA,MAAA,IAAA,CAAK,GAAI,EAAA,CAAA;EAAA,KACX;EAEA,IAAO,OAAA,IAAA,CAAA;EAAA,GACT,CAAA;EAEA,EAAA,GAAA,CAAI,IAAI,IAAI,CAAA,CAAA;EAEZ,EAAO,OAAA,IAAA,CAAA;EACT,EAAA;AAEO,QAAM,YAAY,CAAC,GAAA,KACxB,IAAI,OAAQ,CAAA,IAAA,EAAM,MAAM,CAAE,CAAA,OAAA,CAAQ,IAAM,EAAA,MAAM,EAAE,OAAQ,CAAA,IAAA,EAAM,QAAQ,CAAE,CAAA,OAAA,CAAQ,MAAM,QAAQ,EAAA;AAEnF,QAAA,WAAA,GAAc,CAAC,KAAA,EAAe,GAAiB,KAAA;EAC1D,EAAM,MAAA,CAAA,GAAI,OAAO,QAAS,CAAA,IAAA,CAAA;EAC1B,EAAA,MAAM,MAAM,IAAI,MAAA,CAAO,CAAQ,KAAA,EAAA,KAAK,aAAa,IAAI,CAAA,CAAA;EAErD,EAAM,MAAA,OAAA,GAAU,CAAE,CAAA,KAAA,CAAM,GAAG,CAAA,CAAA;EAC3B,EAAI,IAAA,MAAA,CAAA;EACJ,EAAI,IAAA,OAAA,IAAW,OAAQ,CAAA,MAAA,GAAS,CAAG,EAAA;EACjC,IAAA,MAAA,GAAS,QAAQ,OAAQ,CAAA,MAAA,GAAS,CAAC,CAAA,CAAE,MAAM,GAAG,CAAA,CAAA;EAC9C,IAAI,IAAA,MAAA,IAAU,MAAO,CAAA,MAAA,GAAS,CAAG,EAAA;EAE/B,MAAO,OAAA,SAAA,CAAU,MAAO,CAAA,CAAC,CAAC,CAAA,CAAA;EAAA,KAC5B;EACA,IAAO,OAAA,EAAA,CAAA;EAAA,GACT;EACA,EAAO,OAAA,EAAA,CAAA;EACT,EAAA;AAEa,QAAA,QAAA,GAAW,CAAC,GAAa,KAAA,MAAA,CAAO,UAAU,QAAS,CAAA,IAAA,CAAK,GAAG,CAAM,KAAA,kBAAA;AAEjE,QAAA,KAAA,GAAQ,CAAC,IAAA,KAAqC,OAAQ,CAAA,IAAA,EAAM,MAAM,WAAY,EAAA,CAAE,QAAS,CAAA,KAAK,CAAC,EAAA;AAE/F,QAAA,MAAA,GAAS,CAAC,IAAsC,KAAA;EAC3D,EAAA,IAAI,CAAC,IAAA;EAAM,IAAO,OAAA,KAAA,CAAA;EAClB,EAAA,OAAO,QAAQ,IAAK,CAAA,IAAA,EAAM,WAAY,EAAA,KAAME,gBAAS,IAAI,CAAA,CAAA;EAC3D,EAAA;AAEO,QAAM,QAAW,GAAA,CAAC,KAAkB,KAAA,mBAAA,CAAoB,KAAK,KAAK,EAAA;AAElE,QAAM,UAAU,CAAC,SAAA,KAAsB,UAAU,KAAM,CAAA,aAAa,IAAI,CAAC,EAAA;AAEzE,QAAM,eAAe,CAAC,SAAA,GAAY,IAAI,MAAS,GAAA,UAAA,CAAW,SAAS,IAAS,KAAA;EACjF,EAAM,MAAA,SAAA,GAAY,mBAAoB,CAAA,IAAA,CAAK,SAAS,CAAA,CAAA;EAEpD,EAAA,IAAI,CAAC,SAAA;EAAW,IAAO,OAAA,IAAA,CAAA;EAEvB,EAAO,OAAA,OAAA,CAAQ,SAAS,CAAM,KAAA,MAAA,CAAA;EAChC,EAAA;AAOa,QAAA,IAAA,GAAO,CAAC,KAAA,GAAQ,CAC3B,KAAA,GAAA,CAAI,MAAO,CAAA,KAAK,CAAE,CAAA,OAAA,CAAQ,OAAS,EAAA,CAAC,CAAM,KAAA;EACxC,EAAA,MAAM,CAAK,GAAA,IAAA,CAAK,MAAO,EAAA,GAAI,EAAM,GAAA,CAAA,CAAA;EACjC,EAAA,MAAM,CAAI,GAAA,CAAA,KAAM,GAAM,GAAA,CAAA,GAAK,IAAI,CAAO,GAAA,CAAA,CAAA;EACtC,EAAO,OAAA,CAAA,CAAE,SAAS,EAAE,CAAA,CAAA;EACtB,CAAC,EAAA;AAEI,QAAM,iBAAyB,GAAA,CAAC,IAAc,EAAA,KAAA,GAAsC,EAAO,KAAA;EAChG,EAAM,MAAA,IAAA,GAAO,IAAK,CAAA,KAAA,CAAM,GAAG,CAAA,CAAA;EAC3B,EAAA,MAAM,aAAa,IAAK,CAAA,MAAA,CAAA;EAExB,EAAA,OAAO,IAAK,CAAA,MAAA,CAAO,CAAC,WAAA,EAAa,cAAmB,YAAyB,KAAA;EAC3E,IAAI,IAAA,MAAA,CAAO,SAAU,CAAA,QAAA,CAAS,IAAK,CAAA,WAAW,MAAM,iBAAqB,IAAA,KAAA,CAAM,OAAQ,CAAA,WAAW,CAAG,EAAA;EACnG,MAAA,OAAO,YAAY,YAAY,CAAA,CAAA;EAAA,KACjC;EAEA,IAAI,IAAA,UAAA,GAAa,MAAM,YAAc,EAAA;EACnC,MAAO,OAAA,KAAA,CAAA,CAAA;EAAA,KACT;EAEA,IAAA,OAAO,EAAC,CAAA;EAAA,KACP,KAAK,CAAA,CAAA;EACV,EAAA;AAEO,QAAM,QAAW,GAAA,CAAC,GAAW,EAAA,IAAA,GAAgB,EAAgB,KAAA;EAClE,EAAA,MAAM,QAAiB,EAAC,CAAA;EAExB,EAAM,MAAA,GAAA,GAAM,SAAUC,IAAAA,EAAWF,KAAe,EAAA;EAC9C,IAAA,IAAI,CAAC,KAAA,CAAM,OAAQA,CAAAA,KAAI,CAAG,EAAA;EACxB,MAAA,OAAA;EAAA,KACF;EAEA,IAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAIA,MAAK,MAAQ,EAAA,CAAA,GAAI,GAAG,CAAK,EAAA,EAAA;EAC3C,MAAM,MAAA,IAAA,GAAOA,MAAK,CAAC,CAAA,CAAA;EACnB,MAAM,MAAA,KAAA,GAAQE,IAAI,CAAA,SAAA,CAAU,CAAC,EAAA,KAAW,CAAG,EAAA,EAAE,CAAO,CAAA,KAAA,CAAA,EAAG,IAAK,CAAA,EAAE,CAAE,CAAA,CAAA,CAAA;EAEhE,MAAA,IAAI,QAAQ,CAAI,CAAA,EAAA;EACd,QAAAA,IAAAA,CAAI,KAAM,CAAA,KAAA,EAAO,CAAC,CAAA,CAAA;EAClB,QAAA,KAAA,CAAM,KAAK,IAAI,CAAA,CAAA;EAAA,OACjB;EAEA,MAAA,IAAI,KAAK,KAAO,EAAA;EACd,QAAIA,GAAAA,CAAAA,IAAAA,EAAK,KAAK,KAAK,CAAA,CAAA;EAAA,OACrB;EAAA,KACF;EAAA,GACF,CAAA;EAEA,EAAA,GAAA,CAAI,KAAK,IAAI,CAAA,CAAA;EAEb,EAAO,OAAA,KAAA,CAAA;EACT,EAAA;AAEO,QAAM,aAAa,CAAC,cAAA,GAAiC,EAAC,EAAG,WAC9D,KAAM,CAAA,IAAA;EAAA,EACJ,OAAO,MAAO,CAAA,cAAc,EAAE,MAAO,CAAA,CAAC,MAAM,GAAQ,KAAA;EAClD,IAAA,CAAC,GAAI,CAAA,MAAM,CAAG,EAAA,IAAA,IAAQ,EAAC,EAAG,OAAQ,CAAA,CAAC,GAAQ,KAAA,IAAA,CAAK,GAAI,CAAA,GAAG,CAAC,CAAA,CAAA;EACxD,IAAO,OAAA,IAAA,CAAA;EAAA,GACT,kBAAO,IAAA,GAAA,EAAS,CAAA;EAClB,EAAA;AAEK,QAAM,aAAgB,GAAA,CAAC,cAAiC,GAAA,OAC7D,KAAM,CAAA,IAAA;EAAA,EACJ,OAAO,MAAO,CAAA,cAAc,EAAE,MAAO,CAAA,CAAC,MAAM,GAAQ,KAAA;EAClD,IAAA,MAAA,CAAO,IAAK,CAAA,GAAG,CAAE,CAAA,OAAA,CAAQ,CAAC,EAAO,KAAA;EAC/B,MAAA,IAAA,CAAK,IAAI,EAAE,CAAA,CAAA;EAAA,KACZ,CAAA,CAAA;EACD,IAAO,OAAA,IAAA,CAAA;EAAA,GACT,kBAAO,IAAA,GAAA,EAAa,CAAA;EACtB,EAAA;AAQK,QAAM,gBAAmB,GAAA,CAAC,OAAgB,EAAA,IAAA,EAAgB,QAAkB,KAAA;EACjF,EAAA,MAAM,IAAO,GAAA,WAAA,CAAY,OAAQ,CAAA,EAAA,EAAI,IAAI,CAAA,CAAA;EACzC,EAAM,MAAA,IAAA,GAAO,KAAK,GAAI,EAAA,CAAA;EACtB,EAAI,IAAA,MAAA,GAAS,KAAK,GAAI,EAAA,CAAA;EAEtB,EAAA,IAAI,QAAU,EAAA;EACZ,IAAA,MAAA,GAAS,WAAY,CAAA,QAAA,EAAU,IAAI,CAAA,CAAE,GAAI,EAAA,CAAA;EAAA,GAC3C;EAEA,EAAA,IAAI,CAAC,IAAA;EAAM,IAAM,MAAA,IAAI,MAAM,SAAS,CAAA,CAAA;EACpC,EAAA,IAAI,CAAC,MAAA;EAAQ,IAAM,MAAA,IAAI,MAAM,QAAQ,CAAA,CAAA;EAErC,EAAM,MAAA,KAAA,GAAQ,OAAO,KAAO,EAAA,SAAA,CAAU,CAAC,KAAiB,KAAA,KAAA,CAAM,EAAO,KAAA,IAAA,CAAK,EAAE,CAAA,CAAA;EAC5E,EAAA,MAAA,CAAO,KAAM,CAAA,MAAA,CAAO,KAAO,EAAA,CAAA,EAAG,OAAO,CAAA,CAAA;EACvC,EAAA;AAEO,QAAM,eAAe,CAC1B,OAAA,EACA,MACA,cAAiC,GAAA,IACjC,QACG,KAAA;EACH,EAAA,IAAI,OAAa,EAAC,CAAA;EAClB,EAAA,IAAI,CAAC,QAAU,EAAA;EACb,IAAO,IAAA,GAAA,UAAA,CAAW,cAAgB,EAAA,IAAA,CAAK,EAAE,CAAA,CAAA;EAAA,GACpC,MAAA;EACL,IAAM,MAAA,GAAA,GAAM,eAAe,QAAQ,CAAA,CAAA;EACnC,IAAA,IAAA,GAAO,GAAM,GAAA,IAAA,CAAK,EAAE,CAAA,CAAE,QAAQ,EAAC,CAAA;EAAA,GACjC;EAEA,EAAA,MAAM,SAAY,GAAA,WAAA,CAAA;EAElB,EAAK,IAAA,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;EACpB,IAAA,MAAM,OAAU,GAAA,CAAA,EAAG,GAAG,CAAA,CAAA,CAAG,MAAM,GAAG,CAAA,CAAA;EAClC,IAAA,MAAM,gBAAgB,OAAQ,CAAA,MAAA,CAAA;EAC9B,IAAA,OAAA,CAAQ,MAAO,CAAA,CAAC,WAAa,EAAA,YAAA,EAAmB,YAAiB,KAAA;EAC/D,MAAI,IAAA,aAAA,GAAgB,MAAM,YAAc,EAAA;EACtC,QAAA,MAAM,QAAW,GAAA,CAAA,EAAG,SAAS,CAAA,EAAG,YAAY,CAAA,CAAA,CAAA;EAE5C,QAAA,IAAI,OAAO,WAAA,CAAY,QAAQ,CAAA,KAAM,WAAa,EAAA;EAChD,UAAY,WAAA,CAAA,QAAQ,CAAI,GAAA,WAAA,CAAY,YAAY,CAAA,CAAA;EAAA,SAClD;EAEA,QAAI,IAAA;EACF,UAAA,WAAA,CAAY,YAAY,CAAA,GAAI,OAAQ,CAAA,WAAA,CAAY,QAAQ,CAAC,CAAA,CAAA;EAAA,iBAClD,CAAG,EAAA;EACV,UAAA,OAAA,CAAQ,MAAM,CAAC,CAAA,CAAA;EACf,UAAA,WAAA,CAAY,YAAY,CAAI,GAAA,EAAA,CAAA;EAAA,SAC9B;EAEA,QAAO,OAAA,WAAA,CAAA;EAAA,OACT;EAEA,MAAA,IAAI,SAAS,WAAW,CAAA,IAAK,KAAM,CAAA,OAAA,CAAQ,WAAW,CAAG,EAAA;EACvD,QAAA,OAAO,YAAY,YAAY,CAAA,CAAA;EAAA,OACjC;EAEA,MAAA,OAAO,EAAC,CAAA;EAAA,OACP,IAAI,CAAA,CAAA;EAAA,GACR,CAAA,CAAA;EAED,EAAA,IAAI,KAAM,CAAA,OAAA,CAAQ,IAAK,CAAA,KAAK,CAAG,EAAA;EAC7B,IAAK,IAAA,CAAA,KAAA,CAAM,QAAQ,CAAC,IAAA,KAAS,aAAa,OAAS,EAAA,IAAA,EAAM,cAAc,CAAC,CAAA,CAAA;EAAA,GAC1E;EAEA,EAAO,OAAA,IAAA,CAAA;EACT,EAAA;AAEO,QAAM,eAAe,CAAC,EAAA,EAAY,YAAiB,KAAY,EAAA,KAAA,GAAkB,EAAgB,KAAA;EACtG,EAAA,QAAQ,EAAI;EAAA,IACV,KAAK,IAAA;EACH,MAAA,OAAO,UAAe,KAAA,KAAA,CAAA;EAAA,IACxB,KAAK,KAAA;EACH,MAAA,OAAO,UAAe,KAAA,KAAA,CAAA;EAAA,IACxB,KAAK,GAAA;EACH,MAAA,OAAO,UAAe,KAAA,KAAA,CAAA;EAAA,IACxB,KAAK,IAAA;EACH,MAAA,OAAO,UAAe,KAAA,KAAA,CAAA;EAAA,IACxB,KAAK,GAAA;EACH,MAAA,OAAO,UAAa,GAAA,KAAA,CAAA;EAAA,IACtB,KAAK,IAAA;EACH,MAAA,OAAO,UAAc,IAAA,KAAA,CAAA;EAAA,IACvB,KAAK,GAAA;EACH,MAAA,OAAO,UAAa,GAAA,KAAA,CAAA;EAAA,IACtB,KAAK,IAAA;EACH,MAAA,OAAO,UAAc,IAAA,KAAA,CAAA;EAAA,IACvB,KAAK,SAAA;EACH,MAAO,OAAA,KAAA,CAAM,SAAS,CAAK,IAAA,UAAA,IAAc,MAAM,CAAC,CAAA,IAAK,UAAc,IAAA,KAAA,CAAM,CAAC,CAAA,CAAA;EAAA,IAC5E,KAAK,aAAA;EACH,MAAO,OAAA,KAAA,CAAM,SAAS,CAAK,IAAA,UAAA,GAAa,MAAM,CAAC,CAAA,IAAK,UAAa,GAAA,KAAA,CAAM,CAAC,CAAA,CAAA;EAAA,IAC1E,KAAK,SAAA;EACH,MAAO,OAAA,UAAA,EAAY,WAAW,KAAK,CAAA,CAAA;EAAA,IACrC,KAAK,aAAA;EACH,MAAA,OAAO,OAAO,UAAe,KAAA,WAAA,IAAe,CAAC,UAAA,CAAW,WAAW,KAAK,CAAA,CAAA;EAExE,GACJ;EAEA,EAAO,OAAA,KAAA,CAAA;EACT,EAAA;AAEa,QAAA,yBAAA,GAA4B,CAAC,MAAyB,KAAA;EACjE,EAAA,MAAM,OAA4B,EAAC,CAAA;EAEnC,EAAA,MAAM,YAAoC,GAAA;EAAA,IACxC,MAAQ,EAAA,KAAA,CAAA;EAAA,IACR,QAAQ,EAAC;EAAA,IACT,OAAO,EAAC;EAAA,IACR,OAAS,EAAA,KAAA,CAAA;EAAA,IACT,MAAQ,EAAA,KAAA,CAAA;EAAA,IACR,IAAM,EAAA,IAAA;EAAA,IACN,GAAK,EAAA,KAAA,CAAA;EAAA,GACP,CAAA;EAEA,EAAO,MAAA,CAAA,OAAA,CAAQ,CAAC,KAAU,KAAA;EACxB,IAAI,IAAA,OAAO,KAAM,CAAA,YAAA,KAAiB,WAAa,EAAA;EAC7C,MAAI,IAAA,KAAA,CAAM,SAAS,OAAW,IAAA,CAAC,MAAM,OAAQ,CAAA,KAAA,CAAM,YAAY,CAAG,EAAA;EAChE,QAAK,IAAA,CAAA,KAAA,CAAM,IAAI,CAAA,GAAI,YAAa,CAAA,KAAA,CAAA;EAChC,QAAA,OAAA;EAAA,OACF;EAEA,MAAA,IAAI,MAAM,IAAS,KAAA,QAAA,IAAY,CAAC,QAAS,CAAA,KAAA,CAAM,YAAY,CAAG,EAAA;EAC5D,QAAI,IAAA,OAAO,KAAM,CAAA,YAAA,KAAiB,QAAU,EAAA;EAC1C,UAAI,IAAA;EACF,YAAA,IAAA,CAAK,MAAM,IAAI,CAAA,GAAI,IAAK,CAAA,KAAA,CAAM,MAAM,YAAY,CAAA,CAAA;EAAA,mBACzC,CAAG,EAAA;EACV,YAAK,IAAA,CAAA,KAAA,CAAM,IAAI,CAAA,GAAI,YAAa,CAAA,MAAA,CAAA;EAAA,WAClC;EACA,UAAA,OAAA;EAAA,SACF;EAEA,QAAK,IAAA,CAAA,KAAA,CAAM,IAAI,CAAA,GAAI,YAAa,CAAA,MAAA,CAAA;EAChC,QAAA,OAAA;EAAA,OACF;EAEA,MAAK,IAAA,CAAA,KAAA,CAAM,IAAI,CAAA,GAAI,KAAM,CAAA,YAAA,CAAA;EACzB,MAAA,OAAA;EAAA,KACF;EAEA,IAAI,IAAA,KAAA,CAAM,SAAS,QAAU,EAAA;EAC3B,MAAK,IAAA,CAAA,KAAA,CAAM,IAAI,CAAI,GAAA,KAAA,CAAM,SAAS,yBAA0B,CAAA,KAAA,CAAM,MAAM,CAAA,GAAI,YAAa,CAAA,MAAA,CAAA;EACzF,MAAA,OAAA;EAAA,KACF;EAEA,IAAA,IAAI,MAAM,IAAM,EAAA;EACd,MAAA,IAAA,CAAK,KAAM,CAAA,IAAI,CAAI,GAAA,YAAA,CAAa,MAAM,IAAI,CAAA,CAAA;EAC1C,MAAA,OAAA;EAAA,KACF;EAEA,IAAK,IAAA,CAAA,KAAA,CAAM,IAAI,CAAI,GAAA,KAAA,CAAA,CAAA;EAAA,GACpB,CAAA,CAAA;EAED,EAAO,OAAA,IAAA,CAAA;EACT,EAAA;AAEO,QAAM,sCAAyC,GAAA,aAAA;AAE/C,QAAM,UAAU,MAAO,CAAA,KAAA;AAEjB,QAAA,mBAAA,GAAsB,CAAC,KAAA,EAAe,aAA0B,KAAA;EAC3E,EAAA,MAAM,UAAa,GAAA,UAAA,CAAW,UAAW,CAAA,aAAa,CAAI,GAAA,GAAA,CAAA;EAC1D,EAAA,MAAM,SAAS,KAAQ,GAAA,UAAA,CAAA;EACvB,EAAO,OAAA,MAAA,CAAA;EACT,EAAA;AAEO,QAAM,eAAe,CAAC,KAAA,KAA2B,mBAAmB,IAAK,CAAA,CAAA,EAAG,KAAK,CAAE,CAAA,EAAA;AAEnF,QAAM,eAAkB,GAAA,CAAC,KAAwB,EAAA,WAAA,GAAc,CAAM,KAAA;EAC1E,EAAI,IAAA,OAAO,UAAU,QAAU,EAAA;EAC7B,IAAO,OAAA,KAAA,CAAA;EAAA,GACT;EAEA,EAAA,IAAI,OAAO,KAAA,KAAU,QAAY,IAAA,YAAA,CAAa,KAAK,CAAG,EAAA;EACpD,IAAO,OAAA,mBAAA,CAAoB,aAAa,KAAK,CAAA,CAAA;EAAA,GAC/C;EAEA,EAAA,OAAO,WAAW,KAAK,CAAA,CAAA;EACzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.3.
|
|
2
|
+
"version": "1.3.6",
|
|
3
3
|
"name": "@tmagic/utils",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/tmagic-utils.umd.cjs",
|
|
@@ -23,23 +23,23 @@
|
|
|
23
23
|
"clear:type": "rimraf ./types"
|
|
24
24
|
},
|
|
25
25
|
"engines": {
|
|
26
|
-
"node": ">=
|
|
26
|
+
"node": ">=18"
|
|
27
27
|
},
|
|
28
28
|
"repository": {
|
|
29
29
|
"type": "git",
|
|
30
30
|
"url": "https://github.com/Tencent/tmagic-editor.git"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@tmagic/schema": "1.3.
|
|
33
|
+
"@tmagic/schema": "1.3.6",
|
|
34
34
|
"dayjs": "^1.11.4"
|
|
35
35
|
},
|
|
36
36
|
"peerDependencies": {
|
|
37
37
|
"dayjs": "^1.11.4"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
|
-
"@types/node": "^
|
|
40
|
+
"@types/node": "^18.19.0",
|
|
41
41
|
"rimraf": "^3.0.2",
|
|
42
42
|
"typescript": "^5.0.4",
|
|
43
|
-
"vite": "^
|
|
43
|
+
"vite": "^5.0.7"
|
|
44
44
|
}
|
|
45
45
|
}
|
package/src/index.ts
CHANGED
|
@@ -296,49 +296,37 @@ export const compiledNode = (
|
|
|
296
296
|
return node;
|
|
297
297
|
};
|
|
298
298
|
|
|
299
|
-
export const compiledCond = (op: string, fieldValue: any, value: any, range: [
|
|
299
|
+
export const compiledCond = (op: string, fieldValue: any, value: any, range: number[] = []): boolean => {
|
|
300
300
|
switch (op) {
|
|
301
301
|
case 'is':
|
|
302
|
-
|
|
303
|
-
break;
|
|
302
|
+
return fieldValue === value;
|
|
304
303
|
case 'not':
|
|
305
|
-
|
|
306
|
-
break;
|
|
304
|
+
return fieldValue !== value;
|
|
307
305
|
case '=':
|
|
308
|
-
|
|
309
|
-
break;
|
|
306
|
+
return fieldValue === value;
|
|
310
307
|
case '!=':
|
|
311
|
-
|
|
312
|
-
break;
|
|
308
|
+
return fieldValue !== value;
|
|
313
309
|
case '>':
|
|
314
|
-
|
|
315
|
-
break;
|
|
310
|
+
return fieldValue > value;
|
|
316
311
|
case '>=':
|
|
317
|
-
|
|
318
|
-
break;
|
|
312
|
+
return fieldValue >= value;
|
|
319
313
|
case '<':
|
|
320
|
-
|
|
321
|
-
break;
|
|
314
|
+
return fieldValue < value;
|
|
322
315
|
case '<=':
|
|
323
|
-
|
|
324
|
-
break;
|
|
316
|
+
return fieldValue >= value;
|
|
325
317
|
case 'between':
|
|
326
|
-
|
|
327
|
-
break;
|
|
318
|
+
return range.length > 1 && fieldValue >= range[0] && fieldValue <= range[1];
|
|
328
319
|
case 'not_between':
|
|
329
|
-
|
|
330
|
-
break;
|
|
320
|
+
return range.length < 2 || fieldValue < range[0] || fieldValue > range[1];
|
|
331
321
|
case 'include':
|
|
332
|
-
|
|
333
|
-
break;
|
|
322
|
+
return fieldValue?.includes?.(value);
|
|
334
323
|
case 'not_include':
|
|
335
|
-
|
|
336
|
-
break;
|
|
324
|
+
return typeof fieldValue === 'undefined' || !fieldValue.includes?.(value);
|
|
337
325
|
default:
|
|
338
326
|
break;
|
|
339
327
|
}
|
|
340
328
|
|
|
341
|
-
return
|
|
329
|
+
return false;
|
|
342
330
|
};
|
|
343
331
|
|
|
344
332
|
export const getDefaultValueFromFields = (fields: DataSchema[]) => {
|
package/types/index.d.ts
CHANGED
|
@@ -38,7 +38,7 @@ export declare const getDepNodeIds: (dataSourceDeps?: DataSourceDeps) => string[
|
|
|
38
38
|
*/
|
|
39
39
|
export declare const replaceChildNode: (newNode: MNode, data?: MNode[], parentId?: Id) => void;
|
|
40
40
|
export declare const compiledNode: (compile: (value: any) => any, node: MNode, dataSourceDeps?: DataSourceDeps, sourceId?: Id) => MNode;
|
|
41
|
-
export declare const compiledCond: (op: string, fieldValue: any, value: any, range
|
|
41
|
+
export declare const compiledCond: (op: string, fieldValue: any, value: any, range?: number[]) => boolean;
|
|
42
42
|
export declare const getDefaultValueFromFields: (fields: DataSchema[]) => Record<string, any>;
|
|
43
43
|
export declare const DATA_SOURCE_FIELDS_SELECT_VALUE_PREFIX = "ds-field::";
|
|
44
44
|
export declare const getKeys: <T extends object>(obj: T) => (keyof T)[];
|