@windwalker-io/unicorn-next 0.1.18 → 0.1.21
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/chunks/_arrayPush.js +325 -108
- package/dist/chunks/_arrayPush.js.map +1 -1
- package/dist/chunks/_baseRest.js +155 -60
- package/dist/chunks/_baseRest.js.map +1 -1
- package/dist/chunks/_baseUnary.js +463 -0
- package/dist/chunks/_baseUnary.js.map +1 -0
- package/dist/chunks/_getPrototype.js +292 -100
- package/dist/chunks/_getPrototype.js.map +1 -1
- package/dist/chunks/alert-adapter.js +29 -0
- package/dist/chunks/alert-adapter.js.map +1 -0
- package/dist/chunks/alert.js +21 -0
- package/dist/chunks/alert.js.map +1 -0
- package/dist/chunks/arr.js +24 -0
- package/dist/chunks/arr.js.map +1 -0
- package/dist/chunks/button-radio.js +127 -145
- package/dist/chunks/button-radio.js.map +1 -1
- package/dist/chunks/checkboxes-multi-select.js +44 -43
- package/dist/chunks/checkboxes-multi-select.js.map +1 -1
- package/dist/chunks/chunk.js +24 -0
- package/dist/chunks/cloneDeep.js +679 -212
- package/dist/chunks/cloneDeep.js.map +1 -1
- package/dist/chunks/cropper.min.js +6 -5
- package/dist/chunks/cropper.min.js.map +1 -1
- package/dist/chunks/crypto.js +26 -0
- package/dist/chunks/crypto.js.map +1 -0
- package/dist/chunks/data.js +49 -0
- package/dist/chunks/data.js.map +1 -0
- package/dist/chunks/dom.js +128 -0
- package/dist/chunks/dom.js.map +1 -0
- package/dist/chunks/events.js +270 -0
- package/dist/chunks/events.js.map +1 -0
- package/dist/chunks/field-cascade-select.js +207 -250
- package/dist/chunks/field-cascade-select.js.map +1 -1
- package/dist/chunks/field-file-drag.js +175 -209
- package/dist/chunks/field-file-drag.js.map +1 -1
- package/dist/chunks/field-flatpickr.js +94 -898
- package/dist/chunks/field-flatpickr.js.map +1 -1
- package/dist/chunks/field-modal-select.js +728 -467
- package/dist/chunks/field-modal-select.js.map +1 -1
- package/dist/chunks/field-modal-tree.js +771 -766
- package/dist/chunks/field-modal-tree.js.map +1 -1
- package/dist/chunks/field-multi-uploader.js +249 -256
- package/dist/chunks/field-multi-uploader.js.map +1 -1
- package/dist/chunks/field-repeatable.js +111 -127
- package/dist/chunks/field-repeatable.js.map +1 -1
- package/dist/chunks/field-single-image-drag.js +286 -338
- package/dist/chunks/field-single-image-drag.js.map +1 -1
- package/dist/chunks/form.js +146 -159
- package/dist/chunks/form.js.map +1 -1
- package/dist/chunks/grid.js +349 -418
- package/dist/chunks/grid.js.map +1 -1
- package/dist/chunks/helper.js +39 -0
- package/dist/chunks/helper.js.map +1 -0
- package/dist/chunks/http-client.js +221 -211
- package/dist/chunks/http-client.js.map +1 -1
- package/dist/chunks/iframe-modal.js +95 -115
- package/dist/chunks/iframe-modal.js.map +1 -1
- package/dist/chunks/keep-tab.js +92 -101
- package/dist/chunks/keep-tab.js.map +1 -1
- package/dist/chunks/lang.js +250 -0
- package/dist/chunks/lang.js.map +1 -0
- package/dist/chunks/legacy.js +197 -201
- package/dist/chunks/legacy.js.map +1 -1
- package/dist/chunks/list-dependent.js +195 -228
- package/dist/chunks/list-dependent.js.map +1 -1
- package/dist/chunks/loader.js +106 -0
- package/dist/chunks/loader.js.map +1 -0
- package/dist/chunks/monthSelect.js +251 -0
- package/dist/chunks/monthSelect.js.map +1 -0
- package/dist/chunks/router.js +111 -0
- package/dist/chunks/router.js.map +1 -0
- package/dist/chunks/s3-multipart-uploader.js +183 -210
- package/dist/chunks/s3-multipart-uploader.js.map +1 -1
- package/dist/chunks/s3-uploader.js +106 -128
- package/dist/chunks/s3-uploader.js.map +1 -1
- package/dist/chunks/show-on.js +358 -205
- package/dist/chunks/show-on.js.map +1 -1
- package/dist/chunks/timing.js +10 -0
- package/dist/chunks/timing.js.map +1 -0
- package/dist/chunks/tinymce.js +153 -203
- package/dist/chunks/tinymce.js.map +1 -1
- package/dist/chunks/ui-bootstrap5.js +58 -72
- package/dist/chunks/ui-bootstrap5.js.map +1 -1
- package/dist/chunks/ui.js +320 -0
- package/dist/chunks/ui.js.map +1 -0
- package/dist/chunks/unicorn.js.map +1 -1
- package/dist/chunks/useQueue.js +111 -0
- package/dist/chunks/useQueue.js.map +1 -0
- package/dist/chunks/useStack.js +76 -0
- package/dist/chunks/useStack.js.map +1 -0
- package/dist/chunks/validation.js +761 -853
- package/dist/chunks/validation.js.map +1 -1
- package/dist/editor.css +1 -1
- package/dist/index.d.ts +27 -15
- package/dist/multi-level-menu.css +1 -1
- package/dist/switcher.css +1 -1
- package/dist/unicorn.js +805 -130
- package/dist/unicorn.js.map +1 -1
- package/package.json +3 -3
- package/src/composable/useBsModalAlert.ts +92 -12
- package/src/composable/useHttp.ts +13 -1
- package/src/module/s3-uploader.ts +1 -1
- package/src/service/ui.ts +31 -15
- package/vite.config.ts +5 -1
- package/dist/chunks/_commonjsHelpers.js +0 -7
- package/dist/chunks/index.js +0 -314
- package/dist/chunks/isArguments.js +0 -146
- package/dist/chunks/unicorn.js +0 -2580
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
import { t as __commonJSMin } from "./chunk.js";
|
|
2
|
+
import { t as data } from "./data.js";
|
|
3
|
+
import { r as isDebug } from "./helper.js";
|
|
4
|
+
//#region ../../../../node_modules/sprintf-js/src/sprintf.js
|
|
5
|
+
var require_sprintf = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
6
|
+
(function() {
|
|
7
|
+
"use strict";
|
|
8
|
+
var re = {
|
|
9
|
+
not_string: /[^s]/,
|
|
10
|
+
not_bool: /[^t]/,
|
|
11
|
+
not_type: /[^T]/,
|
|
12
|
+
not_primitive: /[^v]/,
|
|
13
|
+
number: /[diefg]/,
|
|
14
|
+
numeric_arg: /[bcdiefguxX]/,
|
|
15
|
+
json: /[j]/,
|
|
16
|
+
not_json: /[^j]/,
|
|
17
|
+
text: /^[^\x25]+/,
|
|
18
|
+
modulo: /^\x25{2}/,
|
|
19
|
+
placeholder: /^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,
|
|
20
|
+
key: /^([a-z_][a-z_\d]*)/i,
|
|
21
|
+
key_access: /^\.([a-z_][a-z_\d]*)/i,
|
|
22
|
+
index_access: /^\[(\d+)\]/,
|
|
23
|
+
sign: /^[+-]/
|
|
24
|
+
};
|
|
25
|
+
function sprintf(key) {
|
|
26
|
+
return sprintf_format(sprintf_parse(key), arguments);
|
|
27
|
+
}
|
|
28
|
+
function vsprintf(fmt, argv) {
|
|
29
|
+
return sprintf.apply(null, [fmt].concat(argv || []));
|
|
30
|
+
}
|
|
31
|
+
function sprintf_format(parse_tree, argv) {
|
|
32
|
+
var cursor = 1, tree_length = parse_tree.length, arg, output = "", i, k, ph, pad, pad_character, pad_length, is_positive, sign;
|
|
33
|
+
for (i = 0; i < tree_length; i++) if (typeof parse_tree[i] === "string") output += parse_tree[i];
|
|
34
|
+
else if (typeof parse_tree[i] === "object") {
|
|
35
|
+
ph = parse_tree[i];
|
|
36
|
+
if (ph.keys) {
|
|
37
|
+
arg = argv[cursor];
|
|
38
|
+
for (k = 0; k < ph.keys.length; k++) {
|
|
39
|
+
if (arg == void 0) throw new Error(sprintf("[sprintf] Cannot access property \"%s\" of undefined value \"%s\"", ph.keys[k], ph.keys[k - 1]));
|
|
40
|
+
arg = arg[ph.keys[k]];
|
|
41
|
+
}
|
|
42
|
+
} else if (ph.param_no) arg = argv[ph.param_no];
|
|
43
|
+
else arg = argv[cursor++];
|
|
44
|
+
if (re.not_type.test(ph.type) && re.not_primitive.test(ph.type) && arg instanceof Function) arg = arg();
|
|
45
|
+
if (re.numeric_arg.test(ph.type) && typeof arg !== "number" && isNaN(arg)) throw new TypeError(sprintf("[sprintf] expecting number but found %T", arg));
|
|
46
|
+
if (re.number.test(ph.type)) is_positive = arg >= 0;
|
|
47
|
+
switch (ph.type) {
|
|
48
|
+
case "b":
|
|
49
|
+
arg = parseInt(arg, 10).toString(2);
|
|
50
|
+
break;
|
|
51
|
+
case "c":
|
|
52
|
+
arg = String.fromCharCode(parseInt(arg, 10));
|
|
53
|
+
break;
|
|
54
|
+
case "d":
|
|
55
|
+
case "i":
|
|
56
|
+
arg = parseInt(arg, 10);
|
|
57
|
+
break;
|
|
58
|
+
case "j":
|
|
59
|
+
arg = JSON.stringify(arg, null, ph.width ? parseInt(ph.width) : 0);
|
|
60
|
+
break;
|
|
61
|
+
case "e":
|
|
62
|
+
arg = ph.precision ? parseFloat(arg).toExponential(ph.precision) : parseFloat(arg).toExponential();
|
|
63
|
+
break;
|
|
64
|
+
case "f":
|
|
65
|
+
arg = ph.precision ? parseFloat(arg).toFixed(ph.precision) : parseFloat(arg);
|
|
66
|
+
break;
|
|
67
|
+
case "g":
|
|
68
|
+
arg = ph.precision ? String(Number(arg.toPrecision(ph.precision))) : parseFloat(arg);
|
|
69
|
+
break;
|
|
70
|
+
case "o":
|
|
71
|
+
arg = (parseInt(arg, 10) >>> 0).toString(8);
|
|
72
|
+
break;
|
|
73
|
+
case "s":
|
|
74
|
+
arg = String(arg);
|
|
75
|
+
arg = ph.precision ? arg.substring(0, ph.precision) : arg;
|
|
76
|
+
break;
|
|
77
|
+
case "t":
|
|
78
|
+
arg = String(!!arg);
|
|
79
|
+
arg = ph.precision ? arg.substring(0, ph.precision) : arg;
|
|
80
|
+
break;
|
|
81
|
+
case "T":
|
|
82
|
+
arg = Object.prototype.toString.call(arg).slice(8, -1).toLowerCase();
|
|
83
|
+
arg = ph.precision ? arg.substring(0, ph.precision) : arg;
|
|
84
|
+
break;
|
|
85
|
+
case "u":
|
|
86
|
+
arg = parseInt(arg, 10) >>> 0;
|
|
87
|
+
break;
|
|
88
|
+
case "v":
|
|
89
|
+
arg = arg.valueOf();
|
|
90
|
+
arg = ph.precision ? arg.substring(0, ph.precision) : arg;
|
|
91
|
+
break;
|
|
92
|
+
case "x":
|
|
93
|
+
arg = (parseInt(arg, 10) >>> 0).toString(16);
|
|
94
|
+
break;
|
|
95
|
+
case "X":
|
|
96
|
+
arg = (parseInt(arg, 10) >>> 0).toString(16).toUpperCase();
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
99
|
+
if (re.json.test(ph.type)) output += arg;
|
|
100
|
+
else {
|
|
101
|
+
if (re.number.test(ph.type) && (!is_positive || ph.sign)) {
|
|
102
|
+
sign = is_positive ? "+" : "-";
|
|
103
|
+
arg = arg.toString().replace(re.sign, "");
|
|
104
|
+
} else sign = "";
|
|
105
|
+
pad_character = ph.pad_char ? ph.pad_char === "0" ? "0" : ph.pad_char.charAt(1) : " ";
|
|
106
|
+
pad_length = ph.width - (sign + arg).length;
|
|
107
|
+
pad = ph.width ? pad_length > 0 ? pad_character.repeat(pad_length) : "" : "";
|
|
108
|
+
output += ph.align ? sign + arg + pad : pad_character === "0" ? sign + pad + arg : pad + sign + arg;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return output;
|
|
112
|
+
}
|
|
113
|
+
var sprintf_cache = Object.create(null);
|
|
114
|
+
function sprintf_parse(fmt) {
|
|
115
|
+
if (sprintf_cache[fmt]) return sprintf_cache[fmt];
|
|
116
|
+
var _fmt = fmt, match, parse_tree = [], arg_names = 0;
|
|
117
|
+
while (_fmt) {
|
|
118
|
+
if ((match = re.text.exec(_fmt)) !== null) parse_tree.push(match[0]);
|
|
119
|
+
else if ((match = re.modulo.exec(_fmt)) !== null) parse_tree.push("%");
|
|
120
|
+
else if ((match = re.placeholder.exec(_fmt)) !== null) {
|
|
121
|
+
if (match[2]) {
|
|
122
|
+
arg_names |= 1;
|
|
123
|
+
var field_list = [], replacement_field = match[2], field_match = [];
|
|
124
|
+
if ((field_match = re.key.exec(replacement_field)) !== null) {
|
|
125
|
+
field_list.push(field_match[1]);
|
|
126
|
+
while ((replacement_field = replacement_field.substring(field_match[0].length)) !== "") if ((field_match = re.key_access.exec(replacement_field)) !== null) field_list.push(field_match[1]);
|
|
127
|
+
else if ((field_match = re.index_access.exec(replacement_field)) !== null) field_list.push(field_match[1]);
|
|
128
|
+
else throw new SyntaxError("[sprintf] failed to parse named argument key");
|
|
129
|
+
} else throw new SyntaxError("[sprintf] failed to parse named argument key");
|
|
130
|
+
match[2] = field_list;
|
|
131
|
+
} else arg_names |= 2;
|
|
132
|
+
if (arg_names === 3) throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");
|
|
133
|
+
parse_tree.push({
|
|
134
|
+
placeholder: match[0],
|
|
135
|
+
param_no: match[1],
|
|
136
|
+
keys: match[2],
|
|
137
|
+
sign: match[3],
|
|
138
|
+
pad_char: match[4],
|
|
139
|
+
align: match[5],
|
|
140
|
+
width: match[6],
|
|
141
|
+
precision: match[7],
|
|
142
|
+
type: match[8]
|
|
143
|
+
});
|
|
144
|
+
} else throw new SyntaxError("[sprintf] unexpected placeholder");
|
|
145
|
+
_fmt = _fmt.substring(match[0].length);
|
|
146
|
+
}
|
|
147
|
+
return sprintf_cache[fmt] = parse_tree;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* export to either browser or node.js
|
|
151
|
+
*/
|
|
152
|
+
if (typeof exports !== "undefined") {
|
|
153
|
+
exports["sprintf"] = sprintf;
|
|
154
|
+
exports["vsprintf"] = vsprintf;
|
|
155
|
+
}
|
|
156
|
+
if (typeof window !== "undefined") {
|
|
157
|
+
window["sprintf"] = sprintf;
|
|
158
|
+
window["vsprintf"] = vsprintf;
|
|
159
|
+
if (typeof define === "function" && define["amd"]) define(function() {
|
|
160
|
+
return {
|
|
161
|
+
"sprintf": sprintf,
|
|
162
|
+
"vsprintf": vsprintf
|
|
163
|
+
};
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
})();
|
|
167
|
+
}));
|
|
168
|
+
//#endregion
|
|
169
|
+
//#region src/service/lang.ts
|
|
170
|
+
var import_sprintf = /* @__PURE__ */ require_sprintf();
|
|
171
|
+
var lang;
|
|
172
|
+
function useLang() {
|
|
173
|
+
return lang ??= new UnicornLang();
|
|
174
|
+
}
|
|
175
|
+
function trans(id, ...args) {
|
|
176
|
+
return useLang().trans(id, ...args);
|
|
177
|
+
}
|
|
178
|
+
function __(id, ...args) {
|
|
179
|
+
return trans(id, ...args);
|
|
180
|
+
}
|
|
181
|
+
var UnicornLang = class {
|
|
182
|
+
/**
|
|
183
|
+
* Translate a string.
|
|
184
|
+
*/
|
|
185
|
+
trans(id, ...args) {
|
|
186
|
+
const key = this.normalize(id);
|
|
187
|
+
let translated = this.get(key) || "";
|
|
188
|
+
translated = this.replace(translated, args);
|
|
189
|
+
return translated !== "" ? translated : this.wrapDebug(id, false);
|
|
190
|
+
}
|
|
191
|
+
replace(str, args) {
|
|
192
|
+
let replacements = {};
|
|
193
|
+
let values = [];
|
|
194
|
+
for (const arg of args) if (typeof arg === "object") replacements = {
|
|
195
|
+
...replacements,
|
|
196
|
+
...arg
|
|
197
|
+
};
|
|
198
|
+
else values.push(arg);
|
|
199
|
+
if (values.length) str = (0, import_sprintf.vsprintf)(str, values);
|
|
200
|
+
if (Object.values(replacements).length) for (const key in replacements) {
|
|
201
|
+
let value = replacements[key];
|
|
202
|
+
if (typeof value === "function") value = value();
|
|
203
|
+
str = str.replace(new RegExp(":" + key, "g"), String(value));
|
|
204
|
+
}
|
|
205
|
+
return str;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Find text.
|
|
209
|
+
*/
|
|
210
|
+
get(id) {
|
|
211
|
+
const strings = this.getStrings();
|
|
212
|
+
if (strings[id]) return strings[id];
|
|
213
|
+
return null;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Has language key.
|
|
217
|
+
*/
|
|
218
|
+
has(key) {
|
|
219
|
+
return this.getStrings()[key] !== void 0;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Add language key.
|
|
223
|
+
*/
|
|
224
|
+
add(key, value) {
|
|
225
|
+
const strings = this.getStrings();
|
|
226
|
+
strings[this.normalize(key)] = value;
|
|
227
|
+
data("unicorn.languages", strings);
|
|
228
|
+
return this;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Replace all symbols to dot(.).
|
|
232
|
+
*/
|
|
233
|
+
normalize(text) {
|
|
234
|
+
return text.replace(/[^A-Z0-9]+/gi, ".");
|
|
235
|
+
}
|
|
236
|
+
wrapDebug(text, success) {
|
|
237
|
+
if (isDebug()) {
|
|
238
|
+
if (success) return "**" + text + "**";
|
|
239
|
+
return "??" + text + "??";
|
|
240
|
+
}
|
|
241
|
+
return text;
|
|
242
|
+
}
|
|
243
|
+
getStrings() {
|
|
244
|
+
return data("unicorn.languages") || {};
|
|
245
|
+
}
|
|
246
|
+
};
|
|
247
|
+
//#endregion
|
|
248
|
+
export { require_sprintf as i, trans as n, useLang as r, __ as t };
|
|
249
|
+
|
|
250
|
+
//# sourceMappingURL=lang.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lang.js","names":[],"sources":["../../../../../../node_modules/sprintf-js/src/sprintf.js","../../src/service/lang.ts"],"sourcesContent":["/* global window, exports, define */\n\n!function() {\n 'use strict'\n\n var re = {\n not_string: /[^s]/,\n not_bool: /[^t]/,\n not_type: /[^T]/,\n not_primitive: /[^v]/,\n number: /[diefg]/,\n numeric_arg: /[bcdiefguxX]/,\n json: /[j]/,\n not_json: /[^j]/,\n text: /^[^\\x25]+/,\n modulo: /^\\x25{2}/,\n placeholder: /^\\x25(?:([1-9]\\d*)\\$|\\(([^)]+)\\))?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-gijostTuvxX])/,\n key: /^([a-z_][a-z_\\d]*)/i,\n key_access: /^\\.([a-z_][a-z_\\d]*)/i,\n index_access: /^\\[(\\d+)\\]/,\n sign: /^[+-]/\n }\n\n function sprintf(key) {\n // `arguments` is not an array, but should be fine for this call\n return sprintf_format(sprintf_parse(key), arguments)\n }\n\n function vsprintf(fmt, argv) {\n return sprintf.apply(null, [fmt].concat(argv || []))\n }\n\n function sprintf_format(parse_tree, argv) {\n var cursor = 1, tree_length = parse_tree.length, arg, output = '', i, k, ph, pad, pad_character, pad_length, is_positive, sign\n for (i = 0; i < tree_length; i++) {\n if (typeof parse_tree[i] === 'string') {\n output += parse_tree[i]\n }\n else if (typeof parse_tree[i] === 'object') {\n ph = parse_tree[i] // convenience purposes only\n if (ph.keys) { // keyword argument\n arg = argv[cursor]\n for (k = 0; k < ph.keys.length; k++) {\n if (arg == undefined) {\n throw new Error(sprintf('[sprintf] Cannot access property \"%s\" of undefined value \"%s\"', ph.keys[k], ph.keys[k-1]))\n }\n arg = arg[ph.keys[k]]\n }\n }\n else if (ph.param_no) { // positional argument (explicit)\n arg = argv[ph.param_no]\n }\n else { // positional argument (implicit)\n arg = argv[cursor++]\n }\n\n if (re.not_type.test(ph.type) && re.not_primitive.test(ph.type) && arg instanceof Function) {\n arg = arg()\n }\n\n if (re.numeric_arg.test(ph.type) && (typeof arg !== 'number' && isNaN(arg))) {\n throw new TypeError(sprintf('[sprintf] expecting number but found %T', arg))\n }\n\n if (re.number.test(ph.type)) {\n is_positive = arg >= 0\n }\n\n switch (ph.type) {\n case 'b':\n arg = parseInt(arg, 10).toString(2)\n break\n case 'c':\n arg = String.fromCharCode(parseInt(arg, 10))\n break\n case 'd':\n case 'i':\n arg = parseInt(arg, 10)\n break\n case 'j':\n arg = JSON.stringify(arg, null, ph.width ? parseInt(ph.width) : 0)\n break\n case 'e':\n arg = ph.precision ? parseFloat(arg).toExponential(ph.precision) : parseFloat(arg).toExponential()\n break\n case 'f':\n arg = ph.precision ? parseFloat(arg).toFixed(ph.precision) : parseFloat(arg)\n break\n case 'g':\n arg = ph.precision ? String(Number(arg.toPrecision(ph.precision))) : parseFloat(arg)\n break\n case 'o':\n arg = (parseInt(arg, 10) >>> 0).toString(8)\n break\n case 's':\n arg = String(arg)\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 't':\n arg = String(!!arg)\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'T':\n arg = Object.prototype.toString.call(arg).slice(8, -1).toLowerCase()\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'u':\n arg = parseInt(arg, 10) >>> 0\n break\n case 'v':\n arg = arg.valueOf()\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'x':\n arg = (parseInt(arg, 10) >>> 0).toString(16)\n break\n case 'X':\n arg = (parseInt(arg, 10) >>> 0).toString(16).toUpperCase()\n break\n }\n if (re.json.test(ph.type)) {\n output += arg\n }\n else {\n if (re.number.test(ph.type) && (!is_positive || ph.sign)) {\n sign = is_positive ? '+' : '-'\n arg = arg.toString().replace(re.sign, '')\n }\n else {\n sign = ''\n }\n pad_character = ph.pad_char ? ph.pad_char === '0' ? '0' : ph.pad_char.charAt(1) : ' '\n pad_length = ph.width - (sign + arg).length\n pad = ph.width ? (pad_length > 0 ? pad_character.repeat(pad_length) : '') : ''\n output += ph.align ? sign + arg + pad : (pad_character === '0' ? sign + pad + arg : pad + sign + arg)\n }\n }\n }\n return output\n }\n\n var sprintf_cache = Object.create(null)\n\n function sprintf_parse(fmt) {\n if (sprintf_cache[fmt]) {\n return sprintf_cache[fmt]\n }\n\n var _fmt = fmt, match, parse_tree = [], arg_names = 0\n while (_fmt) {\n if ((match = re.text.exec(_fmt)) !== null) {\n parse_tree.push(match[0])\n }\n else if ((match = re.modulo.exec(_fmt)) !== null) {\n parse_tree.push('%')\n }\n else if ((match = re.placeholder.exec(_fmt)) !== null) {\n if (match[2]) {\n arg_names |= 1\n var field_list = [], replacement_field = match[2], field_match = []\n if ((field_match = re.key.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {\n if ((field_match = re.key_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else if ((field_match = re.index_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n }\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n match[2] = field_list\n }\n else {\n arg_names |= 2\n }\n if (arg_names === 3) {\n throw new Error('[sprintf] mixing positional and named placeholders is not (yet) supported')\n }\n\n parse_tree.push(\n {\n placeholder: match[0],\n param_no: match[1],\n keys: match[2],\n sign: match[3],\n pad_char: match[4],\n align: match[5],\n width: match[6],\n precision: match[7],\n type: match[8]\n }\n )\n }\n else {\n throw new SyntaxError('[sprintf] unexpected placeholder')\n }\n _fmt = _fmt.substring(match[0].length)\n }\n return sprintf_cache[fmt] = parse_tree\n }\n\n /**\n * export to either browser or node.js\n */\n /* eslint-disable quote-props */\n if (typeof exports !== 'undefined') {\n exports['sprintf'] = sprintf\n exports['vsprintf'] = vsprintf\n }\n if (typeof window !== 'undefined') {\n window['sprintf'] = sprintf\n window['vsprintf'] = vsprintf\n\n if (typeof define === 'function' && define['amd']) {\n define(function() {\n return {\n 'sprintf': sprintf,\n 'vsprintf': vsprintf\n }\n })\n }\n }\n /* eslint-enable quote-props */\n}(); // eslint-disable-line\n","import { data } from '../data';\nimport { isDebug } from './/helper';\nimport { Dictionary } from '../types';\nimport { vsprintf } from 'sprintf-js';\n\nlet lang: UnicornLang;\n\nexport function useLang() {\n return lang ??= new UnicornLang();\n}\n\nexport function trans(id: string, ...args: any[]) {\n return useLang().trans(id, ...args);\n}\n\nexport function __(id: string, ...args: any[]) {\n return trans(id, ...args);\n}\n\nexport default class UnicornLang {\n /**\n * Translate a string.\n */\n trans(id: string, ...args: any[]): string {\n const key = this.normalize(id);\n\n let translated = this.get(key) || '';\n\n translated = this.replace(translated, args);\n\n return translated !== '' ? translated : this.wrapDebug(id, false);\n }\n\n protected replace(str: string, args: any[]): string {\n let replacements: Dictionary<any> = {};\n let values: any[] = [];\n\n for (const arg of args) {\n if (typeof arg === 'object') {\n replacements = { ...replacements, ...arg };\n } else {\n values.push(arg);\n }\n }\n\n if (values.length) {\n str = vsprintf(str, values);\n }\n\n if (Object.values(replacements).length) {\n for (const key in replacements) {\n let value = replacements[key];\n\n if (typeof value === 'function') {\n value = value();\n }\n\n str = str.replace(new RegExp(':' + key, 'g'), String(value));\n }\n }\n\n return str;\n }\n\n /**\n * Find text.\n */\n get(id: string): string | null {\n const strings = this.getStrings();\n\n if (strings[id]) {\n return strings[id];\n }\n\n return null;\n }\n\n /**\n * Has language key.\n */\n has(key: string): boolean {\n const strings = this.getStrings();\n\n return strings[key] !== undefined;\n }\n\n /**\n * Add language key.\n */\n add(key: string, value: string): this {\n const strings = this.getStrings();\n\n strings[this.normalize(key)] = value;\n\n data('unicorn.languages', strings);\n\n return this;\n }\n\n /**\n * Replace all symbols to dot(.).\n */\n protected normalize(text: string): string {\n return text.replace(/[^A-Z0-9]+/ig, '.');\n }\n\n protected wrapDebug(text: string, success: boolean): string {\n if (isDebug()) {\n if (success) {\n return '**' + text + '**';\n }\n\n return '??' + text + '??';\n }\n\n return text;\n }\n\n getStrings(): Record<string, string> {\n return data('unicorn.languages') || {};\n }\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
|