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.
Files changed (58) hide show
  1. package/dist/admin.cjs.js +1 -1
  2. package/dist/admin.es.js +10 -10
  3. package/dist/auth.cjs.js +1 -1
  4. package/dist/auth.cjs.js.map +1 -1
  5. package/dist/auth.es.js +3 -3
  6. package/dist/auth.es.js.map +1 -1
  7. package/dist/charts.cjs.js +1 -1
  8. package/dist/charts.es.js +2 -2
  9. package/dist/chunks/{ChatView-DoOb4dyF.js → ChatView-ZaRZ-1wA.js} +2 -2
  10. package/dist/chunks/{ChatView-DoOb4dyF.js.map → ChatView-ZaRZ-1wA.js.map} +1 -1
  11. package/dist/chunks/{ChatView-iDY-MsDn.js → ChatView-rQxIKciq.js} +6 -6
  12. package/dist/chunks/{ChatView-iDY-MsDn.js.map → ChatView-rQxIKciq.js.map} +1 -1
  13. package/dist/chunks/{ContextMenu-DZLL0Aeu.js → ContextMenu-47O2lbsV.js} +2 -2
  14. package/dist/chunks/{ContextMenu-DZLL0Aeu.js.map → ContextMenu-47O2lbsV.js.map} +1 -1
  15. package/dist/chunks/{ContextMenu-zGKcw_a6.js → ContextMenu-bEra2rOd.js} +2 -2
  16. package/dist/chunks/{ContextMenu-zGKcw_a6.js.map → ContextMenu-bEra2rOd.js.map} +1 -1
  17. package/dist/chunks/{DataView-Dx78M3yt.js → DataView-Dp4LZC_P.js} +2 -2
  18. package/dist/chunks/{DataView-Dx78M3yt.js.map → DataView-Dp4LZC_P.js.map} +1 -1
  19. package/dist/chunks/{DataView-CJ10Saok.js → DataView-I8leh-EL.js} +2 -2
  20. package/dist/chunks/{DataView-CJ10Saok.js.map → DataView-I8leh-EL.js.map} +1 -1
  21. package/dist/chunks/{Dialog-D9EXh_A9.js → Dialog-D-N9fnIq.js} +2 -2
  22. package/dist/chunks/{Dialog-D9EXh_A9.js.map → Dialog-D-N9fnIq.js.map} +1 -1
  23. package/dist/chunks/{Dialog-B3bD_iSn.js → Dialog-Dls3VAB8.js} +5 -5
  24. package/dist/chunks/{Dialog-B3bD_iSn.js.map → Dialog-Dls3VAB8.js.map} +1 -1
  25. package/dist/chunks/{FormView-NSlCK9fF.js → FormView-BkBLv7Jy.js} +2 -2
  26. package/dist/chunks/{FormView-NSlCK9fF.js.map → FormView-BkBLv7Jy.js.map} +1 -1
  27. package/dist/chunks/{FormView-zgLKURWJ.js → FormView-jQkvTThx.js} +2 -2
  28. package/dist/chunks/{FormView-zgLKURWJ.js.map → FormView-jQkvTThx.js.map} +1 -1
  29. package/dist/chunks/{MetricsMiniChartWidget-DXNa0bT2.js → MetricsMiniChartWidget-B9xu8Wzh.js} +2 -2
  30. package/dist/chunks/{MetricsMiniChartWidget-DXNa0bT2.js.map → MetricsMiniChartWidget-B9xu8Wzh.js.map} +1 -1
  31. package/dist/chunks/{MetricsMiniChartWidget-CmEzlyAO.js → MetricsMiniChartWidget-D0Eq9agy.js} +39 -12
  32. package/dist/chunks/{MetricsMiniChartWidget-CmEzlyAO.js.map → MetricsMiniChartWidget-D0Eq9agy.js.map} +1 -1
  33. package/dist/chunks/{PDFViewer-C8xUA4Po.js → PDFViewer-CtziqVkB.js} +3 -3
  34. package/dist/chunks/{PDFViewer-C8xUA4Po.js.map → PDFViewer-CtziqVkB.js.map} +1 -1
  35. package/dist/chunks/{PDFViewer-lbh_aAcj.js → PDFViewer-GCsxAgql.js} +2 -2
  36. package/dist/chunks/{PDFViewer-lbh_aAcj.js.map → PDFViewer-GCsxAgql.js.map} +1 -1
  37. package/dist/chunks/{Page-B4C7paFp.js → Page-BnEgQPcR.js} +2 -2
  38. package/dist/chunks/{Page-B4C7paFp.js.map → Page-BnEgQPcR.js.map} +1 -1
  39. package/dist/chunks/{Page-UNb6Zq-s.js → Page-DlOiEuua.js} +2 -2
  40. package/dist/chunks/{Page-UNb6Zq-s.js.map → Page-DlOiEuua.js.map} +1 -1
  41. package/dist/chunks/{TopNav-3cDtaRel.js → TopNav-BDcnSuji.js} +2 -2
  42. package/dist/chunks/{TopNav-3cDtaRel.js.map → TopNav-BDcnSuji.js.map} +1 -1
  43. package/dist/chunks/{TopNav-DLu1JgLn.js → TopNav-DVvNdyUm.js} +5 -5
  44. package/dist/chunks/{TopNav-DLu1JgLn.js.map → TopNav-DVvNdyUm.js.map} +1 -1
  45. package/dist/chunks/WebApp--rBzVI7e.js +2 -0
  46. package/dist/chunks/WebApp--rBzVI7e.js.map +1 -0
  47. package/dist/chunks/{WebApp-Zl6sz13N.js → WebApp-DF_USeWe.js} +85 -17
  48. package/dist/chunks/WebApp-DF_USeWe.js.map +1 -0
  49. package/dist/docit.cjs.js +1 -1
  50. package/dist/docit.es.js +5 -5
  51. package/dist/index.cjs.js +1 -1
  52. package/dist/index.es.js +11 -11
  53. package/dist/lightbox.cjs.js +1 -1
  54. package/dist/lightbox.es.js +4 -4
  55. package/package.json +1 -1
  56. package/dist/chunks/WebApp-CylQA6ix.js +0 -2
  57. package/dist/chunks/WebApp-CylQA6ix.js.map +0 -1
  58. package/dist/chunks/WebApp-Zl6sz13N.js.map +0 -1
@@ -1,8 +1,8 @@
1
- const VERSION = "2.1.678";
1
+ const VERSION = "2.1.682";
2
2
  const VERSION_MAJOR = 2;
3
3
  const VERSION_MINOR = 1;
4
- const VERSION_REVISION = 678;
5
- const BUILD_TIME = "2025-10-03T13:49:16.581Z";
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 (context.hasOwnProperty && context.hasOwnProperty(value)) {
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-B3bD_iSn.js")).default;
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-B3bD_iSn.js")).default;
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-B3bD_iSn.js")).default;
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-B3bD_iSn.js")).default;
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-B3bD_iSn.js")).default;
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-B3bD_iSn.js")).default;
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-B3bD_iSn.js")).default;
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-B3bD_iSn.js")).default;
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-B3bD_iSn.js")).default;
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-Zl6sz13N.js.map
5364
+ //# sourceMappingURL=WebApp-DF_USeWe.js.map