You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
119 lines
16 KiB
119 lines
16 KiB
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
/** 通用工具方法。 */
|
|
exports.default = {
|
|
toNum(raw) {
|
|
const n = Number(raw);
|
|
return Number.isFinite(n) ? n : 0;
|
|
},
|
|
fmtNum(v) {
|
|
const n = Number(v);
|
|
if (!Number.isFinite(n)) {
|
|
return String(v !== null && v !== void 0 ? v : '');
|
|
}
|
|
// 最多保留 3 位小数,去掉多余的 0
|
|
return String(Number(n.toFixed(3)));
|
|
},
|
|
/** ui-checkbox 值('true'/'false' 或 boolean)转 boolean。 */
|
|
chkVal(v) {
|
|
return v === true || v === 'true' || v === 1 || v === '1';
|
|
},
|
|
/** 颜色值转 ui-color 的数组输入格式 [r,g,b,a](0-255)。 */
|
|
colorArr(v) {
|
|
return v && typeof v === 'object'
|
|
? [Math.round(v.r) || 0, Math.round(v.g) || 0, Math.round(v.b) || 0, v.a !== undefined ? Math.round(v.a) : 255]
|
|
: [255, 255, 255, 255];
|
|
},
|
|
/** 解析 ui-color 输出([r,g,b,a] / #hex / rgba())为 {r,g,b,a}(0-255)。 */
|
|
parseColor(str) {
|
|
const s = String(str !== null && str !== void 0 ? str : '').trim();
|
|
const arrM = s.match(/^\[\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d+)\s*)?\]$/);
|
|
if (arrM) {
|
|
return { r: +arrM[1], g: +arrM[2], b: +arrM[3], a: arrM[4] !== undefined ? +arrM[4] : 255 };
|
|
}
|
|
const hexM = s.match(/^#([0-9a-fA-F]{3,8})$/);
|
|
if (hexM) {
|
|
let h = hexM[1];
|
|
if (h.length === 3 || h.length === 4)
|
|
h = h.split('').map((c) => c + c).join('');
|
|
if (h.length === 6)
|
|
h += 'ff';
|
|
return {
|
|
r: parseInt(h.slice(0, 2), 16),
|
|
g: parseInt(h.slice(2, 4), 16),
|
|
b: parseInt(h.slice(4, 6), 16),
|
|
a: parseInt(h.slice(6, 8), 16),
|
|
};
|
|
}
|
|
const rgbaM = s.match(/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*([\d.]+)\s*)?\)/i);
|
|
if (rgbaM) {
|
|
const a = rgbaM[4] !== undefined ? parseFloat(rgbaM[4]) : 1;
|
|
return { r: +rgbaM[1], g: +rgbaM[2], b: +rgbaM[3], a: Math.round(a * 255) };
|
|
}
|
|
return { r: 255, g: 255, b: 255, a: 255 };
|
|
},
|
|
/** 材质 vec 参数的坐标轴列表。 */
|
|
vecAxes(t) {
|
|
if (t === 'vec4') {
|
|
return ['x', 'y', 'z', 'w'];
|
|
}
|
|
if (t === 'vec3') {
|
|
return ['x', 'y', 'z'];
|
|
}
|
|
return ['x', 'y'];
|
|
},
|
|
/** 资产图标:按类型前缀映射 ui-icon,未知类型回退 asset。 */
|
|
assetIcon(type) {
|
|
const t = (type || '').toLowerCase();
|
|
if (t.includes('spriteframe') || t.includes('texture')) {
|
|
return 'texture';
|
|
}
|
|
if (t.includes('material')) {
|
|
return 'material';
|
|
}
|
|
if (t.includes('audio')) {
|
|
return 'audio';
|
|
}
|
|
if (t.includes('prefab')) {
|
|
return 'prefab';
|
|
}
|
|
if (t.includes('animation') || t.includes('clip')) {
|
|
return 'animation';
|
|
}
|
|
if (t.includes('script')) {
|
|
return 'script';
|
|
}
|
|
return 'asset';
|
|
},
|
|
selectToken(e) {
|
|
e.target.select();
|
|
},
|
|
fmt(item) {
|
|
if (typeof item === 'string') {
|
|
return item;
|
|
}
|
|
try {
|
|
return JSON.stringify(item);
|
|
}
|
|
catch (_a) {
|
|
return String(item);
|
|
}
|
|
},
|
|
async writeClipboard(text) {
|
|
try {
|
|
await navigator.clipboard.writeText(text);
|
|
}
|
|
catch (_a) {
|
|
const ta = document.createElement('textarea');
|
|
ta.value = text;
|
|
document.body.appendChild(ta);
|
|
ta.select();
|
|
document.execCommand('copy');
|
|
document.body.removeChild(ta);
|
|
}
|
|
this.copyHint = true;
|
|
window.clearTimeout(this.copyTimer);
|
|
this.copyTimer = window.setTimeout(() => (this.copyHint = false), 1200);
|
|
},
|
|
};
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zb3VyY2UvcGFuZWxzL2RlZmF1bHQvbWV0aG9kcy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGNBQWM7QUFDZCxrQkFBZTtJQUNYLEtBQUssQ0FBWSxHQUFXO1FBQ3hCLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QixPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRCxNQUFNLENBQVksQ0FBTTtRQUNwQixNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN0QixPQUFPLE1BQU0sQ0FBQyxDQUFDLGFBQUQsQ0FBQyxjQUFELENBQUMsR0FBSSxFQUFFLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBQ0QscUJBQXFCO1FBQ3JCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBQ0Qsd0RBQXdEO0lBQ3hELE1BQU0sQ0FBWSxDQUFNO1FBQ3BCLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQztJQUM5RCxDQUFDO0lBQ0QsOENBQThDO0lBQzlDLFFBQVEsQ0FBWSxDQUFNO1FBQ3RCLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVE7WUFDN0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxF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RUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM3QixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1RSxDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiDpgJrnlKjlt6Xlhbfmlrnms5XjgIIgKi9cbmV4cG9ydCBkZWZhdWx0IHtcbiAgICB0b051bSh0aGlzOiBhbnksIHJhdzogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgbiA9IE51bWJlcihyYXcpO1xuICAgICAgICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKG4pID8gbiA6IDA7XG4gICAgfSxcbiAgICBmbXROdW0odGhpczogYW55LCB2OiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBuID0gTnVtYmVyKHYpO1xuICAgICAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShuKSkge1xuICAgICAgICAgICAgcmV0dXJuIFN0cmluZyh2ID8/ICcnKTtcbiAgICAgICAgfVxuICAgICAgICAvLyDmnIDlpJrkv53nlZkgMyDkvY3lsI/mlbDvvIzljrvmjonlpJrkvZnnmoQgMFxuICAgICAgICByZXR1cm4gU3RyaW5nKE51bWJlcihuLnRvRml4ZWQoMykpKTtcbiAgICB9LFxuICAgIC8qKiB1aS1jaGVja2JveCDlgLzvvIgndHJ1ZScvJ2ZhbHNlJyDmiJYgYm9vbGVhbu+8iei9rCBib29sZWFu44CCICovXG4gICAgY2hrVmFsKHRoaXM6IGFueSwgdjogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB2ID09PSB0cnVlIHx8IHYgPT09ICd0cnVlJyB8fCB2ID09PSAxIHx8IHYgPT09ICcxJztcbiAgICB9LFxuICAgIC8qKiDpopzoibLlgLzovawgdWktY29sb3Ig55qE5pWw57uE6L6T5YWl5qC85byPIFtyLGcsYixhXe+8iDAtMjU177yJ44CCICovXG4gICAgY29sb3JBcnIodGhpczogYW55LCB2OiBhbnkpOiBudW1iZXJbXSB7XG4gICAgICAgIHJldHVybiB2ICYmIHR5cGVvZiB2ID09PSAnb2JqZWN0J1xuICAgICAgICAgICAgPyBbTWF0aC5yb3VuZCh2LnIpIHx8IDAsIE1hdGgucm91bmQodi5nKSB8fCAwLCBNYXRoLnJvdW5kKHYuYikgfHwgMCwgdi5hICE9PSB1bmRlZmluZWQgPyBNYXRoLnJvdW5kKHYuYSkgOiAyNTVdXG4gICAgICAgICAgICA6IFsyNTUsIDI1NSwgMjU1LCAyNTVdO1xuICAgIH0sXG4gICAgLyoqIOino+aekCB1aS1jb2xvciDovpPlh7rvvIhbcixnLGIsYV0gLyAjaGV4IC8gcmdiYSgp77yJ5Li6IHtyLGcsYixhfe+8iDAtMjU177yJ44CCICovXG4gICAgcGFyc2VDb2xvcih0aGlzOiBhbnksIHN0cjogc3RyaW5nKTogeyByOiBudW1iZXI7IGc6IG51bWJlcjsgYjogbnVtYmVyOyBhOiBudW1iZXIgfSB7XG4gICAgICAgIGNvbnN0IHMgPSBTdHJpbmcoc3RyID8/ICcnKS50cmltKCk7XG4gICAgICAgIGNvbnN0IGFyck0gPSBzLm1hdGNoKC9eXFxbXFxzKihcXGQrKVxccyosXFxzKihcXGQrKVxccyosXFxzKihcXGQrKVxccyooPzosXFxzKihcXGQrKVxccyopP1xcXSQvKTtcbiAgICAgICAgaWYgKGFyck0pIHtcbiAgICAgICAgICAgIHJldHVybiB7IHI6ICthcnJNWzFdLCBnOiArYXJyTVsyXSwgYjogK2Fyck1bM10sIGE6IGFyck1bNF0gIT09IHVuZGVmaW5lZCA/ICthcnJNWzRdIDogMjU1IH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaGV4TSA9IHMubWF0Y2goL14jKFswLTlhLWZBLUZdezMsOH0pJC8pO1xuICAgICAgICBpZiAoaGV4TSkge1xuICAgICAgICAgICAgbGV0IGggPSBoZXhNWzFdO1xuICAgICAgICAgICAgaWYgKGgubGVuZ3RoID09PSAzIHx8IGgubGVuZ3RoID09PSA0KSBoID0gaC5zcGxpdCgnJykubWFwKChjOiBzdHJpbmcpID0+IGMgKyBjKS5qb2luKCcnKTtcbiAgICAgICAgICAgIGlmIChoLmxlbmd0aCA9PT0gNikgaCArPSAnZmYnO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICByOiBwYXJzZUludChoLnNsaWNlKDAsIDIpLCAxNiksXG4gICAgICAgICAgICAgICAgZzogcGFyc2VJbnQoaC5zbGljZSgyLCA0KSwgMTYpLFxuICAgICAgICAgICAgICAgIGI6IHBhcnNlSW50KGguc2xpY2UoNCwgNiksIDE2KSxcbiAgICAgICAgICAgICAgICBhOiBwYXJzZUludChoLnNsaWNlKDYsIDgpLCAxNiksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJnYmFNID0gcy5tYXRjaCgvcmdiYT9cXChcXHMqKFxcZCspXFxzKixcXHMqKFxcZCspXFxzKixcXHMqKFxcZCspXFxzKig/OixcXHMqKFtcXGQuXSspXFxzKik/XFwpL2kpO1xuICAgICAgICBpZiAocmdiYU0pIHtcbiAgICAgICAgICAgIGNvbnN0IGEgPSByZ2JhTVs0XSAhPT0gdW5kZWZpbmVkID8gcGFyc2VGbG9hdChyZ2JhTVs0XSkgOiAxO1xuICAgICAgICAgICAgcmV0dXJuIHsgcjogK3JnYmFNWzFdLCBnOiArcmdiYU1bMl0sIGI6ICtyZ2JhTVszXSwgYTogTWF0aC5yb3VuZChhICogMjU1KSB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IHI6IDI1NSwgZzogMjU1LCBiOiAyNTUsIGE6IDI1NSB9O1xuICAgIH0sXG4gICAgLyoqIOadkOi0qCB2ZWMg5Y+C5pWw55qE5Z2Q5qCH6L205YiX6KGo44CCICovXG4gICAgdmVjQXhlcyh0aGlzOiBhbnksIHQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgICAgaWYgKHQgPT09ICd2ZWM0Jykge1xuICAgICAgICAgICAgcmV0dXJuIFsneCcsICd5JywgJ3onLCAndyddO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0ID09PSAndmVjMycpIHtcbiAgICAgICAgICAgIHJldHVybiBbJ3gnLCAneScsICd6J107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFsneCcsICd5J107XG4gICAgfSxcbiAgICAvKiog6LWE5Lqn5Zu+5qCH77ya5oyJ57G75Z6L5YmN57yA5pig5bCEIHVpLWljb27vvIzmnKrnn6Xnsbvlnovlm57pgIAgYXNzZXTjgIIgKi9cbiAgICBhc3NldEljb24odGhpczogYW55LCB0eXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB0ID0gKHR5cGUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmICh0LmluY2x1ZGVzKCdzcHJpdGVmcmFtZScpIHx8IHQuaW5jbHVkZXMoJ3RleHR1cmUnKSkge1xuICAgICAgICAgICAgcmV0dXJuICd0ZXh0dXJlJztcbiAgICAgICAgfVxuICAgICAgICBpZiAodC5pbmNsdWRlcygnbWF0ZXJpYWwnKSkge1xuICAgICAgICAgICAgcmV0dXJuICdtYXRlcmlhbCc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHQuaW5jbHVkZXMoJ2F1ZGlvJykpIHtcbiAgICAgICAgICAgIHJldHVybiAnYXVkaW8nO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0LmluY2x1ZGVzKCdwcmVmYWInKSkge1xuICAgICAgICAgICAgcmV0dXJuICdwcmVmYWInO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0LmluY2x1ZGVzKCdhbmltYXRpb24nKSB8fCB0LmluY2x1ZGVzKCdjbGlwJykpIHtcbiAgICAgICAgICAgIHJldHVybiAnYW5pbWF0aW9uJztcbiAgICAgICAgfVxuICAgICAgICBpZiAodC5pbmNsdWRlcygnc2NyaXB0JykpIHtcbiAgICAgICAgICAgIHJldHVybiAnc2NyaXB0JztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJ2Fzc2V0JztcbiAgICB9LFxuICAgIHNlbGVjdFRva2VuKHRoaXM6IGFueSwgZTogRXZlbnQpIHtcbiAgICAgICAgKGUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnNlbGVjdCgpO1xuICAgIH0sXG4gICAgZm10KHRoaXM6IGFueSwgaXRlbTogdW5rbm93bik6IHN0cmluZyB7XG4gICAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoaXRlbSk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhpdGVtKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgYXN5bmMgd3JpdGVDbGlwYm9hcmQodGhpczogYW55LCB0ZXh0OiBzdHJpbmcpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRleHQpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIGNvbnN0IHRhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTtcbiAgICAgICAgICAgIHRhLnZhbHVlID0gdGV4dDtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGEpO1xuICAgICAgICAgICAgdGEuc2VsZWN0KCk7XG4gICAgICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpO1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0YSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb3B5SGludCA9IHRydWU7XG4gICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5jb3B5VGltZXIpO1xuICAgICAgICB0aGlzLmNvcHlUaW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+ICh0aGlzLmNvcHlIaW50ID0gZmFsc2UpLCAxMjAwKTtcbiAgICB9LFxufTtcbiJdfQ==
|