web-mojo 2.1.374 → 2.1.377

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 (57) 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/{ContextMenu-Bj0vnzNa.js → ContextMenu-BWnqzYVd.js} +2 -2
  10. package/dist/chunks/{ContextMenu-Bj0vnzNa.js.map → ContextMenu-BWnqzYVd.js.map} +1 -1
  11. package/dist/chunks/{ContextMenu-C7v0VIY_.js → ContextMenu-D2tBgZ0e.js} +2 -2
  12. package/dist/chunks/{ContextMenu-C7v0VIY_.js.map → ContextMenu-D2tBgZ0e.js.map} +1 -1
  13. package/dist/chunks/{DataView-DJmDpOGX.js → DataView-CW3BsyCC.js} +2 -2
  14. package/dist/chunks/{DataView-DJmDpOGX.js.map → DataView-CW3BsyCC.js.map} +1 -1
  15. package/dist/chunks/{DataView-B4G04Dmp.js → DataView-CzkzVfVN.js} +2 -2
  16. package/dist/chunks/{DataView-B4G04Dmp.js.map → DataView-CzkzVfVN.js.map} +1 -1
  17. package/dist/chunks/{Dialog-BCY5-1_K.js → Dialog-CJnRsIRI.js} +2 -2
  18. package/dist/chunks/{Dialog-BCY5-1_K.js.map → Dialog-CJnRsIRI.js.map} +1 -1
  19. package/dist/chunks/{Dialog-BVmpi0NI.js → Dialog-LGRqcq9L.js} +5 -5
  20. package/dist/chunks/{Dialog-BVmpi0NI.js.map → Dialog-LGRqcq9L.js.map} +1 -1
  21. package/dist/chunks/{FilePreviewView-D9bsPjLJ.js → FilePreviewView-D566wPDs.js} +2 -2
  22. package/dist/chunks/{FilePreviewView-D9bsPjLJ.js.map → FilePreviewView-D566wPDs.js.map} +1 -1
  23. package/dist/chunks/{FilePreviewView-BW4q9CWy.js → FilePreviewView-D_Vxhbgh.js} +6 -6
  24. package/dist/chunks/{FilePreviewView-BW4q9CWy.js.map → FilePreviewView-D_Vxhbgh.js.map} +1 -1
  25. package/dist/chunks/{FormView-CtNmBv4F.js → FormView-DJqs63UC.js} +2 -2
  26. package/dist/chunks/FormView-DJqs63UC.js.map +1 -0
  27. package/dist/chunks/{FormView-DOVHdh_a.js → FormView-m5tw5nNB.js} +29 -16
  28. package/dist/chunks/FormView-m5tw5nNB.js.map +1 -0
  29. package/dist/chunks/{MetricsChart-Cs2FzC_Q.js → MetricsChart-DAsnnfJU.js} +3 -3
  30. package/dist/chunks/{MetricsChart-Cs2FzC_Q.js.map → MetricsChart-DAsnnfJU.js.map} +1 -1
  31. package/dist/chunks/{MetricsChart-B8ZVKD9S.js → MetricsChart-Dv1FjVHY.js} +2 -2
  32. package/dist/chunks/{MetricsChart-B8ZVKD9S.js.map → MetricsChart-Dv1FjVHY.js.map} +1 -1
  33. package/dist/chunks/{PDFViewer-Ke5LjPjK.js → PDFViewer-mJGc4Jhu.js} +3 -3
  34. package/dist/chunks/{PDFViewer-Ke5LjPjK.js.map → PDFViewer-mJGc4Jhu.js.map} +1 -1
  35. package/dist/chunks/{PDFViewer-BwjHxhaW.js → PDFViewer-t0RM_1eX.js} +2 -2
  36. package/dist/chunks/{PDFViewer-BwjHxhaW.js.map → PDFViewer-t0RM_1eX.js.map} +1 -1
  37. package/dist/chunks/{Page-Bel8oJt_.js → Page-Bs2o-GSU.js} +2 -2
  38. package/dist/chunks/{Page-Bel8oJt_.js.map → Page-Bs2o-GSU.js.map} +1 -1
  39. package/dist/chunks/{Page-BA2qmbk-.js → Page-Ds6akb5s.js} +2 -2
  40. package/dist/chunks/{Page-BA2qmbk-.js.map → Page-Ds6akb5s.js.map} +1 -1
  41. package/dist/chunks/{TopNav-B7LbpdYy.js → TopNav-COdpl44u.js} +2 -2
  42. package/dist/chunks/{TopNav-B7LbpdYy.js.map → TopNav-COdpl44u.js.map} +1 -1
  43. package/dist/chunks/{TopNav-D8bye4a-.js → TopNav-Ck5XOp7S.js} +2 -2
  44. package/dist/chunks/{TopNav-D8bye4a-.js.map → TopNav-Ck5XOp7S.js.map} +1 -1
  45. package/dist/chunks/{WebApp-BkXGQTaY.js → WebApp-B3IFukwD.js} +2 -2
  46. package/dist/chunks/{WebApp-BkXGQTaY.js.map → WebApp-B3IFukwD.js.map} +1 -1
  47. package/dist/chunks/{WebApp-DdnnC4q6.js → WebApp-BHqYQKaY.js} +12 -12
  48. package/dist/chunks/{WebApp-DdnnC4q6.js.map → WebApp-BHqYQKaY.js.map} +1 -1
  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/FormView-CtNmBv4F.js.map +0 -1
  57. package/dist/chunks/FormView-DOVHdh_a.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { M as Mustache, h as MOJOUtils, V as View } from "./WebApp-DdnnC4q6.js";
1
+ import { M as Mustache, h as MOJOUtils, V as View } from "./WebApp-BHqYQKaY.js";
2
2
  class FormBuilder {
3
3
  constructor(config = {}) {
4
4
  this.fields = config.fields || [];
@@ -4194,6 +4194,8 @@ class FormView extends View {
4194
4194
  this.autosaveModelField = autosaveModelField;
4195
4195
  this.customComponents = /* @__PURE__ */ new Map();
4196
4196
  this.fieldStatusManagers = /* @__PURE__ */ new Map();
4197
+ this.saveTimeouts = /* @__PURE__ */ new Map();
4198
+ this.isSaving = false;
4197
4199
  this.data = this.prepareFormData();
4198
4200
  this.formConfig = formConfig || { fields: fields || [] };
4199
4201
  this.formBuilder = new FormBuilder({
@@ -4436,26 +4438,36 @@ class FormView extends View {
4436
4438
  this.emit("field:change", { field: fieldName, value });
4437
4439
  }
4438
4440
  /**
4439
- * Handle saving individual field changes to the model
4441
+ * Handle saving individual field changes to the model with debouncing
4440
4442
  * @param {string} fieldName - Name of the field being saved
4441
4443
  * @param {*} value - New value to save
4442
4444
  */
4443
4445
  async handleFieldSave(fieldName, value) {
4444
- if (!this.model) return;
4446
+ if (!this.model || this.isSaving) return;
4447
+ if (this.saveTimeouts.has(fieldName)) {
4448
+ clearTimeout(this.saveTimeouts.get(fieldName));
4449
+ }
4445
4450
  const statusManager = this.getFieldStatusManager(fieldName);
4446
- try {
4447
- statusManager.showStatus("saving");
4448
- this._isFormDrivenChange = true;
4449
- if (typeof this.model.save === "function") {
4450
- await this.model.save({ [fieldName]: value });
4451
- } else {
4452
- this.model.set(fieldName, value);
4451
+ statusManager.showStatus("saving");
4452
+ const timeoutId = setTimeout(async () => {
4453
+ try {
4454
+ this.isSaving = true;
4455
+ this.saveTimeouts.delete(fieldName);
4456
+ this._isFormDrivenChange = true;
4457
+ if (typeof this.model.save === "function") {
4458
+ await this.model.save({ [fieldName]: value });
4459
+ } else {
4460
+ this.model.set(fieldName, value);
4461
+ }
4462
+ statusManager.showStatus("saved");
4463
+ } catch (error) {
4464
+ console.error("Field save error:", error);
4465
+ statusManager.showStatus("error", { message: error.message });
4466
+ } finally {
4467
+ this.isSaving = false;
4453
4468
  }
4454
- statusManager.showStatus("saved");
4455
- } catch (error) {
4456
- console.error("Field save error:", error);
4457
- statusManager.showStatus("error", { message: error.message });
4458
- }
4469
+ }, 300);
4470
+ this.saveTimeouts.set(fieldName, timeoutId);
4459
4471
  }
4460
4472
  /**
4461
4473
  * Get or create a field status manager for a specific field
@@ -4966,6 +4978,7 @@ class FormView extends View {
4966
4978
  }
4967
4979
  }
4968
4980
  _onModelChange() {
4981
+ if (this.isSaving) return;
4969
4982
  this.data = this.prepareFormData();
4970
4983
  if (this.isMounted()) {
4971
4984
  if (!this._isFormDrivenChange) {
@@ -5918,4 +5931,4 @@ export {
5918
5931
  applyFileDropMixin as a,
5919
5932
  FormView$1 as b
5920
5933
  };
5921
- //# sourceMappingURL=FormView-DOVHdh_a.js.map
5934
+ //# sourceMappingURL=FormView-m5tw5nNB.js.map