lisichatbot 1.4.7 → 1.4.8

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 (2) hide show
  1. package/package.json +1 -1
  2. package/src/index.js +64 -53
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisichatbot",
3
- "version": "1.4.7",
3
+ "version": "1.4.8",
4
4
  "type": "module",
5
5
  "main": "./src/index.js",
6
6
  "exports": {
package/src/index.js CHANGED
@@ -1890,77 +1890,88 @@ async function handleNext() {
1890
1890
  const targetStep = chatState.returnToStep;
1891
1891
  console.log(`\nšŸ”™ Returning to saved step ${targetStep} (edited step complete)`);
1892
1892
 
1893
- // āœ… NEW: Check if there are dependent steps between current and target that should now be shown
1894
- const currentStepIndex = chatState.step;
1895
- const editedStepField = flowData.flow[currentStepIndex]?.input?.field;
1893
+ // āœ… Check if we should continue to next step or jump back
1894
+ const nextStep = chatState.step + 1;
1896
1895
 
1897
- console.log(` šŸ” Checking for dependent steps between ${currentStepIndex} and ${targetStep}`);
1898
-
1899
- let nextStepToShow = null;
1900
-
1901
- // Check all steps between current and target
1902
- for (let i = currentStepIndex + 1; i < targetStep; i++) {
1903
- const step = flowData.flow[i];
1896
+ if (nextStep < targetStep) {
1897
+ // There are steps between current and target
1898
+ const currentStepIndex = chatState.step;
1899
+ const editedStepField = flowData.flow[currentStepIndex]?.input?.field;
1904
1900
 
1905
- // Check if this step depends on the edited field
1906
- if (step.dependsOn) {
1907
- const dependencies = Array.isArray(step.dependsOn) ? step.dependsOn : [step.dependsOn];
1901
+ console.log(` šŸ” Checking if step ${nextStep} should be shown (between ${currentStepIndex} and ${targetStep})`);
1902
+
1903
+ // Check if the next step depends on the edited field
1904
+ const nextStepConfig = flowData.flow[nextStep];
1905
+ if (nextStepConfig && nextStepConfig.dependsOn) {
1906
+ const dependencies = Array.isArray(nextStepConfig.dependsOn) ? nextStepConfig.dependsOn : [nextStepConfig.dependsOn];
1908
1907
 
1909
1908
  if (dependencies.includes(editedStepField)) {
1910
- console.log(` šŸ”— Found dependent step ${i} (depends on ${editedStepField})`);
1909
+ console.log(` šŸ”— Step ${nextStep} depends on ${editedStepField} - checking shouldDisplay`);
1911
1910
 
1912
- // Check if this step should now be displayed
1913
- if (step.shouldDisplay) {
1914
- let shouldShow = false;
1915
-
1916
- if (typeof step.shouldDisplay === 'function') {
1911
+ // Check shouldDisplay
1912
+ let shouldShow = true; // Default to true if no shouldDisplay
1913
+
1914
+ if (nextStepConfig.shouldDisplay) {
1915
+ if (typeof nextStepConfig.shouldDisplay === 'function') {
1917
1916
  try {
1918
- shouldShow = await step.shouldDisplay(chatState.data);
1919
- console.log(` šŸ” Step ${i} shouldDisplay: ${shouldShow}`);
1917
+ shouldShow = await nextStepConfig.shouldDisplay(chatState.data);
1918
+ console.log(` šŸ” Step ${nextStep} shouldDisplay: ${shouldShow}`);
1920
1919
  } catch (error) {
1921
- console.error(`Error in shouldDisplay for step ${i}:`, error);
1920
+ console.error(`Error in shouldDisplay for step ${nextStep}:`, error);
1921
+ shouldShow = false;
1922
1922
  }
1923
- } else if (typeof step.shouldDisplay === 'boolean') {
1924
- shouldShow = step.shouldDisplay;
1923
+ } else if (typeof nextStepConfig.shouldDisplay === 'boolean') {
1924
+ shouldShow = nextStepConfig.shouldDisplay;
1925
1925
  }
1926
+ }
1927
+
1928
+ if (shouldShow) {
1929
+ // Show this dependent step, keep returnToStep for later
1930
+ console.log(` āœ… Step ${nextStep} should be shown - continuing to it (returnToStep=${targetStep} preserved)`);
1931
+ chatState.step = nextStep;
1926
1932
 
1927
- if (shouldShow) {
1928
- console.log(` āœ… Step ${i} should now be shown - showing it first`);
1929
- nextStepToShow = i;
1930
- break; // Show the first dependent step that should be displayed
1931
- } else {
1932
- console.log(` ā­ļø Step ${i} shouldDisplay returned false - skipping`);
1933
- }
1933
+ const allRangeWrappers = document.querySelectorAll('[data-chat-element="range-wrapper"]');
1934
+ allRangeWrappers.forEach(wrapper => {
1935
+ wrapper.style.display = 'none';
1936
+ });
1937
+
1938
+ updateEditIcons();
1939
+ await showNextStep();
1940
+ return;
1934
1941
  } else {
1935
- // No shouldDisplay means always show
1936
- console.log(` āœ… Step ${i} has no shouldDisplay - showing it`);
1937
- nextStepToShow = i;
1938
- break;
1942
+ console.log(` ā­ļø Step ${nextStep} shouldDisplay returned false - will check next step`);
1939
1943
  }
1940
1944
  }
1941
1945
  }
1942
- }
1943
-
1944
- if (nextStepToShow !== null) {
1945
- // Show the dependent step that should be displayed
1946
- console.log(` šŸ”„ Showing dependent step ${nextStepToShow} before returning to ${targetStep}`);
1947
- chatState.step = nextStepToShow;
1946
+
1947
+ // Next step doesn't depend on edited field or shouldn't be shown
1948
+ // Continue to next step normally (it will check shouldDisplay in showNextStep)
1949
+ console.log(` āž”ļø Continuing to next step ${nextStep} (normal flow)`);
1950
+ chatState.step = nextStep;
1951
+
1952
+ const allRangeWrappers = document.querySelectorAll('[data-chat-element="range-wrapper"]');
1953
+ allRangeWrappers.forEach(wrapper => {
1954
+ wrapper.style.display = 'none';
1955
+ });
1956
+
1957
+ updateEditIcons();
1958
+ await showNextStep();
1959
+ return;
1948
1960
  } else {
1949
- // No dependent steps to show, return to target
1950
- console.log(` ā­ļø No dependent steps to show, returning directly to step ${targetStep}`);
1961
+ // Reached or passed target, clear returnToStep and go to target
1962
+ console.log(` ā­ļø Reached target, returning to step ${targetStep}`);
1951
1963
  chatState.returnToStep = null;
1952
1964
  chatState.step = targetStep;
1965
+
1966
+ const allRangeWrappers = document.querySelectorAll('[data-chat-element="range-wrapper"]');
1967
+ allRangeWrappers.forEach(wrapper => {
1968
+ wrapper.style.display = 'none';
1969
+ });
1970
+
1971
+ updateEditIcons();
1972
+ await showNextStep();
1973
+ return;
1953
1974
  }
1954
-
1955
- const allRangeWrappers = document.querySelectorAll('[data-chat-element="range-wrapper"]');
1956
- allRangeWrappers.forEach(wrapper => {
1957
- wrapper.style.display = 'none';
1958
- });
1959
- console.log(' šŸ™ˆ Hidden all range-wrappers');
1960
-
1961
- updateEditIcons();
1962
- await showNextStep();
1963
- return;
1964
1975
  }
1965
1976
 
1966
1977
  chatState.step++;