{"version":3,"sources":["../node_modules/is-object/index.js","../node_modules/is-window/index.js","../node_modules/is-dom/index.js","../src/index.tsx","../src/styles/themes/index.tsx","../src/styles/themes/chromeDark.tsx","../src/styles/themes/chromeLight.tsx","../src/object-inspector/ObjectInspector.tsx","../src/tree-view/TreeView.tsx","../src/tree-view/ExpandedPathsContext.tsx","../src/tree-view/TreeNode.tsx","../src/styles/styles.tsx","../src/styles/unselectable.tsx","../src/styles/base.tsx","../src/tree-view/pathUtils.ts","../src/object-inspector/ObjectRootLabel.tsx","../src/object/ObjectName.tsx","../src/object-inspector/ObjectPreview.tsx","../src/object/ObjectValue.tsx","../src/utils/objectPrototype.tsx","../src/utils/propertyUtils.tsx","../src/object-inspector/ObjectLabel.tsx","../src/table-inspector/TableInspector.tsx","../src/table-inspector/getHeaders.ts","../src/table-inspector/DataContainer.tsx","../src/table-inspector/HeaderContainer.tsx","../src/table-inspector/TH.tsx","../src/dom-inspector/DOMInspector.tsx","../src/dom-inspector/DOMNodePreview.tsx","../src/dom-inspector/shouldInline.tsx"],"sourcesContent":["'use strict';\n\nmodule.exports = function isObject(x) {\n\treturn typeof x === 'object' && x !== null;\n};\n","'use strict';\n\nmodule.exports = function (obj) {\n\n  if (obj == null) {\n    return false;\n  }\n\n  var o = Object(obj);\n\n  return o === o.window;\n};\n","var isObject = require('is-object')\nvar isWindow = require('is-window')\n\nfunction isNode (val) {\n  if (!isObject(val) || !isWindow(window) || typeof window.Node !== 'function') {\n    return false\n  }\n\n  return typeof val.nodeType === 'number' &&\n    typeof val.nodeName === 'string'\n}\n\nmodule.exports = isNode\n","export { chromeLight, chromeDark } from './styles/themes';\n\nimport { ObjectInspector } from './object-inspector/ObjectInspector';\nimport { TableInspector } from './table-inspector/TableInspector';\nimport { DOMInspector } from './dom-inspector/DOMInspector';\n\nimport { ObjectLabel } from './object-inspector/ObjectLabel';\nimport { ObjectPreview } from './object-inspector/ObjectPreview';\nimport { ObjectRootLabel } from './object-inspector/ObjectRootLabel';\n\nimport { ObjectValue } from './object/ObjectValue';\nimport { ObjectName } from './object/ObjectName';\n\nexport { TableInspector, ObjectInspector, ObjectLabel, ObjectPreview, ObjectRootLabel, ObjectValue, ObjectName };\n\nimport React, { ComponentProps, FC } from 'react';\nimport isDOM from 'is-dom';\n\nexport const Inspector: FC<TableInspectorProps | ObjectInspectorProps> = ({ table = false, data, ...rest }) => {\n  if (table) {\n    return <TableInspector data={data} {...rest} />;\n  }\n\n  if (isDOM(data)) return <DOMInspector data={data} {...rest} />;\n\n  return <ObjectInspector data={data} {...rest} />;\n};\n\ninterface TableInspectorProps extends ComponentProps<typeof TableInspector> {\n  table: true;\n}\ninterface ObjectInspectorProps extends ComponentProps<typeof ObjectInspector> {\n  table: false;\n}\n","export { theme as chromeDark } from './chromeDark';\nexport { theme as chromeLight } from './chromeLight';\n","export const theme = {\n  BASE_FONT_FAMILY: 'Menlo, monospace',\n  BASE_FONT_SIZE: '11px',\n  BASE_LINE_HEIGHT: 1.2,\n\n  BASE_BACKGROUND_COLOR: 'rgb(36, 36, 36)',\n  BASE_COLOR: 'rgb(213, 213, 213)',\n\n  OBJECT_PREVIEW_ARRAY_MAX_PROPERTIES: 10,\n  OBJECT_PREVIEW_OBJECT_MAX_PROPERTIES: 5,\n  OBJECT_NAME_COLOR: 'rgb(227, 110, 236)',\n  OBJECT_VALUE_NULL_COLOR: 'rgb(127, 127, 127)',\n  OBJECT_VALUE_UNDEFINED_COLOR: 'rgb(127, 127, 127)',\n  OBJECT_VALUE_REGEXP_COLOR: 'rgb(233, 63, 59)',\n  OBJECT_VALUE_STRING_COLOR: 'rgb(233, 63, 59)',\n  OBJECT_VALUE_SYMBOL_COLOR: 'rgb(233, 63, 59)',\n  OBJECT_VALUE_NUMBER_COLOR: 'hsl(252, 100%, 75%)',\n  OBJECT_VALUE_BOOLEAN_COLOR: 'hsl(252, 100%, 75%)',\n  OBJECT_VALUE_FUNCTION_PREFIX_COLOR: 'rgb(85, 106, 242)',\n\n  HTML_TAG_COLOR: 'rgb(93, 176, 215)',\n  HTML_TAGNAME_COLOR: 'rgb(93, 176, 215)',\n  HTML_TAGNAME_TEXT_TRANSFORM: 'lowercase',\n  HTML_ATTRIBUTE_NAME_COLOR: 'rgb(155, 187, 220)',\n  HTML_ATTRIBUTE_VALUE_COLOR: 'rgb(242, 151, 102)',\n  HTML_COMMENT_COLOR: 'rgb(137, 137, 137)',\n  HTML_DOCTYPE_COLOR: 'rgb(192, 192, 192)',\n\n  ARROW_COLOR: 'rgb(145, 145, 145)',\n  ARROW_MARGIN_RIGHT: 3,\n  ARROW_FONT_SIZE: 12,\n  ARROW_ANIMATION_DURATION: '0',\n\n  TREENODE_FONT_FAMILY: 'Menlo, monospace',\n  TREENODE_FONT_SIZE: '11px',\n  TREENODE_LINE_HEIGHT: 1.2,\n  TREENODE_PADDING_LEFT: 12,\n\n  TABLE_BORDER_COLOR: 'rgb(85, 85, 85)',\n  TABLE_TH_BACKGROUND_COLOR: 'rgb(44, 44, 44)',\n  TABLE_TH_HOVER_COLOR: 'rgb(48, 48, 48)',\n  TABLE_SORT_ICON_COLOR: 'black', //'rgb(48, 57, 66)',\n  TABLE_DATA_BACKGROUND_IMAGE:\n    'linear-gradient(rgba(255, 255, 255, 0), rgba(255, 255, 255, 0) 50%, rgba(51, 139, 255, 0.0980392) 50%, rgba(51, 139, 255, 0.0980392))',\n  TABLE_DATA_BACKGROUND_SIZE: '128px 32px',\n};\n","export const theme = {\n  BASE_FONT_FAMILY: 'Menlo, monospace',\n  BASE_FONT_SIZE: '11px',\n  BASE_LINE_HEIGHT: 1.2,\n\n  BASE_BACKGROUND_COLOR: 'white',\n  BASE_COLOR: 'black',\n\n  OBJECT_PREVIEW_ARRAY_MAX_PROPERTIES: 10,\n  OBJECT_PREVIEW_OBJECT_MAX_PROPERTIES: 5,\n  OBJECT_NAME_COLOR: 'rgb(136, 19, 145)',\n  OBJECT_VALUE_NULL_COLOR: 'rgb(128, 128, 128)',\n  OBJECT_VALUE_UNDEFINED_COLOR: 'rgb(128, 128, 128)',\n  OBJECT_VALUE_REGEXP_COLOR: 'rgb(196, 26, 22)',\n  OBJECT_VALUE_STRING_COLOR: 'rgb(196, 26, 22)',\n  OBJECT_VALUE_SYMBOL_COLOR: 'rgb(196, 26, 22)',\n  OBJECT_VALUE_NUMBER_COLOR: 'rgb(28, 0, 207)',\n  OBJECT_VALUE_BOOLEAN_COLOR: 'rgb(28, 0, 207)',\n  OBJECT_VALUE_FUNCTION_PREFIX_COLOR: 'rgb(13, 34, 170)',\n\n  HTML_TAG_COLOR: 'rgb(168, 148, 166)',\n  HTML_TAGNAME_COLOR: 'rgb(136, 18, 128)',\n  HTML_TAGNAME_TEXT_TRANSFORM: 'lowercase',\n  HTML_ATTRIBUTE_NAME_COLOR: 'rgb(153, 69, 0)',\n  HTML_ATTRIBUTE_VALUE_COLOR: 'rgb(26, 26, 166)',\n  HTML_COMMENT_COLOR: 'rgb(35, 110, 37)',\n  HTML_DOCTYPE_COLOR: 'rgb(192, 192, 192)',\n\n  ARROW_COLOR: '#6e6e6e',\n  ARROW_MARGIN_RIGHT: 3,\n  ARROW_FONT_SIZE: 12,\n  ARROW_ANIMATION_DURATION: '0',\n\n  TREENODE_FONT_FAMILY: 'Menlo, monospace',\n  TREENODE_FONT_SIZE: '11px',\n  TREENODE_LINE_HEIGHT: 1.2,\n  TREENODE_PADDING_LEFT: 12,\n\n  TABLE_BORDER_COLOR: '#aaa',\n  TABLE_TH_BACKGROUND_COLOR: '#eee',\n  TABLE_TH_HOVER_COLOR: 'hsla(0, 0%, 90%, 1)',\n  TABLE_SORT_ICON_COLOR: '#6e6e6e',\n  TABLE_DATA_BACKGROUND_IMAGE:\n    'linear-gradient(to bottom, white, white 50%, rgb(234, 243, 255) 50%, rgb(234, 243, 255))',\n  TABLE_DATA_BACKGROUND_SIZE: '128px 32px',\n};\n","import React, { FC } from 'react';\nimport { TreeView } from '../tree-view/TreeView';\n\nimport { ObjectRootLabel } from './ObjectRootLabel';\nimport { ObjectLabel } from './ObjectLabel';\n\nimport { propertyIsEnumerable } from '../utils/objectPrototype';\nimport { getPropertyValue } from '../utils/propertyUtils';\n\nimport { themeAcceptor } from '../styles';\n\nconst createIterator = (showNonenumerable: any, sortObjectKeys: any) => {\n  const objectIterator = function* (data: any) {\n    const shouldIterate = (typeof data === 'object' && data !== null) || typeof data === 'function';\n    if (!shouldIterate) return;\n\n    const dataIsArray = Array.isArray(data);\n\n    // iterable objects (except arrays)\n    if (!dataIsArray && data[Symbol.iterator]) {\n      let i = 0;\n      for (const entry of data) {\n        if (Array.isArray(entry) && entry.length === 2) {\n          const [k, v] = entry;\n          yield {\n            name: k,\n            data: v,\n          };\n        } else {\n          yield {\n            name: i.toString(),\n            data: entry,\n          };\n        }\n        i++;\n      }\n    } else {\n      const keys = Object.getOwnPropertyNames(data);\n      if (sortObjectKeys === true && !dataIsArray) {\n        // Array keys should not be sorted in alphabetical order\n        keys.sort();\n      } else if (typeof sortObjectKeys === 'function') {\n        keys.sort(sortObjectKeys);\n      }\n\n      for (const propertyName of keys) {\n        if (propertyIsEnumerable.call(data, propertyName)) {\n          const propertyValue = getPropertyValue(data, propertyName);\n          yield {\n            name: propertyName || `\"\"`,\n            data: propertyValue,\n          };\n        } else if (showNonenumerable) {\n          // To work around the error (happens some time when propertyName === 'caller' || propertyName === 'arguments')\n          // 'caller' and 'arguments' are restricted function properties and cannot be accessed in this context\n          // http://stackoverflow.com/questions/31921189/caller-and-arguments-are-restricted-function-properties-and-cannot-be-access\n          let propertyValue;\n          try {\n            propertyValue = getPropertyValue(data, propertyName);\n            // eslint-disable-next-line @typescript-eslint/no-unused-vars\n          } catch (e) {\n            // console.warn(e)\n          }\n\n          if (propertyValue !== undefined) {\n            yield {\n              name: propertyName,\n              data: propertyValue,\n              isNonenumerable: true,\n            };\n          }\n        }\n      }\n\n      // [[Prototype]] of the object: `Object.getPrototypeOf(data)`\n      // the property name is shown as \"__proto__\"\n      if (showNonenumerable && data !== Object.prototype /* already added */) {\n        yield {\n          name: '__proto__',\n          data: Object.getPrototypeOf(data),\n          isNonenumerable: true,\n        };\n      }\n    }\n  };\n\n  return objectIterator;\n};\n\nconst defaultNodeRenderer = ({ depth, name, data, isNonenumerable }: any) =>\n  depth === 0 ? (\n    <ObjectRootLabel name={name} data={data} />\n  ) : (\n    <ObjectLabel name={name} data={data} isNonenumerable={isNonenumerable} />\n  );\n\n/**\n * Tree-view for objects\n */\nconst ObjectInspector: FC<any> = ({ showNonenumerable = false, sortObjectKeys, nodeRenderer, ...treeViewProps }) => {\n  const dataIterator = createIterator(showNonenumerable, sortObjectKeys);\n  const renderer = nodeRenderer ? nodeRenderer : defaultNodeRenderer;\n\n  return <TreeView nodeRenderer={renderer} dataIterator={dataIterator} {...treeViewProps} />;\n};\n\n// ObjectInspector.propTypes = {\n//   /** An integer specifying to which level the tree should be initially expanded. */\n//   expandLevel: PropTypes.number,\n//   /** An array containing all the paths that should be expanded when the component is initialized, or a string of just one path */\n//   expandPaths: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n\n//   name: PropTypes.string,\n//   /** Not required prop because we also allow undefined value */\n//   data: PropTypes.any,\n\n//   /** Show non-enumerable properties */\n//   showNonenumerable: PropTypes.bool,\n//   /** Sort object keys with optional compare function. */\n//   sortObjectKeys: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n\n//   /** Provide a custom nodeRenderer */\n//   nodeRenderer: PropTypes.func,\n// };\n\nconst themedObjectInspector = themeAcceptor(ObjectInspector);\n\nexport { themedObjectInspector as ObjectInspector };\n","import React, { useContext, useCallback, useLayoutEffect, useState, memo } from 'react';\nimport { ExpandedPathsContext } from './ExpandedPathsContext';\nimport { TreeNode } from './TreeNode';\nimport { DEFAULT_ROOT_PATH, hasChildNodes, getExpandedPaths } from './pathUtils';\n\nimport { useStyles } from '../styles';\n\nconst ConnectedTreeNode = memo<any>((props) => {\n  const { data, dataIterator, path, depth, nodeRenderer } = props;\n  const [expandedPaths, setExpandedPaths] = useContext(ExpandedPathsContext);\n  const nodeHasChildNodes = hasChildNodes(data, dataIterator);\n  const expanded = !!expandedPaths[path];\n\n  const handleClick = useCallback(\n    () =>\n      nodeHasChildNodes &&\n      setExpandedPaths((prevExpandedPaths) => ({\n        ...prevExpandedPaths,\n        [path]: !expanded,\n      })),\n    [nodeHasChildNodes, setExpandedPaths, path, expanded]\n  );\n\n  return (\n    <TreeNode\n      expanded={expanded}\n      onClick={handleClick}\n      // show arrow anyway even if not expanded and not rendering children\n      shouldShowArrow={nodeHasChildNodes}\n      // show placeholder only for non root nodes\n      shouldShowPlaceholder={depth > 0}\n      // Render a node from name and data (or possibly other props like isNonenumerable)\n      nodeRenderer={nodeRenderer}\n      {...props}>\n      {\n        // only render if the node is expanded\n        expanded\n          ? [...dataIterator(data)].map(({ name, data, ...renderNodeProps }) => {\n              return (\n                <ConnectedTreeNode\n                  name={name}\n                  data={data}\n                  depth={depth + 1}\n                  path={`${path}.${name}`}\n                  key={name}\n                  dataIterator={dataIterator}\n                  nodeRenderer={nodeRenderer}\n                  {...renderNodeProps}\n                />\n              );\n            })\n          : null\n      }\n    </TreeNode>\n  );\n});\n\n// ConnectedTreeNode.propTypes = {\n//   name: PropTypes.string,\n//   data: PropTypes.any,\n//   dataIterator: PropTypes.func,\n//   depth: PropTypes.number,\n//   expanded: PropTypes.bool,\n//   nodeRenderer: PropTypes.func,\n// };\n\nexport const TreeView = memo<any>(({ name, data, dataIterator, nodeRenderer, expandPaths, expandLevel }) => {\n  const styles = useStyles('TreeView');\n  const stateAndSetter = useState({});\n  const [, setExpandedPaths] = stateAndSetter;\n\n  useLayoutEffect(\n    () =>\n      setExpandedPaths((prevExpandedPaths) =>\n        getExpandedPaths(data, dataIterator, expandPaths, expandLevel, prevExpandedPaths)\n      ),\n    [data, dataIterator, expandPaths, expandLevel]\n  );\n\n  return (\n    <ExpandedPathsContext.Provider value={stateAndSetter}>\n      <ol role=\"tree\" style={styles.treeViewOutline}>\n        <ConnectedTreeNode\n          name={name}\n          data={data}\n          dataIterator={dataIterator}\n          depth={0}\n          path={DEFAULT_ROOT_PATH}\n          nodeRenderer={nodeRenderer}\n        />\n      </ol>\n    </ExpandedPathsContext.Provider>\n  );\n});\n\n// TreeView.propTypes = {\n//   name: PropTypes.string,\n//   data: PropTypes.any,\n//   dataIterator: PropTypes.func,\n//   nodeRenderer: PropTypes.func,\n//   expandPaths: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n//   expandLevel: PropTypes.number,\n// };\n","import { createContext } from 'react';\n\nexport const ExpandedPathsContext = createContext<[any, (...args: any[]) => any]>([{}, () => {}]);\n","import React, { Children, FC, memo } from 'react';\nimport { useStyles } from '../styles';\n\nconst Arrow: FC<any> = ({ expanded, styles }) => (\n  <span\n    style={{\n      ...styles.base,\n      ...(expanded ? styles.expanded : styles.collapsed),\n    }}>\n    ▶\n  </span>\n);\n\nexport const TreeNode: FC<any> = memo((props) => {\n  props = {\n    expanded: true,\n    nodeRenderer: ({ name }: any) => <span>{name}</span>,\n    onClick: () => {},\n    shouldShowArrow: false,\n    shouldShowPlaceholder: true,\n    ...props,\n  };\n  const { expanded, onClick, children, nodeRenderer, title, shouldShowArrow, shouldShowPlaceholder } = props;\n\n  const styles = useStyles('TreeNode');\n  const NodeRenderer = nodeRenderer;\n\n  return (\n    <li aria-expanded={expanded} role=\"treeitem\" style={styles.treeNodeBase} title={title}>\n      <div style={styles.treeNodePreviewContainer} onClick={onClick}>\n        {shouldShowArrow || Children.count(children) > 0 ? (\n          <Arrow expanded={expanded} styles={styles.treeNodeArrow} />\n        ) : (\n          shouldShowPlaceholder && <span style={styles.treeNodePlaceholder}>&nbsp;</span>\n        )}\n        <NodeRenderer {...props} />\n      </div>\n\n      <ol role=\"group\" style={styles.treeNodeChildNodesContainer}>\n        {expanded ? children : undefined}\n      </ol>\n    </li>\n  );\n});\n\n// TreeNode.propTypes = {\n//   name: PropTypes.string,\n//   data: PropTypes.any,\n//   expanded: PropTypes.bool,\n//   shouldShowArrow: PropTypes.bool,\n//   shouldShowPlaceholder: PropTypes.bool,\n//   nodeRenderer: PropTypes.func,\n//   onClick: PropTypes.func,\n// };\n","import React, { createContext, useContext, useMemo } from 'react';\n\nimport * as themes from './themes';\nimport { createTheme } from './base';\n\nconst DEFAULT_THEME_NAME = 'chromeLight';\n\nconst ThemeContext = createContext(createTheme(themes[DEFAULT_THEME_NAME]));\n\n/**\n * Hook to get the component styles for the current theme.\n * @param {string} baseStylesKey - Name of the component to be styled\n */\nexport const useStyles = (baseStylesKey: any) => {\n  const themeStyles = useContext(ThemeContext);\n  return themeStyles[baseStylesKey];\n};\n\n/**\n * HOC to create a component that accepts a \"theme\" prop and uses it to set\n * the current theme. This is intended to be used by the top-level inspector\n * components.\n * @param {Object} WrappedComponent - React component to be wrapped\n */\nexport const themeAcceptor = (WrappedComponent: any) => {\n  const ThemeAcceptor = ({ theme = DEFAULT_THEME_NAME, ...restProps }) => {\n    const themeStyles = useMemo(() => {\n      switch (Object.prototype.toString.call(theme)) {\n        case '[object String]':\n          return createTheme(themes[theme]);\n        case '[object Object]':\n          return createTheme(theme);\n        default:\n          return createTheme(themes[DEFAULT_THEME_NAME]);\n      }\n    }, [theme]);\n\n    return (\n      <ThemeContext.Provider value={themeStyles}>\n        <WrappedComponent {...restProps} />\n      </ThemeContext.Provider>\n    );\n  };\n\n  // ThemeAcceptor.propTypes = {\n  //   theme: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n  // };\n\n  return ThemeAcceptor;\n};\n","export const unselectable = {\n  WebkitTouchCallout: 'none',\n  WebkitUserSelect: 'none',\n  KhtmlUserSelect: 'none',\n  MozUserSelect: 'none',\n  msUserSelect: 'none',\n  OUserSelect: 'none',\n  userSelect: 'none',\n};\n","import { unselectable } from './unselectable';\n\nexport const createTheme = (theme: any) => ({\n  DOMNodePreview: {\n    htmlOpenTag: {\n      base: {\n        color: theme.HTML_TAG_COLOR,\n      },\n      tagName: {\n        color: theme.HTML_TAGNAME_COLOR,\n        textTransform: theme.HTML_TAGNAME_TEXT_TRANSFORM,\n      },\n      htmlAttributeName: {\n        color: theme.HTML_ATTRIBUTE_NAME_COLOR,\n      },\n      htmlAttributeValue: {\n        color: theme.HTML_ATTRIBUTE_VALUE_COLOR,\n      },\n    },\n    htmlCloseTag: {\n      base: {\n        color: theme.HTML_TAG_COLOR,\n      },\n      offsetLeft: {\n        /* hack: offset placeholder */\n        marginLeft: -theme.TREENODE_PADDING_LEFT,\n      },\n      tagName: {\n        color: theme.HTML_TAGNAME_COLOR,\n        textTransform: theme.HTML_TAGNAME_TEXT_TRANSFORM,\n      },\n    },\n    htmlComment: {\n      color: theme.HTML_COMMENT_COLOR,\n    },\n    htmlDoctype: {\n      color: theme.HTML_DOCTYPE_COLOR,\n    },\n  },\n\n  ObjectPreview: {\n    objectDescription: {\n      fontStyle: 'italic',\n    },\n    preview: {\n      fontStyle: 'italic',\n    },\n    arrayMaxProperties: theme.OBJECT_PREVIEW_ARRAY_MAX_PROPERTIES,\n    objectMaxProperties: theme.OBJECT_PREVIEW_OBJECT_MAX_PROPERTIES,\n  },\n\n  ObjectName: {\n    base: {\n      color: theme.OBJECT_NAME_COLOR,\n    },\n    dimmed: {\n      opacity: 0.6,\n    },\n  },\n\n  ObjectValue: {\n    objectValueNull: {\n      color: theme.OBJECT_VALUE_NULL_COLOR,\n    },\n    objectValueUndefined: {\n      color: theme.OBJECT_VALUE_UNDEFINED_COLOR,\n    },\n    objectValueRegExp: {\n      color: theme.OBJECT_VALUE_REGEXP_COLOR,\n    },\n    objectValueString: {\n      color: theme.OBJECT_VALUE_STRING_COLOR,\n    },\n    objectValueSymbol: {\n      color: theme.OBJECT_VALUE_SYMBOL_COLOR,\n    },\n    objectValueNumber: {\n      color: theme.OBJECT_VALUE_NUMBER_COLOR,\n    },\n    objectValueBoolean: {\n      color: theme.OBJECT_VALUE_BOOLEAN_COLOR,\n    },\n    objectValueFunctionPrefix: {\n      color: theme.OBJECT_VALUE_FUNCTION_PREFIX_COLOR,\n      fontStyle: 'italic',\n    },\n    objectValueFunctionName: {\n      fontStyle: 'italic',\n    },\n  },\n\n  TreeView: {\n    treeViewOutline: {\n      padding: 0,\n      margin: 0,\n      listStyleType: 'none',\n    },\n  },\n\n  TreeNode: {\n    treeNodeBase: {\n      color: theme.BASE_COLOR,\n      backgroundColor: theme.BASE_BACKGROUND_COLOR,\n\n      lineHeight: theme.TREENODE_LINE_HEIGHT,\n      cursor: 'default',\n\n      boxSizing: 'border-box',\n      listStyle: 'none',\n\n      fontFamily: theme.TREENODE_FONT_FAMILY,\n      fontSize: theme.TREENODE_FONT_SIZE,\n    },\n    treeNodePreviewContainer: {},\n    treeNodePlaceholder: {\n      whiteSpace: 'pre',\n\n      fontSize: theme.ARROW_FONT_SIZE,\n      marginRight: theme.ARROW_MARGIN_RIGHT,\n      ...unselectable,\n    },\n    treeNodeArrow: {\n      base: {\n        color: theme.ARROW_COLOR,\n        display: 'inline-block',\n        // lineHeight: '14px',\n        fontSize: theme.ARROW_FONT_SIZE,\n        marginRight: theme.ARROW_MARGIN_RIGHT,\n        ...(parseFloat(theme.ARROW_ANIMATION_DURATION) > 0\n          ? {\n              transition: `transform ${theme.ARROW_ANIMATION_DURATION} ease 0s`,\n            }\n          : {}),\n        ...unselectable,\n      },\n      expanded: {\n        WebkitTransform: 'rotateZ(90deg)',\n        MozTransform: 'rotateZ(90deg)',\n        transform: 'rotateZ(90deg)',\n      },\n      collapsed: {\n        WebkitTransform: 'rotateZ(0deg)',\n        MozTransform: 'rotateZ(0deg)',\n        transform: 'rotateZ(0deg)',\n      },\n    },\n    treeNodeChildNodesContainer: {\n      margin: 0, // reset user-agent style\n      paddingLeft: theme.TREENODE_PADDING_LEFT,\n    },\n  },\n\n  TableInspector: {\n    base: {\n      color: theme.BASE_COLOR,\n\n      position: 'relative',\n      border: `1px solid ${theme.TABLE_BORDER_COLOR}`,\n      fontFamily: theme.BASE_FONT_FAMILY,\n      fontSize: theme.BASE_FONT_SIZE,\n      lineHeight: '120%',\n      boxSizing: 'border-box',\n      cursor: 'default',\n    },\n  },\n\n  TableInspectorHeaderContainer: {\n    base: {\n      top: 0,\n      height: '17px',\n      left: 0,\n      right: 0,\n      overflowX: 'hidden',\n    },\n    table: {\n      tableLayout: 'fixed',\n      borderSpacing: 0,\n      borderCollapse: 'separate',\n      height: '100%',\n      width: '100%',\n      margin: 0,\n    },\n  },\n\n  TableInspectorDataContainer: {\n    tr: {\n      display: 'table-row',\n    },\n    td: {\n      boxSizing: 'border-box',\n      border: 'none', // prevent overrides\n      height: '16px', // /* 0.5 * table.background-size height */\n      verticalAlign: 'top',\n      padding: '1px 4px',\n      WebkitUserSelect: 'text',\n\n      whiteSpace: 'nowrap',\n      textOverflow: 'ellipsis',\n      overflow: 'hidden',\n      lineHeight: '14px',\n    },\n    div: {\n      position: 'static',\n      top: '17px',\n      bottom: 0,\n      overflowY: 'overlay',\n      transform: 'translateZ(0)',\n\n      left: 0,\n      right: 0,\n      overflowX: 'hidden',\n    },\n    table: {\n      positon: 'static',\n      left: 0,\n      top: 0,\n      right: 0,\n      bottom: 0,\n      borderTop: '0 none transparent',\n      margin: 0, // prevent user agent stylesheet overrides\n\n      backgroundImage: theme.TABLE_DATA_BACKGROUND_IMAGE,\n      backgroundSize: theme.TABLE_DATA_BACKGROUND_SIZE,\n      tableLayout: 'fixed',\n\n      // table\n      borderSpacing: 0,\n      borderCollapse: 'separate',\n      // height: '100%',\n      width: '100%',\n\n      fontSize: theme.BASE_FONT_SIZE,\n      lineHeight: '120%',\n    },\n  },\n\n  TableInspectorTH: {\n    base: {\n      position: 'relative', // anchor for sort icon container\n      height: 'auto',\n      textAlign: 'left',\n      backgroundColor: theme.TABLE_TH_BACKGROUND_COLOR,\n      borderBottom: `1px solid ${theme.TABLE_BORDER_COLOR}`,\n      fontWeight: 'normal',\n      verticalAlign: 'middle',\n      padding: '0 4px',\n\n      whiteSpace: 'nowrap',\n      textOverflow: 'ellipsis',\n      overflow: 'hidden',\n      lineHeight: '14px',\n\n      ':hover': {\n        backgroundColor: theme.TABLE_TH_HOVER_COLOR,\n      },\n    },\n    div: {\n      whiteSpace: 'nowrap',\n      textOverflow: 'ellipsis',\n      overflow: 'hidden',\n\n      // prevent user agent stylesheet overrides\n      fontSize: theme.BASE_FONT_SIZE,\n      lineHeight: '120%',\n    },\n  },\n\n  TableInspectorLeftBorder: {\n    none: {\n      borderLeft: 'none',\n    },\n    solid: {\n      borderLeft: `1px solid ${theme.TABLE_BORDER_COLOR}`,\n    },\n  },\n\n  TableInspectorSortIcon: {\n    display: 'block',\n    marginRight: 3, // 4,\n    width: 8,\n    height: 7,\n\n    marginTop: -7,\n    color: theme.TABLE_SORT_ICON_COLOR,\n    fontSize: 12,\n    // lineHeight: 14\n    ...unselectable,\n  },\n});\n","export const DEFAULT_ROOT_PATH = '$';\n\nconst WILDCARD = '*';\n\nexport function hasChildNodes(data, dataIterator) {\n  return !dataIterator(data).next().done;\n}\n\nexport const wildcardPathsFromLevel = (level) => {\n  // i is depth\n  return Array.from({ length: level }, (_, i) =>\n    [DEFAULT_ROOT_PATH].concat(Array.from({ length: i }, () => '*')).join('.')\n  );\n};\n\nexport const getExpandedPaths = (data, dataIterator, expandPaths, expandLevel, prevExpandedPaths) => {\n  const wildcardPaths = []\n    .concat(wildcardPathsFromLevel(expandLevel))\n    .concat(expandPaths)\n    .filter((path) => typeof path === 'string'); // could be undefined\n\n  const expandedPaths = [];\n  wildcardPaths.forEach((wildcardPath) => {\n    const keyPaths = wildcardPath.split('.');\n    const populatePaths = (curData, curPath, depth) => {\n      if (depth === keyPaths.length) {\n        expandedPaths.push(curPath);\n        return;\n      }\n      const key = keyPaths[depth];\n      if (depth === 0) {\n        if (hasChildNodes(curData, dataIterator) && (key === DEFAULT_ROOT_PATH || key === WILDCARD)) {\n          populatePaths(curData, DEFAULT_ROOT_PATH, depth + 1);\n        }\n      } else {\n        if (key === WILDCARD) {\n          for (const { name, data } of dataIterator(curData)) {\n            if (hasChildNodes(data, dataIterator)) {\n              populatePaths(data, `${curPath}.${name}`, depth + 1);\n            }\n          }\n        } else {\n          const value = curData[key];\n          if (hasChildNodes(value, dataIterator)) {\n            populatePaths(value, `${curPath}.${key}`, depth + 1);\n          }\n        }\n      }\n    };\n\n    populatePaths(data, '', 0);\n  });\n\n  return expandedPaths.reduce(\n    (obj, path) => {\n      obj[path] = true;\n      return obj;\n    },\n    { ...prevExpandedPaths }\n  );\n};\n","import React, { FC } from 'react';\nimport { ObjectName } from '../object/ObjectName';\nimport { ObjectPreview } from './ObjectPreview';\n\nexport const ObjectRootLabel: FC<any> = ({ name, data }) => {\n  if (typeof name === 'string') {\n    return (\n      <span>\n        <ObjectName name={name} />\n        <span>: </span>\n        <ObjectPreview data={data} />\n      </span>\n    );\n  } else {\n    return <ObjectPreview data={data} />;\n  }\n};\n","import React, { FC } from 'react';\nimport { useStyles } from '../styles';\n\n/**\n * A view for object property names.\n *\n * If the property name is enumerable (in Object.keys(object)),\n * the property name will be rendered normally.\n *\n * If the property name is not enumerable (`Object.prototype.propertyIsEnumerable()`),\n * the property name will be dimmed to show the difference.\n */\nexport const ObjectName: FC<any> = ({ name, dimmed = false, styles = {} }) => {\n  const themeStyles = useStyles('ObjectName');\n  const appliedStyles = {\n    ...themeStyles.base,\n    ...(dimmed ? themeStyles['dimmed'] : {}),\n    ...styles,\n  };\n\n  return <span style={appliedStyles}>{name}</span>;\n};\n\n// ObjectName.propTypes = {\n//   /** Property name */\n//   name: PropTypes.string,\n//   /** Should property name be dimmed */\n//   dimmed: PropTypes.bool,\n// };\n","import React, { FC, ReactNode } from 'react';\n\nimport { ObjectValue } from '../object/ObjectValue';\nimport { ObjectName } from '../object/ObjectName';\n\nimport { useStyles } from '../styles';\n\nimport { hasOwnProperty } from '../utils/objectPrototype';\nimport { getPropertyValue } from '../utils/propertyUtils';\n\n/* intersperse arr with separator */\nfunction intersperse(arr: any[], sep: string) {\n  if (arr.length === 0) {\n    return [];\n  }\n\n  return arr.slice(1).reduce((xs, x) => xs.concat([sep, x]), [arr[0]]);\n}\n\n/**\n * A preview of the object\n */\nexport const ObjectPreview: FC<any> = ({ data }) => {\n  const styles = useStyles('ObjectPreview');\n  const object = data;\n\n  if (typeof object !== 'object' || object === null || object instanceof Date || object instanceof RegExp) {\n    return <ObjectValue object={object} />;\n  }\n\n  if (Array.isArray(object)) {\n    const maxProperties = styles.arrayMaxProperties;\n    const previewArray = object\n      .slice(0, maxProperties)\n      .map((element, index) => <ObjectValue key={index} object={element} />);\n    if (object.length > maxProperties) {\n      previewArray.push(<span key=\"ellipsis\">…</span>);\n    }\n    const arrayLength = object.length;\n    return (\n      <React.Fragment>\n        <span style={styles.objectDescription}>{arrayLength === 0 ? `` : `(${arrayLength})\\xa0`}</span>\n        <span style={styles.preview}>[{intersperse(previewArray, ', ')}]</span>\n      </React.Fragment>\n    );\n  } else {\n    const maxProperties = styles.objectMaxProperties;\n    const propertyNodes: ReactNode[] = [];\n    for (const propertyName in object) {\n      if (hasOwnProperty.call(object, propertyName)) {\n        let ellipsis;\n        if (propertyNodes.length === maxProperties - 1 && Object.keys(object).length > maxProperties) {\n          ellipsis = <span key={'ellipsis'}>…</span>;\n        }\n\n        const propertyValue = getPropertyValue(object, propertyName);\n        propertyNodes.push(\n          <span key={propertyName}>\n            <ObjectName name={propertyName || `\"\"`} />\n            :&nbsp;\n            <ObjectValue object={propertyValue} />\n            {ellipsis}\n          </span>\n        );\n        if (ellipsis) break;\n      }\n    }\n\n    const objectConstructorName = object.constructor ? object.constructor.name : 'Object';\n\n    return (\n      <React.Fragment>\n        <span style={styles.objectDescription}>\n          {objectConstructorName === 'Object' ? '' : `${objectConstructorName} `}\n        </span>\n        <span style={styles.preview}>\n          {'{'}\n          {intersperse(propertyNodes, ', ')}\n          {'}'}\n        </span>\n      </React.Fragment>\n    );\n  }\n};\n","import React, { FC } from 'react';\n\nimport { useStyles } from '../styles';\n\n/**\n * A short description of the object values.\n * Can be used to render tree node in ObjectInspector\n * or render objects in TableInspector.\n */\nexport const ObjectValue: FC<any> = ({ object, styles }) => {\n  const themeStyles = useStyles('ObjectValue');\n\n  const mkStyle = (key: any) => ({ ...themeStyles[key], ...styles });\n\n  switch (typeof object) {\n    case 'bigint':\n      return <span style={mkStyle('objectValueNumber')}>{String(object)}n</span>;\n    case 'number':\n      return <span style={mkStyle('objectValueNumber')}>{String(object)}</span>;\n    case 'string':\n      return <span style={mkStyle('objectValueString')}>\"{object}\"</span>;\n    case 'boolean':\n      return <span style={mkStyle('objectValueBoolean')}>{String(object)}</span>;\n    case 'undefined':\n      return <span style={mkStyle('objectValueUndefined')}>undefined</span>;\n    case 'object':\n      if (object === null) {\n        return <span style={mkStyle('objectValueNull')}>null</span>;\n      }\n      if (object instanceof Date) {\n        return <span>{object.toString()}</span>;\n      }\n      if (object instanceof RegExp) {\n        return <span style={mkStyle('objectValueRegExp')}>{object.toString()}</span>;\n      }\n      if (Array.isArray(object)) {\n        return <span>{`Array(${object.length})`}</span>;\n      }\n      if (!object.constructor) {\n        return <span>Object</span>;\n      }\n      if (typeof object.constructor.isBuffer === 'function' && object.constructor.isBuffer(object)) {\n        return <span>{`Buffer[${object.length}]`}</span>;\n      }\n\n      return <span>{object.constructor.name}</span>;\n    case 'function':\n      return (\n        <span>\n          <span style={mkStyle('objectValueFunctionPrefix')}>ƒ&nbsp;</span>\n          <span style={mkStyle('objectValueFunctionName')}>{object.name}()</span>\n        </span>\n      );\n    case 'symbol':\n      return <span style={mkStyle('objectValueSymbol')}>{object.toString()}</span>;\n    default:\n      return <span />;\n  }\n};\n\n// ObjectValue.propTypes = {\n//   // the object to describe\n//   object: PropTypes.any,\n// };\n","export const hasOwnProperty = Object.prototype.hasOwnProperty;\nexport const propertyIsEnumerable = Object.prototype.propertyIsEnumerable;\n","export function getPropertyValue(object, propertyName) {\n  const propertyDescriptor = Object.getOwnPropertyDescriptor(object, propertyName);\n  if (propertyDescriptor.get) {\n    try {\n      return propertyDescriptor.get();\n    } catch {\n      return propertyDescriptor.get;\n    }\n  }\n\n  return object[propertyName];\n}\n","import React, { FC } from 'react';\nimport { ObjectName } from '../object/ObjectName';\nimport { ObjectValue } from '../object/ObjectValue';\nimport { ObjectPreview } from './ObjectPreview';\n\n/**\n * if isNonenumerable is specified, render the name dimmed\n */\nexport const ObjectLabel: FC<any> = ({ name, data, isNonenumerable = false }) => {\n  const object = data;\n\n  return (\n    <span>\n      {typeof name === 'string' ? <ObjectName name={name} dimmed={isNonenumerable} /> : <ObjectPreview data={name} />}\n      <span>: </span>\n      <ObjectValue object={object} />\n    </span>\n  );\n};\n\n// ObjectLabel.propTypes = {\n//   /** Non enumerable object property will be dimmed */\n//   isNonenumerable: PropTypes.bool,\n// };\n","/**\n * Specs:\n * https://developer.chrome.com/devtools/docs/commandline-api#tabledata-columns\n * https://developer.mozilla.org/en-US/docs/Web/API/Console/table\n */\n\nimport React, { FC, useCallback, useState } from 'react';\n\nimport { getHeaders } from './getHeaders';\nimport { DataContainer } from './DataContainer';\nimport { HeaderContainer } from './HeaderContainer';\n\nimport { themeAcceptor, useStyles } from '../styles';\n\nconst TableInspector: FC<any> = ({\n  // The JS object you would like to inspect, either an array or an object\n  data,\n  // An array of the names of the columns you'd like to display in the table\n  columns,\n}) => {\n  const styles = useStyles('TableInspector');\n\n  const [{ sorted, sortIndexColumn, sortColumn, sortAscending }, setState] = useState({\n    // has user ever clicked the <th> tag to sort?\n    sorted: false,\n    // is index column sorted?\n    sortIndexColumn: false,\n    // which column is sorted?\n    sortColumn: undefined,\n    // is sorting ascending or descending?\n    sortAscending: false,\n  });\n\n  const handleIndexTHClick = useCallback(() => {\n    setState(({ sortIndexColumn, sortAscending }) => ({\n      sorted: true,\n      sortIndexColumn: true,\n      sortColumn: undefined,\n      // when changed to a new column, default to asending\n      sortAscending: sortIndexColumn ? !sortAscending : true,\n    }));\n  }, []);\n\n  const handleTHClick = useCallback((col) => {\n    setState(({ sortColumn, sortAscending }) => ({\n      sorted: true,\n      sortIndexColumn: false,\n      // update sort column\n      sortColumn: col,\n      // when changed to a new column, default to asending\n      sortAscending: col === sortColumn ? !sortAscending : true,\n    }));\n  }, []);\n\n  if (typeof data !== 'object' || data === null) {\n    return <div />;\n  }\n\n  let { rowHeaders, colHeaders } = getHeaders(data);\n\n  // columns to be displayed are specified\n  // NOTE: there's some space for optimization here\n  if (columns !== undefined) {\n    colHeaders = columns;\n  }\n\n  let rowsData = rowHeaders.map((rowHeader) => data[rowHeader]);\n\n  let columnDataWithRowIndexes; /* row indexes are [0..nRows-1] */\n  // TODO: refactor\n  if (sortColumn !== undefined) {\n    // the column to be sorted (rowsData, column) => [[columnData, rowIndex]]\n    columnDataWithRowIndexes = rowsData.map((rowData, index: number) => {\n      // normalize rowData\n      if (typeof rowData === 'object' && rowData !== null /*&& rowData.hasOwnProperty(sortColumn)*/) {\n        const columnData = rowData[sortColumn];\n        return [columnData, index];\n      }\n      return [undefined, index];\n    });\n  } else {\n    if (sortIndexColumn) {\n      columnDataWithRowIndexes = rowHeaders.map((rowData, index: number) => {\n        const columnData = rowHeaders[index];\n        return [columnData, index];\n      });\n    }\n  }\n  if (columnDataWithRowIndexes !== undefined) {\n    // apply a mapper before sorting (because we need to access inside a container)\n    const comparator = (mapper, ascending) => {\n      return (a, b) => {\n        const v1 = mapper(a); // the datum\n        const v2 = mapper(b);\n        const type1 = typeof v1;\n        const type2 = typeof v2;\n        // use '<' operator to compare same type of values or compare type precedence order #\n        const lt = (v1, v2) => {\n          if (v1 < v2) {\n            return -1;\n          } else if (v1 > v2) {\n            return 1;\n          } else {\n            return 0;\n          }\n        };\n        let result;\n        if (type1 === type2) {\n          result = lt(v1, v2);\n        } else {\n          // order of different types\n          const order = {\n            string: 0,\n            number: 1,\n            object: 2,\n            symbol: 3,\n            boolean: 4,\n            undefined: 5,\n            function: 6,\n          };\n          result = lt(order[type1], order[type2]);\n        }\n        // reverse result if descending\n        if (!ascending) result = -result;\n        return result;\n      };\n    };\n    const sortedRowIndexes = columnDataWithRowIndexes\n      .sort(comparator((item) => item[0], sortAscending))\n      .map((item) => item[1]); // sorted row indexes\n    rowHeaders = sortedRowIndexes.map((i) => rowHeaders[i]);\n    rowsData = sortedRowIndexes.map((i) => rowsData[i]);\n  }\n\n  return (\n    <div style={styles.base}>\n      <HeaderContainer\n        columns={colHeaders}\n        /* for sorting */\n        sorted={sorted}\n        sortIndexColumn={sortIndexColumn}\n        sortColumn={sortColumn}\n        sortAscending={sortAscending}\n        onTHClick={handleTHClick}\n        onIndexTHClick={handleIndexTHClick}\n      />\n      <DataContainer rows={rowHeaders} columns={colHeaders} rowsData={rowsData} />\n    </div>\n  );\n};\n\n// TableInspector.propTypes = {\n//   /**\n//    * the Javascript object you would like to inspect, either an array or an object\n//    */\n//   data: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n//   /**\n//    * An array of the names of the columns you'd like to display in the table\n//    */\n//   columns: PropTypes.array,\n// };\n\nconst themedTableInspector = themeAcceptor(TableInspector);\n\nexport { themedTableInspector as TableInspector };\n","export function getHeaders(data): any {\n  if (typeof data === 'object') {\n    let rowHeaders: any[] = [];\n    // is an array\n    if (Array.isArray(data)) {\n      const nRows = data.length;\n      rowHeaders = [...Array(nRows).keys()];\n    } else if (data !== null) {\n      // is an object\n      // keys are row indexes\n      rowHeaders = Object.keys(data);\n    }\n\n    // Time: O(nRows * nCols)\n    const colHeaders = rowHeaders.reduce((colHeaders, rowHeader) => {\n      const row = data[rowHeader];\n      if (typeof row === 'object' && row !== null) {\n        /* O(nCols) Could optimize `includes` here */\n        const cols = Object.keys(row);\n        cols.reduce((xs, x) => {\n          if (!xs.includes(x)) {\n            /* xs is the colHeaders to be filled by searching the row's indexes */\n            xs.push(x);\n          }\n          return xs;\n        }, colHeaders);\n      }\n      return colHeaders;\n    }, []);\n    return {\n      rowHeaders: rowHeaders,\n      colHeaders: colHeaders,\n    };\n  }\n  return undefined;\n}\n","import React from 'react';\nimport { ObjectValue } from '../object/ObjectValue';\n\nimport { hasOwnProperty } from '../utils/objectPrototype';\n\nimport { useStyles } from '../styles';\n\nexport const DataContainer = ({ rows, columns, rowsData }) => {\n  const styles = useStyles('TableInspectorDataContainer');\n  const borderStyles = useStyles('TableInspectorLeftBorder');\n\n  return (\n    <div style={styles.div}>\n      <table style={styles.table}>\n        <colgroup />\n        <tbody>\n          {rows.map((row, i) => (\n            <tr key={row} style={styles.tr}>\n              <td style={{ ...styles.td, ...borderStyles.none }}>{row}</td>\n\n              {columns.map((column) => {\n                const rowData = rowsData[i];\n                // rowData could be\n                //  object -> index by key\n                //    array -> index by array index\n                //    null -> pass\n                //  boolean -> pass\n                //  string -> pass (hasOwnProperty returns true for [0..len-1])\n                //  number -> pass\n                //  function -> pass\n                //  symbol\n                //  undefined -> pass\n                if (typeof rowData === 'object' && rowData !== null && hasOwnProperty.call(rowData, column)) {\n                  return (\n                    <td key={column} style={{ ...styles.td, ...borderStyles.solid }}>\n                      <ObjectValue object={rowData[column]} />\n                    </td>\n                  );\n                } else {\n                  return <td key={column} style={{ ...styles.td, ...borderStyles.solid }} />;\n                }\n              })}\n            </tr>\n          ))}\n        </tbody>\n      </table>\n    </div>\n  );\n};\n","import React from 'react';\nimport { useStyles } from '../styles';\nimport { TH } from './TH';\n\nexport const HeaderContainer = ({\n  indexColumnText = '(index)',\n  columns = [],\n  sorted,\n  sortIndexColumn,\n  sortColumn,\n  sortAscending,\n  onTHClick,\n  onIndexTHClick,\n}) => {\n  const styles = useStyles('TableInspectorHeaderContainer');\n  const borderStyles = useStyles('TableInspectorLeftBorder');\n  return (\n    <div style={styles.base}>\n      <table style={styles.table}>\n        <tbody>\n          <tr>\n            <TH\n              borderStyle={borderStyles.none}\n              sorted={sorted && sortIndexColumn}\n              sortAscending={sortAscending}\n              onClick={onIndexTHClick}>\n              {indexColumnText}\n            </TH>\n            {columns.map((column) => (\n              <TH\n                borderStyle={borderStyles.solid}\n                key={column}\n                sorted={sorted && sortColumn === column}\n                sortAscending={sortAscending}\n                onClick={onTHClick.bind(null, column)}>\n                {column}\n              </TH>\n            ))}\n          </tr>\n        </tbody>\n      </table>\n    </div>\n  );\n};\n","import React, { useCallback, useState } from 'react';\n\nimport { useStyles } from '../styles';\n\nconst SortIconContainer = (props) => (\n  <div\n    style={{\n      position: 'absolute',\n      top: 1,\n      right: 0,\n      bottom: 1,\n      display: 'flex',\n      alignItems: 'center',\n    }}>\n    {props.children}\n  </div>\n);\n\nconst SortIcon = ({ sortAscending }) => {\n  const styles = useStyles('TableInspectorSortIcon');\n  const glyph = sortAscending ? '▲' : '▼';\n  return <div style={styles}>{glyph}</div>;\n};\n\nexport const TH = ({\n  sortAscending = false,\n  sorted = false,\n  onClick = undefined,\n  borderStyle = {},\n  children,\n  ...thProps\n}) => {\n  const styles = useStyles('TableInspectorTH');\n  const [hovered, setHovered] = useState(false);\n\n  const handleMouseEnter = useCallback(() => setHovered(true), []);\n  const handleMouseLeave = useCallback(() => setHovered(false), []);\n\n  return (\n    <th\n      {...thProps}\n      style={{\n        ...styles.base,\n        ...borderStyle,\n        ...(hovered ? styles.base[':hover'] : {}),\n      }}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      onClick={onClick}>\n      <div style={styles.div}>{children}</div>\n      {sorted && (\n        <SortIconContainer>\n          <SortIcon sortAscending={sortAscending} />\n        </SortIconContainer>\n      )}\n    </th>\n  );\n};\n","import React, { FC } from 'react';\n\nimport { DOMNodePreview } from './DOMNodePreview';\nimport { TreeView } from '../tree-view/TreeView';\n\nimport { shouldInline } from './shouldInline';\nimport { themeAcceptor } from '../styles';\n\nconst domIterator = function* (data: any) {\n  if (data && data.childNodes) {\n    const textInlined = shouldInline(data);\n\n    if (textInlined) {\n      return;\n    }\n\n    for (let i = 0; i < data.childNodes.length; i++) {\n      const node = data.childNodes[i];\n\n      if (node.nodeType === Node.TEXT_NODE && node.textContent.trim().length === 0) continue;\n\n      yield {\n        name: `${node.tagName}[${i}]`,\n        data: node,\n      };\n    }\n\n    // at least 1 child node\n    if (data.tagName) {\n      yield {\n        name: 'CLOSE_TAG',\n        data: {\n          tagName: data.tagName,\n        },\n        isCloseTag: true,\n      };\n    }\n  }\n};\n\nconst DOMInspector: FC<any> = (props) => {\n  return <TreeView nodeRenderer={DOMNodePreview} dataIterator={domIterator} {...props} />;\n};\n\n// DOMInspector.propTypes = {\n//   // The DOM Node to inspect\n//   data: PropTypes.object.isRequired,\n// };\n\nconst themedDOMInspector = themeAcceptor(DOMInspector);\n\nexport { themedDOMInspector as DOMInspector };\n","import React, { FC, ReactChild } from 'react';\n\nimport { useStyles } from '../styles';\nimport { shouldInline } from './shouldInline';\n\nconst OpenTag: FC<any> = ({ tagName, attributes, styles }) => {\n  return (\n    <span style={styles.base}>\n      {'<'}\n      <span style={styles.tagName}>{tagName}</span>\n\n      {(() => {\n        if (attributes) {\n          const attributeNodes: ReactChild[] = [];\n          for (let i = 0; i < attributes.length; i++) {\n            const attribute = attributes[i];\n            attributeNodes.push(\n              <span key={i}>\n                {' '}\n                <span style={styles.htmlAttributeName}>{attribute.name}</span>\n                {'=\"'}\n                <span style={styles.htmlAttributeValue}>{attribute.value}</span>\n                {'\"'}\n              </span>\n            );\n          }\n          return attributeNodes;\n        }\n      })()}\n\n      {'>'}\n    </span>\n  );\n};\n\n// isChildNode style={{ marginLeft: -12 /* hack: offset placeholder */ }}\nconst CloseTag = ({ tagName, isChildNode = false, styles }) => (\n  <span style={Object.assign({}, styles.base, isChildNode && styles.offsetLeft)}>\n    {'</'}\n    <span style={styles.tagName}>{tagName}</span>\n    {'>'}\n  </span>\n);\n\nconst nameByNodeType = {\n  1: 'ELEMENT_NODE',\n  3: 'TEXT_NODE',\n  7: 'PROCESSING_INSTRUCTION_NODE',\n  8: 'COMMENT_NODE',\n  9: 'DOCUMENT_NODE',\n  10: 'DOCUMENT_TYPE_NODE', // http://stackoverflow.com/questions/6088972/get-doctype-of-an-html-as-string-with-javascript\n  11: 'DOCUMENT_FRAGMENT_NODE',\n};\n\nexport const DOMNodePreview: FC<any> = ({ isCloseTag, data, expanded }) => {\n  const styles = useStyles('DOMNodePreview');\n\n  if (isCloseTag) {\n    return <CloseTag styles={styles.htmlCloseTag} isChildNode tagName={data.tagName} />;\n  }\n\n  switch (data.nodeType) {\n    case Node.ELEMENT_NODE:\n      return (\n        <span>\n          <OpenTag tagName={data.tagName} attributes={data.attributes} styles={styles.htmlOpenTag} />\n\n          {shouldInline(data) ? data.textContent : !expanded && '…'}\n\n          {!expanded && <CloseTag tagName={data.tagName} styles={styles.htmlCloseTag} />}\n        </span>\n      );\n    case Node.TEXT_NODE:\n      return <span>{data.textContent}</span>;\n    case Node.CDATA_SECTION_NODE:\n      return <span>{'<![CDATA[' + data.textContent + ']]>'}</span>;\n    case Node.COMMENT_NODE:\n      return (\n        <span style={styles.htmlComment}>\n          {'<!--'}\n          {data.textContent}\n          {'-->'}\n        </span>\n      );\n    case Node.PROCESSING_INSTRUCTION_NODE:\n      return <span>{data.nodeName}</span>;\n    case Node.DOCUMENT_TYPE_NODE:\n      return (\n        <span style={styles.htmlDoctype}>\n          {'<!DOCTYPE '}\n          {data.name}\n          {data.publicId ? ` PUBLIC \"${data.publicId}\"` : ''}\n          {!data.publicId && data.systemId ? ' SYSTEM' : ''}\n          {data.systemId ? ` \"${data.systemId}\"` : ''}\n          {'>'}\n        </span>\n      );\n    case Node.DOCUMENT_NODE:\n      return <span>{data.nodeName}</span>;\n    case Node.DOCUMENT_FRAGMENT_NODE:\n      return <span>{data.nodeName}</span>;\n    default:\n      return <span>{nameByNodeType[data.nodeType]}</span>;\n  }\n};\n\n// DOMNodePreview.propTypes = {\n//   /** If true, just render a close tag */\n//   isCloseTag: PropTypes.bool,\n//   /**  */\n//   name: PropTypes.string,\n//   /** The DOM Node */\n//   data: PropTypes.object.isRequired,\n//   /** Whether the DOM node has been expanded. */\n//   expanded: PropTypes.bool.isRequired,\n// };\n","const TEXT_NODE_MAX_INLINE_CHARS = 80;\n\nexport const shouldInline = (data) =>\n  data.childNodes.length === 0 ||\n  (data.childNodes.length === 1 &&\n    data.childNodes[0].nodeType === Node.TEXT_NODE &&\n    data.textContent.length < TEXT_NODE_MAX_INLINE_CHARS);\n"],"mappings":"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","names":["exports","module","exports","module","exports","module","theme","theme","theme","import_react","import_react","import_react","import_react","theme","theme","React","React","data","React","data","import_react","import_react","React","import_react","import_react","React","React","React","import_react","React","React","import_react","colHeaders","import_react","React","import_react","import_react","React","React","sortIndexColumn","sortAscending","sortColumn","React","v1","v2","import_react","import_react","React","React","import_react","React","isDOM"]}