@itwin/appui-react 3.0.0-dev.148 → 3.0.0-dev.153
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/appui-react/childwindow/ChildWindowManager.d.ts +1 -1
- package/lib/cjs/appui-react/childwindow/ChildWindowManager.js +1 -1
- package/lib/cjs/appui-react/childwindow/ChildWindowManager.js.map +1 -1
- package/lib/cjs/appui-react/content/ContentLayout.d.ts.map +1 -1
- package/lib/cjs/appui-react/content/ContentLayout.js +2 -2
- package/lib/cjs/appui-react/content/ContentLayout.js.map +1 -1
- package/lib/cjs/appui-react/content/split-pane/Pane.d.ts +21 -0
- package/lib/cjs/appui-react/content/split-pane/Pane.d.ts.map +1 -0
- package/lib/cjs/appui-react/content/split-pane/Pane.js +43 -0
- package/lib/cjs/appui-react/content/split-pane/Pane.js.map +1 -0
- package/lib/cjs/appui-react/content/split-pane/Resizer.d.ts +23 -0
- package/lib/cjs/appui-react/content/split-pane/Resizer.d.ts.map +1 -0
- package/lib/cjs/appui-react/content/split-pane/Resizer.js +39 -0
- package/lib/cjs/appui-react/content/split-pane/Resizer.js.map +1 -0
- package/lib/cjs/appui-react/content/split-pane/SplitPane.d.ts +70 -0
- package/lib/cjs/appui-react/content/split-pane/SplitPane.d.ts.map +1 -0
- package/lib/cjs/appui-react/content/split-pane/SplitPane.js +243 -0
- package/lib/cjs/appui-react/content/split-pane/SplitPane.js.map +1 -0
- package/lib/cjs/appui-react/frontstage/Frontstage.d.ts.map +1 -1
- package/lib/cjs/appui-react/frontstage/Frontstage.js +2 -0
- package/lib/cjs/appui-react/frontstage/Frontstage.js.map +1 -1
- package/lib/cjs/appui-react.d.ts +3 -2
- package/lib/cjs/appui-react.d.ts.map +1 -1
- package/lib/cjs/appui-react.js +3 -2
- package/lib/cjs/appui-react.js.map +1 -1
- package/lib/esm/appui-react/childwindow/ChildWindowManager.d.ts +1 -1
- package/lib/esm/appui-react/childwindow/ChildWindowManager.js +1 -1
- package/lib/esm/appui-react/childwindow/ChildWindowManager.js.map +1 -1
- package/lib/esm/appui-react/content/ContentLayout.d.ts.map +1 -1
- package/lib/esm/appui-react/content/ContentLayout.js +1 -1
- package/lib/esm/appui-react/content/ContentLayout.js.map +1 -1
- package/lib/esm/appui-react/content/split-pane/Pane.d.ts +21 -0
- package/lib/esm/appui-react/content/split-pane/Pane.d.ts.map +1 -0
- package/lib/esm/appui-react/content/split-pane/Pane.js +39 -0
- package/lib/esm/appui-react/content/split-pane/Pane.js.map +1 -0
- package/lib/esm/appui-react/content/split-pane/Resizer.d.ts +23 -0
- package/lib/esm/appui-react/content/split-pane/Resizer.d.ts.map +1 -0
- package/lib/esm/appui-react/content/split-pane/Resizer.js +35 -0
- package/lib/esm/appui-react/content/split-pane/Resizer.js.map +1 -0
- package/lib/esm/appui-react/content/split-pane/SplitPane.d.ts +70 -0
- package/lib/esm/appui-react/content/split-pane/SplitPane.d.ts.map +1 -0
- package/lib/esm/appui-react/content/split-pane/SplitPane.js +239 -0
- package/lib/esm/appui-react/content/split-pane/SplitPane.js.map +1 -0
- package/lib/esm/appui-react/frontstage/Frontstage.d.ts.map +1 -1
- package/lib/esm/appui-react/frontstage/Frontstage.js +2 -0
- package/lib/esm/appui-react/frontstage/Frontstage.js.map +1 -1
- package/lib/esm/appui-react.d.ts +3 -2
- package/lib/esm/appui-react.d.ts.map +1 -1
- package/lib/esm/appui-react.js +3 -2
- package/lib/esm/appui-react.js.map +1 -1
- package/package.json +34 -35
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
/** @packageDocumentation
|
|
6
|
+
* @module ContentView
|
|
7
|
+
*/
|
|
8
|
+
import * as React from "react";
|
|
9
|
+
import classnames from "classnames";
|
|
10
|
+
/**
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
export function Resizer(props) {
|
|
14
|
+
const { className, onClick, onDoubleClick, onMouseDown, onTouchEnd, onTouchStart, split, style, } = props;
|
|
15
|
+
const resizerClasses = React.useMemo(() => classnames(split, className), [split, className]);
|
|
16
|
+
return (React.createElement("span", { role: "presentation", className: resizerClasses, style: style, onMouseDown: (event) => onMouseDown(event.nativeEvent), onTouchStart: (event) => {
|
|
17
|
+
onTouchStart(event.nativeEvent);
|
|
18
|
+
}, onTouchEnd: (event) => {
|
|
19
|
+
event.preventDefault();
|
|
20
|
+
onTouchEnd();
|
|
21
|
+
}, onClick: (event) => {
|
|
22
|
+
// istanbul ignore else
|
|
23
|
+
if (onClick) {
|
|
24
|
+
event.preventDefault();
|
|
25
|
+
onClick(event.nativeEvent);
|
|
26
|
+
}
|
|
27
|
+
}, onDoubleClick: (event) => {
|
|
28
|
+
// istanbul ignore else
|
|
29
|
+
if (onDoubleClick) {
|
|
30
|
+
event.preventDefault();
|
|
31
|
+
onDoubleClick(event.nativeEvent);
|
|
32
|
+
}
|
|
33
|
+
} }));
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=Resizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Resizer.js","sourceRoot":"","sources":["../../../../../src/appui-react/content/split-pane/Resizer.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,UAAU,MAAM,YAAY,CAAC;AAkBpC;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,KAAmB;IACzC,MAAM,EACJ,SAAS,EACT,OAAO,EACP,aAAa,EACb,WAAW,EACX,UAAU,EACV,YAAY,EACZ,KAAK,EACL,KAAK,GACN,GAAG,KAAK,CAAC;IAEV,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;IAE7F,OAAO,CACL,8BACE,IAAI,EAAC,cAAc,EACnB,SAAS,EAAE,cAAc,EACzB,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,EACtD,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE;YACtB,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAClC,CAAC,EACD,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE;YACpB,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,UAAU,EAAE,CAAC;QACf,CAAC,EACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACjB,uBAAuB;YACvB,IAAI,OAAO,EAAE;gBACX,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;aAC5B;QACH,CAAC,EACD,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE;YACvB,uBAAuB;YACvB,IAAI,aAAa,EAAE;gBACjB,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;aAClC;QACH,CAAC,GACD,CACH,CAAC;AACJ,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module ContentView\r\n */\r\nimport * as React from \"react\";\r\nimport classnames from \"classnames\";\r\n\r\n/** Based on react-split-pane package. See https://github.com/tomkp/react-split-pane/blob/master/LICENSE */\r\n\r\n/**\r\n * @internal\r\n */\r\nexport interface ResizerProps {\r\n split?: \"vertical\" | \"horizontal\";\r\n style?: React.CSSProperties;\r\n className: string;\r\n onMouseDown: (event: MouseEvent) => void;\r\n onTouchEnd: () => void;\r\n onTouchStart: (event: TouchEvent) => void;\r\n onClick?: (event: MouseEvent) => void;\r\n onDoubleClick?: (event: MouseEvent) => void;\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport function Resizer(props: ResizerProps) {\r\n const {\r\n className,\r\n onClick,\r\n onDoubleClick,\r\n onMouseDown,\r\n onTouchEnd,\r\n onTouchStart,\r\n split,\r\n style,\r\n } = props;\r\n\r\n const resizerClasses = React.useMemo(() => classnames(split, className), [split, className]);\r\n\r\n return (\r\n <span\r\n role=\"presentation\"\r\n className={resizerClasses}\r\n style={style}\r\n onMouseDown={(event) => onMouseDown(event.nativeEvent)}\r\n onTouchStart={(event) => {\r\n onTouchStart(event.nativeEvent);\r\n }}\r\n onTouchEnd={(event) => {\r\n event.preventDefault();\r\n onTouchEnd();\r\n }}\r\n onClick={(event) => {\r\n // istanbul ignore else\r\n if (onClick) {\r\n event.preventDefault();\r\n onClick(event.nativeEvent);\r\n }\r\n }}\r\n onDoubleClick={(event) => {\r\n // istanbul ignore else\r\n if (onDoubleClick) {\r\n event.preventDefault();\r\n onDoubleClick(event.nativeEvent);\r\n }\r\n }}\r\n />\r\n );\r\n}\r\n"]}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/** @packageDocumentation
|
|
2
|
+
* @module ContentView
|
|
3
|
+
*/
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
/**
|
|
6
|
+
* Props for [[SplitPane]] component
|
|
7
|
+
* @public
|
|
8
|
+
*/
|
|
9
|
+
export interface SplitPaneProps {
|
|
10
|
+
/** Pass false to disable resizing */
|
|
11
|
+
allowResize?: boolean;
|
|
12
|
+
/** The array of two react nodes, one for each pane. */
|
|
13
|
+
children: React.ReactNode[];
|
|
14
|
+
/** Determines which pane maintains its size when browser window is resized.*/
|
|
15
|
+
primary?: "first" | "second";
|
|
16
|
+
minSize?: string | number;
|
|
17
|
+
/** You can limit the maximal size of the 'fixed' pane using the maxSize parameter with a positive value
|
|
18
|
+
* (measured in pixels but state just a number). If you wrap the SplitPane into a container component
|
|
19
|
+
* (yes you can, just remember the container has to have the relative or absolute positioning), then you'll need to limit
|
|
20
|
+
* the movement of the splitter (resizer) at the end of the SplitPane (otherwise it can be dragged outside the SplitPane
|
|
21
|
+
* and you don't catch it never more). For this purpose use the maxSize parameter with value 0. When dragged the splitter/resizer
|
|
22
|
+
* will stop at the border of the SplitPane component and think this you'll be able to pick it again and drag it back then.
|
|
23
|
+
* And more: if you set the maxSize to negative value (e.g. -200), then the splitter stops 200px before the border
|
|
24
|
+
* (in other words it sets the minimal size of the 'resizable' pane in this case). This can be useful also in the
|
|
25
|
+
* full-screen case of use. */
|
|
26
|
+
maxSize?: string | number;
|
|
27
|
+
/** Default initial size of primary pane */
|
|
28
|
+
defaultSize?: string | number;
|
|
29
|
+
/** Size of primary pane */
|
|
30
|
+
size?: string | number;
|
|
31
|
+
/** You can use the step prop to only allow resizing in fixed increments. */
|
|
32
|
+
step?: number;
|
|
33
|
+
split?: "vertical" | "horizontal";
|
|
34
|
+
/** This callback is invoked when a drag start. */
|
|
35
|
+
onDragStarted?: () => void;
|
|
36
|
+
/** This callback is invoked when a drag ends. */
|
|
37
|
+
onDragFinished?: (newSize: number) => void;
|
|
38
|
+
/** Callback is invoked with the current drag during a drag event.*/
|
|
39
|
+
onChange?: (newSize: number) => void;
|
|
40
|
+
/** Callback is invoked if user clicks on Resizer. */
|
|
41
|
+
onResizerClick?: (event: MouseEvent) => void;
|
|
42
|
+
/** Callback is invoked if user double clicks on Resizer. */
|
|
43
|
+
onResizerDoubleClick?: (event: MouseEvent) => void;
|
|
44
|
+
/** Styling to be applied to the main container */
|
|
45
|
+
style?: React.CSSProperties;
|
|
46
|
+
/** Styling to be applied to both panes */
|
|
47
|
+
paneStyle?: React.CSSProperties;
|
|
48
|
+
/** Styling to be applied to the first pane, with precedence over paneStyle */
|
|
49
|
+
pane1Style?: React.CSSProperties;
|
|
50
|
+
/** Styling to be applied to the second pane, with precedence over paneStyle */
|
|
51
|
+
pane2Style?: React.CSSProperties;
|
|
52
|
+
/** Styling to be applied to the resizer bar */
|
|
53
|
+
resizerStyle?: React.CSSProperties;
|
|
54
|
+
/** Class name to be added to the SplitPane div */
|
|
55
|
+
className?: string;
|
|
56
|
+
/** Class name to be added to each Pane's div */
|
|
57
|
+
paneClassName?: string;
|
|
58
|
+
/** Class name to be added to Pane1's div */
|
|
59
|
+
pane1ClassName?: string;
|
|
60
|
+
/** Class name to be added to Pane2's div */
|
|
61
|
+
pane2ClassName?: string;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Local TypeScript implementation of `SplitPane` from `react-split-pane` package since that
|
|
65
|
+
* package is not regularly maintained.
|
|
66
|
+
* See https://github.com/tomkp/react-split-pane/blob/master/LICENSE.
|
|
67
|
+
* @public
|
|
68
|
+
*/
|
|
69
|
+
export declare function SplitPane(props: SplitPaneProps): JSX.Element;
|
|
70
|
+
//# sourceMappingURL=SplitPane.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SplitPane.d.ts","sourceRoot":"","sources":["../../../../../src/appui-react/content/split-pane/SplitPane.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,qCAAqC;IACrC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uDAAuD;IACvD,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;IAC5B,8EAA8E;IAC9E,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAE7B,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B;;;;;;;;kCAQ8B;IAC9B,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,2BAA2B;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,4EAA4E;IAC5E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IAClC,kDAAkD;IAClD,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,iDAAiD;IACjD,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,oEAAoE;IACpE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,qDAAqD;IACrD,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IAC7C,4DAA4D;IAC5D,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACnD,kDAAkD;IAClD,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,0CAA0C;IAC1C,SAAS,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAChC,8EAA8E;IAC9E,UAAU,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACjC,+EAA+E;IAC/E,UAAU,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACjC,+CAA+C;IAC/C,YAAY,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACnC,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,4CAA4C;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4CAA4C;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAsCD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,eAmP9C"}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
/** @packageDocumentation
|
|
6
|
+
* @module ContentView
|
|
7
|
+
*/
|
|
8
|
+
import * as React from "react";
|
|
9
|
+
import classnames from "classnames";
|
|
10
|
+
import { Pane } from "./Pane";
|
|
11
|
+
import { Resizer } from "./Resizer";
|
|
12
|
+
function unFocus(ownerDoc) {
|
|
13
|
+
var _a;
|
|
14
|
+
// istanbul ignore next
|
|
15
|
+
if (!ownerDoc)
|
|
16
|
+
return;
|
|
17
|
+
const docSelection = ownerDoc.getSelection();
|
|
18
|
+
// istanbul ignore else
|
|
19
|
+
if (docSelection) {
|
|
20
|
+
docSelection.empty();
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
// istanbul ignore next
|
|
24
|
+
try {
|
|
25
|
+
const winSelection = (_a = ownerDoc.defaultView) === null || _a === void 0 ? void 0 : _a.getSelection();
|
|
26
|
+
winSelection === null || winSelection === void 0 ? void 0 : winSelection.removeAllRanges();
|
|
27
|
+
}
|
|
28
|
+
catch (_e) { }
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function getDefaultSize(defaultSize, minSize, maxSize, draggedSize) {
|
|
32
|
+
// istanbul ignore next
|
|
33
|
+
if (typeof draggedSize === "number") {
|
|
34
|
+
const min = typeof minSize === "number" ? minSize : 0;
|
|
35
|
+
const max = typeof maxSize === "number" && maxSize >= 0 ? maxSize : Infinity;
|
|
36
|
+
return Math.max(min, Math.min(max, draggedSize));
|
|
37
|
+
}
|
|
38
|
+
if (defaultSize !== undefined) {
|
|
39
|
+
return defaultSize;
|
|
40
|
+
}
|
|
41
|
+
return minSize;
|
|
42
|
+
}
|
|
43
|
+
function removeNullChildren(children) {
|
|
44
|
+
return React.Children.toArray(children).filter((c) => c);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Local TypeScript implementation of `SplitPane` from `react-split-pane` package since that
|
|
48
|
+
* package is not regularly maintained.
|
|
49
|
+
* See https://github.com/tomkp/react-split-pane/blob/master/LICENSE.
|
|
50
|
+
* @public
|
|
51
|
+
*/
|
|
52
|
+
export function SplitPane(props) {
|
|
53
|
+
const { style, size, defaultSize, maxSize, children, paneStyle, pane1Style, pane2Style, className, paneClassName, pane1ClassName, pane2ClassName, onDragStarted, onDragFinished, step, onChange, onResizerClick, onResizerDoubleClick, } = props;
|
|
54
|
+
// honor same defaults as react-split-pane
|
|
55
|
+
const allowResize = React.useMemo(() => undefined !== props.allowResize ? props.allowResize : true, [props.allowResize]);
|
|
56
|
+
const minSize = React.useMemo(() => undefined !== props.minSize ? props.minSize : 50, [props.minSize]);
|
|
57
|
+
const primary = React.useMemo(() => undefined !== props.primary ? props.primary : "first", [props.primary]);
|
|
58
|
+
const split = React.useMemo(() => undefined !== props.split ? props.split : "vertical", [props.split]);
|
|
59
|
+
const initialSize = size !== undefined ? size : getDefaultSize(defaultSize, minSize, maxSize);
|
|
60
|
+
const [position, setPosition] = React.useState(0);
|
|
61
|
+
const [draggedSize, setDraggedSize] = React.useState();
|
|
62
|
+
const [active, setActive] = React.useState(false);
|
|
63
|
+
const [pane1Size, setPane1Size] = React.useState(() => primary === "first" ? initialSize : undefined);
|
|
64
|
+
const [pane2Size, setPane2Size] = React.useState(() => primary === "second" ? initialSize : undefined);
|
|
65
|
+
const splitPane = React.useRef(null);
|
|
66
|
+
const pane1 = React.useRef(null);
|
|
67
|
+
const pane2 = React.useRef(null);
|
|
68
|
+
const notNullChildren = React.useMemo(() => removeNullChildren(children), [children]);
|
|
69
|
+
React.useEffect(() => {
|
|
70
|
+
primary === "first" ? setPane1Size(initialSize) : setPane2Size(initialSize);
|
|
71
|
+
primary === "first" ? setPane2Size(undefined) : setPane1Size(undefined);
|
|
72
|
+
}, [initialSize, primary]);
|
|
73
|
+
const splitPaneStyle = React.useMemo(() => {
|
|
74
|
+
const directionSpecificParts = (split === "vertical") ? {
|
|
75
|
+
flexDirection: "row",
|
|
76
|
+
left: 0,
|
|
77
|
+
right: 0,
|
|
78
|
+
} : {
|
|
79
|
+
bottom: 0,
|
|
80
|
+
flexDirection: "column",
|
|
81
|
+
minHeight: "100%",
|
|
82
|
+
top: 0,
|
|
83
|
+
width: "100%",
|
|
84
|
+
};
|
|
85
|
+
return {
|
|
86
|
+
display: "flex",
|
|
87
|
+
flex: 1,
|
|
88
|
+
height: "100%",
|
|
89
|
+
position: "absolute",
|
|
90
|
+
outline: "none",
|
|
91
|
+
overflow: "hidden",
|
|
92
|
+
MozUserSelect: "text",
|
|
93
|
+
WebkitUserSelect: "text",
|
|
94
|
+
msUserSelect: "text",
|
|
95
|
+
userSelect: "text",
|
|
96
|
+
...style,
|
|
97
|
+
...directionSpecificParts,
|
|
98
|
+
};
|
|
99
|
+
}, [split, style]);
|
|
100
|
+
const pane1DivStyle = { ...paneStyle, ...pane1Style };
|
|
101
|
+
const pane2DivStyle = { ...paneStyle, ...pane2Style };
|
|
102
|
+
const resizerStyle = React.useMemo(() => { var _a; return (_a = props.resizerStyle) !== null && _a !== void 0 ? _a : {}; }, [props.resizerStyle]);
|
|
103
|
+
const resizerClasses = React.useMemo(() => classnames("Resizer", !allowResize && "disabled"), [allowResize]);
|
|
104
|
+
const splitPaneClasses = React.useMemo(() => classnames("SplitPane", className, split, !allowResize && "disabled"), [className, split, allowResize]);
|
|
105
|
+
const pane1Classes = React.useMemo(() => classnames("Pane1", paneClassName, pane1ClassName), [paneClassName, pane1ClassName]);
|
|
106
|
+
const pane2Classes = React.useMemo(() => classnames("Pane2", paneClassName, pane2ClassName), [paneClassName, pane2ClassName]);
|
|
107
|
+
const initializeDrag = React.useCallback((x, y) => {
|
|
108
|
+
var _a;
|
|
109
|
+
// istanbul ignore next
|
|
110
|
+
unFocus((_a = splitPane.current) === null || _a === void 0 ? void 0 : _a.ownerDocument);
|
|
111
|
+
const newPosition = split === "vertical" ? x : y;
|
|
112
|
+
onDragStarted && onDragStarted();
|
|
113
|
+
setActive(true);
|
|
114
|
+
setPosition(newPosition);
|
|
115
|
+
}, [onDragStarted, split]);
|
|
116
|
+
const onTouchStart = React.useCallback((event) => {
|
|
117
|
+
// istanbul ignore else
|
|
118
|
+
if (allowResize) {
|
|
119
|
+
initializeDrag(event.touches[0].clientX, event.touches[0].clientY);
|
|
120
|
+
}
|
|
121
|
+
}, [allowResize, initializeDrag]);
|
|
122
|
+
const processMove = React.useCallback((x, y) => {
|
|
123
|
+
var _a, _b, _c, _d, _f, _g, _h;
|
|
124
|
+
// istanbul ignore next
|
|
125
|
+
unFocus((_a = splitPane.current) === null || _a === void 0 ? void 0 : _a.ownerDocument);
|
|
126
|
+
const isPrimaryFirst = primary === "first";
|
|
127
|
+
const ref = isPrimaryFirst ? pane1.current : pane2.current;
|
|
128
|
+
const ref2 = isPrimaryFirst ? pane2.current : pane1.current;
|
|
129
|
+
const splitPaneDiv = splitPane.current;
|
|
130
|
+
// istanbul ignore else
|
|
131
|
+
if (ref && ref2 && splitPaneDiv) {
|
|
132
|
+
const node = ref;
|
|
133
|
+
const node2 = ref2;
|
|
134
|
+
// istanbul ignore else
|
|
135
|
+
if (node.getBoundingClientRect) {
|
|
136
|
+
const width = node.getBoundingClientRect().width;
|
|
137
|
+
const height = node.getBoundingClientRect().height;
|
|
138
|
+
// istanbul ignore next
|
|
139
|
+
const current = split === "vertical" ? x : y;
|
|
140
|
+
// istanbul ignore next
|
|
141
|
+
const oldSize = split === "vertical" ? width : height;
|
|
142
|
+
let positionDelta = position - current;
|
|
143
|
+
if (step) {
|
|
144
|
+
// istanbul ignore next
|
|
145
|
+
if (Math.abs(positionDelta) < step) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
// Integer division
|
|
149
|
+
// eslint-disable-next-line no-bitwise
|
|
150
|
+
positionDelta = ~~(positionDelta / step) * step;
|
|
151
|
+
}
|
|
152
|
+
let sizeDelta = isPrimaryFirst ? positionDelta : -positionDelta;
|
|
153
|
+
// istanbul ignore next
|
|
154
|
+
const pane1Order = parseInt((_d = (_c = (_b = node.ownerDocument) === null || _b === void 0 ? void 0 : _b.defaultView) === null || _c === void 0 ? void 0 : _c.getComputedStyle(node).order) !== null && _d !== void 0 ? _d : "0", 10);
|
|
155
|
+
// istanbul ignore next
|
|
156
|
+
const pane2Order = parseInt((_h = (_g = (_f = node2.ownerDocument) === null || _f === void 0 ? void 0 : _f.defaultView) === null || _g === void 0 ? void 0 : _g.getComputedStyle(node2).order) !== null && _h !== void 0 ? _h : "0", 10);
|
|
157
|
+
// istanbul ignore next
|
|
158
|
+
if (pane1Order > pane2Order) {
|
|
159
|
+
sizeDelta = -sizeDelta;
|
|
160
|
+
}
|
|
161
|
+
let newMaxSize = maxSize;
|
|
162
|
+
// istanbul ignore next
|
|
163
|
+
if (typeof maxSize === "number" && maxSize !== undefined && maxSize <= 0) {
|
|
164
|
+
if (split === "vertical") {
|
|
165
|
+
newMaxSize = splitPaneDiv.getBoundingClientRect().width + maxSize;
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
newMaxSize = splitPaneDiv.getBoundingClientRect().height + maxSize;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
let newSize = oldSize - sizeDelta;
|
|
172
|
+
const newPosition = position - positionDelta;
|
|
173
|
+
// istanbul ignore next
|
|
174
|
+
if (typeof minSize === "number" && newSize < minSize) {
|
|
175
|
+
newSize = minSize;
|
|
176
|
+
}
|
|
177
|
+
else if (typeof newMaxSize === "number" && newMaxSize !== undefined && newSize > newMaxSize) {
|
|
178
|
+
newSize = newMaxSize;
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
setPosition(newPosition);
|
|
182
|
+
}
|
|
183
|
+
onChange && onChange(newSize);
|
|
184
|
+
setDraggedSize(newSize);
|
|
185
|
+
isPrimaryFirst ? setPane1Size(newSize) : setPane2Size(newSize);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}, [maxSize, minSize, onChange, position, primary, split, step]);
|
|
189
|
+
const onTouchMove = React.useCallback((event) => {
|
|
190
|
+
// istanbul ignore next
|
|
191
|
+
if (!allowResize || !active)
|
|
192
|
+
return;
|
|
193
|
+
processMove(event.touches[0].clientX, event.touches[0].clientY);
|
|
194
|
+
}, [active, allowResize, processMove]);
|
|
195
|
+
const onMouseMove = React.useCallback((event) => {
|
|
196
|
+
if (!allowResize || !active)
|
|
197
|
+
return;
|
|
198
|
+
processMove(event.clientX, event.clientY);
|
|
199
|
+
}, [active, allowResize, processMove]);
|
|
200
|
+
const onMouseDown = React.useCallback((event) => {
|
|
201
|
+
// istanbul ignore else
|
|
202
|
+
if (allowResize) {
|
|
203
|
+
event.preventDefault();
|
|
204
|
+
initializeDrag(event.clientX, event.clientY);
|
|
205
|
+
}
|
|
206
|
+
}, [allowResize, initializeDrag]);
|
|
207
|
+
const processResizeFinished = React.useCallback(() => {
|
|
208
|
+
// istanbul ignore else
|
|
209
|
+
if (undefined !== draggedSize && allowResize && active) {
|
|
210
|
+
onDragFinished && onDragFinished(draggedSize);
|
|
211
|
+
}
|
|
212
|
+
setActive(false);
|
|
213
|
+
}, [draggedSize, allowResize, active, onDragFinished]);
|
|
214
|
+
const onMouseUp = React.useCallback((event) => {
|
|
215
|
+
event.preventDefault();
|
|
216
|
+
processResizeFinished();
|
|
217
|
+
}, [processResizeFinished]);
|
|
218
|
+
React.useEffect(() => {
|
|
219
|
+
var _a;
|
|
220
|
+
// istanbul ignore next
|
|
221
|
+
const ownerDoc = (_a = splitPane.current) === null || _a === void 0 ? void 0 : _a.ownerDocument;
|
|
222
|
+
// istanbul ignore next
|
|
223
|
+
if (!ownerDoc)
|
|
224
|
+
return;
|
|
225
|
+
ownerDoc.addEventListener("mouseup", onMouseUp);
|
|
226
|
+
ownerDoc.addEventListener("mousemove", onMouseMove);
|
|
227
|
+
ownerDoc.addEventListener("touchmove", onTouchMove);
|
|
228
|
+
return () => {
|
|
229
|
+
ownerDoc.removeEventListener("mouseup", onMouseUp);
|
|
230
|
+
ownerDoc.removeEventListener("mousemove", onMouseMove);
|
|
231
|
+
ownerDoc.removeEventListener("touchmove", onTouchMove);
|
|
232
|
+
};
|
|
233
|
+
}, [onMouseMove, onMouseUp, onTouchMove]);
|
|
234
|
+
return (React.createElement("div", { className: splitPaneClasses, ref: splitPane, style: splitPaneStyle },
|
|
235
|
+
React.createElement(Pane, { className: pane1Classes, key: "pane1", eleRef: pane1, size: pane1Size, split: split, style: pane1DivStyle }, notNullChildren[0]),
|
|
236
|
+
React.createElement(Resizer, { className: resizerClasses, onClick: onResizerClick, onDoubleClick: onResizerDoubleClick, onMouseDown: onMouseDown, onTouchStart: onTouchStart, onTouchEnd: processResizeFinished, key: "resizer", split: split, style: resizerStyle }),
|
|
237
|
+
React.createElement(Pane, { className: pane2Classes, key: "pane2", eleRef: pane2, size: pane2Size, split: split, style: pane2DivStyle }, notNullChildren[1])));
|
|
238
|
+
}
|
|
239
|
+
//# sourceMappingURL=SplitPane.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SplitPane.js","sourceRoot":"","sources":["../../../../../src/appui-react/content/split-pane/SplitPane.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module ContentView\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport classnames from \"classnames\";\r\nimport { Pane } from \"./Pane\";\r\nimport { Resizer } from \"./Resizer\";\r\n\r\n/**\r\n * Props for [[SplitPane]] component\r\n * @public\r\n */\r\nexport interface SplitPaneProps {\r\n /** Pass false to disable resizing */\r\n allowResize?: boolean;\r\n /** The array of two react nodes, one for each pane. */\r\n children: React.ReactNode[];\r\n /** Determines which pane maintains its size when browser window is resized.*/\r\n primary?: \"first\" | \"second\";\r\n\r\n minSize?: string | number;\r\n /** You can limit the maximal size of the 'fixed' pane using the maxSize parameter with a positive value\r\n * (measured in pixels but state just a number). If you wrap the SplitPane into a container component\r\n * (yes you can, just remember the container has to have the relative or absolute positioning), then you'll need to limit\r\n * the movement of the splitter (resizer) at the end of the SplitPane (otherwise it can be dragged outside the SplitPane\r\n * and you don't catch it never more). For this purpose use the maxSize parameter with value 0. When dragged the splitter/resizer\r\n * will stop at the border of the SplitPane component and think this you'll be able to pick it again and drag it back then.\r\n * And more: if you set the maxSize to negative value (e.g. -200), then the splitter stops 200px before the border\r\n * (in other words it sets the minimal size of the 'resizable' pane in this case). This can be useful also in the\r\n * full-screen case of use. */\r\n maxSize?: string | number;\r\n /** Default initial size of primary pane */\r\n defaultSize?: string | number;\r\n /** Size of primary pane */\r\n size?: string | number;\r\n /** You can use the step prop to only allow resizing in fixed increments. */\r\n step?: number;\r\n split?: \"vertical\" | \"horizontal\";\r\n /** This callback is invoked when a drag start. */\r\n onDragStarted?: () => void;\r\n /** This callback is invoked when a drag ends. */\r\n onDragFinished?: (newSize: number) => void;\r\n /** Callback is invoked with the current drag during a drag event.*/\r\n onChange?: (newSize: number) => void;\r\n /** Callback is invoked if user clicks on Resizer. */\r\n onResizerClick?: (event: MouseEvent) => void;\r\n /** Callback is invoked if user double clicks on Resizer. */\r\n onResizerDoubleClick?: (event: MouseEvent) => void;\r\n /** Styling to be applied to the main container */\r\n style?: React.CSSProperties;\r\n /** Styling to be applied to both panes */\r\n paneStyle?: React.CSSProperties;\r\n /** Styling to be applied to the first pane, with precedence over paneStyle */\r\n pane1Style?: React.CSSProperties;\r\n /** Styling to be applied to the second pane, with precedence over paneStyle */\r\n pane2Style?: React.CSSProperties;\r\n /** Styling to be applied to the resizer bar */\r\n resizerStyle?: React.CSSProperties;\r\n /** Class name to be added to the SplitPane div */\r\n className?: string;\r\n /** Class name to be added to each Pane's div */\r\n paneClassName?: string;\r\n /** Class name to be added to Pane1's div */\r\n pane1ClassName?: string;\r\n /** Class name to be added to Pane2's div */\r\n pane2ClassName?: string;\r\n}\r\n\r\nfunction unFocus(ownerDoc: Document | undefined) {\r\n // istanbul ignore next\r\n if (!ownerDoc)\r\n return;\r\n\r\n const docSelection = ownerDoc.getSelection();\r\n // istanbul ignore else\r\n if (docSelection) {\r\n docSelection.empty();\r\n } else {\r\n // istanbul ignore next\r\n try {\r\n const winSelection = ownerDoc.defaultView?.getSelection();\r\n winSelection?.removeAllRanges();\r\n } catch (_e) { }\r\n }\r\n}\r\n\r\nfunction getDefaultSize(defaultSize?: number | string, minSize?: string | number, maxSize?: string | number, draggedSize?: number) {\r\n // istanbul ignore next\r\n if (typeof draggedSize === \"number\") {\r\n const min = typeof minSize === \"number\" ? minSize : 0;\r\n const max =\r\n typeof maxSize === \"number\" && maxSize >= 0 ? maxSize : Infinity;\r\n return Math.max(min, Math.min(max, draggedSize));\r\n }\r\n if (defaultSize !== undefined) {\r\n return defaultSize;\r\n }\r\n return minSize;\r\n}\r\n\r\nfunction removeNullChildren(children: React.ReactNode[]) {\r\n return React.Children.toArray(children).filter((c) => c);\r\n}\r\n\r\n/**\r\n * Local TypeScript implementation of `SplitPane` from `react-split-pane` package since that\r\n * package is not regularly maintained.\r\n * See https://github.com/tomkp/react-split-pane/blob/master/LICENSE.\r\n * @public\r\n */\r\nexport function SplitPane(props: SplitPaneProps) {\r\n const { style, size, defaultSize, maxSize, children,\r\n paneStyle, pane1Style, pane2Style, className,\r\n paneClassName, pane1ClassName, pane2ClassName,\r\n onDragStarted, onDragFinished, step, onChange,\r\n onResizerClick, onResizerDoubleClick,\r\n } = props;\r\n\r\n // honor same defaults as react-split-pane\r\n const allowResize = React.useMemo(() => undefined !== props.allowResize ? props.allowResize : true, [props.allowResize]);\r\n const minSize = React.useMemo(() => undefined !== props.minSize ? props.minSize : 50, [props.minSize]);\r\n const primary = React.useMemo(() => undefined !== props.primary ? props.primary : \"first\", [props.primary]);\r\n const split = React.useMemo(() => undefined !== props.split ? props.split : \"vertical\", [props.split]);\r\n const initialSize = size !== undefined ? size : getDefaultSize(defaultSize, minSize, maxSize);\r\n\r\n const [position, setPosition] = React.useState(0);\r\n const [draggedSize, setDraggedSize] = React.useState<number | undefined>();\r\n const [active, setActive] = React.useState(false);\r\n const [pane1Size, setPane1Size] = React.useState(() => primary === \"first\" ? initialSize : undefined);\r\n const [pane2Size, setPane2Size] = React.useState(() => primary === \"second\" ? initialSize : undefined);\r\n const splitPane = React.useRef<HTMLDivElement>(null);\r\n const pane1 = React.useRef<HTMLDivElement>(null);\r\n const pane2 = React.useRef<HTMLDivElement>(null);\r\n const notNullChildren = React.useMemo(() => removeNullChildren(children), [children]);\r\n\r\n React.useEffect(() => {\r\n primary === \"first\" ? setPane1Size(initialSize) : setPane2Size(initialSize);\r\n primary === \"first\" ? setPane2Size(undefined) : setPane1Size(undefined);\r\n }, [initialSize, primary]);\r\n\r\n const splitPaneStyle = React.useMemo(() => {\r\n const directionSpecificParts = (split === \"vertical\") ? {\r\n flexDirection: \"row\",\r\n left: 0,\r\n right: 0,\r\n } : {\r\n bottom: 0,\r\n flexDirection: \"column\",\r\n minHeight: \"100%\",\r\n top: 0,\r\n width: \"100%\",\r\n };\r\n\r\n return {\r\n display: \"flex\",\r\n flex: 1,\r\n height: \"100%\",\r\n position: \"absolute\",\r\n outline: \"none\",\r\n overflow: \"hidden\",\r\n MozUserSelect: \"text\",\r\n WebkitUserSelect: \"text\",\r\n msUserSelect: \"text\",\r\n userSelect: \"text\",\r\n ...style,\r\n ...directionSpecificParts,\r\n } as React.CSSProperties;\r\n }, [split, style]);\r\n\r\n const pane1DivStyle = { ...paneStyle, ...pane1Style };\r\n const pane2DivStyle = { ...paneStyle, ...pane2Style };\r\n const resizerStyle = React.useMemo(() => props.resizerStyle ?? {}, [props.resizerStyle]);\r\n const resizerClasses = React.useMemo(() => classnames(\"Resizer\", !allowResize && \"disabled\"), [allowResize]);\r\n const splitPaneClasses = React.useMemo(() => classnames(\"SplitPane\", className, split, !allowResize && \"disabled\"), [className, split, allowResize]);\r\n const pane1Classes = React.useMemo(() => classnames(\"Pane1\", paneClassName, pane1ClassName), [paneClassName, pane1ClassName]);\r\n const pane2Classes = React.useMemo(() => classnames(\"Pane2\", paneClassName, pane2ClassName), [paneClassName, pane2ClassName]);\r\n\r\n const initializeDrag = React.useCallback((x: number, y: number) => {\r\n // istanbul ignore next\r\n unFocus(splitPane.current?.ownerDocument);\r\n const newPosition = split === \"vertical\" ? x : y;\r\n onDragStarted && onDragStarted();\r\n setActive(true);\r\n setPosition(newPosition);\r\n }, [onDragStarted, split]);\r\n\r\n const onTouchStart = React.useCallback((event: TouchEvent) => {\r\n // istanbul ignore else\r\n if (allowResize) {\r\n initializeDrag(event.touches[0].clientX, event.touches[0].clientY);\r\n }\r\n }, [allowResize, initializeDrag]);\r\n\r\n const processMove = React.useCallback((x: number, y: number) => {\r\n // istanbul ignore next\r\n unFocus(splitPane.current?.ownerDocument);\r\n const isPrimaryFirst = primary === \"first\";\r\n const ref = isPrimaryFirst ? pane1.current : pane2.current;\r\n const ref2 = isPrimaryFirst ? pane2.current : pane1.current;\r\n const splitPaneDiv = splitPane.current;\r\n\r\n // istanbul ignore else\r\n if (ref && ref2 && splitPaneDiv) {\r\n const node = ref;\r\n const node2 = ref2;\r\n // istanbul ignore else\r\n if (node.getBoundingClientRect) {\r\n const width = node.getBoundingClientRect().width;\r\n const height = node.getBoundingClientRect().height;\r\n // istanbul ignore next\r\n const current = split === \"vertical\" ? x : y;\r\n // istanbul ignore next\r\n const oldSize = split === \"vertical\" ? width : height;\r\n let positionDelta = position - current;\r\n if (step) {\r\n // istanbul ignore next\r\n if (Math.abs(positionDelta) < step) {\r\n return;\r\n }\r\n // Integer division\r\n // eslint-disable-next-line no-bitwise\r\n positionDelta = ~~(positionDelta / step) * step;\r\n }\r\n let sizeDelta = isPrimaryFirst ? positionDelta : -positionDelta;\r\n\r\n // istanbul ignore next\r\n const pane1Order = parseInt(node.ownerDocument?.defaultView?.getComputedStyle(node).order ?? \"0\", 10);\r\n // istanbul ignore next\r\n const pane2Order = parseInt(node2.ownerDocument?.defaultView?.getComputedStyle(node2).order ?? \"0\", 10);\r\n // istanbul ignore next\r\n if (pane1Order > pane2Order) {\r\n sizeDelta = -sizeDelta;\r\n }\r\n\r\n let newMaxSize = maxSize;\r\n // istanbul ignore next\r\n if (typeof maxSize === \"number\" && maxSize !== undefined && maxSize <= 0) {\r\n if (split === \"vertical\") {\r\n newMaxSize = splitPaneDiv.getBoundingClientRect().width + maxSize;\r\n } else {\r\n newMaxSize = splitPaneDiv.getBoundingClientRect().height + maxSize;\r\n }\r\n }\r\n\r\n let newSize = oldSize - sizeDelta;\r\n const newPosition = position - positionDelta;\r\n\r\n // istanbul ignore next\r\n if (typeof minSize === \"number\" && newSize < minSize) {\r\n newSize = minSize;\r\n } else if (typeof newMaxSize === \"number\" && newMaxSize !== undefined && newSize > newMaxSize) {\r\n newSize = newMaxSize;\r\n } else {\r\n setPosition(newPosition);\r\n }\r\n\r\n onChange && onChange(newSize);\r\n setDraggedSize(newSize);\r\n isPrimaryFirst ? setPane1Size(newSize) : setPane2Size(newSize);\r\n }\r\n }\r\n }, [maxSize, minSize, onChange, position, primary, split, step]);\r\n\r\n const onTouchMove = React.useCallback((event: TouchEvent) => {\r\n // istanbul ignore next\r\n if (!allowResize || !active)\r\n return;\r\n processMove(event.touches[0].clientX, event.touches[0].clientY);\r\n }, [active, allowResize, processMove]);\r\n\r\n const onMouseMove = React.useCallback((event: MouseEvent) => {\r\n if (!allowResize || !active)\r\n return;\r\n processMove(event.clientX, event.clientY);\r\n }, [active, allowResize, processMove]);\r\n\r\n const onMouseDown = React.useCallback((event: MouseEvent) => {\r\n // istanbul ignore else\r\n if (allowResize) {\r\n event.preventDefault();\r\n initializeDrag(event.clientX, event.clientY);\r\n }\r\n }, [allowResize, initializeDrag]);\r\n\r\n const processResizeFinished = React.useCallback(() => {\r\n // istanbul ignore else\r\n if (undefined !== draggedSize && allowResize && active) {\r\n onDragFinished && onDragFinished(draggedSize);\r\n }\r\n setActive(false);\r\n }, [draggedSize, allowResize, active, onDragFinished]);\r\n\r\n const onMouseUp = React.useCallback((event: MouseEvent) => {\r\n event.preventDefault();\r\n processResizeFinished();\r\n }, [processResizeFinished]);\r\n\r\n React.useEffect(() => {\r\n // istanbul ignore next\r\n const ownerDoc = splitPane.current?.ownerDocument;\r\n // istanbul ignore next\r\n if (!ownerDoc)\r\n return;\r\n\r\n ownerDoc.addEventListener(\"mouseup\", onMouseUp);\r\n ownerDoc.addEventListener(\"mousemove\", onMouseMove);\r\n ownerDoc.addEventListener(\"touchmove\", onTouchMove);\r\n return () => {\r\n ownerDoc.removeEventListener(\"mouseup\", onMouseUp);\r\n ownerDoc.removeEventListener(\"mousemove\", onMouseMove);\r\n ownerDoc.removeEventListener(\"touchmove\", onTouchMove);\r\n };\r\n }, [onMouseMove, onMouseUp, onTouchMove]);\r\n\r\n return (\r\n <div\r\n className={splitPaneClasses}\r\n ref={splitPane}\r\n style={splitPaneStyle}\r\n >\r\n <Pane\r\n className={pane1Classes}\r\n key=\"pane1\"\r\n eleRef={pane1}\r\n size={pane1Size}\r\n split={split}\r\n style={pane1DivStyle}\r\n >\r\n {notNullChildren[0]}\r\n </Pane>\r\n <Resizer\r\n className={resizerClasses}\r\n onClick={onResizerClick}\r\n onDoubleClick={onResizerDoubleClick}\r\n onMouseDown={onMouseDown}\r\n onTouchStart={onTouchStart}\r\n onTouchEnd={processResizeFinished}\r\n key=\"resizer\"\r\n split={split}\r\n style={resizerStyle}\r\n />\r\n <Pane\r\n className={pane2Classes}\r\n key=\"pane2\"\r\n eleRef={pane2}\r\n size={pane2Size}\r\n split={split}\r\n style={pane2DivStyle}\r\n >\r\n {notNullChildren[1]}\r\n </Pane>\r\n </div>\r\n );\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Frontstage.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/frontstage/Frontstage.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Frontstage.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/frontstage/Frontstage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -42,6 +42,7 @@ export class Frontstage extends React.Component {
|
|
|
42
42
|
flexFlow: "column",
|
|
43
43
|
};
|
|
44
44
|
this._uiVisibilityChanged = (args) => {
|
|
45
|
+
// istanbul ignore else
|
|
45
46
|
if (this._isMounted)
|
|
46
47
|
this.setState({ isUiVisible: args.visible });
|
|
47
48
|
};
|
|
@@ -371,6 +372,7 @@ class WidgetContentRenderer extends React.PureComponent {
|
|
|
371
372
|
this.props.renderTo.appendChild(this._content);
|
|
372
373
|
}
|
|
373
374
|
componentDidUpdate(prevProps) {
|
|
375
|
+
// istanbul ignore next
|
|
374
376
|
if (!this._isMounted)
|
|
375
377
|
return;
|
|
376
378
|
if (this.props.isHidden !== prevProps.isHidden) {
|