labellife-design-tool 2.2.2 → 2.2.4

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/esm/index.js CHANGED
@@ -10641,7 +10641,9 @@ var InputFieldsDialog = observer(function (_ref2) {
10641
10641
  var store = _ref2.store,
10642
10642
  _onComplete = _ref2.onComplete,
10643
10643
  _ref2$enabled = _ref2.enabled,
10644
- enabled = _ref2$enabled === void 0 ? true : _ref2$enabled;
10644
+ enabled = _ref2$enabled === void 0 ? true : _ref2$enabled,
10645
+ _ref2$backTrigger = _ref2.backTrigger,
10646
+ backTrigger = _ref2$backTrigger === void 0 ? 0 : _ref2$backTrigger;
10645
10647
  // displayIndex counts how many fields have been answered (for step indicator only).
10646
10648
  // Navigation always uses fields[0] — the first remaining pending field.
10647
10649
  var _useState5 = useState(0),
@@ -10650,6 +10652,8 @@ var InputFieldsDialog = observer(function (_ref2) {
10650
10652
  setDisplayIndex = _useState6[1];
10651
10653
  var initialTotalRef = useRef(0);
10652
10654
  var completedHistoryRef = useRef([]);
10655
+ var isGoingBackRef = useRef(false);
10656
+ var prevBackTriggerRef = useRef(backTrigger);
10653
10657
  var config = getInputFieldsConfig();
10654
10658
  var pendingFields = store._pendingInputFields || [];
10655
10659
 
@@ -10666,16 +10670,49 @@ var InputFieldsDialog = observer(function (_ref2) {
10666
10670
  // Capture total and reset display counter when a fresh batch appears
10667
10671
  useEffect(function () {
10668
10672
  if (fields.length > 0 && initialTotalRef.current === 0) {
10669
- initialTotalRef.current = fields.length;
10670
- setDisplayIndex(0);
10671
- completedHistoryRef.current = [];
10673
+ if (isGoingBackRef.current) {
10674
+ // Back-from-summary restored a field — recover total from history + pending
10675
+ isGoingBackRef.current = false;
10676
+ initialTotalRef.current = completedHistoryRef.current.length + fields.length;
10677
+ } else {
10678
+ // Genuine fresh batch
10679
+ initialTotalRef.current = fields.length;
10680
+ setDisplayIndex(0);
10681
+ completedHistoryRef.current = [];
10682
+ }
10672
10683
  }
10673
10684
  if (fields.length === 0) {
10674
10685
  initialTotalRef.current = 0;
10675
- completedHistoryRef.current = [];
10686
+ // History is intentionally kept so back-from-summary can use it
10676
10687
  }
10677
10688
  }, [fields.length]);
10678
10689
  var totalCount = initialTotalRef.current || fields.length;
10690
+
10691
+ // Back-from-summary: triggered by parent incrementing backTrigger prop
10692
+ // Must be defined and its useEffect called BEFORE any early returns (Rules of Hooks)
10693
+ var handleBackFromSummary = function handleBackFromSummary() {
10694
+ var last = completedHistoryRef.current.pop();
10695
+ if (!last) return;
10696
+ var el = last.el,
10697
+ previousValue = last.previousValue;
10698
+ if (el) {
10699
+ var isImage = el.custom && el.custom.inputType === 'image';
10700
+ el.set(isImage ? {
10701
+ src: previousValue || ''
10702
+ } : {
10703
+ text: previousValue || ''
10704
+ });
10705
+ isGoingBackRef.current = true;
10706
+ store._unresolveInputField(el);
10707
+ }
10708
+ // displayIndex stays unchanged — it already points to the last step (N-1)
10709
+ };
10710
+ useEffect(function () {
10711
+ if (backTrigger !== prevBackTriggerRef.current) {
10712
+ prevBackTriggerRef.current = backTrigger;
10713
+ handleBackFromSummary();
10714
+ }
10715
+ }, [backTrigger]);
10679
10716
  if (!enabled || fields.length === 0) return null;
10680
10717
 
10681
10718
  // Always show the first remaining field — the array shrinks as fields are resolved
@@ -11104,7 +11141,9 @@ var Workspace = observer(function (_ref6) {
11104
11141
  components = _ref6$components === void 0 ? {} : _ref6$components,
11105
11142
  _ref6$showInputFields = _ref6.showInputFieldsPopup,
11106
11143
  showInputFieldsPopup = _ref6$showInputFields === void 0 ? true : _ref6$showInputFields,
11107
- onInputFieldsComplete = _ref6.onInputFieldsComplete;
11144
+ onInputFieldsComplete = _ref6.onInputFieldsComplete,
11145
+ _ref6$backTrigger = _ref6.backTrigger,
11146
+ backTrigger = _ref6$backTrigger === void 0 ? 0 : _ref6$backTrigger;
11108
11147
  var stageRef = useRef(null);
11109
11148
  var containerRef = useRef(null);
11110
11149
  var _useState5 = useState({
@@ -11390,7 +11429,8 @@ var Workspace = observer(function (_ref6) {
11390
11429
  }) : null, /*#__PURE__*/jsx(InputFieldsDialog, {
11391
11430
  store: store,
11392
11431
  enabled: showInputFieldsPopup,
11393
- onComplete: onInputFieldsComplete
11432
+ onComplete: onInputFieldsComplete,
11433
+ backTrigger: backTrigger
11394
11434
  })]
11395
11435
  });
11396
11436
  });