protected accessoryClick()

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);
    }