@tmagic/utils 1.3.0-alpha.2 → 1.3.0-alpha.20
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 +98 -14
- package/dist/tmagic-utils.js.map +1 -1
- package/dist/tmagic-utils.umd.cjs +100 -13
- package/dist/tmagic-utils.umd.cjs.map +1 -1
- package/package.json +7 -3
- package/src/index.ts +103 -16
- package/src/resetcss.css +446 -0
- package/types/index.d.ts +6 -3
package/dist/tmagic-utils.js
CHANGED
|
@@ -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,6 +185,19 @@ 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
|
});
|
|
188
|
+
const getValueByKeyPath = (keys, value) => {
|
|
189
|
+
const path = keys.split(".");
|
|
190
|
+
const pathLength = path.length;
|
|
191
|
+
return path.reduce((accumulator, currentValue, currentIndex) => {
|
|
192
|
+
if (Object.prototype.toString.call(accumulator) === "[object Object]" || Array.isArray(accumulator)) {
|
|
193
|
+
return accumulator[currentValue];
|
|
194
|
+
}
|
|
195
|
+
if (pathLength - 1 === currentIndex) {
|
|
196
|
+
return void 0;
|
|
197
|
+
}
|
|
198
|
+
return {};
|
|
199
|
+
}, value);
|
|
200
|
+
};
|
|
187
201
|
const getNodes = (ids, data = []) => {
|
|
188
202
|
const nodes = [];
|
|
189
203
|
const get = function(ids2, data2) {
|
|
@@ -192,11 +206,12 @@ const getNodes = (ids, data = []) => {
|
|
|
192
206
|
}
|
|
193
207
|
for (let i = 0, l = data2.length; i < l; i++) {
|
|
194
208
|
const item = data2[i];
|
|
195
|
-
const index = ids2.
|
|
209
|
+
const index = ids2.findIndex((id) => `${id}` === `${item.id}`);
|
|
196
210
|
if (index > -1) {
|
|
197
211
|
ids2.slice(index, 1);
|
|
198
212
|
nodes.push(item);
|
|
199
|
-
}
|
|
213
|
+
}
|
|
214
|
+
if (item.items) {
|
|
200
215
|
get(ids2, item.items);
|
|
201
216
|
}
|
|
202
217
|
}
|
|
@@ -204,9 +219,9 @@ const getNodes = (ids, data = []) => {
|
|
|
204
219
|
get(ids, data);
|
|
205
220
|
return nodes;
|
|
206
221
|
};
|
|
207
|
-
const getDepKeys = (dataSourceDeps = {},
|
|
222
|
+
const getDepKeys = (dataSourceDeps = {}, nodeId) => Array.from(
|
|
208
223
|
Object.values(dataSourceDeps).reduce((prev, cur) => {
|
|
209
|
-
(cur[
|
|
224
|
+
(cur[nodeId]?.keys || []).forEach((key) => prev.add(key));
|
|
210
225
|
return prev;
|
|
211
226
|
}, /* @__PURE__ */ new Set())
|
|
212
227
|
);
|
|
@@ -240,19 +255,88 @@ const compiledNode = (compile, node, dataSourceDeps = {}, sourceId) => {
|
|
|
240
255
|
const dep = dataSourceDeps[sourceId];
|
|
241
256
|
keys = dep?.[node.id].keys || [];
|
|
242
257
|
}
|
|
258
|
+
const keyPrefix = "__magic__";
|
|
243
259
|
keys.forEach((key) => {
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
260
|
+
const keyPath = `${key}`.split(".");
|
|
261
|
+
const keyPathLength = keyPath.length;
|
|
262
|
+
keyPath.reduce((accumulator, currentValue, currentIndex) => {
|
|
263
|
+
if (keyPathLength - 1 === currentIndex) {
|
|
264
|
+
const cacheKey = `${keyPrefix}${currentValue}`;
|
|
265
|
+
if (typeof accumulator[cacheKey] === "undefined") {
|
|
266
|
+
accumulator[cacheKey] = accumulator[currentValue];
|
|
267
|
+
}
|
|
268
|
+
try {
|
|
269
|
+
accumulator[currentValue] = compile(accumulator[cacheKey]);
|
|
270
|
+
} catch (e) {
|
|
271
|
+
console.error(e);
|
|
272
|
+
accumulator[currentValue] = "";
|
|
273
|
+
}
|
|
274
|
+
return accumulator;
|
|
275
|
+
}
|
|
276
|
+
if (Object.prototype.toString.call(accumulator) === "[object Object]" || Array.isArray(accumulator)) {
|
|
277
|
+
return accumulator[currentValue];
|
|
278
|
+
}
|
|
279
|
+
return {};
|
|
280
|
+
}, node);
|
|
253
281
|
});
|
|
282
|
+
if (Array.isArray(node.items)) {
|
|
283
|
+
node.items.forEach((item) => compiledNode(compile, item, dataSourceDeps));
|
|
284
|
+
}
|
|
254
285
|
return node;
|
|
255
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 (!fieldValue.includes(value))
|
|
331
|
+
return false;
|
|
332
|
+
break;
|
|
333
|
+
case "not_include":
|
|
334
|
+
if (fieldValue.includes(value))
|
|
335
|
+
return false;
|
|
336
|
+
break;
|
|
337
|
+
}
|
|
338
|
+
return true;
|
|
339
|
+
};
|
|
256
340
|
|
|
257
|
-
export { addClassName, asyncLoadCss, asyncLoadJs, compiledNode, createDiv, datetimeFormatter, emptyFn, filterXSS, getDepKeys, getDepNodeIds, getDocument, getHost, getNodePath, getNodes, getUrlParam, 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 };
|
|
258
342
|
//# sourceMappingURL=tmagic-utils.js.map
|
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 { 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 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 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\n const index = ids.indexOf(`${item.id}`);\n\n if (index > -1) {\n ids.slice(index, 1);\n nodes.push(item);\n } else 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 = {}, id: Id) =>\n Array.from(\n Object.values(dataSourceDeps).reduce((prev, cur) => {\n (cur[id]?.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<Id>()),\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 keys.forEach((key) => {\n if (typeof node[`__${key}`] === 'undefined') {\n node[`__${key}`] = node[key];\n }\n\n try {\n node[key] = compile(node[`__${key}`]);\n } catch (e) {\n console.error(e);\n node[key] = '';\n }\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, '<').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 (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 (!fieldValue.includes(value)) return false;\n break;\n case 'not_include':\n if (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,6 +187,19 @@
|
|
|
186
187
|
const v = c === "x" ? r : r & 3 | 8;
|
|
187
188
|
return v.toString(16);
|
|
188
189
|
});
|
|
190
|
+
const getValueByKeyPath = (keys, value) => {
|
|
191
|
+
const path = keys.split(".");
|
|
192
|
+
const pathLength = path.length;
|
|
193
|
+
return path.reduce((accumulator, currentValue, currentIndex) => {
|
|
194
|
+
if (Object.prototype.toString.call(accumulator) === "[object Object]" || Array.isArray(accumulator)) {
|
|
195
|
+
return accumulator[currentValue];
|
|
196
|
+
}
|
|
197
|
+
if (pathLength - 1 === currentIndex) {
|
|
198
|
+
return void 0;
|
|
199
|
+
}
|
|
200
|
+
return {};
|
|
201
|
+
}, value);
|
|
202
|
+
};
|
|
189
203
|
const getNodes = (ids, data = []) => {
|
|
190
204
|
const nodes = [];
|
|
191
205
|
const get = function(ids2, data2) {
|
|
@@ -194,11 +208,12 @@
|
|
|
194
208
|
}
|
|
195
209
|
for (let i = 0, l = data2.length; i < l; i++) {
|
|
196
210
|
const item = data2[i];
|
|
197
|
-
const index = ids2.
|
|
211
|
+
const index = ids2.findIndex((id) => `${id}` === `${item.id}`);
|
|
198
212
|
if (index > -1) {
|
|
199
213
|
ids2.slice(index, 1);
|
|
200
214
|
nodes.push(item);
|
|
201
|
-
}
|
|
215
|
+
}
|
|
216
|
+
if (item.items) {
|
|
202
217
|
get(ids2, item.items);
|
|
203
218
|
}
|
|
204
219
|
}
|
|
@@ -206,9 +221,9 @@
|
|
|
206
221
|
get(ids, data);
|
|
207
222
|
return nodes;
|
|
208
223
|
};
|
|
209
|
-
const getDepKeys = (dataSourceDeps = {},
|
|
224
|
+
const getDepKeys = (dataSourceDeps = {}, nodeId) => Array.from(
|
|
210
225
|
Object.values(dataSourceDeps).reduce((prev, cur) => {
|
|
211
|
-
(cur[
|
|
226
|
+
(cur[nodeId]?.keys || []).forEach((key) => prev.add(key));
|
|
212
227
|
return prev;
|
|
213
228
|
}, /* @__PURE__ */ new Set())
|
|
214
229
|
);
|
|
@@ -242,23 +257,93 @@
|
|
|
242
257
|
const dep = dataSourceDeps[sourceId];
|
|
243
258
|
keys = dep?.[node.id].keys || [];
|
|
244
259
|
}
|
|
260
|
+
const keyPrefix = "__magic__";
|
|
245
261
|
keys.forEach((key) => {
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
262
|
+
const keyPath = `${key}`.split(".");
|
|
263
|
+
const keyPathLength = keyPath.length;
|
|
264
|
+
keyPath.reduce((accumulator, currentValue, currentIndex) => {
|
|
265
|
+
if (keyPathLength - 1 === currentIndex) {
|
|
266
|
+
const cacheKey = `${keyPrefix}${currentValue}`;
|
|
267
|
+
if (typeof accumulator[cacheKey] === "undefined") {
|
|
268
|
+
accumulator[cacheKey] = accumulator[currentValue];
|
|
269
|
+
}
|
|
270
|
+
try {
|
|
271
|
+
accumulator[currentValue] = compile(accumulator[cacheKey]);
|
|
272
|
+
} catch (e) {
|
|
273
|
+
console.error(e);
|
|
274
|
+
accumulator[currentValue] = "";
|
|
275
|
+
}
|
|
276
|
+
return accumulator;
|
|
277
|
+
}
|
|
278
|
+
if (Object.prototype.toString.call(accumulator) === "[object Object]" || Array.isArray(accumulator)) {
|
|
279
|
+
return accumulator[currentValue];
|
|
280
|
+
}
|
|
281
|
+
return {};
|
|
282
|
+
}, node);
|
|
255
283
|
});
|
|
284
|
+
if (Array.isArray(node.items)) {
|
|
285
|
+
node.items.forEach((item) => compiledNode(compile, item, dataSourceDeps));
|
|
286
|
+
}
|
|
256
287
|
return node;
|
|
257
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 (!fieldValue.includes(value))
|
|
333
|
+
return false;
|
|
334
|
+
break;
|
|
335
|
+
case "not_include":
|
|
336
|
+
if (fieldValue.includes(value))
|
|
337
|
+
return false;
|
|
338
|
+
break;
|
|
339
|
+
}
|
|
340
|
+
return true;
|
|
341
|
+
};
|
|
258
342
|
|
|
259
343
|
exports.addClassName = addClassName;
|
|
260
344
|
exports.asyncLoadCss = asyncLoadCss;
|
|
261
345
|
exports.asyncLoadJs = asyncLoadJs;
|
|
346
|
+
exports.compiledCond = compiledCond;
|
|
262
347
|
exports.compiledNode = compiledNode;
|
|
263
348
|
exports.createDiv = createDiv;
|
|
264
349
|
exports.datetimeFormatter = datetimeFormatter;
|
|
@@ -271,9 +356,11 @@
|
|
|
271
356
|
exports.getNodePath = getNodePath;
|
|
272
357
|
exports.getNodes = getNodes;
|
|
273
358
|
exports.getUrlParam = getUrlParam;
|
|
359
|
+
exports.getValueByKeyPath = getValueByKeyPath;
|
|
274
360
|
exports.guid = guid;
|
|
275
361
|
exports.injectStyle = injectStyle;
|
|
276
362
|
exports.isNumber = isNumber;
|
|
363
|
+
exports.isObject = isObject;
|
|
277
364
|
exports.isPage = isPage;
|
|
278
365
|
exports.isPop = isPop;
|
|
279
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, '<').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 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 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\n const index = ids.indexOf(`${item.id}`);\n\n if (index > -1) {\n ids.slice(index, 1);\n nodes.push(item);\n } else 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 = {}, id: Id) =>\n Array.from(\n Object.values(dataSourceDeps).reduce((prev, cur) => {\n (cur[id]?.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<Id>()),\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 keys.forEach((key) => {\n if (typeof node[`__${key}`] === 'undefined') {\n node[`__${key}`] = node[key];\n }\n\n try {\n node[key] = compile(node[`__${key}`]);\n } catch (e) {\n console.error(e);\n node[key] = '';\n }\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, '<').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 (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 (!fieldValue.includes(value)) return false;\n break;\n case 'not_include':\n if (fieldValue.includes(value)) return false;\n break;\n default:\n break;\n }\n\n return true;\n};\n"],"names":["id","data","NodeType","ids"],"mappings":";;;;;;AAAO,QAAM,eAAe,MAAM;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,gBAAgB,MAAM;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,SAAsB,KAAA;EACjE,EAAG,EAAA,CAAA,SAAA,CAAU,OAAO,SAAS,CAAA,CAAA;EAC/B,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;AAEU,QAAA,iBAAA,GAAyB,CAAC,IAAA,EAAc,KAAwC,KAAA;EAC3F,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,MAAI,IAAA,MAAA,CAAO,SAAU,CAAA,QAAA,CAAS,IAAK,CAAA,WAAW,MAAM,iBAAqB,IAAA,KAAA,CAAM,OAAQ,CAAA,WAAW,CAAG,EAAA;EACnG,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,YAAe,GAAA,CAAC,EAAY,EAAA,UAAA,EAAiB,OAAY,KAAqC,KAAA;EACzG,EAAA,QAAQ,EAAI;EAAA,IACV,KAAK,IAAA;EACH,MAAA,IAAI,CAAC,UAAA;EAAY,QAAO,OAAA,KAAA,CAAA;EACxB,MAAA,MAAA;EAAA,IACF,KAAK,KAAA;EACH,MAAI,IAAA,UAAA;EAAY,QAAO,OAAA,KAAA,CAAA;EACvB,MAAA,MAAA;EAAA,IACF,KAAK,GAAA;EACH,MAAA,IAAI,UAAe,KAAA,KAAA;EAAO,QAAO,OAAA,KAAA,CAAA;EACjC,MAAA,MAAA;EAAA,IACF,KAAK,IAAA;EACH,MAAA,IAAI,UAAe,KAAA,KAAA;EAAO,QAAO,OAAA,KAAA,CAAA;EACjC,MAAA,MAAA;EAAA,IACF,KAAK,GAAA;EACH,MAAA,IAAI,UAAc,IAAA,KAAA;EAAO,QAAO,OAAA,KAAA,CAAA;EAChC,MAAA,MAAA;EAAA,IACF,KAAK,IAAA;EACH,MAAA,IAAI,UAAa,GAAA,KAAA;EAAO,QAAO,OAAA,KAAA,CAAA;EAC/B,MAAA,MAAA;EAAA,IACF,KAAK,GAAA;EACH,MAAA,IAAI,UAAc,IAAA,KAAA;EAAO,QAAO,OAAA,KAAA,CAAA;EAChC,MAAA,MAAA;EAAA,IACF,KAAK,IAAA;EACH,MAAA,IAAI,UAAa,GAAA,KAAA;EAAO,QAAO,OAAA,KAAA,CAAA;EAC/B,MAAA,MAAA;EAAA,IACF,KAAK,SAAA;EACH,MAAA,IAAI,aAAa,KAAM,CAAA,CAAC,CAAK,IAAA,UAAA,GAAa,MAAM,CAAC,CAAA;EAAG,QAAO,OAAA,KAAA,CAAA;EAC3D,MAAA,MAAA;EAAA,IACF,KAAK,aAAA;EACH,MAAA,IAAI,cAAc,KAAM,CAAA,CAAC,CAAK,IAAA,UAAA,IAAc,MAAM,CAAC,CAAA;EAAG,QAAO,OAAA,KAAA,CAAA;EAC7D,MAAA,MAAA;EAAA,IACF,KAAK,SAAA;EACH,MAAI,IAAA,CAAC,UAAW,CAAA,QAAA,CAAS,KAAK,CAAA;EAAG,QAAO,OAAA,KAAA,CAAA;EACxC,MAAA,MAAA;EAAA,IACF,KAAK,aAAA;EACH,MAAI,IAAA,UAAA,CAAW,SAAS,KAAK,CAAA;EAAG,QAAO,OAAA,KAAA,CAAA;EACvC,MAAA,MAAA;EAEA,GACJ;EAEA,EAAO,OAAA,IAAA,CAAA;EACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.3.0-alpha.
|
|
2
|
+
"version": "1.3.0-alpha.20",
|
|
3
3
|
"name": "@tmagic/utils",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/tmagic-utils.umd.cjs",
|
|
@@ -9,6 +9,10 @@
|
|
|
9
9
|
".": {
|
|
10
10
|
"import": "./dist/tmagic-utils.js",
|
|
11
11
|
"require": "./dist/tmagic-utils.umd.cjs"
|
|
12
|
+
},
|
|
13
|
+
"./resetcss.css": {
|
|
14
|
+
"import": "./src/resetcss.css",
|
|
15
|
+
"require": "./src/resetcss.css"
|
|
12
16
|
}
|
|
13
17
|
},
|
|
14
18
|
"license": "Apache-2.0",
|
|
@@ -25,7 +29,7 @@
|
|
|
25
29
|
"url": "https://github.com/Tencent/tmagic-editor.git"
|
|
26
30
|
},
|
|
27
31
|
"dependencies": {
|
|
28
|
-
"@tmagic/schema": "1.3.0-alpha.
|
|
32
|
+
"@tmagic/schema": "1.3.0-alpha.20",
|
|
29
33
|
"dayjs": "^1.11.4"
|
|
30
34
|
},
|
|
31
35
|
"peerDependencies": {
|
|
@@ -35,6 +39,6 @@
|
|
|
35
39
|
"@types/node": "^15.12.4",
|
|
36
40
|
"rimraf": "^3.0.2",
|
|
37
41
|
"typescript": "^5.0.4",
|
|
38
|
-
"vite": "^4.
|
|
42
|
+
"vite": "^4.4.4"
|
|
39
43
|
}
|
|
40
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,6 +159,23 @@ export const guid = (digit = 8): string =>
|
|
|
157
159
|
return v.toString(16);
|
|
158
160
|
});
|
|
159
161
|
|
|
162
|
+
export const getValueByKeyPath: any = (keys: string, value: Record<string | number, any>) => {
|
|
163
|
+
const path = keys.split('.');
|
|
164
|
+
const pathLength = path.length;
|
|
165
|
+
|
|
166
|
+
return path.reduce((accumulator, currentValue: any, currentIndex: number) => {
|
|
167
|
+
if (Object.prototype.toString.call(accumulator) === '[object Object]' || Array.isArray(accumulator)) {
|
|
168
|
+
return accumulator[currentValue];
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
if (pathLength - 1 === currentIndex) {
|
|
172
|
+
return undefined;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
return {};
|
|
176
|
+
}, value);
|
|
177
|
+
};
|
|
178
|
+
|
|
160
179
|
export const getNodes = (ids: Id[], data: MNode[] = []): MNode[] => {
|
|
161
180
|
const nodes: MNode[] = [];
|
|
162
181
|
|
|
@@ -167,13 +186,14 @@ export const getNodes = (ids: Id[], data: MNode[] = []): MNode[] => {
|
|
|
167
186
|
|
|
168
187
|
for (let i = 0, l = data.length; i < l; i++) {
|
|
169
188
|
const item = data[i];
|
|
170
|
-
|
|
171
|
-
const index = ids.indexOf(`${item.id}`);
|
|
189
|
+
const index = ids.findIndex((id: Id) => `${id}` === `${item.id}`);
|
|
172
190
|
|
|
173
191
|
if (index > -1) {
|
|
174
192
|
ids.slice(index, 1);
|
|
175
193
|
nodes.push(item);
|
|
176
|
-
}
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
if (item.items) {
|
|
177
197
|
get(ids, item.items);
|
|
178
198
|
}
|
|
179
199
|
}
|
|
@@ -184,10 +204,10 @@ export const getNodes = (ids: Id[], data: MNode[] = []): MNode[] => {
|
|
|
184
204
|
return nodes;
|
|
185
205
|
};
|
|
186
206
|
|
|
187
|
-
export const getDepKeys = (dataSourceDeps: DataSourceDeps = {},
|
|
207
|
+
export const getDepKeys = (dataSourceDeps: DataSourceDeps = {}, nodeId: Id) =>
|
|
188
208
|
Array.from(
|
|
189
209
|
Object.values(dataSourceDeps).reduce((prev, cur) => {
|
|
190
|
-
(cur[
|
|
210
|
+
(cur[nodeId]?.keys || []).forEach((key) => prev.add(key));
|
|
191
211
|
return prev;
|
|
192
212
|
}, new Set<Id>()),
|
|
193
213
|
);
|
|
@@ -199,7 +219,7 @@ export const getDepNodeIds = (dataSourceDeps: DataSourceDeps = {}) =>
|
|
|
199
219
|
prev.add(id);
|
|
200
220
|
});
|
|
201
221
|
return prev;
|
|
202
|
-
}, new Set<
|
|
222
|
+
}, new Set<string>()),
|
|
203
223
|
);
|
|
204
224
|
|
|
205
225
|
/**
|
|
@@ -225,7 +245,7 @@ export const replaceChildNode = (newNode: MNode, data?: MNode[], parentId?: Id)
|
|
|
225
245
|
};
|
|
226
246
|
|
|
227
247
|
export const compiledNode = (
|
|
228
|
-
compile: (
|
|
248
|
+
compile: (value: any) => any,
|
|
229
249
|
node: MNode,
|
|
230
250
|
dataSourceDeps: DataSourceDeps = {},
|
|
231
251
|
sourceId?: Id,
|
|
@@ -238,18 +258,85 @@ export const compiledNode = (
|
|
|
238
258
|
keys = dep?.[node.id].keys || [];
|
|
239
259
|
}
|
|
240
260
|
|
|
261
|
+
const keyPrefix = '__magic__';
|
|
262
|
+
|
|
241
263
|
keys.forEach((key) => {
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
264
|
+
const keyPath = `${key}`.split('.');
|
|
265
|
+
const keyPathLength = keyPath.length;
|
|
266
|
+
keyPath.reduce((accumulator, currentValue: any, currentIndex) => {
|
|
267
|
+
if (keyPathLength - 1 === currentIndex) {
|
|
268
|
+
const cacheKey = `${keyPrefix}${currentValue}`;
|
|
269
|
+
|
|
270
|
+
if (typeof accumulator[cacheKey] === 'undefined') {
|
|
271
|
+
accumulator[cacheKey] = accumulator[currentValue];
|
|
272
|
+
}
|
|
245
273
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
274
|
+
try {
|
|
275
|
+
accumulator[currentValue] = compile(accumulator[cacheKey]);
|
|
276
|
+
} catch (e) {
|
|
277
|
+
console.error(e);
|
|
278
|
+
accumulator[currentValue] = '';
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
return accumulator;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
if (Object.prototype.toString.call(accumulator) === '[object Object]' || Array.isArray(accumulator)) {
|
|
285
|
+
return accumulator[currentValue];
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
return {};
|
|
289
|
+
}, node);
|
|
252
290
|
});
|
|
253
291
|
|
|
292
|
+
if (Array.isArray(node.items)) {
|
|
293
|
+
node.items.forEach((item) => compiledNode(compile, item, dataSourceDeps));
|
|
294
|
+
}
|
|
295
|
+
|
|
254
296
|
return node;
|
|
255
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 (!fieldValue.includes(value)) return false;
|
|
333
|
+
break;
|
|
334
|
+
case 'not_include':
|
|
335
|
+
if (fieldValue.includes(value)) return false;
|
|
336
|
+
break;
|
|
337
|
+
default:
|
|
338
|
+
break;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
return true;
|
|
342
|
+
};
|
package/src/resetcss.css
ADDED
|
@@ -0,0 +1,446 @@
|
|
|
1
|
+
/* http://meyerweb.com/eric/tools/css/reset/
|
|
2
|
+
v2.0-modified | 20110126
|
|
3
|
+
License: none (public domain)
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
html,
|
|
7
|
+
body,
|
|
8
|
+
div,
|
|
9
|
+
span,
|
|
10
|
+
applet,
|
|
11
|
+
object,
|
|
12
|
+
iframe,
|
|
13
|
+
h1,
|
|
14
|
+
h2,
|
|
15
|
+
h3,
|
|
16
|
+
h4,
|
|
17
|
+
h5,
|
|
18
|
+
h6,
|
|
19
|
+
p,
|
|
20
|
+
blockquote,
|
|
21
|
+
pre,
|
|
22
|
+
a,
|
|
23
|
+
abbr,
|
|
24
|
+
acronym,
|
|
25
|
+
address,
|
|
26
|
+
big,
|
|
27
|
+
cite,
|
|
28
|
+
code,
|
|
29
|
+
del,
|
|
30
|
+
dfn,
|
|
31
|
+
em,
|
|
32
|
+
img,
|
|
33
|
+
ins,
|
|
34
|
+
kbd,
|
|
35
|
+
q,
|
|
36
|
+
s,
|
|
37
|
+
samp,
|
|
38
|
+
small,
|
|
39
|
+
strike,
|
|
40
|
+
strong,
|
|
41
|
+
sub,
|
|
42
|
+
sup,
|
|
43
|
+
tt,
|
|
44
|
+
var,
|
|
45
|
+
b,
|
|
46
|
+
u,
|
|
47
|
+
i,
|
|
48
|
+
center,
|
|
49
|
+
dl,
|
|
50
|
+
dt,
|
|
51
|
+
dd,
|
|
52
|
+
ol,
|
|
53
|
+
ul,
|
|
54
|
+
li,
|
|
55
|
+
fieldset,
|
|
56
|
+
form,
|
|
57
|
+
label,
|
|
58
|
+
legend,
|
|
59
|
+
table,
|
|
60
|
+
caption,
|
|
61
|
+
tbody,
|
|
62
|
+
tfoot,
|
|
63
|
+
thead,
|
|
64
|
+
tr,
|
|
65
|
+
th,
|
|
66
|
+
td,
|
|
67
|
+
article,
|
|
68
|
+
aside,
|
|
69
|
+
canvas,
|
|
70
|
+
details,
|
|
71
|
+
embed,
|
|
72
|
+
figure,
|
|
73
|
+
figcaption,
|
|
74
|
+
footer,
|
|
75
|
+
header,
|
|
76
|
+
hgroup,
|
|
77
|
+
menu,
|
|
78
|
+
nav,
|
|
79
|
+
output,
|
|
80
|
+
ruby,
|
|
81
|
+
section,
|
|
82
|
+
summary,
|
|
83
|
+
time,
|
|
84
|
+
mark,
|
|
85
|
+
audio,
|
|
86
|
+
video {
|
|
87
|
+
margin: 0;
|
|
88
|
+
padding: 0;
|
|
89
|
+
border: 0;
|
|
90
|
+
font-size: 100%;
|
|
91
|
+
font: inherit;
|
|
92
|
+
vertical-align: baseline;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/* make sure to set some focus styles for accessibility */
|
|
96
|
+
:focus {
|
|
97
|
+
outline: 0;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/* HTML5 display-role reset for older browsers */
|
|
101
|
+
article,
|
|
102
|
+
aside,
|
|
103
|
+
details,
|
|
104
|
+
figcaption,
|
|
105
|
+
figure,
|
|
106
|
+
footer,
|
|
107
|
+
header,
|
|
108
|
+
hgroup,
|
|
109
|
+
menu,
|
|
110
|
+
nav,
|
|
111
|
+
section {
|
|
112
|
+
display: block;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
body {
|
|
116
|
+
line-height: 1;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
ol,
|
|
120
|
+
ul {
|
|
121
|
+
list-style: none;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
blockquote,
|
|
125
|
+
q {
|
|
126
|
+
quotes: none;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
blockquote:before,
|
|
130
|
+
blockquote:after,
|
|
131
|
+
q:before,
|
|
132
|
+
q:after {
|
|
133
|
+
content: '';
|
|
134
|
+
content: none;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
table {
|
|
138
|
+
border-collapse: collapse;
|
|
139
|
+
border-spacing: 0;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
input[type='search']::-webkit-search-cancel-button,
|
|
143
|
+
input[type='search']::-webkit-search-decoration,
|
|
144
|
+
input[type='search']::-webkit-search-results-button,
|
|
145
|
+
input[type='search']::-webkit-search-results-decoration {
|
|
146
|
+
-webkit-appearance: none;
|
|
147
|
+
-moz-appearance: none;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
input[type='search'] {
|
|
151
|
+
-webkit-appearance: none;
|
|
152
|
+
-moz-appearance: none;
|
|
153
|
+
-webkit-box-sizing: content-box;
|
|
154
|
+
-moz-box-sizing: content-box;
|
|
155
|
+
box-sizing: content-box;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
textarea {
|
|
159
|
+
overflow: auto;
|
|
160
|
+
vertical-align: top;
|
|
161
|
+
resize: vertical;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3.
|
|
166
|
+
*/
|
|
167
|
+
|
|
168
|
+
audio,
|
|
169
|
+
canvas,
|
|
170
|
+
video {
|
|
171
|
+
display: inline-block;
|
|
172
|
+
*display: inline;
|
|
173
|
+
*zoom: 1;
|
|
174
|
+
max-width: 100%;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Prevent modern browsers from displaying `audio` without controls.
|
|
179
|
+
* Remove excess height in iOS 5 devices.
|
|
180
|
+
*/
|
|
181
|
+
|
|
182
|
+
audio:not([controls]) {
|
|
183
|
+
display: none;
|
|
184
|
+
height: 0;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Address styling not present in IE 7/8/9, Firefox 3, and Safari 4.
|
|
189
|
+
* Known issue: no IE 6 support.
|
|
190
|
+
*/
|
|
191
|
+
|
|
192
|
+
[hidden] {
|
|
193
|
+
display: none;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* 1. Correct text resizing oddly in IE 6/7 when body `font-size` is set using
|
|
198
|
+
* `em` units.
|
|
199
|
+
* 2. Prevent iOS text size adjust after orientation change, without disabling
|
|
200
|
+
* user zoom.
|
|
201
|
+
*/
|
|
202
|
+
|
|
203
|
+
html {
|
|
204
|
+
font-size: 100%; /* 1 */
|
|
205
|
+
-webkit-text-size-adjust: 100%; /* 2 */
|
|
206
|
+
-ms-text-size-adjust: 100%; /* 2 */
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Address `outline` inconsistency between Chrome and other browsers.
|
|
211
|
+
*/
|
|
212
|
+
|
|
213
|
+
a:focus {
|
|
214
|
+
outline: thin dotted;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* Improve readability when focused and also mouse hovered in all browsers.
|
|
219
|
+
*/
|
|
220
|
+
|
|
221
|
+
a:active,
|
|
222
|
+
a:hover {
|
|
223
|
+
outline: 0;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3.
|
|
228
|
+
* 2. Improve image quality when scaled in IE 7.
|
|
229
|
+
*/
|
|
230
|
+
|
|
231
|
+
img {
|
|
232
|
+
border: 0; /* 1 */
|
|
233
|
+
-ms-interpolation-mode: bicubic; /* 2 */
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11.
|
|
238
|
+
*/
|
|
239
|
+
|
|
240
|
+
figure {
|
|
241
|
+
margin: 0;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Correct margin displayed oddly in IE 6/7.
|
|
246
|
+
*/
|
|
247
|
+
|
|
248
|
+
form {
|
|
249
|
+
margin: 0;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* Define consistent border, margin, and padding.
|
|
254
|
+
*/
|
|
255
|
+
|
|
256
|
+
fieldset {
|
|
257
|
+
border: 1px solid #c0c0c0;
|
|
258
|
+
margin: 0 2px;
|
|
259
|
+
padding: 0.35em 0.625em 0.75em;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* 1. Correct color not being inherited in IE 6/7/8/9.
|
|
264
|
+
* 2. Correct text not wrapping in Firefox 3.
|
|
265
|
+
* 3. Correct alignment displayed oddly in IE 6/7.
|
|
266
|
+
*/
|
|
267
|
+
|
|
268
|
+
legend {
|
|
269
|
+
border: 0; /* 1 */
|
|
270
|
+
padding: 0;
|
|
271
|
+
white-space: normal; /* 2 */
|
|
272
|
+
*margin-left: -7px; /* 3 */
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* 1. Correct font size not being inherited in all browsers.
|
|
277
|
+
* 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5,
|
|
278
|
+
* and Chrome.
|
|
279
|
+
* 3. Improve appearance and consistency in all browsers.
|
|
280
|
+
*/
|
|
281
|
+
|
|
282
|
+
button,
|
|
283
|
+
input,
|
|
284
|
+
select,
|
|
285
|
+
textarea {
|
|
286
|
+
font-size: 100%; /* 1 */
|
|
287
|
+
margin: 0; /* 2 */
|
|
288
|
+
vertical-align: baseline; /* 3 */
|
|
289
|
+
*vertical-align: middle; /* 3 */
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
/**
|
|
293
|
+
* Address Firefox 3+ setting `line-height` on `input` using `!important` in
|
|
294
|
+
* the UA stylesheet.
|
|
295
|
+
*/
|
|
296
|
+
|
|
297
|
+
button,
|
|
298
|
+
input {
|
|
299
|
+
line-height: normal;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* Address inconsistent `text-transform` inheritance for `button` and `select`.
|
|
304
|
+
* All other form control elements do not inherit `text-transform` values.
|
|
305
|
+
* Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+.
|
|
306
|
+
* Correct `select` style inheritance in Firefox 4+ and Opera.
|
|
307
|
+
*/
|
|
308
|
+
|
|
309
|
+
button,
|
|
310
|
+
select {
|
|
311
|
+
text-transform: none;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
|
|
316
|
+
* and `video` controls.
|
|
317
|
+
* 2. Correct inability to style clickable `input` types in iOS.
|
|
318
|
+
* 3. Improve usability and consistency of cursor style between image-type
|
|
319
|
+
* `input` and others.
|
|
320
|
+
* 4. Remove inner spacing in IE 7 without affecting normal text inputs.
|
|
321
|
+
* Known issue: inner spacing remains in IE 6.
|
|
322
|
+
*/
|
|
323
|
+
|
|
324
|
+
button,
|
|
325
|
+
html input[type="button"], /* 1 */
|
|
326
|
+
input[type="reset"],
|
|
327
|
+
input[type="submit"] {
|
|
328
|
+
-webkit-appearance: button; /* 2 */
|
|
329
|
+
cursor: pointer; /* 3 */
|
|
330
|
+
*overflow: visible; /* 4 */
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
/**
|
|
334
|
+
* Re-set default cursor for disabled elements.
|
|
335
|
+
*/
|
|
336
|
+
|
|
337
|
+
button[disabled],
|
|
338
|
+
html input[disabled] {
|
|
339
|
+
cursor: default;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
/**
|
|
343
|
+
* 1. Address box sizing set to content-box in IE 8/9.
|
|
344
|
+
* 2. Remove excess padding in IE 8/9.
|
|
345
|
+
* 3. Remove excess padding in IE 7.
|
|
346
|
+
* Known issue: excess padding remains in IE 6.
|
|
347
|
+
*/
|
|
348
|
+
|
|
349
|
+
input[type='checkbox'],
|
|
350
|
+
input[type='radio'] {
|
|
351
|
+
box-sizing: border-box; /* 1 */
|
|
352
|
+
padding: 0; /* 2 */
|
|
353
|
+
*height: 13px; /* 3 */
|
|
354
|
+
*width: 13px; /* 3 */
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
/**
|
|
358
|
+
* 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
|
|
359
|
+
* 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
|
|
360
|
+
* (include `-moz` to future-proof).
|
|
361
|
+
*/
|
|
362
|
+
|
|
363
|
+
input[type='search'] {
|
|
364
|
+
-webkit-appearance: textfield; /* 1 */
|
|
365
|
+
-moz-box-sizing: content-box;
|
|
366
|
+
-webkit-box-sizing: content-box; /* 2 */
|
|
367
|
+
box-sizing: content-box;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
/**
|
|
371
|
+
* Remove inner padding and search cancel button in Safari 5 and Chrome
|
|
372
|
+
* on OS X.
|
|
373
|
+
*/
|
|
374
|
+
|
|
375
|
+
input[type='search']::-webkit-search-cancel-button,
|
|
376
|
+
input[type='search']::-webkit-search-decoration {
|
|
377
|
+
-webkit-appearance: none;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
/**
|
|
381
|
+
* Remove inner padding and border in Firefox 3+.
|
|
382
|
+
*/
|
|
383
|
+
|
|
384
|
+
button::-moz-focus-inner,
|
|
385
|
+
input::-moz-focus-inner {
|
|
386
|
+
border: 0;
|
|
387
|
+
padding: 0;
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
/**
|
|
391
|
+
* 1. Remove default vertical scrollbar in IE 6/7/8/9.
|
|
392
|
+
* 2. Improve readability and alignment in all browsers.
|
|
393
|
+
*/
|
|
394
|
+
|
|
395
|
+
textarea {
|
|
396
|
+
overflow: auto; /* 1 */
|
|
397
|
+
vertical-align: top; /* 2 */
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
/**
|
|
401
|
+
* Remove most spacing between table cells.
|
|
402
|
+
*/
|
|
403
|
+
|
|
404
|
+
table {
|
|
405
|
+
border-collapse: collapse;
|
|
406
|
+
border-spacing: 0;
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
html,
|
|
410
|
+
button,
|
|
411
|
+
input,
|
|
412
|
+
select,
|
|
413
|
+
textarea {
|
|
414
|
+
color: #222;
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
::-moz-selection {
|
|
418
|
+
background: #b3d4fc;
|
|
419
|
+
text-shadow: none;
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
::selection {
|
|
423
|
+
background: #b3d4fc;
|
|
424
|
+
text-shadow: none;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
img {
|
|
428
|
+
vertical-align: middle;
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
fieldset {
|
|
432
|
+
border: 0;
|
|
433
|
+
margin: 0;
|
|
434
|
+
padding: 0;
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
textarea {
|
|
438
|
+
resize: vertical;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
.chromeframe {
|
|
442
|
+
margin: 0.2em 0;
|
|
443
|
+
background: #ccc;
|
|
444
|
+
color: #000;
|
|
445
|
+
padding: 0.2em 0;
|
|
446
|
+
}
|
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;
|
|
@@ -25,9 +26,10 @@ export declare const isSameDomain: (targetUrl?: string, source?: string) => bool
|
|
|
25
26
|
* @returns
|
|
26
27
|
*/
|
|
27
28
|
export declare const guid: (digit?: number) => string;
|
|
29
|
+
export declare const getValueByKeyPath: any;
|
|
28
30
|
export declare const getNodes: (ids: Id[], data?: MNode[]) => MNode[];
|
|
29
|
-
export declare const getDepKeys: (dataSourceDeps: DataSourceDeps | undefined,
|
|
30
|
-
export declare const getDepNodeIds: (dataSourceDeps?: DataSourceDeps) =>
|
|
31
|
+
export declare const getDepKeys: (dataSourceDeps: DataSourceDeps | undefined, nodeId: Id) => Id[];
|
|
32
|
+
export declare const getDepNodeIds: (dataSourceDeps?: DataSourceDeps) => string[];
|
|
31
33
|
/**
|
|
32
34
|
* 将新节点更新到data或者parentId对应的节点的子节点中
|
|
33
35
|
* @param newNode 新节点
|
|
@@ -35,4 +37,5 @@ export declare const getDepNodeIds: (dataSourceDeps?: DataSourceDeps) => Id[];
|
|
|
35
37
|
* @param parentId 父节点 id
|
|
36
38
|
*/
|
|
37
39
|
export declare const replaceChildNode: (newNode: MNode, data?: MNode[], parentId?: Id) => void;
|
|
38
|
-
export declare const compiledNode: (compile: (
|
|
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;
|