function handleSelectElement()

in src/js/webview/webview.js [128:176]


function handleSelectElement(event: MouseEvent) {
  let element = event.target;
  if (!(element instanceof Element)) {
    return;
  }

  const fieldName = WebviewStateMachine.fieldName;
  if (fieldName == null) {
    return;
  }

  const contextSelector = WebviewStateMachine.contextSelector;

  // Filter element
  element = WebviewUtils.filterElement(element);

  // Resolve the CSS selector for the selected element
  const selectors: string[] = CSSSelectorResolver.resolve(
    element,
    WebviewStateMachine.state === WebviewStates.SELECTING_MULTIPLE,
    contextSelector,
    fieldName
  );

  ipcRenderer.sendToHost('message', {
    type: BrowserMessageTypes.ELEMENT_SELECTED,
    selectors,
  });

  const selector = selectors[0];
  if (selector != null) {
    if (
      WebviewStateMachine.state ===
      BrowserMessageTypes.HIGHLIGHT_WARNING_ELEMENTS
    ) {
      WebviewUtils.highlightWarningElementsBySelector(selector);
    } else {
      WebviewUtils.highlightElementsBySelector(
        selector,
        WebviewStateMachine.contextSelector
      );
    }
  }

  WebviewStateMachine.state = WebviewStates.DEFAULT;

  // Prevent navigation to links when clicked
  event.preventDefault();
}