@deephaven/components 0.19.2-beta.11 → 0.19.2-beta.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../src/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAGnE,QAAA,MAAM,YAAY,uFAQR,CAAC;AACX,aAAK,WAAW,GAAG,OAAO,YAAY,CAAC;AACvC,aAAK,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AAEtC,QAAA,MAAM,aAAa,wBAAyB,CAAC;AAC7C,aAAK,YAAY,GAAG,OAAO,aAAa,CAAC;AACzC,aAAK,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;AAExC,aAAK,WAAW,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEjD,UAAU,eAAgB,SAAQ,KAAK,CAAC,qBAAqB,CAAC,QAAQ,CAAC;IACrE,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IAC/B,IAAI,CAAC,EAAE,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC;IACpC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,aAAK,kBAAkB,GAAG,eAAe,GAAG;IAC1C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,aAAK,2BAA2B,GAAG,eAAe,GAAG;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC;IACnC,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,aAAK,wBAAwB,GAAG,eAAe,GAAG;IAChD,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC;IACnC,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAmCF,QAAA,MAAM,MAAM,4wcA2FX,CAAC;AAiEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../src/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAGnE,QAAA,MAAM,YAAY,uFAQR,CAAC;AACX,aAAK,WAAW,GAAG,OAAO,YAAY,CAAC;AACvC,aAAK,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AAEtC,QAAA,MAAM,aAAa,wBAAyB,CAAC;AAC7C,aAAK,YAAY,GAAG,OAAO,aAAa,CAAC;AACzC,aAAK,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;AAExC,aAAK,WAAW,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEjD,UAAU,eAAgB,SAAQ,KAAK,CAAC,qBAAqB,CAAC,QAAQ,CAAC;IACrE,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IAC/B,IAAI,CAAC,EAAE,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC;IACpC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,aAAK,kBAAkB,GAAG,eAAe,GAAG;IAC1C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,aAAK,2BAA2B,GAAG,eAAe,GAAG;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC;IACnC,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,aAAK,wBAAwB,GAAG,eAAe,GAAG;IAChD,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC;IACnC,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAmCF,QAAA,MAAM,MAAM,4wcAiGX,CAAC;AAuEF,eAAe,MAAM,CAAC"}
package/dist/Button.js CHANGED
@@ -51,9 +51,12 @@ var Button = /*#__PURE__*/React.forwardRef((props, ref) => {
51
51
  disabled,
52
52
  active,
53
53
  onClick,
54
+ onMouseDown,
55
+ onMouseUp,
54
56
  className,
55
57
  style,
56
58
  children,
59
+ tabIndex,
57
60
  'data-testid': dataTestId,
58
61
  'aria-label': ariaLabel
59
62
  } = props;
@@ -96,8 +99,11 @@ var Button = /*#__PURE__*/React.forwardRef((props, ref) => {
96
99
  active
97
100
  }, className),
98
101
  onClick: onClick,
102
+ onMouseUp: onMouseUp,
103
+ onMouseDown: onMouseDown,
99
104
  style: style,
100
105
  disabled: disabled,
106
+ tabIndex: tabIndex,
101
107
  "aria-label": ariaLabelString
102
108
  }, icon && iconElem, children, tooltip != null && (disabled === undefined || !disabled) && tooltipElem); // disabled buttons tooltips need a wrapped element to receive pointer events
103
109
  // https://jakearchibald.com/2017/events-and-disabled-form-fields/
@@ -163,6 +169,9 @@ Button.propTypes = {
163
169
  return null;
164
170
  },
165
171
 
172
+ onMouseUp: PropTypes.func,
173
+ onMouseDown: PropTypes.func,
174
+ tabIndex: PropTypes.number,
166
175
  children: PropTypes.node,
167
176
  className: PropTypes.string,
168
177
  style: PropTypes.object,
@@ -171,11 +180,14 @@ Button.propTypes = {
171
180
  Button.defaultProps = {
172
181
  type: 'button',
173
182
  onClick: undefined,
183
+ onMouseUp: undefined,
184
+ onMouseDown: undefined,
174
185
  variant: undefined,
175
186
  tooltip: undefined,
176
187
  icon: undefined,
177
188
  disabled: false,
178
189
  active: undefined,
190
+ tabIndex: undefined,
179
191
  children: undefined,
180
192
  className: undefined,
181
193
  style: {},
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","names":["React","PropTypes","classNames","FontAwesomeIcon","Tooltip","BUTTON_KINDS","VARIANT_KINDS","getClassName","kind","iconOnly","getVariantClasses","Button","forwardRef","props","ref","variant","type","tooltip","icon","disabled","active","onClick","className","style","children","dataTestId","ariaLabel","Boolean","btnClassName","variantClassName","iconElem","isValidElement","tooltipElem","undefined","ariaLabelString","button","displayName","propTypes","oneOf","isRequired","Error","iconName","bool","node","string","object","defaultProps"],"sources":["../src/Button.tsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core';\nimport { Tooltip } from './popper';\n\nconst BUTTON_KINDS = [\n 'primary',\n 'secondary',\n 'tertiary',\n 'success',\n 'danger',\n 'inline',\n 'ghost',\n] as const;\ntype ButtonTuple = typeof BUTTON_KINDS;\ntype ButtonKind = ButtonTuple[number];\n\nconst VARIANT_KINDS = ['group-end'] as const;\ntype VariantTuple = typeof VARIANT_KINDS;\ntype VariantKind = VariantTuple[number];\n\ntype ButtonTypes = 'submit' | 'reset' | 'button';\n\ninterface BaseButtonProps extends React.ComponentPropsWithRef<'button'> {\n kind: ButtonKind;\n type?: ButtonTypes;\n variant?: VariantKind;\n tooltip?: string | JSX.Element;\n icon?: IconDefinition | JSX.Element;\n active?: boolean;\n 'data-testid'?: string;\n 'aria-label'?: string;\n}\n\ntype ButtonWithChildren = BaseButtonProps & {\n children: React.ReactNode;\n};\n\ntype IconOnlyButtonStringTooltip = BaseButtonProps & {\n tooltip: string;\n icon: IconDefinition | JSX.Element;\n children?: undefined;\n};\n\ntype IconOnlyButtonJsxTooltip = BaseButtonProps & {\n tooltip: JSX.Element;\n 'aria-label': string;\n icon: IconDefinition | JSX.Element;\n children?: undefined;\n};\n\ntype IconOnlyButton = IconOnlyButtonStringTooltip | IconOnlyButtonJsxTooltip;\n\ntype ButtonProps = IconOnlyButton | ButtonWithChildren;\n\nfunction getClassName(kind: ButtonKind, iconOnly: boolean): string {\n switch (kind) {\n case 'primary':\n return 'btn-primary';\n case 'secondary':\n return 'btn-outline-primary';\n case 'tertiary':\n return 'btn-secondary';\n case 'success':\n return 'btn-success';\n case 'danger':\n return 'btn-danger';\n case 'inline':\n return 'btn-inline';\n case 'ghost':\n return classNames('btn-link', {\n 'btn-link-icon': iconOnly,\n 'btn-link-icon-only': iconOnly,\n });\n }\n}\n\nfunction getVariantClasses(kind: VariantKind): string {\n switch (kind) {\n case 'group-end':\n return classNames('pl-2', 'pr-3');\n }\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (props: ButtonProps, ref) => {\n const {\n kind,\n variant,\n type,\n tooltip,\n icon,\n disabled,\n active,\n onClick,\n className,\n style,\n children,\n 'data-testid': dataTestId,\n 'aria-label': ariaLabel,\n } = props;\n\n const iconOnly = Boolean(icon && children == null);\n const btnClassName = getClassName(kind, iconOnly);\n\n let variantClassName;\n if (variant) {\n variantClassName = getVariantClasses(variant);\n }\n\n let iconElem: JSX.Element | undefined;\n if (icon) {\n iconElem = React.isValidElement(icon) ? (\n icon\n ) : (\n <FontAwesomeIcon icon={icon as IconDefinition} />\n );\n }\n\n let tooltipElem: JSX.Element | undefined;\n if (tooltip !== undefined) {\n tooltipElem =\n typeof tooltip === 'string' ? <Tooltip>{tooltip}</Tooltip> : tooltip;\n }\n\n // use tooltip as arial-label for iconOnly buttons only\n // if tooltip is also a string and aria-label is not set\n let ariaLabelString = ariaLabel;\n if (\n ariaLabel === undefined &&\n iconOnly &&\n tooltip != null &&\n typeof tooltip === 'string'\n ) {\n ariaLabelString = tooltip;\n }\n\n const button = (\n <button\n data-testid={dataTestId}\n ref={ref}\n // eslint-disable-next-line react/button-has-type\n type={type}\n className={classNames(\n 'btn',\n btnClassName,\n variantClassName,\n { active },\n className\n )}\n onClick={onClick}\n style={style}\n disabled={disabled}\n aria-label={ariaLabelString}\n >\n {icon && iconElem}\n {children}\n {tooltip != null &&\n (disabled === undefined || !disabled) &&\n tooltipElem}\n </button>\n );\n\n // disabled buttons tooltips need a wrapped element to receive pointer events\n // https://jakearchibald.com/2017/events-and-disabled-form-fields/\n\n return disabled !== undefined && disabled ? (\n <span className=\"btn-disabled-wrapper\">\n {button}\n {tooltip !== undefined && tooltipElem}\n </span>\n ) : (\n button\n );\n }\n);\n\nButton.displayName = 'Button';\n\nButton.propTypes = {\n kind: PropTypes.oneOf(BUTTON_KINDS).isRequired,\n variant: PropTypes.oneOf(VARIANT_KINDS),\n type: PropTypes.oneOf<ButtonTypes>(['submit', 'reset', 'button']),\n tooltip(props) {\n const { tooltip, icon, children } = props;\n if (tooltip === undefined && icon != null && children == null) {\n return new Error('Tooltip is required for icon only buttons');\n }\n return null;\n },\n icon(props) {\n const { children, icon } = props;\n if (icon == null && children == null) {\n return new Error('Icon is required if no children are provided');\n }\n\n if (\n children == null &&\n !React.isValidElement(icon) &&\n (icon == null || icon.iconName === '' || icon.iconName == null)\n ) {\n return new Error(\n 'Icon must be react element or fontawesome IconDefinition'\n );\n }\n\n return null;\n },\n disabled: PropTypes.bool,\n active: PropTypes.bool,\n onClick(props) {\n const { onClick, type } = props;\n if (type === 'button' && typeof onClick !== 'function') {\n return new Error('type button requires an onClick function');\n }\n if (onClick !== undefined && typeof onClick !== 'function') {\n return new Error('onClick must be a function');\n }\n return null;\n },\n children: PropTypes.node,\n className: PropTypes.string,\n style: PropTypes.object,\n 'data-testid': PropTypes.string,\n};\n\nButton.defaultProps = {\n type: 'button',\n onClick: undefined,\n variant: undefined,\n tooltip: undefined,\n icon: undefined,\n disabled: false,\n active: undefined,\n children: undefined,\n className: undefined,\n style: {},\n 'data-testid': undefined,\n};\n\nexport default Button;\n"],"mappings":"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"}
1
+ {"version":3,"file":"Button.js","names":["React","PropTypes","classNames","FontAwesomeIcon","Tooltip","BUTTON_KINDS","VARIANT_KINDS","getClassName","kind","iconOnly","getVariantClasses","Button","forwardRef","props","ref","variant","type","tooltip","icon","disabled","active","onClick","onMouseDown","onMouseUp","className","style","children","tabIndex","dataTestId","ariaLabel","Boolean","btnClassName","variantClassName","iconElem","isValidElement","tooltipElem","undefined","ariaLabelString","button","displayName","propTypes","oneOf","isRequired","Error","iconName","bool","func","number","node","string","object","defaultProps"],"sources":["../src/Button.tsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core';\nimport { Tooltip } from './popper';\n\nconst BUTTON_KINDS = [\n 'primary',\n 'secondary',\n 'tertiary',\n 'success',\n 'danger',\n 'inline',\n 'ghost',\n] as const;\ntype ButtonTuple = typeof BUTTON_KINDS;\ntype ButtonKind = ButtonTuple[number];\n\nconst VARIANT_KINDS = ['group-end'] as const;\ntype VariantTuple = typeof VARIANT_KINDS;\ntype VariantKind = VariantTuple[number];\n\ntype ButtonTypes = 'submit' | 'reset' | 'button';\n\ninterface BaseButtonProps extends React.ComponentPropsWithRef<'button'> {\n kind: ButtonKind;\n type?: ButtonTypes;\n variant?: VariantKind;\n tooltip?: string | JSX.Element;\n icon?: IconDefinition | JSX.Element;\n active?: boolean;\n 'data-testid'?: string;\n 'aria-label'?: string;\n}\n\ntype ButtonWithChildren = BaseButtonProps & {\n children: React.ReactNode;\n};\n\ntype IconOnlyButtonStringTooltip = BaseButtonProps & {\n tooltip: string;\n icon: IconDefinition | JSX.Element;\n children?: undefined;\n};\n\ntype IconOnlyButtonJsxTooltip = BaseButtonProps & {\n tooltip: JSX.Element;\n 'aria-label': string;\n icon: IconDefinition | JSX.Element;\n children?: undefined;\n};\n\ntype IconOnlyButton = IconOnlyButtonStringTooltip | IconOnlyButtonJsxTooltip;\n\ntype ButtonProps = IconOnlyButton | ButtonWithChildren;\n\nfunction getClassName(kind: ButtonKind, iconOnly: boolean): string {\n switch (kind) {\n case 'primary':\n return 'btn-primary';\n case 'secondary':\n return 'btn-outline-primary';\n case 'tertiary':\n return 'btn-secondary';\n case 'success':\n return 'btn-success';\n case 'danger':\n return 'btn-danger';\n case 'inline':\n return 'btn-inline';\n case 'ghost':\n return classNames('btn-link', {\n 'btn-link-icon': iconOnly,\n 'btn-link-icon-only': iconOnly,\n });\n }\n}\n\nfunction getVariantClasses(kind: VariantKind): string {\n switch (kind) {\n case 'group-end':\n return classNames('pl-2', 'pr-3');\n }\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (props: ButtonProps, ref) => {\n const {\n kind,\n variant,\n type,\n tooltip,\n icon,\n disabled,\n active,\n onClick,\n onMouseDown,\n onMouseUp,\n className,\n style,\n children,\n tabIndex,\n 'data-testid': dataTestId,\n 'aria-label': ariaLabel,\n } = props;\n\n const iconOnly = Boolean(icon && children == null);\n const btnClassName = getClassName(kind, iconOnly);\n\n let variantClassName;\n if (variant) {\n variantClassName = getVariantClasses(variant);\n }\n\n let iconElem: JSX.Element | undefined;\n if (icon) {\n iconElem = React.isValidElement(icon) ? (\n icon\n ) : (\n <FontAwesomeIcon icon={icon as IconDefinition} />\n );\n }\n\n let tooltipElem: JSX.Element | undefined;\n if (tooltip !== undefined) {\n tooltipElem =\n typeof tooltip === 'string' ? <Tooltip>{tooltip}</Tooltip> : tooltip;\n }\n\n // use tooltip as arial-label for iconOnly buttons only\n // if tooltip is also a string and aria-label is not set\n let ariaLabelString = ariaLabel;\n if (\n ariaLabel === undefined &&\n iconOnly &&\n tooltip != null &&\n typeof tooltip === 'string'\n ) {\n ariaLabelString = tooltip;\n }\n\n const button = (\n <button\n data-testid={dataTestId}\n ref={ref}\n // eslint-disable-next-line react/button-has-type\n type={type}\n className={classNames(\n 'btn',\n btnClassName,\n variantClassName,\n { active },\n className\n )}\n onClick={onClick}\n onMouseUp={onMouseUp}\n onMouseDown={onMouseDown}\n style={style}\n disabled={disabled}\n tabIndex={tabIndex}\n aria-label={ariaLabelString}\n >\n {icon && iconElem}\n {children}\n {tooltip != null &&\n (disabled === undefined || !disabled) &&\n tooltipElem}\n </button>\n );\n\n // disabled buttons tooltips need a wrapped element to receive pointer events\n // https://jakearchibald.com/2017/events-and-disabled-form-fields/\n\n return disabled !== undefined && disabled ? (\n <span className=\"btn-disabled-wrapper\">\n {button}\n {tooltip !== undefined && tooltipElem}\n </span>\n ) : (\n button\n );\n }\n);\n\nButton.displayName = 'Button';\n\nButton.propTypes = {\n kind: PropTypes.oneOf(BUTTON_KINDS).isRequired,\n variant: PropTypes.oneOf(VARIANT_KINDS),\n type: PropTypes.oneOf<ButtonTypes>(['submit', 'reset', 'button']),\n tooltip(props) {\n const { tooltip, icon, children } = props;\n if (tooltip === undefined && icon != null && children == null) {\n return new Error('Tooltip is required for icon only buttons');\n }\n return null;\n },\n icon(props) {\n const { children, icon } = props;\n if (icon == null && children == null) {\n return new Error('Icon is required if no children are provided');\n }\n\n if (\n children == null &&\n !React.isValidElement(icon) &&\n (icon == null || icon.iconName === '' || icon.iconName == null)\n ) {\n return new Error(\n 'Icon must be react element or fontawesome IconDefinition'\n );\n }\n\n return null;\n },\n disabled: PropTypes.bool,\n active: PropTypes.bool,\n onClick(props) {\n const { onClick, type } = props;\n if (type === 'button' && typeof onClick !== 'function') {\n return new Error('type button requires an onClick function');\n }\n if (onClick !== undefined && typeof onClick !== 'function') {\n return new Error('onClick must be a function');\n }\n return null;\n },\n onMouseUp: PropTypes.func,\n onMouseDown: PropTypes.func,\n tabIndex: PropTypes.number,\n children: PropTypes.node,\n className: PropTypes.string,\n style: PropTypes.object,\n 'data-testid': PropTypes.string,\n};\n\nButton.defaultProps = {\n type: 'button',\n onClick: undefined,\n onMouseUp: undefined,\n onMouseDown: undefined,\n variant: undefined,\n tooltip: undefined,\n icon: undefined,\n disabled: false,\n active: undefined,\n tabIndex: undefined,\n children: undefined,\n className: undefined,\n style: {},\n 'data-testid': undefined,\n};\n\nexport default Button;\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/components",
3
- "version": "0.19.2-beta.11+f18f946",
3
+ "version": "0.19.2-beta.12+12ab02d",
4
4
  "description": "Deephaven React component library",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -31,10 +31,10 @@
31
31
  "start": "cross-env NODE_ENV=development npm run watch"
32
32
  },
33
33
  "dependencies": {
34
- "@deephaven/icons": "^0.19.2-beta.11+f18f946",
35
- "@deephaven/log": "^0.19.2-beta.11+f18f946",
36
- "@deephaven/react-hooks": "^0.19.2-beta.11+f18f946",
37
- "@deephaven/utils": "^0.19.2-beta.11+f18f946",
34
+ "@deephaven/icons": "^0.19.2-beta.12+12ab02d",
35
+ "@deephaven/log": "^0.19.2-beta.12+12ab02d",
36
+ "@deephaven/react-hooks": "^0.19.2-beta.12+12ab02d",
37
+ "@deephaven/utils": "^0.19.2-beta.12+12ab02d",
38
38
  "@fortawesome/fontawesome-svg-core": "^6.1.1",
39
39
  "@fortawesome/react-fontawesome": "^0.1.18",
40
40
  "bootstrap": "4.6.2",
@@ -57,8 +57,8 @@
57
57
  "react-dom": "^17.x"
58
58
  },
59
59
  "devDependencies": {
60
- "@deephaven/mocks": "^0.19.2-beta.11+f18f946",
61
- "@deephaven/tsconfig": "^0.19.2-beta.11+f18f946"
60
+ "@deephaven/mocks": "^0.19.2-beta.12+12ab02d",
61
+ "@deephaven/tsconfig": "^0.19.2-beta.12+12ab02d"
62
62
  },
63
63
  "files": [
64
64
  "dist",
@@ -70,5 +70,5 @@
70
70
  "publishConfig": {
71
71
  "access": "public"
72
72
  },
73
- "gitHead": "f18f946d4434de72b97a8bfd8cba8b172e057e3c"
73
+ "gitHead": "12ab02d7174c9dd99142551829d93ca7b18bc02d"
74
74
  }