in packages/extensions/json/src/windowHostReceiver.tsx [144:217]
protected accessoryClick(accessoryId: AccessoryId, currentState: string): void {
const newStateFragment = { selectedDiffItem: null } as WindowHostReceiverState;
const { selectedItem, chatLogs, isDiff } = this.state;
const { logItems, documentId } = chatLogs;
const highlightedObjects = [];
const inspectorObjects = [];
switch (accessoryId) {
case 'diff':
{
const newState = currentState === 'selected' ? 'default' : 'selected';
newStateFragment.isDiff = newState === 'selected';
const previousBotState =
getBotState(logItems, selectedItem as Activity) || extractBotStateActivitiesFromLogEntries(logItems)[0];
const nextBotState = getBotState(logItems, previousBotState, 1);
if (newStateFragment.isDiff && nextBotState && previousBotState) {
newStateFragment.selectedItem = nextBotState;
newStateFragment.selectedDiffItem = previousBotState;
inspectorObjects.push(buildDiff(nextBotState, previousBotState));
highlightedObjects.push(previousBotState, nextBotState);
this.createAriaAlert('Showing bot state diff.');
} else {
inspectorObjects.push(selectedItem as Activity);
this.createAriaAlert('Hiding bot state diff.');
}
this.setAccessoryState('diff', newState);
}
break;
case 'leftArrow':
{
const newSelectedItem = getBotState(logItems, selectedItem as Activity);
const previousBotState = getBotState(logItems, newSelectedItem);
if (isDiff && previousBotState && newSelectedItem) {
newStateFragment.selectedItem = newSelectedItem;
newStateFragment.selectedDiffItem = previousBotState;
inspectorObjects.push(buildDiff(newSelectedItem, previousBotState));
highlightedObjects.push(previousBotState, newSelectedItem);
this.createAriaAlert('Showing previous bot state diff.');
} else if (!isDiff) {
inspectorObjects.push(newSelectedItem || (selectedItem as Activity));
this.createAriaAlert('Showing previous bot state.');
} else {
return;
}
}
break;
case 'rightArrow':
{
const newSelectedItem = getBotState(logItems, selectedItem as Activity, 1);
const previousBotState = selectedItem as Activity;
if (newSelectedItem && isDiff) {
newStateFragment.selectedItem = newSelectedItem;
newStateFragment.selectedDiffItem = previousBotState;
inspectorObjects.push(buildDiff(newSelectedItem, previousBotState));
highlightedObjects.push(newSelectedItem, previousBotState);
this.createAriaAlert('Showing next bot state diff.');
} else if (!isDiff) {
inspectorObjects.push(newSelectedItem || (selectedItem as Activity));
this.createAriaAlert('Showing next bot state.');
} else {
return;
}
}
break;
default:
return;
}
this.setState(newStateFragment);
this.setHighlightedObjects(documentId, highlightedObjects);
this.setInspectorObjects(documentId, inspectorObjects);
}