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
|
2 weeks ago
|
"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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zb3VyY2UvcGFuZWxzL2RlZmF1bHQvbWV0aG9kcy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGNBQWM7QUFDZCxrQkFBZTtJQUNYLEtBQUssQ0FBWSxHQUFXO1FBQ3hCLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QixPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRCxNQUFNLENBQVksQ0FBTTtRQUNwQixNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN0QixPQUFPLE1BQU0sQ0FBQyxDQUFDLGFBQUQsQ0FBQyxjQUFELENBQUMsR0FBSSxFQUFFLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBQ0QscUJBQXFCO1FBQ3JCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBQ0Qsd0RBQXdEO0lBQ3hELE1BQU0sQ0FBWSxDQUFNO1FBQ3BCLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQztJQUM5RCxDQUFDO0lBQ0QsOENBQThDO0lBQzlDLFFBQVEsQ0FBWSxDQUFNO1FBQ3RCLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVE7WUFDN0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDL0csQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUNELG1FQUFtRTtJQUNuRSxVQUFVLENBQVksR0FBVztRQUM3QixNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxhQUFILEdBQUcsY0FBSCxHQUFHLEdBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO1FBQ25GLElBQUksSUFBSSxFQUFFLENBQUM7WUFDUCxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNoRyxDQUFDO1FBQ0QsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzlDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDUCxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEIsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUM7Z0JBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pGLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDO2dCQUFFLENBQUMsSUFBSSxJQUFJLENBQUM7WUFDOUIsT0FBTztnQkFDSCxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDOUIsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQzlCLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUM5QixDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQzthQUNqQyxDQUFDO1FBQ04sQ0FBQztRQUNELE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsbUVBQW1FLENBQUMsQ0FBQztRQUMzRixJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1IsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUQsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2hGLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFDRCx1QkFBdUI7SUFDdkIsT0FBTyxDQUFZLENBQVM7UUFDeEIsSUFBSSxDQUFDLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsR0FBRyxFQUFFLEdBQ
|