lisichatbot 1.4.6 → 1.4.7

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 +68 -14
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisichatbot",
3
- "version": "1.4.6",
3
+ "version": "1.4.7",
4
4
  "type": "module",
5
5
  "main": "./src/index.js",
6
6
  "exports": {
package/src/index.js CHANGED
@@ -1889,24 +1889,78 @@ async function handleNext() {
1889
1889
  if (chatState.returnToStep !== null) {
1890
1890
  const targetStep = chatState.returnToStep;
1891
1891
  console.log(`\nšŸ”™ Returning to saved step ${targetStep} (edited step complete)`);
1892
- chatState.returnToStep = null;
1893
1892
 
1894
- if (targetStep >= 0 && targetStep < flowData.flow.length) {
1895
- chatState.step = targetStep;
1896
- console.log(` āœ… Jumped to step ${targetStep}`);
1897
-
1898
- const allRangeWrappers = document.querySelectorAll('[data-chat-element="range-wrapper"]');
1899
- allRangeWrappers.forEach(wrapper => {
1900
- wrapper.style.display = 'none';
1901
- });
1902
- console.log(' šŸ™ˆ Hidden all range-wrappers');
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;
1896
+
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];
1903
1904
 
1904
- updateEditIcons();
1905
- await showNextStep();
1906
- return;
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];
1908
+
1909
+ if (dependencies.includes(editedStepField)) {
1910
+ console.log(` šŸ”— Found dependent step ${i} (depends on ${editedStepField})`);
1911
+
1912
+ // Check if this step should now be displayed
1913
+ if (step.shouldDisplay) {
1914
+ let shouldShow = false;
1915
+
1916
+ if (typeof step.shouldDisplay === 'function') {
1917
+ try {
1918
+ shouldShow = await step.shouldDisplay(chatState.data);
1919
+ console.log(` šŸ” Step ${i} shouldDisplay: ${shouldShow}`);
1920
+ } catch (error) {
1921
+ console.error(`Error in shouldDisplay for step ${i}:`, error);
1922
+ }
1923
+ } else if (typeof step.shouldDisplay === 'boolean') {
1924
+ shouldShow = step.shouldDisplay;
1925
+ }
1926
+
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
+ }
1934
+ } else {
1935
+ // No shouldDisplay means always show
1936
+ console.log(` āœ… Step ${i} has no shouldDisplay - showing it`);
1937
+ nextStepToShow = i;
1938
+ break;
1939
+ }
1940
+ }
1941
+ }
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;
1907
1948
  } else {
1908
- console.log(` āš ļø Invalid return step ${targetStep}, continuing normally`);
1949
+ // No dependent steps to show, return to target
1950
+ console.log(` ā­ļø No dependent steps to show, returning directly to step ${targetStep}`);
1951
+ chatState.returnToStep = null;
1952
+ chatState.step = targetStep;
1909
1953
  }
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;
1910
1964
  }
1911
1965
 
1912
1966
  chatState.step++;