@deephaven/components 1.7.2-beta.3 → 1.7.2-beta.4

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.
@@ -12,13 +12,14 @@ declare class Collapse extends Component<CollapseProps> {
12
12
  autoFocusOnShow: boolean;
13
13
  'data-testid': undefined;
14
14
  };
15
- static handleEnter(elemParam: HTMLElement): void;
16
- static handleEntering(elemParam: HTMLElement): void;
17
- static handleExiting(elemParam: HTMLElement): void;
18
- static handleExit(elemParam: HTMLElement): void;
19
15
  static getHeight(elem: HTMLElement): number;
20
16
  constructor(props: CollapseProps);
21
- handleEntered(elemParam: HTMLElement): void;
17
+ nodeRef: React.RefObject<HTMLDivElement>;
18
+ handleEntered(): void;
19
+ handleEnter(): void;
20
+ handleEntering(): void;
21
+ handleExiting(): void;
22
+ handleExit(): void;
22
23
  render(): JSX.Element;
23
24
  }
24
25
  export default Collapse;
@@ -1 +1 @@
1
- {"version":3,"file":"Collapse.d.ts","sourceRoot":"","sources":["../src/Collapse.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIzC,UAAU,aAAa;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,cAAM,QAAS,SAAQ,SAAS,CAAC,aAAa,CAAC;IAC7C,MAAM,CAAC,YAAY;;;;MAIjB;IAEF,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IAKhD,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IAKnD,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IAKlD,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IAK/C,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM;gBAK/B,KAAK,EAAE,aAAa;IAMhC,aAAa,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IAgB3C,MAAM,IAAI,GAAG,CAAC,OAAO;CAkCtB;AAED,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"Collapse.d.ts","sourceRoot":"","sources":["../src/Collapse.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIzC,UAAU,aAAa;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,cAAM,QAAS,SAAQ,SAAS,CAAC,aAAa,CAAC;IAC7C,MAAM,CAAC,YAAY;;;;MAIjB;IAEF,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM;gBAK/B,KAAK,EAAE,aAAa;IAMhC,OAAO,kCAAqC;IAE5C,aAAa,IAAI,IAAI;IAmBrB,WAAW,IAAI,IAAI;IAQnB,cAAc,IAAI,IAAI;IAQtB,aAAa,IAAI,IAAI;IAQrB,UAAU,IAAI,IAAI;IAQlB,MAAM,IAAI,GAAG,CAAC,OAAO;CAoCtB;AAED,eAAe,QAAQ,CAAC"}
package/dist/Collapse.js CHANGED
@@ -7,32 +7,20 @@ import classNames from 'classnames';
7
7
  import { CSSTransition } from 'react-transition-group';
8
8
  import { jsx as _jsx } from "react/jsx-runtime";
9
9
  class Collapse extends Component {
10
- static handleEnter(elemParam) {
11
- var elem = elemParam;
12
- elem.style.height = '0';
13
- }
14
- static handleEntering(elemParam) {
15
- var elem = elemParam;
16
- elem.style.height = "".concat(Collapse.getHeight(elem), "px");
17
- }
18
- static handleExiting(elemParam) {
19
- var elem = elemParam;
20
- elem.style.height = '0';
21
- }
22
- static handleExit(elemParam) {
23
- var elem = elemParam;
24
- elem.style.height = "".concat(Collapse.getHeight(elem), "px");
25
- }
26
10
  static getHeight(elem) {
27
11
  var scrollBarWidth = elem.scrollWidth - elem.clientWidth;
28
12
  return elem.scrollHeight - scrollBarWidth;
29
13
  }
30
14
  constructor(props) {
31
15
  super(props);
16
+ _defineProperty(this, "nodeRef", /*#__PURE__*/React.createRef());
32
17
  this.handleEntered = this.handleEntered.bind(this);
33
18
  }
34
- handleEntered(elemParam) {
35
- var elem = elemParam;
19
+ handleEntered() {
20
+ var elem = this.nodeRef.current;
21
+ if (!elem) {
22
+ return;
23
+ }
36
24
  elem.style.height = '';
37
25
  var {
38
26
  autoFocusOnShow
@@ -44,6 +32,34 @@ class Collapse extends Component {
44
32
  }
45
33
  }
46
34
  }
35
+ handleEnter() {
36
+ var elem = this.nodeRef.current;
37
+ if (!elem) {
38
+ return;
39
+ }
40
+ elem.style.height = '0';
41
+ }
42
+ handleEntering() {
43
+ var elem = this.nodeRef.current;
44
+ if (!elem) {
45
+ return;
46
+ }
47
+ elem.style.height = "".concat(Collapse.getHeight(elem), "px");
48
+ }
49
+ handleExiting() {
50
+ var elem = this.nodeRef.current;
51
+ if (!elem) {
52
+ return;
53
+ }
54
+ elem.style.height = '0';
55
+ }
56
+ handleExit() {
57
+ var elem = this.nodeRef.current;
58
+ if (!elem) {
59
+ return;
60
+ }
61
+ elem.style.height = "".concat(Collapse.getHeight(elem), "px");
62
+ }
47
63
  render() {
48
64
  var {
49
65
  children: _children,
@@ -59,13 +75,15 @@ class Collapse extends Component {
59
75
  exitActive: 'collapsing',
60
76
  exitDone: 'collapse'
61
77
  },
62
- onEnter: Collapse.handleEnter,
63
- onEntering: Collapse.handleEntering,
78
+ onEnter: this.handleEnter,
79
+ onEntering: this.handleEntering,
64
80
  onEntered: this.handleEntered,
65
- onExit: Collapse.handleExit,
66
- onExiting: Collapse.handleExiting,
81
+ onExit: this.handleExit,
82
+ onExiting: this.handleExiting,
67
83
  timeout: 350,
84
+ nodeRef: this.nodeRef,
68
85
  children: state => /*#__PURE__*/_jsx("div", {
86
+ ref: this.nodeRef,
69
87
  className: classNames({
70
88
  collapse: state === 'exited'
71
89
  }, className),
@@ -1 +1 @@
1
- {"version":3,"file":"Collapse.js","names":["React","Component","classNames","CSSTransition","jsx","_jsx","Collapse","handleEnter","elemParam","elem","style","height","handleEntering","concat","getHeight","handleExiting","handleExit","scrollBarWidth","scrollWidth","clientWidth","scrollHeight","constructor","props","handleEntered","bind","autoFocusOnShow","undefined","input","querySelector","focus","render","children","className","in","inTransition","dataTestId","enterActive","enterDone","exitActive","exitDone","onEnter","onEntering","onEntered","onExit","onExiting","timeout","state","collapse","_defineProperty"],"sources":["../src/Collapse.tsx"],"sourcesContent":["// Port of https://github.com/react-bootstrap/react-bootstrap/blob/master/src/Collapse.js\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\n\ninterface CollapseProps {\n className?: string;\n in: boolean;\n children: React.ReactNode;\n autoFocusOnShow?: boolean;\n 'data-testid'?: string;\n}\n\nclass Collapse extends Component<CollapseProps> {\n static defaultProps = {\n className: '',\n autoFocusOnShow: false,\n 'data-testid': undefined,\n };\n\n static handleEnter(elemParam: HTMLElement): void {\n const elem = elemParam;\n elem.style.height = '0';\n }\n\n static handleEntering(elemParam: HTMLElement): void {\n const elem = elemParam;\n elem.style.height = `${Collapse.getHeight(elem)}px`;\n }\n\n static handleExiting(elemParam: HTMLElement): void {\n const elem = elemParam;\n elem.style.height = '0';\n }\n\n static handleExit(elemParam: HTMLElement): void {\n const elem = elemParam;\n elem.style.height = `${Collapse.getHeight(elem)}px`;\n }\n\n static getHeight(elem: HTMLElement): number {\n const scrollBarWidth = elem.scrollWidth - elem.clientWidth;\n return elem.scrollHeight - scrollBarWidth;\n }\n\n constructor(props: CollapseProps) {\n super(props);\n\n this.handleEntered = this.handleEntered.bind(this);\n }\n\n handleEntered(elemParam: HTMLElement): void {\n const elem = elemParam;\n elem.style.height = '';\n\n const { autoFocusOnShow } = this.props;\n if (autoFocusOnShow !== undefined && autoFocusOnShow) {\n const input = elem.querySelector(\n 'input, select, textarea'\n ) as HTMLInputElement;\n\n if (input != null) {\n input.focus();\n }\n }\n }\n\n render(): JSX.Element {\n const {\n children,\n className,\n in: inTransition,\n 'data-testid': dataTestId,\n } = this.props;\n return (\n <CSSTransition\n in={inTransition}\n classNames={{\n enterActive: 'collapsing',\n enterDone: 'collapse show',\n exitActive: 'collapsing',\n exitDone: 'collapse',\n }}\n onEnter={Collapse.handleEnter}\n onEntering={Collapse.handleEntering}\n onEntered={this.handleEntered}\n onExit={Collapse.handleExit}\n onExiting={Collapse.handleExiting}\n timeout={350}\n >\n {state => (\n <div\n className={classNames({ collapse: state === 'exited' }, className)}\n data-testid={dataTestId}\n >\n {children}\n </div>\n )}\n </CSSTransition>\n );\n }\n}\n\nexport default Collapse;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Collapse.js","names":["React","Component","classNames","CSSTransition","jsx","_jsx","Collapse","getHeight","elem","scrollBarWidth","scrollWidth","clientWidth","scrollHeight","constructor","props","_defineProperty","createRef","handleEntered","bind","nodeRef","current","style","height","autoFocusOnShow","undefined","input","querySelector","focus","handleEnter","handleEntering","concat","handleExiting","handleExit","render","children","className","in","inTransition","dataTestId","enterActive","enterDone","exitActive","exitDone","onEnter","onEntering","onEntered","onExit","onExiting","timeout","state","ref","collapse"],"sources":["../src/Collapse.tsx"],"sourcesContent":["// Port of https://github.com/react-bootstrap/react-bootstrap/blob/master/src/Collapse.js\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\n\ninterface CollapseProps {\n className?: string;\n in: boolean;\n children: React.ReactNode;\n autoFocusOnShow?: boolean;\n 'data-testid'?: string;\n}\n\nclass Collapse extends Component<CollapseProps> {\n static defaultProps = {\n className: '',\n autoFocusOnShow: false,\n 'data-testid': undefined,\n };\n\n static getHeight(elem: HTMLElement): number {\n const scrollBarWidth = elem.scrollWidth - elem.clientWidth;\n return elem.scrollHeight - scrollBarWidth;\n }\n\n constructor(props: CollapseProps) {\n super(props);\n\n this.handleEntered = this.handleEntered.bind(this);\n }\n\n nodeRef = React.createRef<HTMLDivElement>();\n\n handleEntered(): void {\n const elem = this.nodeRef.current;\n if (!elem) {\n return;\n }\n elem.style.height = '';\n\n const { autoFocusOnShow } = this.props;\n if (autoFocusOnShow !== undefined && autoFocusOnShow) {\n const input = elem.querySelector(\n 'input, select, textarea'\n ) as HTMLInputElement;\n\n if (input != null) {\n input.focus();\n }\n }\n }\n\n handleEnter(): void {\n const elem = this.nodeRef.current;\n if (!elem) {\n return;\n }\n elem.style.height = '0';\n }\n\n handleEntering(): void {\n const elem = this.nodeRef.current;\n if (!elem) {\n return;\n }\n elem.style.height = `${Collapse.getHeight(elem)}px`;\n }\n\n handleExiting(): void {\n const elem = this.nodeRef.current;\n if (!elem) {\n return;\n }\n elem.style.height = '0';\n }\n\n handleExit(): void {\n const elem = this.nodeRef.current;\n if (!elem) {\n return;\n }\n elem.style.height = `${Collapse.getHeight(elem)}px`;\n }\n\n render(): JSX.Element {\n const {\n children,\n className,\n in: inTransition,\n 'data-testid': dataTestId,\n } = this.props;\n return (\n <CSSTransition\n in={inTransition}\n classNames={{\n enterActive: 'collapsing',\n enterDone: 'collapse show',\n exitActive: 'collapsing',\n exitDone: 'collapse',\n }}\n onEnter={this.handleEnter}\n onEntering={this.handleEntering}\n onEntered={this.handleEntered}\n onExit={this.handleExit}\n onExiting={this.handleExiting}\n timeout={350}\n nodeRef={this.nodeRef}\n >\n {state => (\n <div\n ref={this.nodeRef}\n className={classNames({ collapse: state === 'exited' }, className)}\n data-testid={dataTestId}\n >\n {children}\n </div>\n )}\n </CSSTransition>\n );\n }\n}\n\nexport default Collapse;\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"LoadingOverlay.d.ts","sourceRoot":"","sources":["../src/LoadingOverlay.tsx"],"names":[],"mappings":"AAOA,OAAO,uBAAuB,CAAC;AAE/B,KAAK,mBAAmB,GAAG;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;GAEG;AACH,iBAAS,cAAc,CAAC,EACtB,QAAgB,EAChB,SAAgB,EAChB,YAAmB,EACnB,SAAgB,EAChB,cAA8C,EAC9C,OAAkC,EAClC,aAAa,EAAE,UAAU,GAC1B,EAAE,mBAAmB,GAAG,GAAG,CAAC,OAAO,CA4CnC;AAED,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"LoadingOverlay.d.ts","sourceRoot":"","sources":["../src/LoadingOverlay.tsx"],"names":[],"mappings":"AAOA,OAAO,uBAAuB,CAAC;AAE/B,KAAK,mBAAmB,GAAG;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;GAEG;AACH,iBAAS,cAAc,CAAC,EACtB,QAAgB,EAChB,SAAgB,EAChB,YAAmB,EACnB,SAAgB,EAChB,cAA8C,EAC9C,OAAkC,EAClC,aAAa,EAAE,UAAU,GAC1B,EAAE,mBAAmB,GAAG,GAAG,CAAC,OAAO,CAkDnC;AAED,eAAe,cAAc,CAAC"}
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { useRef } from 'react';
2
2
  import { CSSTransition } from 'react-transition-group';
3
3
  import classNames from 'classnames';
4
4
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
@@ -20,6 +20,7 @@ function LoadingOverlay(_ref) {
20
20
  timeout = ThemeExport.transitionMs,
21
21
  'data-testid': dataTestId
22
22
  } = _ref;
23
+ var nodeRef = useRef(null);
23
24
  var messageTestId = dataTestId != null ? "".concat(dataTestId, "-message") : undefined;
24
25
  var spinnerTestId = dataTestId != null ? "".concat(dataTestId, "-spinner") : undefined;
25
26
  return /*#__PURE__*/_jsx(CSSTransition, {
@@ -30,7 +31,9 @@ function LoadingOverlay(_ref) {
30
31
  }),
31
32
  mountOnEnter: true,
32
33
  unmountOnExit: true,
34
+ nodeRef: nodeRef,
33
35
  children: /*#__PURE__*/_jsx("div", {
36
+ ref: nodeRef,
34
37
  className: "fill-parent-absolute",
35
38
  "data-testid": dataTestId,
36
39
  children: /*#__PURE__*/_jsx("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"LoadingOverlay.js","names":["React","CSSTransition","classNames","FontAwesomeIcon","vsWarning","ThemeExport","LoadingSpinner","jsx","_jsx","jsxs","_jsxs","LoadingOverlay","_ref","isLoaded","isLoading","errorMessage","className","scrimClassName","timeout","transitionMs","dataTestId","messageTestId","concat","undefined","spinnerTestId","in","Boolean","fade","mountOnEnter","unmountOnExit","children","icon"],"sources":["../src/LoadingOverlay.tsx"],"sourcesContent":["import React from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsWarning } from '@deephaven/icons';\nimport ThemeExport from './ThemeExport';\nimport LoadingSpinner from './LoadingSpinner';\nimport './LoadingOverlay.scss';\n\ntype LoadingOverlayProps = {\n isLoaded?: boolean;\n isLoading?: boolean;\n errorMessage?: string | null;\n className?: string | null;\n scrimClassName?: string;\n timeout?: number | { enter?: number; exit?: number; appear?: number };\n 'data-testid'?: string;\n};\n\n/**\n * A loading overlay that handles displaying a loading spinner or an error message\n */\nfunction LoadingOverlay({\n isLoaded = false,\n isLoading = true,\n errorMessage = null,\n className = null,\n scrimClassName = 'iris-panel-scrim-background',\n timeout = ThemeExport.transitionMs,\n 'data-testid': dataTestId,\n}: LoadingOverlayProps): JSX.Element {\n const messageTestId =\n dataTestId != null ? `${dataTestId}-message` : undefined;\n const spinnerTestId =\n dataTestId != null ? `${dataTestId}-spinner` : undefined;\n\n return (\n <CSSTransition\n in={Boolean(errorMessage) || !isLoaded || isLoading}\n timeout={timeout}\n classNames={classNames(className, { fade: isLoaded })}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"fill-parent-absolute\" data-testid={dataTestId}>\n <div\n className={classNames(\n 'iris-panel-message-overlay',\n 'fill-parent-absolute',\n { [scrimClassName]: isLoaded }\n )}\n >\n <div className=\"message-content\">\n <div className=\"message-icon\">\n {isLoading && (\n <LoadingSpinner\n className=\"loading-spinner-large\"\n data-testid={spinnerTestId}\n />\n )}\n {!isLoading && errorMessage != null && (\n <FontAwesomeIcon icon={vsWarning} />\n )}\n </div>\n {errorMessage != null && (\n <div className=\"message-text\" data-testid={messageTestId}>\n {errorMessage}\n </div>\n )}\n </div>\n </div>\n </div>\n </CSSTransition>\n );\n}\n\nexport default LoadingOverlay;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,aAAa,QAAQ,wBAAwB;AACtD,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,SAAS,QAAQ,kBAAkB;AAAC,OACtCC,WAAW;AAAA,OACXC,cAAc;AAAA;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAarB;AACA;AACA;AACA,SAASC,cAAcA,CAAAC,IAAA,EAQc;EAAA,IARb;IACtBC,QAAQ,GAAG,KAAK;IAChBC,SAAS,GAAG,IAAI;IAChBC,YAAY,GAAG,IAAI;IACnBC,SAAS,GAAG,IAAI;IAChBC,cAAc,GAAG,6BAA6B;IAC9CC,OAAO,GAAGb,WAAW,CAACc,YAAY;IAClC,aAAa,EAAEC;EACI,CAAC,GAAAR,IAAA;EACpB,IAAMS,aAAa,GACjBD,UAAU,IAAI,IAAI,MAAAE,MAAA,CAAMF,UAAU,gBAAaG,SAAS;EAC1D,IAAMC,aAAa,GACjBJ,UAAU,IAAI,IAAI,MAAAE,MAAA,CAAMF,UAAU,gBAAaG,SAAS;EAE1D,oBACEf,IAAA,CAACP,aAAa;IACZwB,EAAE,EAAEC,OAAO,CAACX,YAAY,CAAC,IAAI,CAACF,QAAQ,IAAIC,SAAU;IACpDI,OAAO,EAAEA,OAAQ;IACjBhB,UAAU,EAAEA,UAAU,CAACc,SAAS,EAAE;MAAEW,IAAI,EAAEd;IAAS,CAAC,CAAE;IACtDe,YAAY;IACZC,aAAa;IAAAC,QAAA,eAEbtB,IAAA;MAAKQ,SAAS,EAAC,sBAAsB;MAAC,eAAaI,UAAW;MAAAU,QAAA,eAC5DtB,IAAA;QACEQ,SAAS,EAAEd,UAAU,CACnB,4BAA4B,EAC5B,sBAAsB,EACtB;UAAE,CAACe,cAAc,GAAGJ;QAAS,CAC/B,CAAE;QAAAiB,QAAA,eAEFpB,KAAA;UAAKM,SAAS,EAAC,iBAAiB;UAAAc,QAAA,gBAC9BpB,KAAA;YAAKM,SAAS,EAAC,cAAc;YAAAc,QAAA,GAC1BhB,SAAS,iBACRN,IAAA,CAACF,cAAc;cACbU,SAAS,EAAC,uBAAuB;cACjC,eAAaQ;YAAc,CAC5B,CACF,EACA,CAACV,SAAS,IAAIC,YAAY,IAAI,IAAI,iBACjCP,IAAA,CAACL,eAAe;cAAC4B,IAAI,EAAE3B;YAAU,CAAE,CACpC;UAAA,CACE,CAAC,EACLW,YAAY,IAAI,IAAI,iBACnBP,IAAA;YAAKQ,SAAS,EAAC,cAAc;YAAC,eAAaK,aAAc;YAAAS,QAAA,EACtDf;UAAY,CACV,CACN;QAAA,CACE;MAAC,CACH;IAAC,CACH;EAAC,CACO,CAAC;AAEpB;AAEA,eAAeJ,cAAc","ignoreList":[]}
1
+ {"version":3,"file":"LoadingOverlay.js","names":["React","useRef","CSSTransition","classNames","FontAwesomeIcon","vsWarning","ThemeExport","LoadingSpinner","jsx","_jsx","jsxs","_jsxs","LoadingOverlay","_ref","isLoaded","isLoading","errorMessage","className","scrimClassName","timeout","transitionMs","dataTestId","nodeRef","messageTestId","concat","undefined","spinnerTestId","in","Boolean","fade","mountOnEnter","unmountOnExit","children","ref","icon"],"sources":["../src/LoadingOverlay.tsx"],"sourcesContent":["import React, { useRef } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsWarning } from '@deephaven/icons';\nimport ThemeExport from './ThemeExport';\nimport LoadingSpinner from './LoadingSpinner';\nimport './LoadingOverlay.scss';\n\ntype LoadingOverlayProps = {\n isLoaded?: boolean;\n isLoading?: boolean;\n errorMessage?: string | null;\n className?: string | null;\n scrimClassName?: string;\n timeout?: number | { enter?: number; exit?: number; appear?: number };\n 'data-testid'?: string;\n};\n\n/**\n * A loading overlay that handles displaying a loading spinner or an error message\n */\nfunction LoadingOverlay({\n isLoaded = false,\n isLoading = true,\n errorMessage = null,\n className = null,\n scrimClassName = 'iris-panel-scrim-background',\n timeout = ThemeExport.transitionMs,\n 'data-testid': dataTestId,\n}: LoadingOverlayProps): JSX.Element {\n const nodeRef = useRef<HTMLDivElement>(null);\n const messageTestId =\n dataTestId != null ? `${dataTestId}-message` : undefined;\n const spinnerTestId =\n dataTestId != null ? `${dataTestId}-spinner` : undefined;\n\n return (\n <CSSTransition\n in={Boolean(errorMessage) || !isLoaded || isLoading}\n timeout={timeout}\n classNames={classNames(className, { fade: isLoaded })}\n mountOnEnter\n unmountOnExit\n nodeRef={nodeRef}\n >\n <div\n ref={nodeRef}\n className=\"fill-parent-absolute\"\n data-testid={dataTestId}\n >\n <div\n className={classNames(\n 'iris-panel-message-overlay',\n 'fill-parent-absolute',\n { [scrimClassName]: isLoaded }\n )}\n >\n <div className=\"message-content\">\n <div className=\"message-icon\">\n {isLoading && (\n <LoadingSpinner\n className=\"loading-spinner-large\"\n data-testid={spinnerTestId}\n />\n )}\n {!isLoading && errorMessage != null && (\n <FontAwesomeIcon icon={vsWarning} />\n )}\n </div>\n {errorMessage != null && (\n <div className=\"message-text\" data-testid={messageTestId}>\n {errorMessage}\n </div>\n )}\n </div>\n </div>\n </div>\n </CSSTransition>\n );\n}\n\nexport default LoadingOverlay;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,MAAM,QAAQ,OAAO;AACrC,SAASC,aAAa,QAAQ,wBAAwB;AACtD,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,SAAS,QAAQ,kBAAkB;AAAC,OACtCC,WAAW;AAAA,OACXC,cAAc;AAAA;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAarB;AACA;AACA;AACA,SAASC,cAAcA,CAAAC,IAAA,EAQc;EAAA,IARb;IACtBC,QAAQ,GAAG,KAAK;IAChBC,SAAS,GAAG,IAAI;IAChBC,YAAY,GAAG,IAAI;IACnBC,SAAS,GAAG,IAAI;IAChBC,cAAc,GAAG,6BAA6B;IAC9CC,OAAO,GAAGb,WAAW,CAACc,YAAY;IAClC,aAAa,EAAEC;EACI,CAAC,GAAAR,IAAA;EACpB,IAAMS,OAAO,GAAGrB,MAAM,CAAiB,IAAI,CAAC;EAC5C,IAAMsB,aAAa,GACjBF,UAAU,IAAI,IAAI,MAAAG,MAAA,CAAMH,UAAU,gBAAaI,SAAS;EAC1D,IAAMC,aAAa,GACjBL,UAAU,IAAI,IAAI,MAAAG,MAAA,CAAMH,UAAU,gBAAaI,SAAS;EAE1D,oBACEhB,IAAA,CAACP,aAAa;IACZyB,EAAE,EAAEC,OAAO,CAACZ,YAAY,CAAC,IAAI,CAACF,QAAQ,IAAIC,SAAU;IACpDI,OAAO,EAAEA,OAAQ;IACjBhB,UAAU,EAAEA,UAAU,CAACc,SAAS,EAAE;MAAEY,IAAI,EAAEf;IAAS,CAAC,CAAE;IACtDgB,YAAY;IACZC,aAAa;IACbT,OAAO,EAAEA,OAAQ;IAAAU,QAAA,eAEjBvB,IAAA;MACEwB,GAAG,EAAEX,OAAQ;MACbL,SAAS,EAAC,sBAAsB;MAChC,eAAaI,UAAW;MAAAW,QAAA,eAExBvB,IAAA;QACEQ,SAAS,EAAEd,UAAU,CACnB,4BAA4B,EAC5B,sBAAsB,EACtB;UAAE,CAACe,cAAc,GAAGJ;QAAS,CAC/B,CAAE;QAAAkB,QAAA,eAEFrB,KAAA;UAAKM,SAAS,EAAC,iBAAiB;UAAAe,QAAA,gBAC9BrB,KAAA;YAAKM,SAAS,EAAC,cAAc;YAAAe,QAAA,GAC1BjB,SAAS,iBACRN,IAAA,CAACF,cAAc;cACbU,SAAS,EAAC,uBAAuB;cACjC,eAAaS;YAAc,CAC5B,CACF,EACA,CAACX,SAAS,IAAIC,YAAY,IAAI,IAAI,iBACjCP,IAAA,CAACL,eAAe;cAAC8B,IAAI,EAAE7B;YAAU,CAAE,CACpC;UAAA,CACE,CAAC,EACLW,YAAY,IAAI,IAAI,iBACnBP,IAAA;YAAKQ,SAAS,EAAC,cAAc;YAAC,eAAaM,aAAc;YAAAS,QAAA,EACtDhB;UAAY,CACV,CACN;QAAA,CACE;MAAC,CACH;IAAC,CACH;EAAC,CACO,CAAC;AAEpB;AAEA,eAAeJ,cAAc","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"ToastNotification.d.ts","sourceRoot":"","sources":["../src/ToastNotification.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,0BAA0B,CAAC;AAGlC,KAAK,sBAAsB,GAAG;IAC5B,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,OAAO,CAAC,EAAE,KAAK,CAAC,YAAY,CAC1B,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,CACvE,CAAC;IACF,SAAS,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;CACxD,CAAC;AAEF,iBAAS,iBAAiB,CAAC,EACzB,OAAO,EACP,OAAe,EACf,UAAU,EAAE,cAAc,EAC1B,OAAO,EACP,IAAI,EACJ,OAAO,EACP,SAAS,EACT,aAAa,EAAE,UAAU,GAC1B,EAAE,sBAAsB,GAAG,GAAG,CAAC,OAAO,CAyCtC;kBAlDQ,iBAAiB;;;;;AAwD1B,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"ToastNotification.d.ts","sourceRoot":"","sources":["../src/ToastNotification.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiB,MAAM,OAAO,CAAC;AAMtC,OAAO,0BAA0B,CAAC;AAGlC,KAAK,sBAAsB,GAAG;IAC5B,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,OAAO,CAAC,EAAE,KAAK,CAAC,YAAY,CAC1B,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,CACvE,CAAC;IACF,SAAS,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;CACxD,CAAC;AAEF,iBAAS,iBAAiB,CAAC,EACzB,OAAO,EACP,OAAe,EACf,UAAU,EAAE,cAAc,EAC1B,OAAO,EACP,IAAI,EACJ,OAAO,EACP,SAAS,EACT,aAAa,EAAE,UAAU,GAC1B,EAAE,sBAAsB,GAAG,GAAG,CAAC,OAAO,CA4CtC;kBArDQ,iBAAiB;;;;;AA2D1B,eAAe,iBAAiB,CAAC"}
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { useRef } from 'react';
2
2
  import classNames from 'classnames';
3
3
  import { CSSTransition } from 'react-transition-group';
4
4
  import { vsClose } from '@deephaven/icons';
@@ -18,6 +18,7 @@ function ToastNotification(_ref) {
18
18
  onDismiss,
19
19
  'data-testid': dataTestId
20
20
  } = _ref;
21
+ var nodeRef = useRef(null);
21
22
  var hasButtons = buttons && buttons.length !== 0;
22
23
  return /*#__PURE__*/_jsx(CSSTransition, {
23
24
  in: isShown,
@@ -25,7 +26,9 @@ function ToastNotification(_ref) {
25
26
  classNames: "toast-notification-slide-up",
26
27
  mountOnEnter: true,
27
28
  unmountOnExit: true,
29
+ nodeRef: nodeRef,
28
30
  children: /*#__PURE__*/_jsxs("div", {
31
+ ref: nodeRef,
29
32
  className: classNames('toast-notification', classNamesProp, type),
30
33
  role: "presentation",
31
34
  onClick: onClick,
@@ -1 +1 @@
1
- {"version":3,"file":"ToastNotification.js","names":["React","classNames","CSSTransition","vsClose","Button","ThemeExport","FadeTransition","jsx","_jsx","jsxs","_jsxs","ToastNotification","_ref","buttons","isShown","classNamesProp","message","type","onClick","onDismiss","dataTestId","hasButtons","length","in","timeout","transitionMs","mountOnEnter","unmountOnExit","children","className","role","onKeyPress","transitionSlowMs","kind","icon","tooltip","TYPE","Object","freeze","ERROR"],"sources":["../src/ToastNotification.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport { vsClose } from '@deephaven/icons';\nimport Button from './Button';\nimport ThemeExport from './ThemeExport';\nimport './ToastNotification.scss';\nimport { FadeTransition } from './transitions';\n\ntype ToastNotificationProps = {\n buttons?: React.ReactNode[];\n classNames?: string;\n isShown?: boolean;\n message?: string;\n type?: string;\n 'data-testid'?: string;\n\n onClick?: React.EventHandler<\n React.MouseEvent<HTMLDivElement> | React.KeyboardEvent<HTMLDivElement>\n >;\n onDismiss?: React.MouseEventHandler<HTMLButtonElement>;\n};\n\nfunction ToastNotification({\n buttons,\n isShown = false,\n classNames: classNamesProp,\n message,\n type,\n onClick,\n onDismiss,\n 'data-testid': dataTestId,\n}: ToastNotificationProps): JSX.Element {\n const hasButtons = buttons && buttons.length !== 0;\n\n return (\n <CSSTransition\n in={isShown}\n timeout={ThemeExport.transitionMs}\n classNames=\"toast-notification-slide-up\"\n mountOnEnter\n unmountOnExit\n >\n <div\n className={classNames('toast-notification', classNamesProp, type)}\n role=\"presentation\"\n onClick={onClick}\n onKeyPress={onClick}\n data-testid={dataTestId}\n >\n <div className=\"message-container\">\n <span className=\"message\">{message}</span>\n </div>\n <FadeTransition\n in={hasButtons}\n timeout={ThemeExport.transitionSlowMs}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"buttons-container\">{buttons}</div>\n </FadeTransition>\n {onDismiss && (\n <Button\n kind=\"ghost\"\n icon={vsClose}\n tooltip=\"Close notification\"\n className=\"my-2\"\n onClick={onDismiss}\n />\n )}\n </div>\n </CSSTransition>\n );\n}\n\nToastNotification.TYPE = Object.freeze({\n ERROR: 'error',\n});\n\nexport default ToastNotification;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,aAAa,QAAQ,wBAAwB;AACtD,SAASC,OAAO,QAAQ,kBAAkB;AAAC,OACpCC,MAAM;AAAA,OACNC,WAAW;AAAA;AAAA,SAETC,cAAc;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAgBvB,SAASC,iBAAiBA,CAAAC,IAAA,EASc;EAAA,IATb;IACzBC,OAAO;IACPC,OAAO,GAAG,KAAK;IACfb,UAAU,EAAEc,cAAc;IAC1BC,OAAO;IACPC,IAAI;IACJC,OAAO;IACPC,SAAS;IACT,aAAa,EAAEC;EACO,CAAC,GAAAR,IAAA;EACvB,IAAMS,UAAU,GAAGR,OAAO,IAAIA,OAAO,CAACS,MAAM,KAAK,CAAC;EAElD,oBACEd,IAAA,CAACN,aAAa;IACZqB,EAAE,EAAET,OAAQ;IACZU,OAAO,EAAEnB,WAAW,CAACoB,YAAa;IAClCxB,UAAU,EAAC,6BAA6B;IACxCyB,YAAY;IACZC,aAAa;IAAAC,QAAA,eAEblB,KAAA;MACEmB,SAAS,EAAE5B,UAAU,CAAC,oBAAoB,EAAEc,cAAc,EAAEE,IAAI,CAAE;MAClEa,IAAI,EAAC,cAAc;MACnBZ,OAAO,EAAEA,OAAQ;MACjBa,UAAU,EAAEb,OAAQ;MACpB,eAAaE,UAAW;MAAAQ,QAAA,gBAExBpB,IAAA;QAAKqB,SAAS,EAAC,mBAAmB;QAAAD,QAAA,eAChCpB,IAAA;UAAMqB,SAAS,EAAC,SAAS;UAAAD,QAAA,EAAEZ;QAAO,CAAO;MAAC,CACvC,CAAC,eACNR,IAAA,CAACF,cAAc;QACbiB,EAAE,EAAEF,UAAW;QACfG,OAAO,EAAEnB,WAAW,CAAC2B,gBAAiB;QACtCN,YAAY;QACZC,aAAa;QAAAC,QAAA,eAEbpB,IAAA;UAAKqB,SAAS,EAAC,mBAAmB;UAAAD,QAAA,EAAEf;QAAO,CAAM;MAAC,CACpC,CAAC,EAChBM,SAAS,iBACRX,IAAA,CAACJ,MAAM;QACL6B,IAAI,EAAC,OAAO;QACZC,IAAI,EAAE/B,OAAQ;QACdgC,OAAO,EAAC,oBAAoB;QAC5BN,SAAS,EAAC,MAAM;QAChBX,OAAO,EAAEC;MAAU,CACpB,CACF;IAAA,CACE;EAAC,CACO,CAAC;AAEpB;AAEAR,iBAAiB,CAACyB,IAAI,GAAGC,MAAM,CAACC,MAAM,CAAC;EACrCC,KAAK,EAAE;AACT,CAAC,CAAC;AAEF,eAAe5B,iBAAiB","ignoreList":[]}
1
+ {"version":3,"file":"ToastNotification.js","names":["React","useRef","classNames","CSSTransition","vsClose","Button","ThemeExport","FadeTransition","jsx","_jsx","jsxs","_jsxs","ToastNotification","_ref","buttons","isShown","classNamesProp","message","type","onClick","onDismiss","dataTestId","nodeRef","hasButtons","length","in","timeout","transitionMs","mountOnEnter","unmountOnExit","children","ref","className","role","onKeyPress","transitionSlowMs","kind","icon","tooltip","TYPE","Object","freeze","ERROR"],"sources":["../src/ToastNotification.tsx"],"sourcesContent":["import React, { useRef } from 'react';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport { vsClose } from '@deephaven/icons';\nimport Button from './Button';\nimport ThemeExport from './ThemeExport';\nimport './ToastNotification.scss';\nimport { FadeTransition } from './transitions';\n\ntype ToastNotificationProps = {\n buttons?: React.ReactNode[];\n classNames?: string;\n isShown?: boolean;\n message?: string;\n type?: string;\n 'data-testid'?: string;\n\n onClick?: React.EventHandler<\n React.MouseEvent<HTMLDivElement> | React.KeyboardEvent<HTMLDivElement>\n >;\n onDismiss?: React.MouseEventHandler<HTMLButtonElement>;\n};\n\nfunction ToastNotification({\n buttons,\n isShown = false,\n classNames: classNamesProp,\n message,\n type,\n onClick,\n onDismiss,\n 'data-testid': dataTestId,\n}: ToastNotificationProps): JSX.Element {\n const nodeRef = useRef<HTMLDivElement>(null);\n const hasButtons = buttons && buttons.length !== 0;\n\n return (\n <CSSTransition\n in={isShown}\n timeout={ThemeExport.transitionMs}\n classNames=\"toast-notification-slide-up\"\n mountOnEnter\n unmountOnExit\n nodeRef={nodeRef}\n >\n <div\n ref={nodeRef}\n className={classNames('toast-notification', classNamesProp, type)}\n role=\"presentation\"\n onClick={onClick}\n onKeyPress={onClick}\n data-testid={dataTestId}\n >\n <div className=\"message-container\">\n <span className=\"message\">{message}</span>\n </div>\n <FadeTransition\n in={hasButtons}\n timeout={ThemeExport.transitionSlowMs}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"buttons-container\">{buttons}</div>\n </FadeTransition>\n {onDismiss && (\n <Button\n kind=\"ghost\"\n icon={vsClose}\n tooltip=\"Close notification\"\n className=\"my-2\"\n onClick={onDismiss}\n />\n )}\n </div>\n </CSSTransition>\n );\n}\n\nToastNotification.TYPE = Object.freeze({\n ERROR: 'error',\n});\n\nexport default ToastNotification;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,MAAM,QAAQ,OAAO;AACrC,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,aAAa,QAAQ,wBAAwB;AACtD,SAASC,OAAO,QAAQ,kBAAkB;AAAC,OACpCC,MAAM;AAAA,OACNC,WAAW;AAAA;AAAA,SAETC,cAAc;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAgBvB,SAASC,iBAAiBA,CAAAC,IAAA,EASc;EAAA,IATb;IACzBC,OAAO;IACPC,OAAO,GAAG,KAAK;IACfb,UAAU,EAAEc,cAAc;IAC1BC,OAAO;IACPC,IAAI;IACJC,OAAO;IACPC,SAAS;IACT,aAAa,EAAEC;EACO,CAAC,GAAAR,IAAA;EACvB,IAAMS,OAAO,GAAGrB,MAAM,CAAiB,IAAI,CAAC;EAC5C,IAAMsB,UAAU,GAAGT,OAAO,IAAIA,OAAO,CAACU,MAAM,KAAK,CAAC;EAElD,oBACEf,IAAA,CAACN,aAAa;IACZsB,EAAE,EAAEV,OAAQ;IACZW,OAAO,EAAEpB,WAAW,CAACqB,YAAa;IAClCzB,UAAU,EAAC,6BAA6B;IACxC0B,YAAY;IACZC,aAAa;IACbP,OAAO,EAAEA,OAAQ;IAAAQ,QAAA,eAEjBnB,KAAA;MACEoB,GAAG,EAAET,OAAQ;MACbU,SAAS,EAAE9B,UAAU,CAAC,oBAAoB,EAAEc,cAAc,EAAEE,IAAI,CAAE;MAClEe,IAAI,EAAC,cAAc;MACnBd,OAAO,EAAEA,OAAQ;MACjBe,UAAU,EAAEf,OAAQ;MACpB,eAAaE,UAAW;MAAAS,QAAA,gBAExBrB,IAAA;QAAKuB,SAAS,EAAC,mBAAmB;QAAAF,QAAA,eAChCrB,IAAA;UAAMuB,SAAS,EAAC,SAAS;UAAAF,QAAA,EAAEb;QAAO,CAAO;MAAC,CACvC,CAAC,eACNR,IAAA,CAACF,cAAc;QACbkB,EAAE,EAAEF,UAAW;QACfG,OAAO,EAAEpB,WAAW,CAAC6B,gBAAiB;QACtCP,YAAY;QACZC,aAAa;QAAAC,QAAA,eAEbrB,IAAA;UAAKuB,SAAS,EAAC,mBAAmB;UAAAF,QAAA,EAAEhB;QAAO,CAAM;MAAC,CACpC,CAAC,EAChBM,SAAS,iBACRX,IAAA,CAACJ,MAAM;QACL+B,IAAI,EAAC,OAAO;QACZC,IAAI,EAAEjC,OAAQ;QACdkC,OAAO,EAAC,oBAAoB;QAC5BN,SAAS,EAAC,MAAM;QAChBb,OAAO,EAAEC;MAAU,CACpB,CACF;IAAA,CACE;EAAC,CACO,CAAC;AAEpB;AAEAR,iBAAiB,CAAC2B,IAAI,GAAGC,MAAM,CAACC,MAAM,CAAC;EACrCC,KAAK,EAAE;AACT,CAAC,CAAC;AAEF,eAAe9B,iBAAiB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../src/modal/Modal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EACZ,KAAK,SAAS,EAKf,MAAM,OAAO,CAAC;AAMf,UAAU,UAAU;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,iBAAS,KAAK,CAAC,EACb,SAAS,EACT,QAAQ,EACR,IAAa,EACb,QAAe,EACf,YAAmB,EACnB,MAAc,EACd,QAAgB,EAChB,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,aAAa,EAAE,UAAU,GAC1B,EAAE,UAAU,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CA8IxC;AAED,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../src/modal/Modal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EACZ,KAAK,SAAS,EAKf,MAAM,OAAO,CAAC;AAMf,UAAU,UAAU;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,iBAAS,KAAK,CAAC,EACb,SAAS,EACT,QAAQ,EACR,IAAa,EACb,QAAe,EACf,YAAmB,EACnB,MAAc,EACd,QAAgB,EAChB,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,aAAa,EAAE,UAAU,GAC1B,EAAE,UAAU,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAkJxC;AAED,eAAe,KAAK,CAAC"}
@@ -22,6 +22,7 @@ function Modal(_ref) {
22
22
  } = _ref;
23
23
  var element = useRef();
24
24
  var background = useRef(null);
25
+ var backdropFade = useRef(null);
25
26
  var [backgroundClicked, setBackgroundClicked] = useState(false);
26
27
  var handleKeyDown = useCallback(event => {
27
28
  switch (event.key) {
@@ -79,7 +80,9 @@ function Modal(_ref) {
79
80
  },
80
81
  timeout: ThemeExport.transitionMs,
81
82
  onExited: onExited,
83
+ nodeRef: backdropFade,
82
84
  children: /*#__PURE__*/_jsx("div", {
85
+ ref: backdropFade,
83
86
  className: classNames('modal-backdrop fade'),
84
87
  style: {
85
88
  zIndex: 1050
@@ -95,6 +98,7 @@ function Modal(_ref) {
95
98
  },
96
99
  timeout: ThemeExport.transitionMs,
97
100
  onExited: onExited,
101
+ nodeRef: background,
98
102
  children: /*#__PURE__*/_jsx("div", {
99
103
  ref: background,
100
104
  className: "modal fade",
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","names":["classNames","React","useCallback","useEffect","useRef","useState","ReactDOM","CSSTransition","ThemeExport","SpectrumThemeProvider","jsx","_jsx","jsxs","_jsxs","Modal","_ref","className","children","role","keyboard","clickOutside","isOpen","centered","size","onOpened","onClosed","toggle","dataTestId","element","background","backgroundClicked","setBackgroundClicked","handleKeyDown","event","key","addKeydownEventListener","window","addEventListener","removeEventListener","open","closed","current","document","createElement","setAttribute","body","appendChild","onExited","removeChild","undefined","createPortal","isPortal","zIndex","position","appear","mountOnEnter","unmountOnExit","in","appearActive","appearDone","timeout","transitionMs","style","ref","onMouseDown","e","target","onMouseUp","display"],"sources":["../../src/modal/Modal.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport React, {\n type ReactNode,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport ReactDOM from 'react-dom';\nimport { CSSTransition } from 'react-transition-group';\nimport ThemeExport from '../ThemeExport';\nimport { SpectrumThemeProvider } from '../theme/SpectrumThemeProvider';\n\ninterface ModalProps {\n className?: string;\n children?: ReactNode;\n role?: string;\n keyboard?: boolean;\n clickOutside?: boolean;\n isOpen?: boolean;\n centered?: boolean;\n size?: 'sm' | 'lg' | 'xl' | undefined;\n onOpened?: () => void;\n onClosed?: () => void;\n toggle?: () => void;\n 'data-testid'?: string;\n}\n\nfunction Modal({\n className,\n children,\n role = 'role',\n keyboard = true,\n clickOutside = true,\n isOpen = false,\n centered = false,\n size,\n onOpened,\n onClosed,\n toggle,\n 'data-testid': dataTestId,\n}: ModalProps): React.ReactElement | null {\n const element = useRef<HTMLElement>();\n const background = useRef<HTMLDivElement>(null);\n const [backgroundClicked, setBackgroundClicked] = useState(false);\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent): void => {\n switch (event.key) {\n case 'Escape':\n toggle?.();\n break;\n default:\n break;\n }\n },\n [toggle]\n );\n\n useEffect(\n function addKeydownEventListener() {\n if (isOpen && keyboard) {\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }\n },\n [handleKeyDown, isOpen, keyboard]\n );\n\n useEffect(\n function open() {\n if (isOpen && onOpened) {\n onOpened();\n }\n },\n [onOpened, isOpen]\n );\n\n useEffect(\n function closed() {\n if (!isOpen && onClosed) {\n onClosed();\n }\n },\n [onClosed, isOpen]\n );\n\n if (isOpen && !element.current) {\n element.current = document.createElement('div');\n element.current.setAttribute(\n 'style',\n 'padding-right: 15px; display: block'\n );\n element.current.setAttribute('role', 'presentation');\n document.body.appendChild(element.current);\n }\n\n const onExited = (): void => {\n if (element.current) {\n document.body.removeChild(element.current);\n element.current = undefined;\n }\n };\n\n return element.current\n ? ReactDOM.createPortal(\n // Without the zIndex and position props\n // the modal is rendered on top of nested DatePicker popovers\n <SpectrumThemeProvider isPortal zIndex={0} position=\"relative\">\n <CSSTransition\n appear\n mountOnEnter\n unmountOnExit\n in={isOpen}\n classNames={{\n appearActive: 'show',\n appearDone: 'show',\n }}\n timeout={ThemeExport.transitionMs}\n onExited={onExited}\n >\n <div\n className={classNames('modal-backdrop fade')}\n style={{ zIndex: 1050 }}\n />\n </CSSTransition>\n <CSSTransition\n appear\n mountOnEnter\n unmountOnExit\n in={isOpen}\n classNames={{\n appearDone: 'show',\n }}\n timeout={ThemeExport.transitionMs}\n onExited={onExited}\n >\n <div\n ref={background}\n className=\"modal fade\"\n onMouseDown={e => {\n if (e.target === background.current) {\n setBackgroundClicked(true);\n } else {\n setBackgroundClicked(false);\n }\n }}\n onMouseUp={e => {\n if (\n backgroundClicked &&\n clickOutside &&\n e.target === background.current &&\n toggle !== undefined\n ) {\n toggle();\n }\n }}\n role=\"dialog\"\n style={{ display: 'block' }}\n >\n <div\n className={classNames('modal-dialog', className, {\n 'modal-lg': size === 'lg',\n 'modal-sm': size === 'sm',\n 'modal-xl': size === 'xl',\n 'modal-dialog-centered': centered,\n })}\n style={{ zIndex: 1040 }}\n >\n <div\n className=\"modal-content\"\n role=\"presentation\"\n data-testid={dataTestId}\n >\n {children}\n </div>\n </div>\n </div>\n </CSSTransition>\n </SpectrumThemeProvider>,\n element.current\n )\n : null;\n}\n\nexport default Modal;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Modal.js","names":["classNames","React","useCallback","useEffect","useRef","useState","ReactDOM","CSSTransition","ThemeExport","SpectrumThemeProvider","jsx","_jsx","jsxs","_jsxs","Modal","_ref","className","children","role","keyboard","clickOutside","isOpen","centered","size","onOpened","onClosed","toggle","dataTestId","element","background","backdropFade","backgroundClicked","setBackgroundClicked","handleKeyDown","event","key","addKeydownEventListener","window","addEventListener","removeEventListener","open","closed","current","document","createElement","setAttribute","body","appendChild","onExited","removeChild","undefined","createPortal","isPortal","zIndex","position","appear","mountOnEnter","unmountOnExit","in","appearActive","appearDone","timeout","transitionMs","nodeRef","ref","style","onMouseDown","e","target","onMouseUp","display"],"sources":["../../src/modal/Modal.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport React, {\n type ReactNode,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport ReactDOM from 'react-dom';\nimport { CSSTransition } from 'react-transition-group';\nimport ThemeExport from '../ThemeExport';\nimport { SpectrumThemeProvider } from '../theme/SpectrumThemeProvider';\n\ninterface ModalProps {\n className?: string;\n children?: ReactNode;\n role?: string;\n keyboard?: boolean;\n clickOutside?: boolean;\n isOpen?: boolean;\n centered?: boolean;\n size?: 'sm' | 'lg' | 'xl' | undefined;\n onOpened?: () => void;\n onClosed?: () => void;\n toggle?: () => void;\n 'data-testid'?: string;\n}\n\nfunction Modal({\n className,\n children,\n role = 'role',\n keyboard = true,\n clickOutside = true,\n isOpen = false,\n centered = false,\n size,\n onOpened,\n onClosed,\n toggle,\n 'data-testid': dataTestId,\n}: ModalProps): React.ReactElement | null {\n const element = useRef<HTMLElement>();\n const background = useRef<HTMLDivElement>(null);\n const backdropFade = useRef<HTMLDivElement>(null);\n const [backgroundClicked, setBackgroundClicked] = useState(false);\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent): void => {\n switch (event.key) {\n case 'Escape':\n toggle?.();\n break;\n default:\n break;\n }\n },\n [toggle]\n );\n\n useEffect(\n function addKeydownEventListener() {\n if (isOpen && keyboard) {\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }\n },\n [handleKeyDown, isOpen, keyboard]\n );\n\n useEffect(\n function open() {\n if (isOpen && onOpened) {\n onOpened();\n }\n },\n [onOpened, isOpen]\n );\n\n useEffect(\n function closed() {\n if (!isOpen && onClosed) {\n onClosed();\n }\n },\n [onClosed, isOpen]\n );\n\n if (isOpen && !element.current) {\n element.current = document.createElement('div');\n element.current.setAttribute(\n 'style',\n 'padding-right: 15px; display: block'\n );\n element.current.setAttribute('role', 'presentation');\n document.body.appendChild(element.current);\n }\n\n const onExited = (): void => {\n if (element.current) {\n document.body.removeChild(element.current);\n element.current = undefined;\n }\n };\n\n return element.current\n ? ReactDOM.createPortal(\n // Without the zIndex and position props\n // the modal is rendered on top of nested DatePicker popovers\n <SpectrumThemeProvider isPortal zIndex={0} position=\"relative\">\n <CSSTransition\n appear\n mountOnEnter\n unmountOnExit\n in={isOpen}\n classNames={{\n appearActive: 'show',\n appearDone: 'show',\n }}\n timeout={ThemeExport.transitionMs}\n onExited={onExited}\n nodeRef={backdropFade}\n >\n <div\n ref={backdropFade}\n className={classNames('modal-backdrop fade')}\n style={{ zIndex: 1050 }}\n />\n </CSSTransition>\n <CSSTransition\n appear\n mountOnEnter\n unmountOnExit\n in={isOpen}\n classNames={{\n appearDone: 'show',\n }}\n timeout={ThemeExport.transitionMs}\n onExited={onExited}\n nodeRef={background}\n >\n <div\n ref={background}\n className=\"modal fade\"\n onMouseDown={e => {\n if (e.target === background.current) {\n setBackgroundClicked(true);\n } else {\n setBackgroundClicked(false);\n }\n }}\n onMouseUp={e => {\n if (\n backgroundClicked &&\n clickOutside &&\n e.target === background.current &&\n toggle !== undefined\n ) {\n toggle();\n }\n }}\n role=\"dialog\"\n style={{ display: 'block' }}\n >\n <div\n className={classNames('modal-dialog', className, {\n 'modal-lg': size === 'lg',\n 'modal-sm': size === 'sm',\n 'modal-xl': size === 'xl',\n 'modal-dialog-centered': centered,\n })}\n style={{ zIndex: 1040 }}\n >\n <div\n className=\"modal-content\"\n role=\"presentation\"\n data-testid={dataTestId}\n >\n {children}\n </div>\n </div>\n </div>\n </CSSTransition>\n </SpectrumThemeProvider>,\n element.current\n )\n : null;\n}\n\nexport default Modal;\n"],"mappings":"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","ignoreList":[]}
@@ -52,6 +52,7 @@ declare class Popper extends Component<PopperProps, PopperState> {
52
52
  componentWillUnmount(): void;
53
53
  element: HTMLDivElement;
54
54
  container: React.RefObject<HTMLDivElement>;
55
+ nodeRef: React.RefObject<HTMLDivElement>;
55
56
  rAF: number;
56
57
  /** Goes through an element and it's parents until the first visible element is found */
57
58
  getVisibleElement(element: HTMLElement | null): HTMLElement | null;
@@ -1 +1 @@
1
- {"version":3,"file":"Popper.d.ts","sourceRoot":"","sources":["../../src/popper/Popper.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIzC,OAAO,QAAQ,EAAE,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAE/E,OAAO,eAAe,CAAC;AAKvB,UAAU,WAAW;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC;CACzB;AAED,cAAM,MAAO,SAAQ,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC;IACtD,MAAM,CAAC,YAAY;;;;qBAIJ,IAAI;oBAGL,IAAI;;;;;;MAQhB;gBAEU,KAAK,EAAE,WAAW;IAsB9B,kBAAkB,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IAehD,oBAAoB,IAAI,IAAI;IAI5B,OAAO,EAAE,cAAc,CAAC;IAExB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAG3C,GAAG,EAAE,MAAM,CAAC;IAEZ,wFAAwF;IACxF,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI;IAYlE,UAAU,IAAI,IAAI;IAwDlB,aAAa,CAAC,WAAW,UAAO,GAAG,IAAI;IAsBvC,IAAI,IAAI,IAAI;IASZ,IAAI,IAAI,IAAI;IAIZ,cAAc,IAAI,IAAI;IAKtB,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,IAAI;IASrC,WAAW,IAAI,IAAI;IAKnB,UAAU,IAAI,IAAI;IASlB,aAAa,IAAI,GAAG,CAAC,OAAO;IA0C5B,MAAM,IAAI,GAAG,CAAC,OAAO;CActB;AAED,eAAe,MAAM,CAAC;AACtB,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"Popper.d.ts","sourceRoot":"","sources":["../../src/popper/Popper.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIzC,OAAO,QAAQ,EAAE,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAE/E,OAAO,eAAe,CAAC;AAKvB,UAAU,WAAW;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC;CACzB;AAED,cAAM,MAAO,SAAQ,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC;IACtD,MAAM,CAAC,YAAY;;;;qBAIJ,IAAI;oBAGL,IAAI;;;;;;MAQhB;gBAEU,KAAK,EAAE,WAAW;IAsB9B,kBAAkB,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IAehD,oBAAoB,IAAI,IAAI;IAI5B,OAAO,EAAE,cAAc,CAAC;IAExB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAE3C,OAAO,kCAAqC;IAG5C,GAAG,EAAE,MAAM,CAAC;IAEZ,wFAAwF;IACxF,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI;IAYlE,UAAU,IAAI,IAAI;IAwDlB,aAAa,CAAC,WAAW,UAAO,GAAG,IAAI;IAsBvC,IAAI,IAAI,IAAI;IASZ,IAAI,IAAI,IAAI;IAIZ,cAAc,IAAI,IAAI;IAKtB,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,IAAI;IASrC,WAAW,IAAI,IAAI;IAKnB,UAAU,IAAI,IAAI;IASlB,aAAa,IAAI,GAAG,CAAC,OAAO;IA4C5B,MAAM,IAAI,GAAG,CAAC,OAAO;CActB;AAED,eAAe,MAAM,CAAC;AACtB,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC"}
@@ -35,6 +35,7 @@ class Popper extends Component {
35
35
  super(props);
36
36
  _defineProperty(this, "element", void 0);
37
37
  _defineProperty(this, "container", void 0);
38
+ _defineProperty(this, "nodeRef", /*#__PURE__*/React.createRef());
38
39
  // This is the request animation frame handle number
39
40
  _defineProperty(this, "rAF", void 0);
40
41
  this.handleEnter = this.handleEnter.bind(this);
@@ -223,7 +224,9 @@ class Popper extends Component {
223
224
  classNames: "popper-transition",
224
225
  onEntered: this.handleEnter,
225
226
  onExited: this.handleExit,
227
+ nodeRef: this.nodeRef,
226
228
  children: /*#__PURE__*/_jsx("div", {
229
+ ref: this.nodeRef,
227
230
  onClick: e => {
228
231
  // stop click events from escaping popper
229
232
  e.stopPropagation();
@@ -1 +1 @@
1
- {"version":3,"file":"Popper.js","names":["React","Component","ReactDOM","flushSync","classNames","CSSTransition","PopperJs","ThemeExport","SpectrumThemeProvider","jsx","_jsx","jsxs","_jsxs","POPPER_CLASS_NAME","Popper","constructor","props","_defineProperty","handleEnter","bind","handleExit","handleBlur","element","document","createElement","className","container","createRef","rAF","isShown","state","show","popper","componentDidUpdate","prevProps","cancelAnimationFrame","window","requestAnimationFrame","hide","componentWillUnmount","destroyPopper","getVisibleElement","clientHeight","clientWidth","parentElement","initPopper","statePopper","closeOnBlur","referenceObject","current","options","_objectSpread","placement","modifiers","preventOverflow","boundariesElement","body","appendChild","parent","scheduleUpdate","popperEl","querySelector","concat","HTMLElement","contains","activeElement","focus","setState","updateState","arguments","length","undefined","destroy","removeChild","e","relatedTarget","onEntered","onExited","renderContent","children","timeout","interactive","isPortal","in","onClick","stopPropagation","onKeyDown","key","onBlur","tabIndex","role","render","dataTestId","ref","style","display","createPortal","transitionMs"],"sources":["../../src/popper/Popper.tsx"],"sourcesContent":["/**\n * A component for creating popover dialogs. Only requires child element.\n *\n * <Popper\n * options={popperOptions}\n * className=\"whatever\"\n * onEntered={this.handleEnter}\n * onExited={this.handleExit}\n * closeOnBlur // if you want dialog to self close, on click outside\n * interactive // if popper contents will be interactable\n * isShown={variable} // controls if its shown or not,\n * ref={this.popper} // or via ref and this.popper.show() or this.popper.hide()\n * >\n * <ChildContent />\n * </Popper>\n */\n\nimport React, { Component } from 'react';\nimport ReactDOM, { flushSync } from 'react-dom';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport PopperJs, { type PopperOptions, type ReferenceObject } from 'popper.js';\nimport ThemeExport from '../ThemeExport';\nimport './Popper.scss';\nimport { SpectrumThemeProvider } from '../theme/SpectrumThemeProvider';\n\nconst POPPER_CLASS_NAME = 'popper';\n\ninterface PopperProps {\n children: React.ReactNode;\n options: PopperOptions;\n className: string;\n timeout: number;\n onEntered: () => void;\n onExited: () => void;\n isShown: boolean;\n closeOnBlur: boolean;\n interactive: boolean;\n referenceObject: ReferenceObject | null;\n 'data-testid'?: string;\n}\n\ninterface PopperState {\n show: boolean;\n popper: PopperJs | null;\n}\n\nclass Popper extends Component<PopperProps, PopperState> {\n static defaultProps = {\n options: {},\n className: '',\n timeout: ThemeExport.transitionMs,\n onEntered(): void {\n // no-op\n },\n onExited(): void {\n // no-op\n },\n isShown: false,\n interactive: false,\n closeOnBlur: false,\n referenceObject: null,\n 'data-testid': undefined,\n };\n\n constructor(props: PopperProps) {\n super(props);\n\n this.handleEnter = this.handleEnter.bind(this);\n this.handleExit = this.handleExit.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.element = document.createElement('div');\n this.element.className = 'popper-container';\n this.container = React.createRef<HTMLDivElement>();\n\n // cancelAnimationFrame does nothing if the handle isn't recognized\n // requestAnimationFrame provides a non-zero number, so 0 as a default should be safe\n this.rAF = 0;\n\n const { isShown } = this.props;\n\n this.state = {\n show: isShown,\n popper: null,\n };\n }\n\n componentDidUpdate(prevProps: PopperProps): void {\n const { isShown } = this.props;\n\n if (prevProps.isShown !== isShown) {\n if (isShown) {\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n this.show();\n });\n } else {\n this.hide();\n }\n }\n }\n\n componentWillUnmount(): void {\n this.destroyPopper(false);\n }\n\n element: HTMLDivElement;\n\n container: React.RefObject<HTMLDivElement>;\n\n // This is the request animation frame handle number\n rAF: number;\n\n /** Goes through an element and it's parents until the first visible element is found */\n getVisibleElement(element: HTMLElement | null): HTMLElement | null {\n if (\n element == null ||\n element.clientHeight > 0 ||\n element.clientWidth > 0\n ) {\n return element;\n }\n\n return this.getVisibleElement(element.parentElement);\n }\n\n initPopper(): void {\n const { popper: statePopper } = this.state;\n const { closeOnBlur, referenceObject } = this.props;\n\n if (statePopper) {\n return;\n }\n\n if (this.container.current === null) {\n return;\n }\n\n let { options } = this.props;\n options = {\n placement: 'auto',\n modifiers: { preventOverflow: { boundariesElement: 'viewport' } },\n ...options,\n };\n document.body.appendChild(this.element);\n\n let parent = this.getVisibleElement(this.container.current);\n if (parent == null) {\n parent = this.container.current;\n }\n\n const popper = new PopperJs(\n referenceObject || parent,\n this.element,\n options\n );\n popper.scheduleUpdate();\n\n // delayed due to scheduleUpdate\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n // If the current focus is not on the .popper or one of its descendants,\n // set the focus to the .popper element. This is necessary for close on\n // blur to work.\n if (closeOnBlur) {\n const popperEl = this.element.querySelector(`.${POPPER_CLASS_NAME}`);\n\n if (\n popperEl instanceof HTMLElement &&\n !popperEl.contains(document.activeElement)\n ) {\n popperEl.focus();\n }\n }\n });\n\n // Needed to make the animation work\n flushSync(() => {\n this.setState({ popper });\n });\n }\n\n destroyPopper(updateState = true): void {\n cancelAnimationFrame(this.rAF);\n\n const { popper } = this.state;\n if (!popper) {\n return;\n }\n\n popper.destroy();\n\n // If component is exiting and unmounted in\n // the same frame, destroy can be called twice.\n // Check to make sure removeChild isn't called twice.\n if (document.body.contains(this.element)) {\n document.body.removeChild(this.element);\n }\n\n if (updateState) {\n this.setState({ popper: null });\n }\n }\n\n show(): void {\n this.initPopper();\n\n // Needed to make the animation work\n flushSync(() => {\n this.setState({ show: true });\n });\n }\n\n hide(): void {\n this.setState({ show: false });\n }\n\n scheduleUpdate(): void {\n const { popper } = this.state;\n if (popper) popper.scheduleUpdate();\n }\n\n handleBlur(e: React.FocusEvent): void {\n if (!(e.relatedTarget instanceof HTMLElement)) {\n return;\n }\n if (!this.element.contains(e.relatedTarget)) {\n this.hide();\n }\n }\n\n handleEnter(): void {\n const { onEntered } = this.props;\n onEntered(); // trigger any parent component waiting for enter handler\n }\n\n handleExit(): void {\n const { onExited } = this.props;\n const { show } = this.state;\n if (!show) {\n this.destroyPopper();\n }\n onExited(); // trigger any parent component waiting for exited handler\n }\n\n renderContent(): JSX.Element {\n const { className, children, timeout, interactive, closeOnBlur } =\n this.props;\n const { show } = this.state;\n\n return (\n <SpectrumThemeProvider isPortal>\n <CSSTransition\n in={show}\n timeout={timeout}\n classNames=\"popper-transition\"\n onEntered={this.handleEnter}\n onExited={this.handleExit}\n >\n <div\n onClick={e => {\n // stop click events from escaping popper\n e.stopPropagation();\n }}\n onKeyDown={e => {\n if (e.key === 'Escape') this.hide();\n }}\n className={classNames(\n POPPER_CLASS_NAME,\n { interactive },\n className\n )}\n onBlur={closeOnBlur ? this.handleBlur : undefined}\n tabIndex={closeOnBlur ? -1 : undefined}\n role=\"presentation\"\n >\n <div className=\"popper-content\">\n {children}\n {/* eslint-disable-next-line react/no-unknown-property */}\n <div className=\"popper-arrow\" x-arrow=\"\" />\n </div>\n </div>\n </CSSTransition>\n </SpectrumThemeProvider>\n );\n }\n\n render(): JSX.Element {\n const { popper } = this.state;\n const { 'data-testid': dataTestId } = this.props;\n return (\n <div\n className=\"popper-parent-container\"\n ref={this.container}\n style={{ display: 'none' }}\n data-testid={dataTestId}\n >\n {popper && ReactDOM.createPortal(this.renderContent(), this.element)}\n </div>\n );\n }\n}\n\nexport default Popper;\nexport type { PopperOptions, ReferenceObject };\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Popper.js","names":["React","Component","ReactDOM","flushSync","classNames","CSSTransition","PopperJs","ThemeExport","SpectrumThemeProvider","jsx","_jsx","jsxs","_jsxs","POPPER_CLASS_NAME","Popper","constructor","props","_defineProperty","createRef","handleEnter","bind","handleExit","handleBlur","element","document","createElement","className","container","rAF","isShown","state","show","popper","componentDidUpdate","prevProps","cancelAnimationFrame","window","requestAnimationFrame","hide","componentWillUnmount","destroyPopper","getVisibleElement","clientHeight","clientWidth","parentElement","initPopper","statePopper","closeOnBlur","referenceObject","current","options","_objectSpread","placement","modifiers","preventOverflow","boundariesElement","body","appendChild","parent","scheduleUpdate","popperEl","querySelector","concat","HTMLElement","contains","activeElement","focus","setState","updateState","arguments","length","undefined","destroy","removeChild","e","relatedTarget","onEntered","onExited","renderContent","children","timeout","interactive","isPortal","in","nodeRef","ref","onClick","stopPropagation","onKeyDown","key","onBlur","tabIndex","role","render","dataTestId","style","display","createPortal","transitionMs"],"sources":["../../src/popper/Popper.tsx"],"sourcesContent":["/**\n * A component for creating popover dialogs. Only requires child element.\n *\n * <Popper\n * options={popperOptions}\n * className=\"whatever\"\n * onEntered={this.handleEnter}\n * onExited={this.handleExit}\n * closeOnBlur // if you want dialog to self close, on click outside\n * interactive // if popper contents will be interactable\n * isShown={variable} // controls if its shown or not,\n * ref={this.popper} // or via ref and this.popper.show() or this.popper.hide()\n * >\n * <ChildContent />\n * </Popper>\n */\n\nimport React, { Component } from 'react';\nimport ReactDOM, { flushSync } from 'react-dom';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport PopperJs, { type PopperOptions, type ReferenceObject } from 'popper.js';\nimport ThemeExport from '../ThemeExport';\nimport './Popper.scss';\nimport { SpectrumThemeProvider } from '../theme/SpectrumThemeProvider';\n\nconst POPPER_CLASS_NAME = 'popper';\n\ninterface PopperProps {\n children: React.ReactNode;\n options: PopperOptions;\n className: string;\n timeout: number;\n onEntered: () => void;\n onExited: () => void;\n isShown: boolean;\n closeOnBlur: boolean;\n interactive: boolean;\n referenceObject: ReferenceObject | null;\n 'data-testid'?: string;\n}\n\ninterface PopperState {\n show: boolean;\n popper: PopperJs | null;\n}\n\nclass Popper extends Component<PopperProps, PopperState> {\n static defaultProps = {\n options: {},\n className: '',\n timeout: ThemeExport.transitionMs,\n onEntered(): void {\n // no-op\n },\n onExited(): void {\n // no-op\n },\n isShown: false,\n interactive: false,\n closeOnBlur: false,\n referenceObject: null,\n 'data-testid': undefined,\n };\n\n constructor(props: PopperProps) {\n super(props);\n\n this.handleEnter = this.handleEnter.bind(this);\n this.handleExit = this.handleExit.bind(this);\n this.handleBlur = this.handleBlur.bind(this);\n this.element = document.createElement('div');\n this.element.className = 'popper-container';\n this.container = React.createRef<HTMLDivElement>();\n\n // cancelAnimationFrame does nothing if the handle isn't recognized\n // requestAnimationFrame provides a non-zero number, so 0 as a default should be safe\n this.rAF = 0;\n\n const { isShown } = this.props;\n\n this.state = {\n show: isShown,\n popper: null,\n };\n }\n\n componentDidUpdate(prevProps: PopperProps): void {\n const { isShown } = this.props;\n\n if (prevProps.isShown !== isShown) {\n if (isShown) {\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n this.show();\n });\n } else {\n this.hide();\n }\n }\n }\n\n componentWillUnmount(): void {\n this.destroyPopper(false);\n }\n\n element: HTMLDivElement;\n\n container: React.RefObject<HTMLDivElement>;\n\n nodeRef = React.createRef<HTMLDivElement>();\n\n // This is the request animation frame handle number\n rAF: number;\n\n /** Goes through an element and it's parents until the first visible element is found */\n getVisibleElement(element: HTMLElement | null): HTMLElement | null {\n if (\n element == null ||\n element.clientHeight > 0 ||\n element.clientWidth > 0\n ) {\n return element;\n }\n\n return this.getVisibleElement(element.parentElement);\n }\n\n initPopper(): void {\n const { popper: statePopper } = this.state;\n const { closeOnBlur, referenceObject } = this.props;\n\n if (statePopper) {\n return;\n }\n\n if (this.container.current === null) {\n return;\n }\n\n let { options } = this.props;\n options = {\n placement: 'auto',\n modifiers: { preventOverflow: { boundariesElement: 'viewport' } },\n ...options,\n };\n document.body.appendChild(this.element);\n\n let parent = this.getVisibleElement(this.container.current);\n if (parent == null) {\n parent = this.container.current;\n }\n\n const popper = new PopperJs(\n referenceObject || parent,\n this.element,\n options\n );\n popper.scheduleUpdate();\n\n // delayed due to scheduleUpdate\n cancelAnimationFrame(this.rAF);\n this.rAF = window.requestAnimationFrame(() => {\n // If the current focus is not on the .popper or one of its descendants,\n // set the focus to the .popper element. This is necessary for close on\n // blur to work.\n if (closeOnBlur) {\n const popperEl = this.element.querySelector(`.${POPPER_CLASS_NAME}`);\n\n if (\n popperEl instanceof HTMLElement &&\n !popperEl.contains(document.activeElement)\n ) {\n popperEl.focus();\n }\n }\n });\n\n // Needed to make the animation work\n flushSync(() => {\n this.setState({ popper });\n });\n }\n\n destroyPopper(updateState = true): void {\n cancelAnimationFrame(this.rAF);\n\n const { popper } = this.state;\n if (!popper) {\n return;\n }\n\n popper.destroy();\n\n // If component is exiting and unmounted in\n // the same frame, destroy can be called twice.\n // Check to make sure removeChild isn't called twice.\n if (document.body.contains(this.element)) {\n document.body.removeChild(this.element);\n }\n\n if (updateState) {\n this.setState({ popper: null });\n }\n }\n\n show(): void {\n this.initPopper();\n\n // Needed to make the animation work\n flushSync(() => {\n this.setState({ show: true });\n });\n }\n\n hide(): void {\n this.setState({ show: false });\n }\n\n scheduleUpdate(): void {\n const { popper } = this.state;\n if (popper) popper.scheduleUpdate();\n }\n\n handleBlur(e: React.FocusEvent): void {\n if (!(e.relatedTarget instanceof HTMLElement)) {\n return;\n }\n if (!this.element.contains(e.relatedTarget)) {\n this.hide();\n }\n }\n\n handleEnter(): void {\n const { onEntered } = this.props;\n onEntered(); // trigger any parent component waiting for enter handler\n }\n\n handleExit(): void {\n const { onExited } = this.props;\n const { show } = this.state;\n if (!show) {\n this.destroyPopper();\n }\n onExited(); // trigger any parent component waiting for exited handler\n }\n\n renderContent(): JSX.Element {\n const { className, children, timeout, interactive, closeOnBlur } =\n this.props;\n const { show } = this.state;\n\n return (\n <SpectrumThemeProvider isPortal>\n <CSSTransition\n in={show}\n timeout={timeout}\n classNames=\"popper-transition\"\n onEntered={this.handleEnter}\n onExited={this.handleExit}\n nodeRef={this.nodeRef}\n >\n <div\n ref={this.nodeRef}\n onClick={e => {\n // stop click events from escaping popper\n e.stopPropagation();\n }}\n onKeyDown={e => {\n if (e.key === 'Escape') this.hide();\n }}\n className={classNames(\n POPPER_CLASS_NAME,\n { interactive },\n className\n )}\n onBlur={closeOnBlur ? this.handleBlur : undefined}\n tabIndex={closeOnBlur ? -1 : undefined}\n role=\"presentation\"\n >\n <div className=\"popper-content\">\n {children}\n {/* eslint-disable-next-line react/no-unknown-property */}\n <div className=\"popper-arrow\" x-arrow=\"\" />\n </div>\n </div>\n </CSSTransition>\n </SpectrumThemeProvider>\n );\n }\n\n render(): JSX.Element {\n const { popper } = this.state;\n const { 'data-testid': dataTestId } = this.props;\n return (\n <div\n className=\"popper-parent-container\"\n ref={this.container}\n style={{ display: 'none' }}\n data-testid={dataTestId}\n >\n {popper && ReactDOM.createPortal(this.renderContent(), this.element)}\n </div>\n );\n }\n}\n\nexport default Popper;\nexport type { PopperOptions, ReferenceObject };\n"],"mappings":"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","ignoreList":[]}
@@ -1,11 +1,14 @@
1
1
  import type { CSSTransitionProps } from 'react-transition-group/CSSTransition';
2
- import type { EndHandler } from 'react-transition-group/Transition';
3
- type FadeTransitionProps<Ref extends undefined | HTMLElement = undefined> = Omit<CSSTransitionProps<Ref>, 'addEndHandler'> & {
4
- addEndHandler?: EndHandler<Ref> | undefined;
2
+ import type { EndHandler, EnterHandler } from 'react-transition-group/Transition';
3
+ import type { RemoveIndexSignature } from '@deephaven/utils';
4
+ type FadeTransitionProps = Omit<RemoveIndexSignature<CSSTransitionProps<HTMLElement>>, 'addEndHandler' | 'children' | 'onEnter'> & {
5
+ addEndHandler?: EndHandler<HTMLElement> | undefined;
6
+ onEnter?: EnterHandler<undefined>;
7
+ children?: React.ReactNode;
5
8
  };
6
9
  /**
7
10
  * Fade between two components. Defaults to 150ms transition.
8
11
  */
9
- declare function FadeTransition<Ref extends undefined | HTMLElement = undefined>({ className, timeout, ...props }: FadeTransitionProps<Ref>): JSX.Element;
12
+ declare function FadeTransition({ classNames: classNamesProp, timeout, children, onEnter, ...props }: FadeTransitionProps): JSX.Element;
10
13
  export default FadeTransition;
11
14
  //# sourceMappingURL=FadeTransition.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FadeTransition.d.ts","sourceRoot":"","sources":["../../src/transitions/FadeTransition.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAIpE,KAAK,mBAAmB,CAAC,GAAG,SAAS,SAAS,GAAG,WAAW,GAAG,SAAS,IAItE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC,GAAG;IAC/C,aAAa,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;CAC7C,CAAC;AAEJ;;GAEG;AACH,iBAAS,cAAc,CAAC,GAAG,SAAS,SAAS,GAAG,WAAW,GAAG,SAAS,EAAE,EACvE,SAAS,EACT,OAAkC,EAClC,GAAG,KAAK,EACT,EAAE,mBAAmB,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,OAAO,CASxC;AAED,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"FadeTransition.d.ts","sourceRoot":"","sources":["../../src/transitions/FadeTransition.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACb,MAAM,mCAAmC,CAAC;AAE3C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAK7D,KAAK,mBAAmB,GAItB,IAAI,CACF,oBAAoB,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,EACrD,eAAe,GAAG,UAAU,GAAG,SAAS,CACzC,GAAG;IACF,aAAa,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;IACpD,OAAO,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAEJ;;GAEG;AACH,iBAAS,cAAc,CAAC,EACtB,UAAU,EAAE,cAAc,EAC1B,OAAkC,EAClC,QAAQ,EACR,OAAO,EACP,GAAG,KAAK,EACT,EAAE,mBAAmB,GAAG,GAAG,CAAC,OAAO,CAiCnC;AAED,eAAe,cAAc,CAAC"}
@@ -1,4 +1,4 @@
1
- var _excluded = ["className", "timeout"];
1
+ var _excluded = ["classNames", "timeout", "children", "onEnter"];
2
2
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
3
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
4
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
@@ -6,24 +6,52 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
6
6
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
7
  function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
8
8
  function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
9
+ import { useCallback, useRef } from 'react';
9
10
  import { CSSTransition } from 'react-transition-group';
10
11
  import classNames from 'classnames';
11
12
  import ThemeExport from "../ThemeExport.js";
12
13
  import { jsx as _jsx } from "react/jsx-runtime";
14
+ var DISPLAY_CONTENTS = {
15
+ display: 'contents'
16
+ };
13
17
  /**
14
18
  * Fade between two components. Defaults to 150ms transition.
15
19
  */
16
20
  function FadeTransition(_ref) {
17
21
  var {
18
- className,
19
- timeout = ThemeExport.transitionMs
22
+ classNames: classNamesProp,
23
+ timeout = ThemeExport.transitionMs,
24
+ children,
25
+ onEnter
20
26
  } = _ref,
21
27
  props = _objectWithoutProperties(_ref, _excluded);
22
- return /*#__PURE__*/_jsx(CSSTransition, _objectSpread({
28
+ var nodeRef = useRef(null);
29
+ var handleOnEnter = useCallback(isAppearing => {
30
+ var elem = nodeRef.current;
31
+ if (!elem) {
32
+ return;
33
+ }
34
+ onEnter === null || onEnter === void 0 || onEnter(elem, isAppearing);
35
+ }, [onEnter]);
36
+
37
+ // Mimics findDOMNode for CSSTransition
38
+ // The ref should be set before CSSTransition does anything with it
39
+ var setRef = useCallback(node => {
40
+ nodeRef.current = node === null || node === void 0 ? void 0 : node.firstElementChild;
41
+ }, []);
42
+ return /*#__PURE__*/_jsx(CSSTransition, _objectSpread(_objectSpread({
43
+ nodeRef: nodeRef,
23
44
  timeout: timeout,
24
- classNames: classNames('fade', className)
45
+ classNames: classNames('fade', classNamesProp),
46
+ onEnter: handleOnEnter
25
47
  // eslint-disable-next-line react/jsx-props-no-spreading
26
- }, props));
48
+ }, props), {}, {
49
+ children: /*#__PURE__*/_jsx("div", {
50
+ ref: setRef,
51
+ style: DISPLAY_CONTENTS,
52
+ children: children
53
+ })
54
+ }));
27
55
  }
28
56
  export default FadeTransition;
29
57
  //# sourceMappingURL=FadeTransition.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FadeTransition.js","names":["CSSTransition","classNames","ThemeExport","jsx","_jsx","FadeTransition","_ref","className","timeout","transitionMs","props","_objectWithoutProperties","_excluded","_objectSpread"],"sources":["../../src/transitions/FadeTransition.tsx"],"sourcesContent":["import { CSSTransition } from 'react-transition-group';\nimport type { CSSTransitionProps } from 'react-transition-group/CSSTransition';\nimport type { EndHandler } from 'react-transition-group/Transition';\nimport classNames from 'classnames';\nimport ThemeExport from '../ThemeExport';\n\ntype FadeTransitionProps<Ref extends undefined | HTMLElement = undefined> =\n // We default the timeout, so user doesn't need to provide it\n // However, CSSTransitionProps get confused if you don't provide a timeout, it requires an endHandler\n // We're just making the endHandler optional here, as the timeout has a default\n Omit<CSSTransitionProps<Ref>, 'addEndHandler'> & {\n addEndHandler?: EndHandler<Ref> | undefined;\n };\n\n/**\n * Fade between two components. Defaults to 150ms transition.\n */\nfunction FadeTransition<Ref extends undefined | HTMLElement = undefined>({\n className,\n timeout = ThemeExport.transitionMs,\n ...props\n}: FadeTransitionProps<Ref>): JSX.Element {\n return (\n <CSSTransition\n timeout={timeout}\n classNames={classNames('fade', className)}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n );\n}\n\nexport default FadeTransition;\n"],"mappings":";;;;;;;;AAAA,SAASA,aAAa,QAAQ,wBAAwB;AAGtD,OAAOC,UAAU,MAAM,YAAY;AAAC,OAC7BC,WAAW;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAUlB;AACA;AACA;AACA,SAASC,cAAcA,CAAAC,IAAA,EAImB;EAAA,IAJ+B;MACvEC,SAAS;MACTC,OAAO,GAAGN,WAAW,CAACO;IAEE,CAAC,GAAAH,IAAA;IADtBI,KAAK,GAAAC,wBAAA,CAAAL,IAAA,EAAAM,SAAA;EAER,oBACER,IAAA,CAACJ,aAAa,EAAAa,aAAA;IACZL,OAAO,EAAEA,OAAQ;IACjBP,UAAU,EAAEA,UAAU,CAAC,MAAM,EAAEM,SAAS;IACxC;EAAA,GACIG,KAAK,CACV,CAAC;AAEN;AAEA,eAAeL,cAAc","ignoreList":[]}
1
+ {"version":3,"file":"FadeTransition.js","names":["useCallback","useRef","CSSTransition","classNames","ThemeExport","jsx","_jsx","DISPLAY_CONTENTS","display","FadeTransition","_ref","classNamesProp","timeout","transitionMs","children","onEnter","props","_objectWithoutProperties","_excluded","nodeRef","handleOnEnter","isAppearing","elem","current","setRef","node","firstElementChild","_objectSpread","ref","style"],"sources":["../../src/transitions/FadeTransition.tsx"],"sourcesContent":["import { useCallback, useRef } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport type { CSSTransitionProps } from 'react-transition-group/CSSTransition';\nimport type {\n EndHandler,\n EnterHandler,\n} from 'react-transition-group/Transition';\nimport classNames from 'classnames';\nimport type { RemoveIndexSignature } from '@deephaven/utils';\nimport ThemeExport from '../ThemeExport';\n\nconst DISPLAY_CONTENTS = { display: 'contents' };\n\ntype FadeTransitionProps =\n // We default the timeout, so user doesn't need to provide it\n // However, CSSTransitionProps get confused if you don't provide a timeout, it requires an endHandler\n // We're just making the endHandler optional here, as the timeout has a default\n Omit<\n RemoveIndexSignature<CSSTransitionProps<HTMLElement>>,\n 'addEndHandler' | 'children' | 'onEnter'\n > & {\n addEndHandler?: EndHandler<HTMLElement> | undefined;\n onEnter?: EnterHandler<undefined>;\n children?: React.ReactNode;\n };\n\n/**\n * Fade between two components. Defaults to 150ms transition.\n */\nfunction FadeTransition({\n classNames: classNamesProp,\n timeout = ThemeExport.transitionMs,\n children,\n onEnter,\n ...props\n}: FadeTransitionProps): JSX.Element {\n const nodeRef = useRef<HTMLElement | null>(null);\n const handleOnEnter = useCallback(\n (isAppearing: boolean) => {\n const elem = nodeRef.current;\n if (!elem) {\n return;\n }\n onEnter?.(elem, isAppearing);\n },\n [onEnter]\n );\n\n // Mimics findDOMNode for CSSTransition\n // The ref should be set before CSSTransition does anything with it\n const setRef = useCallback((node: HTMLElement | null) => {\n nodeRef.current = node?.firstElementChild as HTMLElement;\n }, []);\n\n return (\n <CSSTransition\n nodeRef={nodeRef}\n timeout={timeout}\n classNames={classNames('fade', classNamesProp)}\n onEnter={handleOnEnter}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n >\n <div ref={setRef} style={DISPLAY_CONTENTS}>\n {children}\n </div>\n </CSSTransition>\n );\n}\n\nexport default FadeTransition;\n"],"mappings":";;;;;;;;AAAA,SAASA,WAAW,EAAEC,MAAM,QAAQ,OAAO;AAC3C,SAASC,aAAa,QAAQ,wBAAwB;AAMtD,OAAOC,UAAU,MAAM,YAAY;AAAC,OAE7BC,WAAW;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAElB,IAAMC,gBAAgB,GAAG;EAAEC,OAAO,EAAE;AAAW,CAAC;AAehD;AACA;AACA;AACA,SAASC,cAAcA,CAAAC,IAAA,EAMc;EAAA,IANb;MACtBP,UAAU,EAAEQ,cAAc;MAC1BC,OAAO,GAAGR,WAAW,CAACS,YAAY;MAClCC,QAAQ;MACRC;IAEmB,CAAC,GAAAL,IAAA;IADjBM,KAAK,GAAAC,wBAAA,CAAAP,IAAA,EAAAQ,SAAA;EAER,IAAMC,OAAO,GAAGlB,MAAM,CAAqB,IAAI,CAAC;EAChD,IAAMmB,aAAa,GAAGpB,WAAW,CAC9BqB,WAAoB,IAAK;IACxB,IAAMC,IAAI,GAAGH,OAAO,CAACI,OAAO;IAC5B,IAAI,CAACD,IAAI,EAAE;MACT;IACF;IACAP,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAGO,IAAI,EAAED,WAAW,CAAC;EAC9B,CAAC,EACD,CAACN,OAAO,CACV,CAAC;;EAED;EACA;EACA,IAAMS,MAAM,GAAGxB,WAAW,CAAEyB,IAAwB,IAAK;IACvDN,OAAO,CAACI,OAAO,GAAGE,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEC,iBAAgC;EAC1D,CAAC,EAAE,EAAE,CAAC;EAEN,oBACEpB,IAAA,CAACJ,aAAa,EAAAyB,aAAA,CAAAA,aAAA;IACZR,OAAO,EAAEA,OAAQ;IACjBP,OAAO,EAAEA,OAAQ;IACjBT,UAAU,EAAEA,UAAU,CAAC,MAAM,EAAEQ,cAAc,CAAE;IAC/CI,OAAO,EAAEK;IACT;EAAA,GACIJ,KAAK;IAAAF,QAAA,eAETR,IAAA;MAAKsB,GAAG,EAAEJ,MAAO;MAACK,KAAK,EAAEtB,gBAAiB;MAAAO,QAAA,EACvCA;IAAQ,CACN;EAAC,EACO,CAAC;AAEpB;AAEA,eAAeL,cAAc","ignoreList":[]}
@@ -1,9 +1,10 @@
1
1
  import type { CSSTransitionProps } from 'react-transition-group/CSSTransition';
2
2
  import type { EndHandler } from 'react-transition-group/Transition';
3
+ import type { RemoveIndexSignature } from '@deephaven/utils';
3
4
  type SlideDirection = 'left' | 'right';
4
- type SlideTransitionProps<Ref extends undefined | HTMLElement = undefined> = Omit<CSSTransitionProps<Ref>, 'addEndHandler'> & {
5
- addEndHandler?: EndHandler<Ref> | undefined;
6
- } & {
5
+ type SlideTransitionProps = Omit<RemoveIndexSignature<CSSTransitionProps<HTMLElement>>, 'addEndHandler'> & {
6
+ addEndHandler?: EndHandler<HTMLElement> | undefined;
7
+ children?: React.ReactNode;
7
8
  /**
8
9
  * The direction of the slide transition. Defaults to left.
9
10
  */
@@ -15,7 +16,7 @@ type SlideTransitionProps<Ref extends undefined | HTMLElement = undefined> = Omi
15
16
  * Defaults to sliding left, unless `direction='right'` is provided.
16
17
  * Timeout defaults to 200ms.
17
18
  */
18
- declare function SlideTransition({ direction, className,
19
+ declare function SlideTransition({ direction, classNames: classNamesProp, children,
19
20
  /** Defaults to mid */
20
21
  timeout, ...props }: SlideTransitionProps): JSX.Element;
21
22
  export default SlideTransition;
@@ -1 +1 @@
1
- {"version":3,"file":"SlideTransition.d.ts","sourceRoot":"","sources":["../../src/transitions/SlideTransition.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAKpE,KAAK,cAAc,GAAG,MAAM,GAAG,OAAO,CAAC;AAEvC,KAAK,oBAAoB,CAAC,GAAG,SAAS,SAAS,GAAG,WAAW,GAAG,SAAS,IAIvE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC,GAAG;IAC/C,aAAa,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;CAC7C,GAAG;IACF;;OAEG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAE3B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEJ;;;;GAIG;AACH,iBAAS,eAAe,CAAC,EACvB,SAAkB,EAClB,SAAS;AAET,sBAAsB;AACtB,OAAqC,EACrC,GAAG,KAAK,EACT,EAAE,oBAAoB,GAAG,GAAG,CAAC,OAAO,CASpC;AAED,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"SlideTransition.d.ts","sourceRoot":"","sources":["../../src/transitions/SlideTransition.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAEpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAK7D,KAAK,cAAc,GAAG,MAAM,GAAG,OAAO,CAAC;AAEvC,KAAK,oBAAoB,GAIvB,IAAI,CACF,oBAAoB,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,EACrD,eAAe,CAChB,GAAG;IACF,aAAa,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;IACpD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;OAEG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAE3B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEJ;;;;GAIG;AACH,iBAAS,eAAe,CAAC,EACvB,SAAkB,EAClB,UAAU,EAAE,cAAc,EAC1B,QAAQ;AAER,sBAAsB;AACtB,OAAqC,EACrC,GAAG,KAAK,EACT,EAAE,oBAAoB,GAAG,GAAG,CAAC,OAAO,CAsBpC;AAED,eAAe,eAAe,CAAC"}
@@ -1,4 +1,4 @@
1
- var _excluded = ["direction", "className", "timeout"];
1
+ var _excluded = ["direction", "classNames", "children", "timeout"];
2
2
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
3
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
4
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
@@ -7,11 +7,14 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
7
7
  function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
8
8
  function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
9
9
  // SlideTransition class uses CSSTransition with slide-left and slide-right classNames, depending on the prop direction. The transition is 250ms long.
10
- //
10
+ import { useCallback, useRef } from 'react';
11
11
  import { CSSTransition } from 'react-transition-group';
12
12
  import classNames from 'classnames';
13
13
  import ThemeExport from "../ThemeExport.js";
14
14
  import { jsx as _jsx } from "react/jsx-runtime";
15
+ var DISPLAY_CONTENTS = {
16
+ display: 'contents'
17
+ };
15
18
  /**
16
19
  * Slides one component overtop of another component.
17
20
  * Defaults to sliding left, unless `direction='right'` is provided.
@@ -20,16 +23,31 @@ import { jsx as _jsx } from "react/jsx-runtime";
20
23
  function SlideTransition(_ref) {
21
24
  var {
22
25
  direction = 'left',
23
- className,
26
+ classNames: classNamesProp,
27
+ children,
24
28
  /** Defaults to mid */
25
29
  timeout = ThemeExport.transitionMidMs
26
30
  } = _ref,
27
31
  props = _objectWithoutProperties(_ref, _excluded);
28
- return /*#__PURE__*/_jsx(CSSTransition, _objectSpread({
32
+ var nodeRef = useRef(null);
33
+
34
+ // Mimics findDOMNode for CSSTransition
35
+ // The ref should be set before CSSTransition does anything with it
36
+ var setRef = useCallback(node => {
37
+ nodeRef.current = node === null || node === void 0 ? void 0 : node.firstElementChild;
38
+ }, []);
39
+ return /*#__PURE__*/_jsx(CSSTransition, _objectSpread(_objectSpread({
40
+ nodeRef: nodeRef,
29
41
  timeout: timeout,
30
- classNames: classNames("slide-".concat(direction), className)
42
+ classNames: classNames("slide-".concat(direction), classNamesProp)
31
43
  // eslint-disable-next-line react/jsx-props-no-spreading
32
- }, props));
44
+ }, props), {}, {
45
+ children: /*#__PURE__*/_jsx("div", {
46
+ ref: setRef,
47
+ style: DISPLAY_CONTENTS,
48
+ children: children
49
+ })
50
+ }));
33
51
  }
34
52
  export default SlideTransition;
35
53
  //# sourceMappingURL=SlideTransition.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SlideTransition.js","names":["CSSTransition","classNames","ThemeExport","jsx","_jsx","SlideTransition","_ref","direction","className","timeout","transitionMidMs","props","_objectWithoutProperties","_excluded","_objectSpread","concat"],"sources":["../../src/transitions/SlideTransition.tsx"],"sourcesContent":["// SlideTransition class uses CSSTransition with slide-left and slide-right classNames, depending on the prop direction. The transition is 250ms long.\n//\nimport { CSSTransition } from 'react-transition-group';\nimport type { CSSTransitionProps } from 'react-transition-group/CSSTransition';\nimport type { EndHandler } from 'react-transition-group/Transition';\n\nimport classNames from 'classnames';\nimport ThemeExport from '../ThemeExport';\n\ntype SlideDirection = 'left' | 'right';\n\ntype SlideTransitionProps<Ref extends undefined | HTMLElement = undefined> =\n // We default the timeout, so user doesn't need to provide it\n // However, CSSTransitionProps get confused if you don't provide a timeout, it requires an endHandler\n // We're just making the endHandler optional here, as the timeout has a default\n Omit<CSSTransitionProps<Ref>, 'addEndHandler'> & {\n addEndHandler?: EndHandler<Ref> | undefined;\n } & {\n /**\n * The direction of the slide transition. Defaults to left.\n */\n direction?: SlideDirection;\n\n timeout?: number;\n };\n\n/**\n * Slides one component overtop of another component.\n * Defaults to sliding left, unless `direction='right'` is provided.\n * Timeout defaults to 200ms.\n */\nfunction SlideTransition({\n direction = 'left',\n className,\n\n /** Defaults to mid */\n timeout = ThemeExport.transitionMidMs,\n ...props\n}: SlideTransitionProps): JSX.Element {\n return (\n <CSSTransition\n timeout={timeout}\n classNames={classNames(`slide-${direction}`, className)}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n );\n}\n\nexport default SlideTransition;\n"],"mappings":";;;;;;;;AAAA;AACA;AACA,SAASA,aAAa,QAAQ,wBAAwB;AAItD,OAAOC,UAAU,MAAM,YAAY;AAAC,OAC7BC,WAAW;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAmBlB;AACA;AACA;AACA;AACA;AACA,SAASC,eAAeA,CAAAC,IAAA,EAOc;EAAA,IAPb;MACvBC,SAAS,GAAG,MAAM;MAClBC,SAAS;MAET;MACAC,OAAO,GAAGP,WAAW,CAACQ;IAEF,CAAC,GAAAJ,IAAA;IADlBK,KAAK,GAAAC,wBAAA,CAAAN,IAAA,EAAAO,SAAA;EAER,oBACET,IAAA,CAACJ,aAAa,EAAAc,aAAA;IACZL,OAAO,EAAEA,OAAQ;IACjBR,UAAU,EAAEA,UAAU,UAAAc,MAAA,CAAUR,SAAS,GAAIC,SAAS;IACtD;EAAA,GACIG,KAAK,CACV,CAAC;AAEN;AAEA,eAAeN,eAAe","ignoreList":[]}
1
+ {"version":3,"file":"SlideTransition.js","names":["useCallback","useRef","CSSTransition","classNames","ThemeExport","jsx","_jsx","DISPLAY_CONTENTS","display","SlideTransition","_ref","direction","classNamesProp","children","timeout","transitionMidMs","props","_objectWithoutProperties","_excluded","nodeRef","setRef","node","current","firstElementChild","_objectSpread","concat","ref","style"],"sources":["../../src/transitions/SlideTransition.tsx"],"sourcesContent":["// SlideTransition class uses CSSTransition with slide-left and slide-right classNames, depending on the prop direction. The transition is 250ms long.\nimport { useCallback, useRef } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport type { CSSTransitionProps } from 'react-transition-group/CSSTransition';\nimport type { EndHandler } from 'react-transition-group/Transition';\nimport classNames from 'classnames';\nimport type { RemoveIndexSignature } from '@deephaven/utils';\nimport ThemeExport from '../ThemeExport';\n\nconst DISPLAY_CONTENTS = { display: 'contents' };\n\ntype SlideDirection = 'left' | 'right';\n\ntype SlideTransitionProps =\n // We default the timeout, so user doesn't need to provide it\n // However, CSSTransitionProps get confused if you don't provide a timeout, it requires an endHandler\n // We're just making the endHandler optional here, as the timeout has a default\n Omit<\n RemoveIndexSignature<CSSTransitionProps<HTMLElement>>,\n 'addEndHandler'\n > & {\n addEndHandler?: EndHandler<HTMLElement> | undefined;\n children?: React.ReactNode;\n /**\n * The direction of the slide transition. Defaults to left.\n */\n direction?: SlideDirection;\n\n timeout?: number;\n };\n\n/**\n * Slides one component overtop of another component.\n * Defaults to sliding left, unless `direction='right'` is provided.\n * Timeout defaults to 200ms.\n */\nfunction SlideTransition({\n direction = 'left',\n classNames: classNamesProp,\n children,\n\n /** Defaults to mid */\n timeout = ThemeExport.transitionMidMs,\n ...props\n}: SlideTransitionProps): JSX.Element {\n const nodeRef = useRef<HTMLElement | null>(null);\n\n // Mimics findDOMNode for CSSTransition\n // The ref should be set before CSSTransition does anything with it\n const setRef = useCallback((node: HTMLElement | null) => {\n nodeRef.current = node?.firstElementChild as HTMLElement;\n }, []);\n\n return (\n <CSSTransition\n nodeRef={nodeRef}\n timeout={timeout}\n classNames={classNames(`slide-${direction}`, classNamesProp)}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n >\n <div ref={setRef} style={DISPLAY_CONTENTS}>\n {children}\n </div>\n </CSSTransition>\n );\n}\n\nexport default SlideTransition;\n"],"mappings":";;;;;;;;AAAA;AACA,SAASA,WAAW,EAAEC,MAAM,QAAQ,OAAO;AAC3C,SAASC,aAAa,QAAQ,wBAAwB;AAGtD,OAAOC,UAAU,MAAM,YAAY;AAAC,OAE7BC,WAAW;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAElB,IAAMC,gBAAgB,GAAG;EAAEC,OAAO,EAAE;AAAW,CAAC;AAsBhD;AACA;AACA;AACA;AACA;AACA,SAASC,eAAeA,CAAAC,IAAA,EAQc;EAAA,IARb;MACvBC,SAAS,GAAG,MAAM;MAClBR,UAAU,EAAES,cAAc;MAC1BC,QAAQ;MAER;MACAC,OAAO,GAAGV,WAAW,CAACW;IAEF,CAAC,GAAAL,IAAA;IADlBM,KAAK,GAAAC,wBAAA,CAAAP,IAAA,EAAAQ,SAAA;EAER,IAAMC,OAAO,GAAGlB,MAAM,CAAqB,IAAI,CAAC;;EAEhD;EACA;EACA,IAAMmB,MAAM,GAAGpB,WAAW,CAAEqB,IAAwB,IAAK;IACvDF,OAAO,CAACG,OAAO,GAAGD,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEE,iBAAgC;EAC1D,CAAC,EAAE,EAAE,CAAC;EAEN,oBACEjB,IAAA,CAACJ,aAAa,EAAAsB,aAAA,CAAAA,aAAA;IACZL,OAAO,EAAEA,OAAQ;IACjBL,OAAO,EAAEA,OAAQ;IACjBX,UAAU,EAAEA,UAAU,UAAAsB,MAAA,CAAUd,SAAS,GAAIC,cAAc;IAC3D;EAAA,GACII,KAAK;IAAAH,QAAA,eAETP,IAAA;MAAKoB,GAAG,EAAEN,MAAO;MAACO,KAAK,EAAEpB,gBAAiB;MAAAM,QAAA,EACvCA;IAAQ,CACN;EAAC,EACO,CAAC;AAEpB;AAEA,eAAeJ,eAAe","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/components",
3
- "version": "1.7.2-beta.3+b369a51e",
3
+ "version": "1.7.2-beta.4+eaa583ef",
4
4
  "description": "Deephaven React component library",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -25,10 +25,10 @@
25
25
  },
26
26
  "dependencies": {
27
27
  "@adobe/react-spectrum": "3.38.0",
28
- "@deephaven/icons": "^1.7.2-beta.3+b369a51e",
29
- "@deephaven/log": "^1.7.2-beta.3+b369a51e",
30
- "@deephaven/react-hooks": "^1.7.2-beta.3+b369a51e",
31
- "@deephaven/utils": "^1.7.2-beta.3+b369a51e",
28
+ "@deephaven/icons": "^1.7.2-beta.4+eaa583ef",
29
+ "@deephaven/log": "^1.7.2-beta.4+eaa583ef",
30
+ "@deephaven/react-hooks": "^1.7.2-beta.4+eaa583ef",
31
+ "@deephaven/utils": "^1.7.2-beta.4+eaa583ef",
32
32
  "@fortawesome/fontawesome-svg-core": "^6.2.1",
33
33
  "@fortawesome/react-fontawesome": "^0.2.0",
34
34
  "@internationalized/date": "^3.5.5",
@@ -60,8 +60,8 @@
60
60
  "react-is": ">=16.8.0"
61
61
  },
62
62
  "devDependencies": {
63
- "@deephaven/mocks": "^1.7.2-beta.3+b369a51e",
64
- "@deephaven/test-utils": "^1.7.2-beta.3+b369a51e",
63
+ "@deephaven/mocks": "^1.7.2-beta.4+eaa583ef",
64
+ "@deephaven/test-utils": "^1.7.2-beta.4+eaa583ef",
65
65
  "react-redux": "^7.2.7"
66
66
  },
67
67
  "files": [
@@ -76,5 +76,5 @@
76
76
  "publishConfig": {
77
77
  "access": "public"
78
78
  },
79
- "gitHead": "b369a51ee94d212641a14c6ce1f19fcc85168339"
79
+ "gitHead": "eaa583efb0b0d0a44ef5ddc72a7835fb2174d8f2"
80
80
  }