@deephaven/components 0.19.2-beta.10 → 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.
- package/dist/Button.d.ts.map +1 -1
- package/dist/Button.js +12 -0
- package/dist/Button.js.map +1 -1
- package/package.json +8 -8
package/dist/Button.d.ts.map
CHANGED
|
@@ -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,
|
|
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: {},
|
package/dist/Button.js.map
CHANGED
|
@@ -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.
|
|
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.
|
|
35
|
-
"@deephaven/log": "^0.19.2-beta.
|
|
36
|
-
"@deephaven/react-hooks": "^0.19.2-beta.
|
|
37
|
-
"@deephaven/utils": "^0.19.2-beta.
|
|
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.
|
|
61
|
-
"@deephaven/tsconfig": "^0.19.2-beta.
|
|
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": "
|
|
73
|
+
"gitHead": "12ab02d7174c9dd99142551829d93ca7b18bc02d"
|
|
74
74
|
}
|