hunk.code_window: import React from "react";
   import styled, { createGlobalStyle, withTheme } from "styled-components";
   import { Popover, Position } from "@blueprintjs/core";
  
hunk.labels: replace keep keep keep
hunk.after_edit: import React, { useEffect } from "react";
  
hunk.file_path: app/client/src/pages/Editor/HelpButton.tsx
hunk.type: replace
file: // eslint-disable-next-line @typescript-eslint/ban-ts-comment
  //@ts-ignore
  import widgetPropertyFns from "!!raw-loader!./derived.js";
  
  // TODO(abhinav):
  // Add unit test cases
  // Handle edge cases
  // Error out on wrong values
  const derivedProperties: any = {};
  // const regex = /(\w+):\s?\(props\)\s?=>\s?{([\w\W]*?)},/gim;
  const regex = /(\w+):\s?\(props, moment, _\)\s?=>\s?{([\w\W\n]*?)},\n?\s+?\/\//gim;
  
  let m;
  
  while ((m = regex.exec(widgetPropertyFns)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
      regex.lastIndex++;
    }
  
    let key = "";
    // The result can be accessed through the `m`-variable.
    m.forEach((match, groupIndex) => {
      if (groupIndex === 1) {
        key = match;
      }
      if (groupIndex === 2) {
        derivedProperties[key] = match
          .trim()
          .replace(/\n/g, "")
          .replace(/props\./g, "this.");
      }
    });
  }
  
  export default derivedProperties;
  