@gct-paas/excel 0.1.40-beta.27 → 0.1.40-beta.28

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 (90) hide show
  1. package/dist/{BaseComponent-B0s9C7u7.js → BaseComponent-EzX32ZdY.js} +2 -2
  2. package/dist/{VueVideoPlayer-BCGJs86_.js → VueVideoPlayer-BuuQaqyI.js} +2 -2
  3. package/dist/{align-editor-DBWdbAV_.js → align-editor-DWHHVeY1.js} +1 -1
  4. package/dist/{barcode-design-YdLnj4EK.js → barcode-design-B0WcJSEI.js} +2 -2
  5. package/dist/base/index.es.js +109 -62
  6. package/dist/{diagonal-design-vCovyGwZ.js → diagonal-design-D6uOJZmP.js} +2 -2
  7. package/dist/{dynamic-table-action-9oc6dkLz.js → dynamic-table-action-D-ub6KoK.js} +106 -84
  8. package/dist/{dynamic-table-action.vue_vue_type_style_index_0_scoped_8710052f_lang-CMil2DLD.js → dynamic-table-action.vue_vue_type_style_index_0_scoped_8710052f_lang-BCLE4joQ.js} +385 -371
  9. package/dist/{edit.utils-CXmmCnxE-BvWz-8bv.js → edit.utils-CXmmCnxE-CXdATd1V.js} +1 -1
  10. package/dist/excel.css +29 -20
  11. package/dist/{exceljs.min-Dp6PAQE9.js → exceljs.min-BXhhaToT.js} +2 -2
  12. package/dist/{font-editor-gcStnuue.js → font-editor-_HTdKFX6.js} +3 -3
  13. package/dist/{image-design-DJ3VRU2t.js → image-design-4Ee8rZqa.js} +2 -2
  14. package/dist/{index-agcLaGBj.js → index-7AmrbQlC.js} +2 -2
  15. package/dist/{index-DXqsUrWV.js → index-8ZnBcx1k.js} +3 -3
  16. package/dist/{index-Ck06j4gn.js → index-B4LuUmbW.js} +2 -2
  17. package/dist/{index-BHTcJLrz.js → index-BCCIwSnM.js} +1 -1
  18. package/dist/{index-y3jt4BZe.js → index-BHJxBByd.js} +1 -1
  19. package/dist/{index-sWtzbaDv.js → index-BLf1U1A9.js} +3 -3
  20. package/dist/{index-CFvLIeFl.js → index-BYq7x5n6.js} +1 -1
  21. package/dist/{index-DnsZjDDh.js → index-B_DPnVrC.js} +2 -2
  22. package/dist/{index-D3ZQLjrQ.js → index-Bbyb-owd.js} +2 -2
  23. package/dist/{index-B5AUi6i3.js → index-BlMiHVOC.js} +1 -1
  24. package/dist/{index-D6eANpFX.js → index-BnOOLcX1.js} +2 -2
  25. package/dist/{index-Avrz1-1F.js → index-Bnt54Sc6.js} +2 -2
  26. package/dist/{index-CtEUzXVk.js → index-CH_C9ijO.js} +2 -2
  27. package/dist/{index-7WwJSlNN.js → index-CMdXdyvs.js} +2 -2
  28. package/dist/{index-CzUGIYOv.js → index-CQ0_Kx1_.js} +2 -2
  29. package/dist/{index-Mg-zrcwn.js → index-Cb7Fh_E2.js} +2 -2
  30. package/dist/{index-D90UOUAU.js → index-CtVFTmHZ.js} +3 -3
  31. package/dist/{index-CFTsMiRR.js → index-D3KiKYMR.js} +1 -1
  32. package/dist/{index-BaCa0TgP.js → index-D87CVHA-.js} +2 -2
  33. package/dist/{index-AmKjgww5.js → index-DM0OEvdI.js} +1 -1
  34. package/dist/{index-Dzl5Ukft.js → index-DPTR_QJn.js} +1 -1
  35. package/dist/{index-cOcBl2Ga.js → index-DVzaxa5k.js} +2 -2
  36. package/dist/{index-DIodi5gH.js → index-DcXbL-0o.js} +4 -4
  37. package/dist/{index-iYYd2oH1.js → index-Dn0qfALy.js} +3 -3
  38. package/dist/{index-Cl-QMM1R.js → index-Dnz3YPDV.js} +2 -2
  39. package/dist/{index-DPP4WDPc.js → index-DoWp9uDw.js} +2 -2
  40. package/dist/{index-BCeR77y-.js → index-Dstr-PNj.js} +2 -2
  41. package/dist/{index-BsmHcJs3.js → index-DzqaKW6e.js} +2 -2
  42. package/dist/{index-2mRh7iFw.js → index-GoAXo3fT.js} +224 -180
  43. package/dist/{index-gWEP20xe.js → index-Jy2tofdo.js} +3 -3
  44. package/dist/{index-BYf9Fudx.js → index-KRo2-iQv.js} +3 -3
  45. package/dist/{index-COOampHb.js → index-KuhYPy5i.js} +1 -1
  46. package/dist/{index-CLLc5Ob2.js → index-YlEOHde0.js} +1 -1
  47. package/dist/{index-D9j3S6qI.js → index-toqlO_-B.js} +1 -1
  48. package/dist/index.es.js +2 -2
  49. package/dist/{online-form-model-select.vue_vue_type_script_setup_true_name_online-form-model-select_lang-B79l8Vcj.js → online-form-model-select.vue_vue_type_script_setup_true_name_online-form-model-select_lang-DAAF0eOB.js} +1 -1
  50. package/dist/{pagination-design-BZZcBbIF.js → pagination-design-DANnqQdI.js} +2 -2
  51. package/dist/paper-widget-design-BrE7Bb4V.js +4 -0
  52. package/dist/{print-runtime-instance-CV0WcU-Z.js → print-runtime-instance-PabaORE2.js} +1 -1
  53. package/dist/{print-snapshot-renderer-hHd4ThE0.js → print-snapshot-renderer-DQr2G7Hv.js} +3 -3
  54. package/dist/{qrcode-design-C8d7cE3K.js → qrcode-design-BEA1JchI.js} +1 -1
  55. package/dist/{revo-grid.entry-DSnc_nH1.js → revo-grid.entry-Bj-4xHie.js} +1 -1
  56. package/dist/{revogr-attribution_7.entry-D67ci-yw.js → revogr-attribution_7.entry-NvaozwYj.js} +3 -3
  57. package/dist/{revogr-clipboard_3.entry-C9h0dhAb.js → revogr-clipboard_3.entry-CkRbECsx.js} +2 -2
  58. package/dist/{revogr-data_4.entry-DuuRVRex.js → revogr-data_4.entry-Dbbd8Mpz.js} +2 -2
  59. package/dist/{revogr-filter-panel.entry-BeIaYORN.js → revogr-filter-panel.entry-lcMbXUNb.js} +1 -1
  60. package/dist/seal-design-CX-ZxOn3.js +4 -0
  61. package/dist/{serialnumber-design-wyJY14Fx.js → serialnumber-design-B608oYcy.js} +1 -1
  62. package/dist/shared/index.es.js +6 -6
  63. package/dist/{single-field-drop-CA6EtCtR.js → single-field-drop-CkUP3H7u.js} +2 -2
  64. package/dist/{size-editor-lAn0ECzs.js → size-editor-Bl-lUcdU.js} +1 -1
  65. package/dist/src/nocode-base/src/runtime/formula-utils.d.ts +2 -0
  66. package/dist/src/nocode-base/src/runtime/runtime-form-state-store.d.ts +6 -2
  67. package/dist/src/nocode-base/src/runtime/table-row-identity.d.ts +2 -0
  68. package/dist/src/nocode-base/src/types/common/base.d.ts +2 -2
  69. package/dist/src/online-form/src/views/designer/hooks/useSpreadSheet.d.ts +2 -1
  70. package/dist/src/online-form/src/views/designer/types/index.d.ts +3 -1
  71. package/dist/{sub-table-factory-CwbQEPJq.js → sub-table-factory-GzYKYE9t.js} +2 -2
  72. package/dist/{text-design-Bv4PfeOW.js → text-design-V3TQuLps.js} +2 -2
  73. package/dist/{throttle-Cpk1LoGk-BaXaGrUw.js → throttle-Cpk1LoGk-CFMeLNb-.js} +1 -1
  74. package/dist/{timediff-design-CxT_O6R8.js → timediff-design-DRum3zZt.js} +1 -1
  75. package/dist/{trace-like-wrapper-CGe5K_FN.js → trace-like-wrapper-D1Gzs1mF.js} +2 -2
  76. package/dist/{value-editor.vue_vue_type_style_index_0_lang-CQTuzWX2.js → value-editor.vue_vue_type_style_index_0_lang-DoOuCca5.js} +2 -2
  77. package/dist/{widget-barcode-C83yiwNl.js → widget-barcode-CNrl2NxY.js} +4 -4
  78. package/dist/{widget-diagonal-C-zD-MLy.js → widget-diagonal-CqjD1SwW.js} +3 -3
  79. package/dist/{widget-image-DIcnWHn7.js → widget-image-Xjl5W2Fp.js} +4 -4
  80. package/dist/{widget-line-BnMezWy-.js → widget-line-BUVVnwrU.js} +2 -2
  81. package/dist/{widget-pagination-QWM1Nmlo.js → widget-pagination-DjMXWioI.js} +5 -5
  82. package/dist/{widget-power-DnqxPUmW.js → widget-power-Dck9H8a9.js} +3 -3
  83. package/dist/{widget-qrcode-PBnm6ehD.js → widget-qrcode-Cu8BwE24.js} +3 -3
  84. package/dist/{widget-rangelimit-CDyYKHeg.js → widget-rangelimit-DLxebCKf.js} +3 -3
  85. package/dist/{widget-serialnumber-BwS-Ac9h.js → widget-serialnumber-DecFCGS0.js} +1 -1
  86. package/dist/{widget-text-COW-IQ1P.js → widget-text-DV3yKKsx.js} +5 -5
  87. package/dist/{widget-timediff-RpQcMPpb.js → widget-timediff-BIwewJ39.js} +2 -2
  88. package/package.json +1 -1
  89. package/dist/paper-widget-design-Coh8v5mV.js +0 -4
  90. package/dist/seal-design-DfKie-Qg.js +0 -4
@@ -1,5 +1,5 @@
1
1
  import { reactive, toRaw, computed, watch, onScopeDispose, inject, h, shallowReactive, markRaw, ref, toRef, provide, nextTick, defineComponent, openBlock, createElementBlock, mergeProps, unref, createElementVNode, normalizeClass, renderSlot, createCommentVNode, createVNode, toDisplayString, Fragment, renderList, onUnmounted, isVNode, onMounted, onBeforeMount, resolveComponent, createBlock, withCtx, createTextVNode } from "vue";
2
- import { am as CellWidgetViewState, F as FIELD_TYPE, bo as RenderModeEnum, a1 as FormTypeEnum, bJ as BpmnNodeTypeEnum, by as getRuntimeDataFieldId, cz as getFieldPlaceholder, b_ as MobileFillTypeEnum, C as ComponentTypeEnum, a4 as PlatformEnum, cA as isReferenceOptionActive, p as api, bx as uuid2, c8 as calcUtils, M as getBusinessFieldKey, bn as findRuntimeTableRow, cc as ensureTableRowKeys, c5 as bindRuntimeTableColumns, bm as getRowId, cB as FRONT_ROW_KEY, cr as isTableRowKeyMatch, aB as RangeCompareOp, aA as RangeValidateMode, cC as getCurrentFormData, bB as isAttachFieldActive, bl as parseRuntimeFieldPath, c9 as decodeTableCellRowKey, cb as ensureFrontRowKey, bb as getParseRuleInfo, aN as transformUtils, b5 as materialCheck, b6 as getLotLockedReason, b7 as validateReinspectionDate, br as FormulaRuleFieldKeyEnum, bA as buildRuntimeFieldPath, Q as CreateType, h as SubTableType, bc as getParseRuleValue, bp as findRuntimeParentRow, aQ as Dependency_ENUM, aP as ASSIGNMENTSTRATEGY_ENUM, bO as commonUtils, aU as DeviceLink, ad as useNamespace, ae as _export_sfc, I as Icon, cl as getRenderedRuntimeTableCell, H as CellType, cD as resetTableRowIdentity, U as useModal, cE as q, cF as QUICK_FILL_ALLOWED_FIELDS, cG as groupFixedTableRows, cH as processQuickFillRows, cI as getIsGroupEmpty } from "./dynamic-table-action.vue_vue_type_style_index_0_scoped_8710052f_lang-CMil2DLD.js";
2
+ import { cx as splitRuntimeDataPath, am as CellWidgetViewState, F as FIELD_TYPE, bo as RenderModeEnum, a1 as FormTypeEnum, bJ as BpmnNodeTypeEnum, by as getRuntimeDataFieldId, cA as getFieldPlaceholder, b_ as MobileFillTypeEnum, C as ComponentTypeEnum, a4 as PlatformEnum, cB as isReferenceOptionActive, p as api, bx as uuid2, c8 as calcUtils, M as getBusinessFieldKey, bn as findRuntimeTableRow, cc as ensureTableRowKeys, c5 as bindRuntimeTableColumns, bm as getRowId, cC as FRONT_ROW_KEY, cr as isTableRowKeyMatch, aB as RangeCompareOp, aA as RangeValidateMode, cD as getCurrentFormData, bB as isAttachFieldActive, bl as parseRuntimeFieldPath, c9 as decodeTableCellRowKey, cb as ensureFrontRowKey, bb as getParseRuleInfo, aN as transformUtils, b5 as materialCheck, b6 as getLotLockedReason, b7 as validateReinspectionDate, br as FormulaRuleFieldKeyEnum, bA as buildRuntimeFieldPath, Q as CreateType, h as SubTableType, bc as getParseRuleValue, bp as findRuntimeParentRow, aQ as Dependency_ENUM, aP as ASSIGNMENTSTRATEGY_ENUM, bO as commonUtils, aU as DeviceLink, ad as useNamespace, ae as _export_sfc, I as Icon, cl as getRenderedRuntimeTableCell, H as CellType, cE as resetTableRowIdentity, U as useModal, cF as q, cG as QUICK_FILL_ALLOWED_FIELDS, cH as groupFixedTableRows, cI as processQuickFillRows, cJ as getIsGroupEmpty } from "./dynamic-table-action.vue_vue_type_style_index_0_scoped_8710052f_lang-BCLE4joQ.js";
3
3
  import dayjs from "dayjs";
4
4
  import { cloneDeep, isEmpty, isNil, pickBy, mergeWith, omit, last, pick, merge } from "lodash-es";
5
5
  import "@gct-paas/form-base";
@@ -96,8 +96,8 @@ function getRuntimeDependencyOutputKey(widgetId, type4, rowPath) {
96
96
  return JSON.stringify([widgetId, type4, rowPath]);
97
97
  }
98
98
  function pathMatches(source, changedPath, structureOnly = false) {
99
- const expected = source.split(".");
100
- const changed = changedPath.split(".");
99
+ const expected = splitRuntimeDataPath(source);
100
+ const changed = splitRuntimeDataPath(changedPath);
101
101
  if (structureOnly && changed.length > expected.length) return false;
102
102
  return expected.slice(0, Math.min(expected.length, changed.length)).every((part, index) => part === "*" || part === changed[index]);
103
103
  }
@@ -201,7 +201,8 @@ class RuntimeDependencyService {
201
201
  schedule(change) {
202
202
  if (this.disposed) return;
203
203
  const labelsOnly = change.paths.length > 0 && change.paths.every((path) => path.endsWith("_lb_"));
204
- if (change.source === "restore" && !labelsOnly) change = { ...change, paths: ["*"] };
204
+ if (change.source === "restore" && change.restoreScope !== "fields" && !labelsOnly)
205
+ change = { ...change, paths: ["*"] };
205
206
  this.effects.forEach((effect) => {
206
207
  if (this.matches(effect, change.paths)) this.cancelExecution(effect.id);
207
208
  });
@@ -1492,7 +1493,7 @@ class RuntimeFormStateStore {
1492
1493
  reactiveState;
1493
1494
  /** 每次成功提交一批变更递增一次,保存和提交用它判断快照是否过期。 */
1494
1495
  revision = 0;
1495
- /** 是否存在尚未保存的变更;restore 来源不会把实例标记为脏。 */
1496
+ /** 是否存在尚未保存的变更;数据恢复及保存回填不会把实例标记为脏。 */
1496
1497
  dirty = false;
1497
1498
  /** 当前嵌套事务深度;只有最外层事务结束时才递增 revision 并通知订阅方。 */
1498
1499
  mutationDepth = 0;
@@ -1500,6 +1501,7 @@ class RuntimeFormStateStore {
1500
1501
  pendingPaths = /* @__PURE__ */ new Set();
1501
1502
  /** 最外层事务的变更来源,嵌套写入沿用该来源。 */
1502
1503
  pendingSource = "system";
1504
+ pendingRestoreScope;
1503
1505
  /** 联动、分页失效、自动保存等实例服务登记的变更监听器。 */
1504
1506
  subscribers = /* @__PURE__ */ new Set();
1505
1507
  /** 用户主动修改过的业务路径,供公式和自动填充执行“不覆盖用户输入”策略。 */
@@ -1651,10 +1653,12 @@ class RuntimeFormStateStore {
1651
1653
  /**
1652
1654
  * 保存后只回填后端身份元数据,不能用仅含 id_/front_row_key_ 的数组覆盖当前业务行。
1653
1655
  * 二维内置复合键可通过原始子行键匹配保存前的本地行。
1656
+ * 保存回填只通知实际变化的字段,不作为整份数据恢复触发全部赋值规则。
1654
1657
  */
1655
1658
  patchSavedMetadata(values) {
1656
- const paths = Object.keys(values);
1657
- this.mutate(paths, "restore", () => this.mergeSavedMetadata(this.reactiveState, values));
1659
+ this.transaction("restore", () => this.mergeSavedMetadata(this.state, values), {
1660
+ restoreScope: "fields"
1661
+ });
1658
1662
  }
1659
1663
  /**
1660
1664
  * 用新对象整体替换实例数据,删除旧对象中多余的顶层字段。
@@ -1663,20 +1667,23 @@ class RuntimeFormStateStore {
1663
1667
  replace(values, source = "restore") {
1664
1668
  const paths = /* @__PURE__ */ new Set([...Object.keys(this.reactiveState), ...Object.keys(values)]);
1665
1669
  this.mutate(Array.from(paths), source, () => {
1670
+ this.userModifiedPaths.clear();
1666
1671
  Object.keys(this.reactiveState).forEach((key) => delete this.reactiveState[key]);
1667
1672
  this.assignValues(this.reactiveState, values);
1668
1673
  normalizeEmptyReferenceLabels(this.reactiveState);
1669
1674
  });
1670
- this.userModifiedPaths.clear();
1671
1675
  if (source === "restore") this.dirty = false;
1672
1676
  }
1673
1677
  /**
1674
1678
  * 将多次深层写入合并成一次变更提交。
1675
1679
  * 嵌套事务只累计路径,最外层 finally 统一递增 revision 并通知订阅方。
1676
1680
  */
1677
- transaction(source, callback) {
1681
+ transaction(source, callback, options) {
1678
1682
  const outermost = this.mutationDepth === 0;
1679
- if (outermost) this.pendingSource = source;
1683
+ if (outermost) {
1684
+ this.pendingSource = source;
1685
+ this.pendingRestoreScope = source === "restore" ? options?.restoreScope : void 0;
1686
+ }
1680
1687
  this.mutationDepth += 1;
1681
1688
  try {
1682
1689
  return callback(this.state);
@@ -1686,7 +1693,9 @@ class RuntimeFormStateStore {
1686
1693
  const paths = Array.from(this.pendingPaths);
1687
1694
  this.pendingPaths.clear();
1688
1695
  const pendingSource = this.pendingSource;
1696
+ const restoreScope = this.pendingRestoreScope;
1689
1697
  this.pendingSource = "system";
1698
+ this.pendingRestoreScope = void 0;
1690
1699
  try {
1691
1700
  if (paths.some(
1692
1701
  (path) => this.tableRelations.some(
@@ -1699,7 +1708,7 @@ class RuntimeFormStateStore {
1699
1708
  });
1700
1709
  }
1701
1710
  } finally {
1702
- if (paths.length) this.commit(paths, pendingSource);
1711
+ if (paths.length) this.commit(paths, pendingSource, restoreScope);
1703
1712
  }
1704
1713
  }
1705
1714
  }
@@ -1749,10 +1758,15 @@ class RuntimeFormStateStore {
1749
1758
  this.userModifiedPaths.clear();
1750
1759
  }
1751
1760
  /** 提交当前事务积累的路径,更新版本和脏状态,然后同步通知实例服务。 */
1752
- commit(paths, source) {
1761
+ commit(paths, source, restoreScope) {
1753
1762
  this.revision += 1;
1754
1763
  if (source !== "restore") this.dirty = true;
1755
- const change = { revision: this.revision, paths, source };
1764
+ const change = {
1765
+ revision: this.revision,
1766
+ paths,
1767
+ source,
1768
+ ...restoreScope ? { restoreScope } : {}
1769
+ };
1756
1770
  this.subscribers.forEach((subscriber) => subscriber(change));
1757
1771
  }
1758
1772
  /** 如果值是 Store 创建的 scoped view,返回它实际包装的 Vue 响应式目标。 */
@@ -1804,7 +1818,8 @@ class RuntimeFormStateStore {
1804
1818
  if (!target || typeof target !== "object" || Array.isArray(target)) return incoming;
1805
1819
  Object.entries(incoming).forEach(([key, value]) => {
1806
1820
  const childPath = path ? `${path}.${key}` : key;
1807
- target[key] = this.mergeSavedMetadata(target[key], value, childPath);
1821
+ const merged = this.mergeSavedMetadata(target[key], value, childPath);
1822
+ this.setObjectField(target, key, merged, "restore");
1808
1823
  });
1809
1824
  return target;
1810
1825
  }
@@ -3176,7 +3191,7 @@ const getParseFormulaVarInfos = (expr) => {
3176
3191
  parseInfos: rowArgs.map((curr) => parseFormulaVar(curr))
3177
3192
  };
3178
3193
  };
3179
- const calculateFormula = async (expr, formData, instanceFormState) => {
3194
+ const resolveFormulaData = (expr, formData, instanceFormState) => {
3180
3195
  const rowArgs = identify(expr);
3181
3196
  const formulaData = isEmpty(rowArgs) ? {} : rowArgs.reduce((total, curr) => {
3182
3197
  const parseInfo = parseFormulaVar(curr);
@@ -3186,8 +3201,9 @@ const calculateFormula = async (expr, formData, instanceFormState) => {
3186
3201
  );
3187
3202
  return total;
3188
3203
  }, {});
3189
- return calculate$1(expr, formulaData);
3204
+ return formulaData;
3190
3205
  };
3206
+ const calculateFormula = async (expr, formData, instanceFormState) => calculate$1(expr, resolveFormulaData(expr, formData, instanceFormState));
3191
3207
  const isEmptyValue = (value) => {
3192
3208
  return value === void 0 || value === null || typeof value === "string" && value.trim() === "" || Array.isArray(value) && value.length === 0;
3193
3209
  };
@@ -3892,8 +3908,8 @@ class RuntimeValidationService {
3892
3908
  }
3893
3909
  function matchesPattern(pattern4, path) {
3894
3910
  if (!pattern4.includes("*")) return pattern4 === path;
3895
- const expected = pattern4.split(".");
3896
- const actual = path.split(".");
3911
+ const expected = splitRuntimeDataPath(pattern4);
3912
+ const actual = splitRuntimeDataPath(path);
3897
3913
  return expected.length === actual.length && expected.every((part, index) => part === "*" || part === actual[index]);
3898
3914
  }
3899
3915
  class RuntimeFieldRegistry {
@@ -8160,7 +8176,11 @@ function useDependency(widget, props) {
8160
8176
  );
8161
8177
  if (!controlledFormData.value._OPCT) {
8162
8178
  const store = formStateStore.value;
8163
- store.setObjectField(controlledFormData.value, "_OPCT", { _DICT: {} }, "restore");
8179
+ store.transaction(
8180
+ "restore",
8181
+ () => store.setObjectField(controlledFormData.value, "_OPCT", { _DICT: {} }, "restore"),
8182
+ { restoreScope: "fields" }
8183
+ );
8164
8184
  }
8165
8185
  const formRowData = toRef(() => {
8166
8186
  if (isFieldModel) {
@@ -8186,6 +8206,7 @@ function useDependency(widget, props) {
8186
8206
  if (!store) throw new Error("字段组件缺少实例级 FormStateStore");
8187
8207
  const row = store.createScopedView(formRowData.value, formRowPath.value);
8188
8208
  const path = store.getFieldPath(row, targetFieldId);
8209
+ if (assignment_expression) store.markUserModified(path);
8189
8210
  store.setObjectField(row, targetFieldId, val, "user", path);
8190
8211
  if (assignment_expression && strategy === ASSIGNMENTSTRATEGY_ENUM.notCovered && commonUtils.isEmptyValue(val)) {
8191
8212
  store.clearUserModified(path);
@@ -11149,7 +11170,7 @@ export {
11149
11170
  RuntimeInstanceRegistry as Z,
11150
11171
  ScanParamType as _,
11151
11172
  MAX_RUNTIME_SHEET_TITLE_LENGTH as a,
11152
- SubTableActionEnum as a$,
11173
+ getMenuByAction as a$,
11153
11174
  MBRender as a0,
11154
11175
  MCRender as a1,
11155
11176
  moveSealValue as a2,
@@ -11160,72 +11181,73 @@ export {
11160
11181
  resolveRuntimeFieldState as a7,
11161
11182
  assembleRules as a8,
11162
11183
  getRuntimeDependencyOutputKey as a9,
11163
- RuntimeFieldRegistry as aA,
11164
- RuntimeInstanceEventBus as aB,
11165
- RuntimePersistenceCoordinator as aC,
11166
- RuntimeValidationService as aD,
11167
- SubTableCore as aE,
11168
- buildFormChangeDisplayRows as aF,
11169
- convertV1Runtime as aG,
11170
- detailsHaveFormChangeRowOps as aH,
11171
- extractFormChangeRowDetails as aI,
11172
- getFormChangeRowKey as aJ,
11173
- getFormChangeRowOp as aK,
11174
- getSubTableQuickFillInfo as aL,
11175
- isAnnLocationSelected as aM,
11176
- isBlank as aN,
11177
- isFormChangeGhostRow as aO,
11178
- normalizeHistoricalFieldConfig as aP,
11179
- pickObjectFieldKeys as aQ,
11180
- recordSubtableRowAdd as aR,
11181
- recordSubtableRowDelete as aS,
11182
- relocateDeletedRowsToEnd as aT,
11183
- resolveAnnotationFieldLocation as aU,
11184
- resolveFormChangeRowUi as aV,
11185
- resolveRowFormChangeMark as aW,
11186
- setSelectMobileTdId as aX,
11187
- stripLegacyFormConfigFromPaper as aY,
11188
- SubTableActionMenuTypeEnum as aZ,
11189
- getMenuByAction as a_,
11184
+ RuntimeDependencyService as aA,
11185
+ RuntimeFieldRegistry as aB,
11186
+ RuntimeInstanceEventBus as aC,
11187
+ RuntimePersistenceCoordinator as aD,
11188
+ RuntimeValidationService as aE,
11189
+ SubTableCore as aF,
11190
+ buildFormChangeDisplayRows as aG,
11191
+ convertV1Runtime as aH,
11192
+ detailsHaveFormChangeRowOps as aI,
11193
+ extractFormChangeRowDetails as aJ,
11194
+ getFormChangeRowKey as aK,
11195
+ getFormChangeRowOp as aL,
11196
+ getSubTableQuickFillInfo as aM,
11197
+ isAnnLocationSelected as aN,
11198
+ isBlank as aO,
11199
+ isFormChangeGhostRow as aP,
11200
+ normalizeHistoricalFieldConfig as aQ,
11201
+ pickObjectFieldKeys as aR,
11202
+ recordSubtableRowAdd as aS,
11203
+ recordSubtableRowDelete as aT,
11204
+ relocateDeletedRowsToEnd as aU,
11205
+ resolveAnnotationFieldLocation as aV,
11206
+ resolveFormChangeRowUi as aW,
11207
+ resolveRowFormChangeMark as aX,
11208
+ setSelectMobileTdId as aY,
11209
+ stripLegacyFormConfigFromPaper as aZ,
11210
+ SubTableActionMenuTypeEnum as a_,
11190
11211
  isRowAddedInCurrentFormChange as aa,
11191
- MaterialConsumeTableController as ab,
11192
- setFormulaParamsConfig as ac,
11193
- normalizeRuntime as ad,
11194
- initializeSealFields as ae,
11195
- RuntimeSheetService as af,
11196
- validateObjectBomQtyOnSubmit as ag,
11197
- areValidationCommentsEqual as ah,
11198
- closeValidatorPopovers as ai,
11199
- enrichFormChangeRowDetails as aj,
11200
- useMaterialBalance as ak,
11201
- collectFormChangeFieldLocations as al,
11202
- nextFormChangeRowViewHistoryId as am,
11203
- BaseFormModelFetcher as an,
11204
- DeviceConnector as ao,
11205
- DocumentLoading as ap,
11206
- DynamicQuickFillModal as aq,
11207
- FixedQuickFillModal as ar,
11208
- FormTmplConfigController as as,
11209
- LEGACY_RUNTIME_FORM_CONFIG_KEYS as at,
11210
- LEGACY_RUNTIME_SHEET_ID as au,
11211
- LEGACY_RUNTIME_SHEET_TITLE as av,
11212
- MCDataUtil as aw,
11213
- OCR_MODEL_PRECISION_ENUM_KEY as ax,
11214
- RuntimeAsyncTaskCoordinator as ay,
11215
- RuntimeDependencyService as az,
11212
+ resolveFormulaData as ab,
11213
+ MaterialConsumeTableController as ac,
11214
+ setFormulaParamsConfig as ad,
11215
+ normalizeRuntime as ae,
11216
+ initializeSealFields as af,
11217
+ RuntimeSheetService as ag,
11218
+ validateObjectBomQtyOnSubmit as ah,
11219
+ areValidationCommentsEqual as ai,
11220
+ closeValidatorPopovers as aj,
11221
+ enrichFormChangeRowDetails as ak,
11222
+ useMaterialBalance as al,
11223
+ collectFormChangeFieldLocations as am,
11224
+ nextFormChangeRowViewHistoryId as an,
11225
+ BaseFormModelFetcher as ao,
11226
+ DeviceConnector as ap,
11227
+ DocumentLoading as aq,
11228
+ DynamicQuickFillModal as ar,
11229
+ FixedQuickFillModal as as,
11230
+ FormTmplConfigController as at,
11231
+ LEGACY_RUNTIME_FORM_CONFIG_KEYS as au,
11232
+ LEGACY_RUNTIME_SHEET_ID as av,
11233
+ LEGACY_RUNTIME_SHEET_TITLE as aw,
11234
+ MCDataUtil as ax,
11235
+ OCR_MODEL_PRECISION_ENUM_KEY as ay,
11236
+ RuntimeAsyncTaskCoordinator as az,
11216
11237
  bindFormulaCacheInvalidation as b,
11217
- resolveScanFillData as b0,
11218
- buildDefaultMapFromProfile as b1,
11219
- buildFieldStatusFromProfile as b2,
11220
- getRowHandlersForFieldChange as b3,
11221
- getInsertSubMenu as b4,
11222
- resolveScanAdjustType as b5,
11223
- resolveScanQty as b6,
11224
- toDateOnly as b7,
11225
- hasSubtableBusinessData as b8,
11226
- getCopySubMenu as b9,
11227
- resolveScanParsedValue as ba,
11228
- isProductBatchEmptyRow as bb,
11238
+ SubTableActionEnum as b0,
11239
+ resolveScanFillData as b1,
11240
+ buildDefaultMapFromProfile as b2,
11241
+ buildFieldStatusFromProfile as b3,
11242
+ getRowHandlersForFieldChange as b4,
11243
+ getInsertSubMenu as b5,
11244
+ resolveScanAdjustType as b6,
11245
+ resolveScanQty as b7,
11246
+ toDateOnly as b8,
11247
+ hasSubtableBusinessData as b9,
11248
+ getCopySubMenu as ba,
11249
+ resolveScanParsedValue as bb,
11250
+ isProductBatchEmptyRow as bc,
11229
11251
  currentParamsConfig as c,
11230
11252
  MULTI_SHEET_SCHEMA_VERSION as d,
11231
11253
  createRuntimeDocumentV2 as e,