web-mojo 2.1.678 → 2.1.682
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/admin.cjs.js +1 -1
- package/dist/admin.es.js +10 -10
- package/dist/auth.cjs.js +1 -1
- package/dist/auth.cjs.js.map +1 -1
- package/dist/auth.es.js +3 -3
- package/dist/auth.es.js.map +1 -1
- package/dist/charts.cjs.js +1 -1
- package/dist/charts.es.js +2 -2
- package/dist/chunks/{ChatView-DoOb4dyF.js → ChatView-ZaRZ-1wA.js} +2 -2
- package/dist/chunks/{ChatView-DoOb4dyF.js.map → ChatView-ZaRZ-1wA.js.map} +1 -1
- package/dist/chunks/{ChatView-iDY-MsDn.js → ChatView-rQxIKciq.js} +6 -6
- package/dist/chunks/{ChatView-iDY-MsDn.js.map → ChatView-rQxIKciq.js.map} +1 -1
- package/dist/chunks/{ContextMenu-DZLL0Aeu.js → ContextMenu-47O2lbsV.js} +2 -2
- package/dist/chunks/{ContextMenu-DZLL0Aeu.js.map → ContextMenu-47O2lbsV.js.map} +1 -1
- package/dist/chunks/{ContextMenu-zGKcw_a6.js → ContextMenu-bEra2rOd.js} +2 -2
- package/dist/chunks/{ContextMenu-zGKcw_a6.js.map → ContextMenu-bEra2rOd.js.map} +1 -1
- package/dist/chunks/{DataView-Dx78M3yt.js → DataView-Dp4LZC_P.js} +2 -2
- package/dist/chunks/{DataView-Dx78M3yt.js.map → DataView-Dp4LZC_P.js.map} +1 -1
- package/dist/chunks/{DataView-CJ10Saok.js → DataView-I8leh-EL.js} +2 -2
- package/dist/chunks/{DataView-CJ10Saok.js.map → DataView-I8leh-EL.js.map} +1 -1
- package/dist/chunks/{Dialog-D9EXh_A9.js → Dialog-D-N9fnIq.js} +2 -2
- package/dist/chunks/{Dialog-D9EXh_A9.js.map → Dialog-D-N9fnIq.js.map} +1 -1
- package/dist/chunks/{Dialog-B3bD_iSn.js → Dialog-Dls3VAB8.js} +5 -5
- package/dist/chunks/{Dialog-B3bD_iSn.js.map → Dialog-Dls3VAB8.js.map} +1 -1
- package/dist/chunks/{FormView-NSlCK9fF.js → FormView-BkBLv7Jy.js} +2 -2
- package/dist/chunks/{FormView-NSlCK9fF.js.map → FormView-BkBLv7Jy.js.map} +1 -1
- package/dist/chunks/{FormView-zgLKURWJ.js → FormView-jQkvTThx.js} +2 -2
- package/dist/chunks/{FormView-zgLKURWJ.js.map → FormView-jQkvTThx.js.map} +1 -1
- package/dist/chunks/{MetricsMiniChartWidget-DXNa0bT2.js → MetricsMiniChartWidget-B9xu8Wzh.js} +2 -2
- package/dist/chunks/{MetricsMiniChartWidget-DXNa0bT2.js.map → MetricsMiniChartWidget-B9xu8Wzh.js.map} +1 -1
- package/dist/chunks/{MetricsMiniChartWidget-CmEzlyAO.js → MetricsMiniChartWidget-D0Eq9agy.js} +39 -12
- package/dist/chunks/{MetricsMiniChartWidget-CmEzlyAO.js.map → MetricsMiniChartWidget-D0Eq9agy.js.map} +1 -1
- package/dist/chunks/{PDFViewer-C8xUA4Po.js → PDFViewer-CtziqVkB.js} +3 -3
- package/dist/chunks/{PDFViewer-C8xUA4Po.js.map → PDFViewer-CtziqVkB.js.map} +1 -1
- package/dist/chunks/{PDFViewer-lbh_aAcj.js → PDFViewer-GCsxAgql.js} +2 -2
- package/dist/chunks/{PDFViewer-lbh_aAcj.js.map → PDFViewer-GCsxAgql.js.map} +1 -1
- package/dist/chunks/{Page-B4C7paFp.js → Page-BnEgQPcR.js} +2 -2
- package/dist/chunks/{Page-B4C7paFp.js.map → Page-BnEgQPcR.js.map} +1 -1
- package/dist/chunks/{Page-UNb6Zq-s.js → Page-DlOiEuua.js} +2 -2
- package/dist/chunks/{Page-UNb6Zq-s.js.map → Page-DlOiEuua.js.map} +1 -1
- package/dist/chunks/{TopNav-3cDtaRel.js → TopNav-BDcnSuji.js} +2 -2
- package/dist/chunks/{TopNav-3cDtaRel.js.map → TopNav-BDcnSuji.js.map} +1 -1
- package/dist/chunks/{TopNav-DLu1JgLn.js → TopNav-DVvNdyUm.js} +5 -5
- package/dist/chunks/{TopNav-DLu1JgLn.js.map → TopNav-DVvNdyUm.js.map} +1 -1
- package/dist/chunks/WebApp--rBzVI7e.js +2 -0
- package/dist/chunks/WebApp--rBzVI7e.js.map +1 -0
- package/dist/chunks/{WebApp-Zl6sz13N.js → WebApp-DF_USeWe.js} +85 -17
- package/dist/chunks/WebApp-DF_USeWe.js.map +1 -0
- package/dist/docit.cjs.js +1 -1
- package/dist/docit.es.js +5 -5
- package/dist/index.cjs.js +1 -1
- package/dist/index.es.js +11 -11
- package/dist/lightbox.cjs.js +1 -1
- package/dist/lightbox.es.js +4 -4
- package/package.json +1 -1
- package/dist/chunks/WebApp-CylQA6ix.js +0 -2
- package/dist/chunks/WebApp-CylQA6ix.js.map +0 -1
- package/dist/chunks/WebApp-Zl6sz13N.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
const VERSION = "2.1.
|
|
1
|
+
const VERSION = "2.1.682";
|
|
2
2
|
const VERSION_MAJOR = 2;
|
|
3
3
|
const VERSION_MINOR = 1;
|
|
4
|
-
const VERSION_REVISION =
|
|
5
|
-
const BUILD_TIME = "2025-10-
|
|
4
|
+
const VERSION_REVISION = 682;
|
|
5
|
+
const BUILD_TIME = "2025-10-04T01:54:37.041Z";
|
|
6
6
|
const VERSION_INFO = {
|
|
7
7
|
full: VERSION,
|
|
8
8
|
major: VERSION_MAJOR,
|
|
@@ -538,6 +538,10 @@ class DataFormatter {
|
|
|
538
538
|
this.register("slug", this.slug.bind(this));
|
|
539
539
|
this.register("initials", this.initials.bind(this));
|
|
540
540
|
this.register("mask", this.mask.bind(this));
|
|
541
|
+
this.register("hex", this.hex.bind(this));
|
|
542
|
+
this.register("tohex", this.hex.bind(this));
|
|
543
|
+
this.register("unhex", this.unhex.bind(this));
|
|
544
|
+
this.register("fromhex", this.unhex.bind(this));
|
|
541
545
|
this.register("email", this.email.bind(this));
|
|
542
546
|
this.register("phone", this.phone.bind(this));
|
|
543
547
|
this.register("url", this.url.bind(this));
|
|
@@ -647,7 +651,7 @@ class DataFormatter {
|
|
|
647
651
|
* Supports both syntaxes:
|
|
648
652
|
* - Parentheses: formatter('arg1', 'arg2', 3)
|
|
649
653
|
* - Colon: formatter:'arg1':'arg2':3
|
|
650
|
-
*
|
|
654
|
+
*
|
|
651
655
|
* @param {string} token - Formatter token
|
|
652
656
|
* @param {object} context - Optional context for resolving variables
|
|
653
657
|
* @returns {Object} {name, args} object
|
|
@@ -766,7 +770,7 @@ class DataFormatter {
|
|
|
766
770
|
}
|
|
767
771
|
if (context && this.isIdentifier(value)) {
|
|
768
772
|
if (!value.includes(".")) {
|
|
769
|
-
if (
|
|
773
|
+
if (Object.prototype.hasOwnProperty.call(context, value)) {
|
|
770
774
|
return context[value];
|
|
771
775
|
}
|
|
772
776
|
}
|
|
@@ -1504,11 +1508,11 @@ class DataFormatter {
|
|
|
1504
1508
|
}
|
|
1505
1509
|
/**
|
|
1506
1510
|
* Tooltip formatter - wraps value with Bootstrap tooltip
|
|
1507
|
-
* Usage:
|
|
1511
|
+
* Usage:
|
|
1508
1512
|
* {{value|tooltip:'Tooltip text'}}
|
|
1509
1513
|
* {{value|tooltip:'Help text':top}}
|
|
1510
1514
|
* {{value|tooltip:'Info':bottom:html}}
|
|
1511
|
-
*
|
|
1515
|
+
*
|
|
1512
1516
|
* @param {*} value - Value to display (not escaped, works with formatter chains)
|
|
1513
1517
|
* @param {string} text - Tooltip text content
|
|
1514
1518
|
* @param {string} placement - Tooltip placement: top, bottom, left, right (default: top)
|
|
@@ -1691,6 +1695,70 @@ class DataFormatter {
|
|
|
1691
1695
|
const regex = new RegExp(`(${escapedTerm})`, "gi");
|
|
1692
1696
|
return String(text).replace(regex, `<mark class="${className}">$1</mark>`);
|
|
1693
1697
|
}
|
|
1698
|
+
/**
|
|
1699
|
+
* Encode a value as a hex string.
|
|
1700
|
+
* - Strings are encoded as UTF-8 bytes, then hex-encoded
|
|
1701
|
+
* - Numbers are converted to base-16 (padded to even length)
|
|
1702
|
+
* - Uint8Array/ArrayBuffer/number[] are treated as bytes
|
|
1703
|
+
*
|
|
1704
|
+
* @param {*} value - The value to encode
|
|
1705
|
+
* @param {boolean} uppercase - Uppercase hex letters (A-F)
|
|
1706
|
+
* @param {boolean} withPrefix - Prefix with '0x'
|
|
1707
|
+
* @returns {string} Hex string
|
|
1708
|
+
*/
|
|
1709
|
+
hex(value, uppercase = false, withPrefix = false) {
|
|
1710
|
+
if (value === null || value === void 0) return "";
|
|
1711
|
+
let hexStr = "";
|
|
1712
|
+
const toHexFromBytes = (bytes) => Array.from(bytes).map((b) => b.toString(16).padStart(2, "0")).join("");
|
|
1713
|
+
if (typeof value === "number") {
|
|
1714
|
+
let hex = Math.abs(Math.trunc(value)).toString(16);
|
|
1715
|
+
if (hex.length % 2) hex = "0" + hex;
|
|
1716
|
+
hexStr = hex;
|
|
1717
|
+
} else if (value instanceof Uint8Array) {
|
|
1718
|
+
hexStr = toHexFromBytes(value);
|
|
1719
|
+
} else if (value instanceof ArrayBuffer) {
|
|
1720
|
+
hexStr = toHexFromBytes(new Uint8Array(value));
|
|
1721
|
+
} else if (Array.isArray(value) && value.every((n) => typeof n === "number")) {
|
|
1722
|
+
hexStr = toHexFromBytes(Uint8Array.from(value.map((n) => n & 255)));
|
|
1723
|
+
} else {
|
|
1724
|
+
const enc = new TextEncoder();
|
|
1725
|
+
const bytes = enc.encode(String(value));
|
|
1726
|
+
hexStr = toHexFromBytes(bytes);
|
|
1727
|
+
}
|
|
1728
|
+
if (uppercase) hexStr = hexStr.toUpperCase();
|
|
1729
|
+
return (withPrefix ? "0x" : "") + hexStr;
|
|
1730
|
+
}
|
|
1731
|
+
/**
|
|
1732
|
+
* Decode a hex string into UTF-8 text.
|
|
1733
|
+
* Accepts optional '0x' prefix and ignores whitespace.
|
|
1734
|
+
*
|
|
1735
|
+
* @param {string} value - Hex string
|
|
1736
|
+
* @returns {string} Decoded UTF-8 string (or original value on parse error)
|
|
1737
|
+
*/
|
|
1738
|
+
unhex(value) {
|
|
1739
|
+
if (value === null || value === void 0) return "";
|
|
1740
|
+
let str = String(value).trim();
|
|
1741
|
+
if (str.startsWith("0x") || str.startsWith("0X")) str = str.slice(2);
|
|
1742
|
+
str = str.replace(/\s+/g, "");
|
|
1743
|
+
if (str.length === 0) return "";
|
|
1744
|
+
if (str.length % 2 !== 0) str = "0" + str;
|
|
1745
|
+
const bytes = new Uint8Array(str.length / 2);
|
|
1746
|
+
for (let i = 0; i < str.length; i += 2) {
|
|
1747
|
+
const byte = parseInt(str.slice(i, i + 2), 16);
|
|
1748
|
+
if (Number.isNaN(byte)) {
|
|
1749
|
+
return String(value);
|
|
1750
|
+
}
|
|
1751
|
+
bytes[i / 2] = byte;
|
|
1752
|
+
}
|
|
1753
|
+
try {
|
|
1754
|
+
const dec = new TextDecoder();
|
|
1755
|
+
return dec.decode(bytes);
|
|
1756
|
+
} catch (e) {
|
|
1757
|
+
let text = "";
|
|
1758
|
+
for (const b of bytes) text += String.fromCharCode(b);
|
|
1759
|
+
return text;
|
|
1760
|
+
}
|
|
1761
|
+
}
|
|
1694
1762
|
json(value, indent = 2) {
|
|
1695
1763
|
try {
|
|
1696
1764
|
return JSON.stringify(value, null, indent);
|
|
@@ -4918,7 +4986,7 @@ class WebApp {
|
|
|
4918
4986
|
*/
|
|
4919
4987
|
async showError(message) {
|
|
4920
4988
|
try {
|
|
4921
|
-
const Dialog = (await import("./Dialog-
|
|
4989
|
+
const Dialog = (await import("./Dialog-Dls3VAB8.js")).default;
|
|
4922
4990
|
await Dialog.alert(message, "Error", { size: "md", class: "text-danger" });
|
|
4923
4991
|
} catch (e) {
|
|
4924
4992
|
this.events.emit("notification", { message, type: "error" });
|
|
@@ -4935,7 +5003,7 @@ class WebApp {
|
|
|
4935
5003
|
*/
|
|
4936
5004
|
async showSuccess(message) {
|
|
4937
5005
|
try {
|
|
4938
|
-
const Dialog = (await import("./Dialog-
|
|
5006
|
+
const Dialog = (await import("./Dialog-Dls3VAB8.js")).default;
|
|
4939
5007
|
await Dialog.alert(message, "Success", { size: "md", class: "text-success" });
|
|
4940
5008
|
} catch (e) {
|
|
4941
5009
|
this.events.emit("notification", { message, type: "success" });
|
|
@@ -4952,7 +5020,7 @@ class WebApp {
|
|
|
4952
5020
|
*/
|
|
4953
5021
|
async showInfo(message) {
|
|
4954
5022
|
try {
|
|
4955
|
-
const Dialog = (await import("./Dialog-
|
|
5023
|
+
const Dialog = (await import("./Dialog-Dls3VAB8.js")).default;
|
|
4956
5024
|
await Dialog.alert(message, "Information", { size: "md", class: "text-info" });
|
|
4957
5025
|
} catch (e) {
|
|
4958
5026
|
this.events.emit("notification", { message, type: "info" });
|
|
@@ -4969,7 +5037,7 @@ class WebApp {
|
|
|
4969
5037
|
*/
|
|
4970
5038
|
async showWarning(message) {
|
|
4971
5039
|
try {
|
|
4972
|
-
const Dialog = (await import("./Dialog-
|
|
5040
|
+
const Dialog = (await import("./Dialog-Dls3VAB8.js")).default;
|
|
4973
5041
|
await Dialog.alert(message, "Warning", { size: "md", class: "text-warning" });
|
|
4974
5042
|
} catch (e) {
|
|
4975
5043
|
this.events.emit("notification", { message, type: "warning" });
|
|
@@ -4995,7 +5063,7 @@ class WebApp {
|
|
|
4995
5063
|
opts = { message: opts };
|
|
4996
5064
|
}
|
|
4997
5065
|
try {
|
|
4998
|
-
const Dialog = (await import("./Dialog-
|
|
5066
|
+
const Dialog = (await import("./Dialog-Dls3VAB8.js")).default;
|
|
4999
5067
|
Dialog.showBusy(opts);
|
|
5000
5068
|
} catch (e) {
|
|
5001
5069
|
if (typeof window !== "undefined" && window?.console) {
|
|
@@ -5009,7 +5077,7 @@ class WebApp {
|
|
|
5009
5077
|
*/
|
|
5010
5078
|
async hideLoading() {
|
|
5011
5079
|
try {
|
|
5012
|
-
const Dialog = (await import("./Dialog-
|
|
5080
|
+
const Dialog = (await import("./Dialog-Dls3VAB8.js")).default;
|
|
5013
5081
|
Dialog.hideBusy();
|
|
5014
5082
|
} catch (e) {
|
|
5015
5083
|
if (typeof window !== "undefined" && window?.console) {
|
|
@@ -5019,7 +5087,7 @@ class WebApp {
|
|
|
5019
5087
|
}
|
|
5020
5088
|
async showModelForm(options = {}) {
|
|
5021
5089
|
try {
|
|
5022
|
-
const Dialog = (await import("./Dialog-
|
|
5090
|
+
const Dialog = (await import("./Dialog-Dls3VAB8.js")).default;
|
|
5023
5091
|
return await Dialog.showModelForm(options);
|
|
5024
5092
|
} catch (e) {
|
|
5025
5093
|
if (typeof window !== "undefined" && window?.console) {
|
|
@@ -5030,7 +5098,7 @@ class WebApp {
|
|
|
5030
5098
|
}
|
|
5031
5099
|
async showForm(options = {}) {
|
|
5032
5100
|
try {
|
|
5033
|
-
const Dialog = (await import("./Dialog-
|
|
5101
|
+
const Dialog = (await import("./Dialog-Dls3VAB8.js")).default;
|
|
5034
5102
|
return await Dialog.showForm(options);
|
|
5035
5103
|
} catch (e) {
|
|
5036
5104
|
if (typeof window !== "undefined" && window?.console) {
|
|
@@ -5040,7 +5108,7 @@ class WebApp {
|
|
|
5040
5108
|
}
|
|
5041
5109
|
}
|
|
5042
5110
|
async confirm(message, title = "Confirm", options = {}) {
|
|
5043
|
-
const Dialog = (await import("./Dialog-
|
|
5111
|
+
const Dialog = (await import("./Dialog-Dls3VAB8.js")).default;
|
|
5044
5112
|
return await Dialog.confirm(message, title, options);
|
|
5045
5113
|
}
|
|
5046
5114
|
/**
|
|
@@ -5293,4 +5361,4 @@ export {
|
|
|
5293
5361
|
EventEmitter as i,
|
|
5294
5362
|
rest as r
|
|
5295
5363
|
};
|
|
5296
|
-
//# sourceMappingURL=WebApp-
|
|
5364
|
+
//# sourceMappingURL=WebApp-DF_USeWe.js.map
|