@tmagic/utils 1.3.0-alpha.8 → 1.3.0-beta.0

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.
@@ -165,6 +165,7 @@ const getUrlParam = (param, url) => {
165
165
  }
166
166
  return "";
167
167
  };
168
+ const isObject = (obj) => Object.prototype.toString.call(obj) === "[object Object]";
168
169
  const isPop = (node) => Boolean(node?.type?.toLowerCase().endsWith("pop"));
169
170
  const isPage = (node) => {
170
171
  if (!node)
@@ -184,7 +185,7 @@ const guid = (digit = 8) => "x".repeat(digit).replace(/[xy]/g, (c) => {
184
185
  const v = c === "x" ? r : r & 3 | 8;
185
186
  return v.toString(16);
186
187
  });
187
- const getValueByKeyPath = (keys, value) => {
188
+ const getValueByKeyPath = (keys, value = {}) => {
188
189
  const path = keys.split(".");
189
190
  const pathLength = path.length;
190
191
  return path.reduce((accumulator, currentValue, currentIndex) => {
@@ -260,11 +261,12 @@ const compiledNode = (compile, node, dataSourceDeps = {}, sourceId) => {
260
261
  const keyPathLength = keyPath.length;
261
262
  keyPath.reduce((accumulator, currentValue, currentIndex) => {
262
263
  if (keyPathLength - 1 === currentIndex) {
263
- if (typeof accumulator[`${keyPrefix}${currentValue}`] === "undefined") {
264
- accumulator[`${keyPrefix}${currentValue}`] = accumulator[currentValue];
264
+ const cacheKey = `${keyPrefix}${currentValue}`;
265
+ if (typeof accumulator[cacheKey] === "undefined") {
266
+ accumulator[cacheKey] = accumulator[currentValue];
265
267
  }
266
268
  try {
267
- accumulator[currentValue] = compile(accumulator[`${keyPrefix}${currentValue}`]);
269
+ accumulator[currentValue] = compile(accumulator[cacheKey]);
268
270
  } catch (e) {
269
271
  console.error(e);
270
272
  accumulator[currentValue] = "";
@@ -282,6 +284,59 @@ const compiledNode = (compile, node, dataSourceDeps = {}, sourceId) => {
282
284
  }
283
285
  return node;
284
286
  };
287
+ const compiledCond = (op, fieldValue, value, range) => {
288
+ switch (op) {
289
+ case "is":
290
+ if (!fieldValue)
291
+ return false;
292
+ break;
293
+ case "not":
294
+ if (fieldValue)
295
+ return false;
296
+ break;
297
+ case "=":
298
+ if (fieldValue !== value)
299
+ return false;
300
+ break;
301
+ case "!=":
302
+ if (fieldValue === value)
303
+ return false;
304
+ break;
305
+ case ">":
306
+ if (fieldValue <= value)
307
+ return false;
308
+ break;
309
+ case ">=":
310
+ if (fieldValue < value)
311
+ return false;
312
+ break;
313
+ case "<":
314
+ if (fieldValue >= value)
315
+ return false;
316
+ break;
317
+ case "<=":
318
+ if (fieldValue > value)
319
+ return false;
320
+ break;
321
+ case "between":
322
+ if (fieldValue < range[0] || fieldValue > range[1])
323
+ return false;
324
+ break;
325
+ case "not_between":
326
+ if (fieldValue >= range[0] && fieldValue <= range[1])
327
+ return false;
328
+ break;
329
+ case "include":
330
+ if (typeof fieldValue !== "undefined" && !fieldValue.includes?.(value))
331
+ return false;
332
+ break;
333
+ case "not_include":
334
+ if (typeof fieldValue !== "undefined" && fieldValue.includes?.(value))
335
+ return false;
336
+ break;
337
+ }
338
+ return true;
339
+ };
285
340
 
286
- export { addClassName, asyncLoadCss, asyncLoadJs, compiledNode, createDiv, datetimeFormatter, emptyFn, filterXSS, getDepKeys, getDepNodeIds, getDocument, getHost, getNodePath, getNodes, getUrlParam, getValueByKeyPath, guid, injectStyle, isNumber, isPage, isPop, isSameDomain, removeClassName, removeClassNameByClassName, replaceChildNode, sleep, toHump, toLine };
341
+ export { addClassName, asyncLoadCss, asyncLoadJs, compiledCond, compiledNode, createDiv, datetimeFormatter, emptyFn, filterXSS, getDepKeys, getDepNodeIds, getDocument, getHost, getNodePath, getNodes, getUrlParam, getValueByKeyPath, guid, injectStyle, isNumber, isObject, isPage, isPop, isSameDomain, removeClassName, removeClassNameByClassName, replaceChildNode, sleep, toHump, toLine };
287
342
  //# sourceMappingURL=tmagic-utils.js.map
@@ -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 { 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, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;').replace(/'/g, '&apos;');\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 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: (template: string) => string,\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 if (typeof accumulator[`${keyPrefix}${currentValue}`] === 'undefined') {\n accumulator[`${keyPrefix}${currentValue}`] = accumulator[currentValue];\n }\n\n try {\n accumulator[currentValue] = compile(accumulator[`${keyPrefix}${currentValue}`]);\n } catch (e) {\n console.error(e);\n accumulator[currentValue] = '';\n }\n\n return accumulator;\n }\n\n if (Object.prototype.toString.call(accumulator) === '[object Object]' || 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"],"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 { 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, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;').replace(/'/g, '&apos;');\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 (Object.prototype.toString.call(accumulator) === '[object Object]' || 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) return false;\n break;\n case 'not':\n if (fieldValue) 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"],"names":["id","data","ids"],"mappings":"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"}
@@ -167,6 +167,7 @@
167
167
  }
168
168
  return "";
169
169
  };
170
+ const isObject = (obj) => Object.prototype.toString.call(obj) === "[object Object]";
170
171
  const isPop = (node) => Boolean(node?.type?.toLowerCase().endsWith("pop"));
171
172
  const isPage = (node) => {
172
173
  if (!node)
@@ -186,7 +187,7 @@
186
187
  const v = c === "x" ? r : r & 3 | 8;
187
188
  return v.toString(16);
188
189
  });
189
- const getValueByKeyPath = (keys, value) => {
190
+ const getValueByKeyPath = (keys, value = {}) => {
190
191
  const path = keys.split(".");
191
192
  const pathLength = path.length;
192
193
  return path.reduce((accumulator, currentValue, currentIndex) => {
@@ -262,11 +263,12 @@
262
263
  const keyPathLength = keyPath.length;
263
264
  keyPath.reduce((accumulator, currentValue, currentIndex) => {
264
265
  if (keyPathLength - 1 === currentIndex) {
265
- if (typeof accumulator[`${keyPrefix}${currentValue}`] === "undefined") {
266
- accumulator[`${keyPrefix}${currentValue}`] = accumulator[currentValue];
266
+ const cacheKey = `${keyPrefix}${currentValue}`;
267
+ if (typeof accumulator[cacheKey] === "undefined") {
268
+ accumulator[cacheKey] = accumulator[currentValue];
267
269
  }
268
270
  try {
269
- accumulator[currentValue] = compile(accumulator[`${keyPrefix}${currentValue}`]);
271
+ accumulator[currentValue] = compile(accumulator[cacheKey]);
270
272
  } catch (e) {
271
273
  console.error(e);
272
274
  accumulator[currentValue] = "";
@@ -284,10 +286,64 @@
284
286
  }
285
287
  return node;
286
288
  };
289
+ const compiledCond = (op, fieldValue, value, range) => {
290
+ switch (op) {
291
+ case "is":
292
+ if (!fieldValue)
293
+ return false;
294
+ break;
295
+ case "not":
296
+ if (fieldValue)
297
+ return false;
298
+ break;
299
+ case "=":
300
+ if (fieldValue !== value)
301
+ return false;
302
+ break;
303
+ case "!=":
304
+ if (fieldValue === value)
305
+ return false;
306
+ break;
307
+ case ">":
308
+ if (fieldValue <= value)
309
+ return false;
310
+ break;
311
+ case ">=":
312
+ if (fieldValue < value)
313
+ return false;
314
+ break;
315
+ case "<":
316
+ if (fieldValue >= value)
317
+ return false;
318
+ break;
319
+ case "<=":
320
+ if (fieldValue > value)
321
+ return false;
322
+ break;
323
+ case "between":
324
+ if (fieldValue < range[0] || fieldValue > range[1])
325
+ return false;
326
+ break;
327
+ case "not_between":
328
+ if (fieldValue >= range[0] && fieldValue <= range[1])
329
+ return false;
330
+ break;
331
+ case "include":
332
+ if (typeof fieldValue !== "undefined" && !fieldValue.includes?.(value))
333
+ return false;
334
+ break;
335
+ case "not_include":
336
+ if (typeof fieldValue !== "undefined" && fieldValue.includes?.(value))
337
+ return false;
338
+ break;
339
+ }
340
+ return true;
341
+ };
287
342
 
288
343
  exports.addClassName = addClassName;
289
344
  exports.asyncLoadCss = asyncLoadCss;
290
345
  exports.asyncLoadJs = asyncLoadJs;
346
+ exports.compiledCond = compiledCond;
291
347
  exports.compiledNode = compiledNode;
292
348
  exports.createDiv = createDiv;
293
349
  exports.datetimeFormatter = datetimeFormatter;
@@ -304,6 +360,7 @@
304
360
  exports.guid = guid;
305
361
  exports.injectStyle = injectStyle;
306
362
  exports.isNumber = isNumber;
363
+ exports.isObject = isObject;
307
364
  exports.isPage = isPage;
308
365
  exports.isPop = isPop;
309
366
  exports.isSameDomain = isSameDomain;
@@ -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 { 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, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;').replace(/'/g, '&apos;');\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 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: (template: string) => string,\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 if (typeof accumulator[`${keyPrefix}${currentValue}`] === 'undefined') {\n accumulator[`${keyPrefix}${currentValue}`] = accumulator[currentValue];\n }\n\n try {\n accumulator[currentValue] = compile(accumulator[`${keyPrefix}${currentValue}`]);\n } catch (e) {\n console.error(e);\n accumulator[currentValue] = '';\n }\n\n return accumulator;\n }\n\n if (Object.prototype.toString.call(accumulator) === '[object Object]' || 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"],"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 { 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, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;').replace(/'/g, '&apos;');\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 (Object.prototype.toString.call(accumulator) === '[object Object]' || 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) return false;\n break;\n case 'not':\n if (fieldValue) 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"],"names":["id","data","NodeType","ids"],"mappings":"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"}
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.3.0-alpha.8",
2
+ "version": "1.3.0-beta.0",
3
3
  "name": "@tmagic/utils",
4
4
  "type": "module",
5
5
  "main": "dist/tmagic-utils.umd.cjs",
@@ -29,7 +29,7 @@
29
29
  "url": "https://github.com/Tencent/tmagic-editor.git"
30
30
  },
31
31
  "dependencies": {
32
- "@tmagic/schema": "1.3.0-alpha.8",
32
+ "@tmagic/schema": "1.3.0-beta.0",
33
33
  "dayjs": "^1.11.4"
34
34
  },
35
35
  "peerDependencies": {
@@ -39,6 +39,6 @@
39
39
  "@types/node": "^15.12.4",
40
40
  "rimraf": "^3.0.2",
41
41
  "typescript": "^5.0.4",
42
- "vite": "^4.2.1"
42
+ "vite": "^4.4.4"
43
43
  }
44
44
  }
package/src/index.ts CHANGED
@@ -126,6 +126,8 @@ export const getUrlParam = (param: string, url?: string) => {
126
126
  return '';
127
127
  };
128
128
 
129
+ export const isObject = (obj: any) => Object.prototype.toString.call(obj) === '[object Object]';
130
+
129
131
  export const isPop = (node: MComponent | null): boolean => Boolean(node?.type?.toLowerCase().endsWith('pop'));
130
132
 
131
133
  export const isPage = (node?: MComponent | null): boolean => {
@@ -157,7 +159,7 @@ export const guid = (digit = 8): string =>
157
159
  return v.toString(16);
158
160
  });
159
161
 
160
- export const getValueByKeyPath: any = (keys: string, value: Record<string | number, any>) => {
162
+ export const getValueByKeyPath: any = (keys: string, value: Record<string | number, any> = {}) => {
161
163
  const path = keys.split('.');
162
164
  const pathLength = path.length;
163
165
 
@@ -243,7 +245,7 @@ export const replaceChildNode = (newNode: MNode, data?: MNode[], parentId?: Id)
243
245
  };
244
246
 
245
247
  export const compiledNode = (
246
- compile: (template: string) => string,
248
+ compile: (value: any) => any,
247
249
  node: MNode,
248
250
  dataSourceDeps: DataSourceDeps = {},
249
251
  sourceId?: Id,
@@ -263,12 +265,14 @@ export const compiledNode = (
263
265
  const keyPathLength = keyPath.length;
264
266
  keyPath.reduce((accumulator, currentValue: any, currentIndex) => {
265
267
  if (keyPathLength - 1 === currentIndex) {
266
- if (typeof accumulator[`${keyPrefix}${currentValue}`] === 'undefined') {
267
- accumulator[`${keyPrefix}${currentValue}`] = accumulator[currentValue];
268
+ const cacheKey = `${keyPrefix}${currentValue}`;
269
+
270
+ if (typeof accumulator[cacheKey] === 'undefined') {
271
+ accumulator[cacheKey] = accumulator[currentValue];
268
272
  }
269
273
 
270
274
  try {
271
- accumulator[currentValue] = compile(accumulator[`${keyPrefix}${currentValue}`]);
275
+ accumulator[currentValue] = compile(accumulator[cacheKey]);
272
276
  } catch (e) {
273
277
  console.error(e);
274
278
  accumulator[currentValue] = '';
@@ -291,3 +295,48 @@ export const compiledNode = (
291
295
 
292
296
  return node;
293
297
  };
298
+
299
+ export const compiledCond = (op: string, fieldValue: any, value: any, range: [number, number]): boolean => {
300
+ switch (op) {
301
+ case 'is':
302
+ if (!fieldValue) return false;
303
+ break;
304
+ case 'not':
305
+ if (fieldValue) return false;
306
+ break;
307
+ case '=':
308
+ if (fieldValue !== value) return false;
309
+ break;
310
+ case '!=':
311
+ if (fieldValue === value) return false;
312
+ break;
313
+ case '>':
314
+ if (fieldValue <= value) return false;
315
+ break;
316
+ case '>=':
317
+ if (fieldValue < value) return false;
318
+ break;
319
+ case '<':
320
+ if (fieldValue >= value) return false;
321
+ break;
322
+ case '<=':
323
+ if (fieldValue > value) return false;
324
+ break;
325
+ case 'between':
326
+ if (fieldValue < range[0] || fieldValue > range[1]) return false;
327
+ break;
328
+ case 'not_between':
329
+ if (fieldValue >= range[0] && fieldValue <= range[1]) return false;
330
+ break;
331
+ case 'include':
332
+ if (typeof fieldValue !== 'undefined' && !fieldValue.includes?.(value)) return false;
333
+ break;
334
+ case 'not_include':
335
+ if (typeof fieldValue !== 'undefined' && fieldValue.includes?.(value)) return false;
336
+ break;
337
+ default:
338
+ break;
339
+ }
340
+
341
+ return true;
342
+ };
package/types/index.d.ts CHANGED
@@ -14,6 +14,7 @@ export declare const emptyFn: () => any;
14
14
  export declare const getNodePath: (id: Id, data?: MNode[]) => MNode[];
15
15
  export declare const filterXSS: (str: string) => string;
16
16
  export declare const getUrlParam: (param: string, url?: string) => string;
17
+ export declare const isObject: (obj: any) => boolean;
17
18
  export declare const isPop: (node: MComponent | null) => boolean;
18
19
  export declare const isPage: (node?: MComponent | null) => boolean;
19
20
  export declare const isNumber: (value: string) => boolean;
@@ -36,4 +37,5 @@ export declare const getDepNodeIds: (dataSourceDeps?: DataSourceDeps) => string[
36
37
  * @param parentId 父节点 id
37
38
  */
38
39
  export declare const replaceChildNode: (newNode: MNode, data?: MNode[], parentId?: Id) => void;
39
- export declare const compiledNode: (compile: (template: string) => string, node: MNode, dataSourceDeps?: DataSourceDeps, sourceId?: Id) => MNode;
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: [number, number]) => boolean;