code: function getStacktraceElements(props, preview) {
    const stack = [];
    if (!preview.stack) {
      return stack;
    }
  
    parseStackString(preview.stack).forEach((frame, index, frames) => {
      let onLocationClick;
      const {
        filename,
        lineNumber,
        columnNumber,
        functionName,
        location
      } = frame;
  
      if (
        props.onViewSourceInDebugger &&
        !IGNORED_SOURCE_URLS.includes(filename)
      ) {
        onLocationClick = e => {
          // Don't trigger ObjectInspector expand/collapse.
          e.stopPropagation();
          props.onViewSourceInDebugger({
            url: filename,
            line: lineNumber,
            column: columnNumber
          });
        };
      }
  
      stack.push(
        "\t",
        span(
          {
            key: `fn${index}`,
            className: "objectBox-stackTrace-fn"
          },
          cleanFunctionName(functionName)
        ),
        " ",
        span(
          {
            key: `location${index}`,
            className: "objectBox-stackTrace-location",
            onClick: onLocationClick,
            title: onLocationClick
              ? `View source in debugger → ${location}`
              : undefined
          },
          location
        ),
        "\n"
      );
    });
  
    return span(
      {
        key: "stack",
        className: "objectBox-stackTrace-grid"
      },
      stack
    );
  }
docs: Returns a React element reprensenting the Error stacktrace, i.e.
  transform error.stack from:
  
  semicolon@debugger eval code:1:109
  jkl@debugger eval code:1:63
  asdf@debugger eval code:1:28
  @debugger eval code:1:227
  
  Into a column layout:
  
  semicolon  (<anonymous>:8:10)
  jkl        (<anonymous>:5:10)
  asdf       (<anonymous>:2:10)
  (<anonymous>:11:1)