@tmagic/utils 1.2.13 → 1.2.15
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 +8 -3
- package/dist/tmagic-utils.js.map +1 -1
- package/dist/tmagic-utils.umd.cjs +13 -12
- package/dist/tmagic-utils.umd.cjs.map +1 -1
- package/package.json +4 -4
- package/src/index.ts +12 -0
- package/types/index.d.ts +6 -0
package/dist/tmagic-utils.js
CHANGED
|
@@ -24,7 +24,7 @@ const asyncLoadJs = (() => {
|
|
|
24
24
|
resolve();
|
|
25
25
|
};
|
|
26
26
|
script.onerror = () => {
|
|
27
|
-
reject(new Error("
|
|
27
|
+
reject(new Error("加载失败"));
|
|
28
28
|
};
|
|
29
29
|
setTimeout(() => {
|
|
30
30
|
reject(new Error("timeout"));
|
|
@@ -56,7 +56,7 @@ const asyncLoadCss = (() => {
|
|
|
56
56
|
resolve();
|
|
57
57
|
};
|
|
58
58
|
node.onerror = () => {
|
|
59
|
-
reject(new Error("
|
|
59
|
+
reject(new Error("加载失败"));
|
|
60
60
|
};
|
|
61
61
|
setTimeout(() => {
|
|
62
62
|
reject(new Error("timeout"));
|
|
@@ -179,6 +179,11 @@ const isSameDomain = (targetUrl = "", source = globalThis.location.host) => {
|
|
|
179
179
|
return true;
|
|
180
180
|
return getHost(targetUrl) === source;
|
|
181
181
|
};
|
|
182
|
+
const guid = (digit = 8) => "x".repeat(digit).replace(/[xy]/g, (c) => {
|
|
183
|
+
const r = Math.random() * 16 | 0;
|
|
184
|
+
const v = c === "x" ? r : r & 3 | 8;
|
|
185
|
+
return v.toString(16);
|
|
186
|
+
});
|
|
182
187
|
|
|
183
|
-
export { addClassName, asyncLoadCss, asyncLoadJs, createDiv, datetimeFormatter, emptyFn, filterXSS, getDocument, getHost, getNodePath, getUrlParam, injectStyle, isNumber, isPage, isPop, isSameDomain, removeClassName, removeClassNameByClassName, sleep, toHump, toLine };
|
|
188
|
+
export { addClassName, asyncLoadCss, asyncLoadJs, createDiv, datetimeFormatter, emptyFn, filterXSS, getDocument, getHost, getNodePath, getUrlParam, guid, injectStyle, isNumber, isPage, isPop, isSameDomain, removeClassName, removeClassNameByClassName, sleep, toHump, toLine };
|
|
184
189
|
//# 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 { 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: number | string, 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: any = 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"],"names":["id","data"],"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 { 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: number | string, 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: any = 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"],"names":["id","data"],"mappings":"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"}
|
|
@@ -4,11 +4,6 @@
|
|
|
4
4
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.TMagicUtils = {}, global.dayjs, global.utc, global.schema));
|
|
5
5
|
})(this, (function (exports, dayjs, utc, schema) { 'use strict';
|
|
6
6
|
|
|
7
|
-
const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e };
|
|
8
|
-
|
|
9
|
-
const dayjs__default = /*#__PURE__*/_interopDefaultLegacy(dayjs);
|
|
10
|
-
const utc__default = /*#__PURE__*/_interopDefaultLegacy(utc);
|
|
11
|
-
|
|
12
7
|
const asyncLoadJs = (() => {
|
|
13
8
|
const documentMap = /* @__PURE__ */ new Map();
|
|
14
9
|
return (url, crossOrigin, document = globalThis.document) => {
|
|
@@ -31,7 +26,7 @@
|
|
|
31
26
|
resolve();
|
|
32
27
|
};
|
|
33
28
|
script.onerror = () => {
|
|
34
|
-
reject(new Error("
|
|
29
|
+
reject(new Error("加载失败"));
|
|
35
30
|
};
|
|
36
31
|
setTimeout(() => {
|
|
37
32
|
reject(new Error("timeout"));
|
|
@@ -63,7 +58,7 @@
|
|
|
63
58
|
resolve();
|
|
64
59
|
};
|
|
65
60
|
node.onerror = () => {
|
|
66
|
-
reject(new Error("
|
|
61
|
+
reject(new Error("加载失败"));
|
|
67
62
|
};
|
|
68
63
|
setTimeout(() => {
|
|
69
64
|
reject(new Error("timeout"));
|
|
@@ -105,7 +100,7 @@
|
|
|
105
100
|
};
|
|
106
101
|
const getDocument = () => globalThis.document;
|
|
107
102
|
|
|
108
|
-
|
|
103
|
+
dayjs.extend(utc);
|
|
109
104
|
const sleep = (ms) => new Promise((resolve) => {
|
|
110
105
|
const timer = setTimeout(() => {
|
|
111
106
|
clearTimeout(timer);
|
|
@@ -116,11 +111,11 @@
|
|
|
116
111
|
if (v) {
|
|
117
112
|
let time = null;
|
|
118
113
|
if (["x", "timestamp"].includes(format)) {
|
|
119
|
-
time =
|
|
114
|
+
time = dayjs(v).valueOf();
|
|
120
115
|
} else if (typeof v === "string" && v.includes("Z") || v.constructor === Date) {
|
|
121
|
-
time =
|
|
116
|
+
time = dayjs(v).utcOffset(8).format(format);
|
|
122
117
|
} else {
|
|
123
|
-
time =
|
|
118
|
+
time = dayjs(v).format(format);
|
|
124
119
|
}
|
|
125
120
|
if (time !== "Invalid Date") {
|
|
126
121
|
return time;
|
|
@@ -186,6 +181,11 @@
|
|
|
186
181
|
return true;
|
|
187
182
|
return getHost(targetUrl) === source;
|
|
188
183
|
};
|
|
184
|
+
const guid = (digit = 8) => "x".repeat(digit).replace(/[xy]/g, (c) => {
|
|
185
|
+
const r = Math.random() * 16 | 0;
|
|
186
|
+
const v = c === "x" ? r : r & 3 | 8;
|
|
187
|
+
return v.toString(16);
|
|
188
|
+
});
|
|
189
189
|
|
|
190
190
|
exports.addClassName = addClassName;
|
|
191
191
|
exports.asyncLoadCss = asyncLoadCss;
|
|
@@ -198,6 +198,7 @@
|
|
|
198
198
|
exports.getHost = getHost;
|
|
199
199
|
exports.getNodePath = getNodePath;
|
|
200
200
|
exports.getUrlParam = getUrlParam;
|
|
201
|
+
exports.guid = guid;
|
|
201
202
|
exports.injectStyle = injectStyle;
|
|
202
203
|
exports.isNumber = isNumber;
|
|
203
204
|
exports.isPage = isPage;
|
|
@@ -209,7 +210,7 @@
|
|
|
209
210
|
exports.toHump = toHump;
|
|
210
211
|
exports.toLine = toLine;
|
|
211
212
|
|
|
212
|
-
Object.
|
|
213
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
213
214
|
|
|
214
215
|
}));
|
|
215
216
|
//# sourceMappingURL=tmagic-utils.umd.cjs.map
|
|
@@ -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 { 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: number | string, 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: any = 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"],"names":["dayjs","utc","id","data","NodeType"],"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 { 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: number | string, 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: any = 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"],"names":["id","data","NodeType"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.2.
|
|
2
|
+
"version": "1.2.15",
|
|
3
3
|
"name": "@tmagic/utils",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/tmagic-utils.umd.cjs",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"url": "https://github.com/Tencent/tmagic-editor.git"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@tmagic/schema": "1.2.
|
|
28
|
+
"@tmagic/schema": "1.2.15",
|
|
29
29
|
"dayjs": "^1.11.4"
|
|
30
30
|
},
|
|
31
31
|
"peerDependencies": {
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@types/node": "^15.12.4",
|
|
36
36
|
"rimraf": "^3.0.2",
|
|
37
|
-
"typescript": "^
|
|
38
|
-
"vite": "^
|
|
37
|
+
"typescript": "^5.0.4",
|
|
38
|
+
"vite": "^4.2.1"
|
|
39
39
|
}
|
|
40
40
|
}
|
package/src/index.ts
CHANGED
|
@@ -144,3 +144,15 @@ export const isSameDomain = (targetUrl = '', source = globalThis.location.host)
|
|
|
144
144
|
|
|
145
145
|
return getHost(targetUrl) === source;
|
|
146
146
|
};
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* 生成指定位数的GUID,无【-】格式
|
|
150
|
+
* @param digit 位数,默认值8
|
|
151
|
+
* @returns
|
|
152
|
+
*/
|
|
153
|
+
export const guid = (digit = 8): string =>
|
|
154
|
+
'x'.repeat(digit).replace(/[xy]/g, (c) => {
|
|
155
|
+
const r = (Math.random() * 16) | 0;
|
|
156
|
+
const v = c === 'x' ? r : (r & 0x3) | 0x8;
|
|
157
|
+
return v.toString(16);
|
|
158
|
+
});
|
package/types/index.d.ts
CHANGED
|
@@ -19,3 +19,9 @@ export declare const isPage: (node?: MComponent | null) => boolean;
|
|
|
19
19
|
export declare const isNumber: (value: string) => boolean;
|
|
20
20
|
export declare const getHost: (targetUrl: string) => string | undefined;
|
|
21
21
|
export declare const isSameDomain: (targetUrl?: string, source?: string) => boolean;
|
|
22
|
+
/**
|
|
23
|
+
* 生成指定位数的GUID,无【-】格式
|
|
24
|
+
* @param digit 位数,默认值8
|
|
25
|
+
* @returns
|
|
26
|
+
*/
|
|
27
|
+
export declare const guid: (digit?: number) => string;
|