react-science 17.0.0 → 18.0.1
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/components/accordion/accordion.d.ts +12 -1
- package/lib/components/accordion/accordion.d.ts.map +1 -1
- package/lib/components/accordion/accordion.js +12 -8
- package/lib/components/accordion/accordion.js.map +1 -1
- package/lib/components/accordion/accordion_context.d.ts +7 -13
- package/lib/components/accordion/accordion_context.d.ts.map +1 -1
- package/lib/components/accordion/accordion_context.js +4 -2
- package/lib/components/accordion/accordion_context.js.map +1 -1
- package/lib/components/accordion/accordion_context_provider.js.map +1 -1
- package/lib/components/accordion/accordion_context_utils.d.ts +7 -4
- package/lib/components/accordion/accordion_context_utils.d.ts.map +1 -1
- package/lib/components/accordion/accordion_context_utils.js.map +1 -1
- package/lib/components/accordion/index.d.ts +1 -0
- package/lib/components/accordion/index.d.ts.map +1 -1
- package/lib/components/fullscreen/fullscreen_context.provider.d.ts +10 -5
- package/lib/components/fullscreen/fullscreen_context.provider.d.ts.map +1 -1
- package/lib/components/fullscreen/fullscreen_context.provider.js +20 -52
- package/lib/components/fullscreen/fullscreen_context.provider.js.map +1 -1
- package/lib/components/root-layout/root_layout.d.ts +3 -1
- package/lib/components/root-layout/root_layout.d.ts.map +1 -1
- package/lib/components/root-layout/root_layout.js +2 -2
- package/lib/components/root-layout/root_layout.js.map +1 -1
- package/lib/components/table/table_root.js +9 -7
- package/lib/components/table/table_root.js.map +1 -1
- package/package.json +2 -1
- package/src/components/accordion/accordion.tsx +33 -9
- package/src/components/accordion/accordion_context.ts +13 -10
- package/src/components/accordion/accordion_context_provider.tsx +3 -3
- package/src/components/accordion/accordion_context_utils.ts +7 -4
- package/src/components/accordion/index.ts +3 -0
- package/src/components/fullscreen/fullscreen_context.provider.tsx +35 -72
- package/src/components/root-layout/root_layout.tsx +7 -4
- package/src/components/table/table_root.tsx +13 -11
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import type { ReactElement, ReactNode } from 'react';
|
|
2
|
+
import type { AccordionItemControls } from './accordion_context_utils.js';
|
|
2
3
|
export interface AccordionProps<T extends string = string> {
|
|
3
4
|
children?: Array<ReactElement<AccordionItemProps<T>>> | ReactElement<AccordionItemProps<T>> | boolean | null;
|
|
4
5
|
}
|
|
6
|
+
export interface AccordionRenderToolbarProps<T extends string = string> {
|
|
7
|
+
id: T;
|
|
8
|
+
isOpen: boolean;
|
|
9
|
+
controls: AccordionItemControls;
|
|
10
|
+
}
|
|
5
11
|
export interface AccordionItemProps<T extends string = string> {
|
|
6
12
|
/**
|
|
7
13
|
* A value uniquely identifying the accordion item.
|
|
@@ -33,7 +39,12 @@ export interface AccordionItemProps<T extends string = string> {
|
|
|
33
39
|
* When not set or set to false, the item's children will be rendered but hidden when the item is closed.
|
|
34
40
|
*/
|
|
35
41
|
unmountChildren?: boolean;
|
|
36
|
-
|
|
42
|
+
/**
|
|
43
|
+
* A custom render function to display in the toolbar on the right of the accordion item.
|
|
44
|
+
* Click events will not be propagated down to the accordion item to prevent it from opening/closing.
|
|
45
|
+
* @param data
|
|
46
|
+
*/
|
|
47
|
+
renderToolbar?: (renderProps: AccordionRenderToolbarProps<T>) => ReactNode;
|
|
37
48
|
}
|
|
38
49
|
export declare function Accordion<T extends string = string>(props: AccordionProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
39
50
|
export declare namespace Accordion {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../../src/components/accordion/accordion.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,YAAY,EACZ,SAAS,EACV,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../../src/components/accordion/accordion.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,YAAY,EACZ,SAAS,EACV,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAE1E,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IACvD,QAAQ,CAAC,EACL,KAAK,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,GAC1C,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,GACnC,OAAO,GACP,IAAI,CAAC;CACV;AAED,MAAM,WAAW,2BAA2B,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IACpE,EAAE,EAAE,CAAC,CAAC;IACN,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,qBAAqB,CAAC;CACjC;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IAC3D;;OAEG;IACH,EAAE,EAAE,CAAC,CAAC;IACN;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;IACpB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,WAAW,EAAE,2BAA2B,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;CAC5E;AAkCD,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,2CAE5E;yBAFe,SAAS;eAIe,CAAC,SAAS,MAAM,kBAC/C,kBAAkB,CAAC,CAAC,CAAC"}
|
|
@@ -2,8 +2,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { Colors } from '@blueprintjs/core';
|
|
3
3
|
import styled from '@emotion/styled';
|
|
4
4
|
import { useControllableState } from '@radix-ui/react-use-controllable-state';
|
|
5
|
-
import { useCallback } from 'react';
|
|
6
|
-
import {
|
|
5
|
+
import { useCallback, useRef } from 'react';
|
|
6
|
+
import { useAccordionItemContext } from './accordion_context.js';
|
|
7
7
|
const AccordionItemHeader = styled.div `
|
|
8
8
|
cursor: pointer;
|
|
9
9
|
display: flex;
|
|
@@ -44,26 +44,27 @@ Accordion.Item = function AccordionItem(props) {
|
|
|
44
44
|
defaultProp: defaultOpen,
|
|
45
45
|
onChange: onOpenChange,
|
|
46
46
|
});
|
|
47
|
-
const {
|
|
47
|
+
const { controls, unmountChildren } = useAccordionItemContext(id, setIsOpen);
|
|
48
|
+
const headerRef = useRef(null);
|
|
48
49
|
const shouldUnmountChildren = props.unmountChildren === undefined
|
|
49
50
|
? unmountChildren
|
|
50
51
|
: props.unmountChildren;
|
|
51
52
|
const onClickHandle = useCallback((event) => {
|
|
52
53
|
if (event.shiftKey) {
|
|
53
|
-
|
|
54
|
+
controls.closeOthers();
|
|
54
55
|
}
|
|
55
56
|
else {
|
|
56
|
-
|
|
57
|
+
controls.toggle();
|
|
57
58
|
}
|
|
58
|
-
}, [
|
|
59
|
+
}, [controls]);
|
|
59
60
|
return (_jsxs("div", { style: {
|
|
60
61
|
flex: isOpen ? '1 1 1px' : 'none',
|
|
61
62
|
display: 'flex',
|
|
62
63
|
flexDirection: 'column',
|
|
63
64
|
isolation: 'isolate',
|
|
64
|
-
}, children: [_jsxs(AccordionItemHeader, { onClick: onClickHandle, role: "button", children: [_jsx("div", { style: {
|
|
65
|
+
}, children: [_jsxs(AccordionItemHeader, { onClick: onClickHandle, role: "button", ref: headerRef, children: [_jsx("div", { style: {
|
|
65
66
|
padding: '5px 0px',
|
|
66
|
-
}, children: title }), renderToolbar?.(isOpen ?? false)] }), !isOpen && shouldUnmountChildren ? null : (_jsx("div", { style: {
|
|
67
|
+
}, children: title }), _jsx(ToolbarContainer, { onClick: (event) => event.stopPropagation(), children: renderToolbar?.({ id, isOpen: isOpen ?? false, controls }) })] }), !isOpen && shouldUnmountChildren ? null : (_jsx("div", { style: {
|
|
67
68
|
display: isOpen ? 'flex' : 'none',
|
|
68
69
|
flex: isOpen ? '1 1 1px' : 'none',
|
|
69
70
|
backgroundColor: 'white',
|
|
@@ -77,4 +78,7 @@ Accordion.Item = function AccordionItem(props) {
|
|
|
77
78
|
flexDirection: 'column',
|
|
78
79
|
}, children: children }) }))] }));
|
|
79
80
|
};
|
|
81
|
+
const ToolbarContainer = styled.div `
|
|
82
|
+
display: flex;
|
|
83
|
+
`;
|
|
80
84
|
//# sourceMappingURL=accordion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordion.js","sourceRoot":"","sources":["../../../src/components/accordion/accordion.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAM9E,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"accordion.js","sourceRoot":"","sources":["../../../src/components/accordion/accordion.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export type
|
|
3
|
-
|
|
1
|
+
import type { AccordionItemContextValue, AccordionItemSetIsOpen } from './accordion_context_utils.js';
|
|
2
|
+
export type AccordionContextValue = [
|
|
3
|
+
{
|
|
4
|
+
unmountChildren: boolean;
|
|
5
|
+
},
|
|
4
6
|
{
|
|
5
7
|
closeAllExcept: (except: string) => void;
|
|
6
8
|
toggle: (id: string) => void;
|
|
@@ -9,14 +11,6 @@ export type ContextType = [
|
|
|
9
11
|
change: (id: string, isOpen: boolean) => void;
|
|
10
12
|
}
|
|
11
13
|
];
|
|
12
|
-
|
|
13
|
-
export declare
|
|
14
|
-
export declare function useAccordionContext(id: string, setIsOpen: AccordionItemSetIsOpen): {
|
|
15
|
-
unmountChildren: boolean;
|
|
16
|
-
utils: {
|
|
17
|
-
closeOthers: () => void;
|
|
18
|
-
toggle: () => void;
|
|
19
|
-
};
|
|
20
|
-
};
|
|
21
|
-
export {};
|
|
14
|
+
export declare const accordionContext: import("react").Context<AccordionContextValue | null>;
|
|
15
|
+
export declare function useAccordionItemContext(id: string, setIsOpen: AccordionItemSetIsOpen): AccordionItemContextValue;
|
|
22
16
|
//# sourceMappingURL=accordion_context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordion_context.d.ts","sourceRoot":"","sources":["../../../src/components/accordion/accordion_context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,
|
|
1
|
+
{"version":3,"file":"accordion_context.d.ts","sourceRoot":"","sources":["../../../src/components/accordion/accordion_context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,yBAAyB,EACzB,sBAAsB,EACvB,MAAM,8BAA8B,CAAC;AAEtC,MAAM,MAAM,qBAAqB,GAAG;IAClC;QACE,eAAe,EAAE,OAAO,CAAC;KAC1B;IACD;QACE,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;QACzC,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;QAC7B,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;QACjC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,sBAAsB,KAAK,IAAI,CAAC;QAClE,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;KAC/C;CACF,CAAC;AACF,eAAO,MAAM,gBAAgB,uDAE5B,CAAC;AAEF,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,sBAAsB,GAChC,yBAAyB,CA0B3B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createContext, useContext, useEffect, useMemo } from 'react';
|
|
2
2
|
export const accordionContext = createContext(null);
|
|
3
|
-
export function
|
|
3
|
+
export function useAccordionItemContext(id, setIsOpen) {
|
|
4
4
|
const context = useContext(accordionContext);
|
|
5
5
|
if (!context) {
|
|
6
6
|
throw new Error('AccordionContext was not found');
|
|
@@ -12,9 +12,11 @@ export function useAccordionContext(id, setIsOpen) {
|
|
|
12
12
|
}, [id, utils, setIsOpen]);
|
|
13
13
|
return useMemo(() => ({
|
|
14
14
|
unmountChildren: state.unmountChildren,
|
|
15
|
-
|
|
15
|
+
controls: {
|
|
16
16
|
closeOthers: () => utils.closeAllExcept(id),
|
|
17
17
|
toggle: () => utils.toggle(id),
|
|
18
|
+
open: () => utils.change(id, true),
|
|
19
|
+
close: () => utils.change(id, false),
|
|
18
20
|
},
|
|
19
21
|
}), [id, utils, state.unmountChildren]);
|
|
20
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordion_context.js","sourceRoot":"","sources":["../../../src/components/accordion/accordion_context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"accordion_context.js","sourceRoot":"","sources":["../../../src/components/accordion/accordion_context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAmBtE,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAC3C,IAAI,CACL,CAAC;AAEF,MAAM,UAAU,uBAAuB,CACrC,EAAU,EACV,SAAiC;IAEjC,MAAM,OAAO,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAE7C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC;IAE/B,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAC9B,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;IAE3B,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;QACL,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,QAAQ,EAAE;YACR,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;YAC3C,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC;YAClC,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC;SACrC;KACF,CAAC,EACF,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,eAAe,CAAC,CACnC,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordion_context_provider.js","sourceRoot":"","sources":["../../../src/components/accordion/accordion_context_provider.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAExC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAG3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAOpE,MAAM,UAAU,iBAAiB,CAAC,KAA6B;IAC7D,MAAM,EAAE,eAAe,GAAG,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACpD,MAAM,WAAW,GAAG,MAAM,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAEnD,MAAM,KAAK,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"accordion_context_provider.js","sourceRoot":"","sources":["../../../src/components/accordion/accordion_context_provider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import type { Dispatch, SetStateAction } from 'react';
|
|
2
|
-
export interface
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
export interface AccordionItemControls {
|
|
3
|
+
closeOthers: () => void;
|
|
4
|
+
toggle: () => void;
|
|
5
|
+
open: () => void;
|
|
6
|
+
close: () => void;
|
|
5
7
|
}
|
|
6
|
-
export interface
|
|
8
|
+
export interface AccordionItemContextValue {
|
|
7
9
|
unmountChildren: boolean;
|
|
10
|
+
controls: AccordionItemControls;
|
|
8
11
|
}
|
|
9
12
|
export type AccordionItemSetIsOpen = Dispatch<SetStateAction<boolean | undefined>>;
|
|
10
13
|
interface AccordionRegisteredItem {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordion_context_utils.d.ts","sourceRoot":"","sources":["../../../src/components/accordion/accordion_context_utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAEtD,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"accordion_context_utils.d.ts","sourceRoot":"","sources":["../../../src/components/accordion/accordion_context_utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAEtD,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,EAAE,qBAAqB,CAAC;CACjC;AAED,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAC3C,cAAc,CAAC,OAAO,GAAG,SAAS,CAAC,CACpC,CAAC;AAEF,UAAU,uBAAuB;IAC/B,SAAS,EAAE,sBAAsB,CAAC;CACnC;AAED,wBAAgB,oBAAoB,yCAEnC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordion_context_utils.js","sourceRoot":"","sources":["../../../src/components/accordion/accordion_context_utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"accordion_context_utils.js","sourceRoot":"","sources":["../../../src/components/accordion/accordion_context_utils.ts"],"names":[],"mappings":"AAsBA,MAAM,UAAU,oBAAoB;IAClC,OAAO,IAAI,GAAG,EAAmC,CAAC;AACpD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/accordion/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iCAAiC,CAAC;AAChD,cAAc,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/accordion/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iCAAiC,CAAC;AAChD,cAAc,sBAAsB,CAAC;AAGrC,YAAY,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC"}
|
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
interface
|
|
1
|
+
import type { MutableRefObject, ReactNode } from 'react';
|
|
2
|
+
export interface FullscreenProviderProps {
|
|
3
3
|
/**
|
|
4
4
|
* Callback providing the ref which should be passed to the element that can be displayed fullscreen.
|
|
5
5
|
* @param ref
|
|
6
6
|
*/
|
|
7
|
-
children: (ref:
|
|
7
|
+
children: (ref: MutableRefObject<HTMLDivElement | null>) => ReactNode;
|
|
8
|
+
/**
|
|
9
|
+
* Callback which will be called in case toggling results in an error.
|
|
10
|
+
* @param error - The error that happened. Value is not necessarily an instance of `Error` and may even be `undefined`.
|
|
11
|
+
* @param step - Indicates if the error happened when entering or exiting the full screen.
|
|
12
|
+
*/
|
|
13
|
+
onToggleError?: (error: unknown, step: 'enter' | 'exit') => void;
|
|
8
14
|
}
|
|
9
|
-
export declare function FullScreenProvider(props:
|
|
10
|
-
export {};
|
|
15
|
+
export declare function FullScreenProvider(props: FullscreenProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
11
16
|
//# sourceMappingURL=fullscreen_context.provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fullscreen_context.provider.d.ts","sourceRoot":"","sources":["../../../src/components/fullscreen/fullscreen_context.provider.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fullscreen_context.provider.d.ts","sourceRoot":"","sources":["../../../src/components/fullscreen/fullscreen_context.provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMzD,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,QAAQ,EAAE,CAAC,GAAG,EAAE,gBAAgB,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,SAAS,CAAC;IACtE;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;CAClE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,2CA4BhE"}
|
|
@@ -1,60 +1,28 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { useMemo } from 'react';
|
|
3
|
+
import { useFullScreenHandle } from 'react-full-screen';
|
|
4
|
+
import { fullscreenContext } from './fullscreen_context.js';
|
|
4
5
|
export function FullScreenProvider(props) {
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const ref = useRef(null);
|
|
13
|
-
useEffect(() => {
|
|
14
|
-
function onFullscreenChange() {
|
|
15
|
-
const document = window.document;
|
|
16
|
-
const value = Boolean(document.fullscreenElement || document.webkitFullscreenElement);
|
|
17
|
-
if (!value && isFullScreen)
|
|
18
|
-
toggle();
|
|
19
|
-
}
|
|
20
|
-
const div = ref.current;
|
|
21
|
-
if (!div) {
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
div.addEventListener('fullscreenchange', onFullscreenChange);
|
|
25
|
-
div.addEventListener('webkitfullscreenchange', onFullscreenChange);
|
|
26
|
-
return () => {
|
|
27
|
-
div.removeEventListener('fullscreenchange', onFullscreenChange);
|
|
28
|
-
div.removeEventListener('webkitfullscreenchange', onFullscreenChange);
|
|
29
|
-
};
|
|
30
|
-
}, [isFullScreen, toggle]);
|
|
31
|
-
useEffect(() => {
|
|
32
|
-
if (isFullScreen && ref.current) {
|
|
33
|
-
if (ref.current.requestFullscreen) {
|
|
34
|
-
ref.current.requestFullscreen().catch(() => {
|
|
35
|
-
window.alert('Fullscreen is not supported');
|
|
36
|
-
});
|
|
6
|
+
const { children, onToggleError } = props;
|
|
7
|
+
const handle = useFullScreenHandle();
|
|
8
|
+
const value = useMemo(() => {
|
|
9
|
+
function toggle() {
|
|
10
|
+
const handleToggle = handle.active ? handle.exit : handle.enter;
|
|
11
|
+
function handleError(error) {
|
|
12
|
+
onToggleError?.(error, handle.active ? 'exit' : 'enter');
|
|
37
13
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
window.alert('Fullscreen is not supported');
|
|
41
|
-
});
|
|
14
|
+
try {
|
|
15
|
+
handleToggle().catch(handleError);
|
|
42
16
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
if (!isFullScreen && document.fullscreenElement) {
|
|
46
|
-
if (document.exitFullscreen) {
|
|
47
|
-
document.exitFullscreen().catch(() => {
|
|
48
|
-
window.alert("Can't exit fullscreen");
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
else if (document.webkitExitFullscreen) {
|
|
52
|
-
document.webkitExitFullscreen().catch(() => {
|
|
53
|
-
window.alert("Can't exit fullscreen");
|
|
54
|
-
});
|
|
17
|
+
catch (error) {
|
|
18
|
+
handleError(error);
|
|
55
19
|
}
|
|
56
20
|
}
|
|
57
|
-
|
|
58
|
-
|
|
21
|
+
return {
|
|
22
|
+
isFullScreen: handle.active,
|
|
23
|
+
toggle,
|
|
24
|
+
};
|
|
25
|
+
}, [handle, onToggleError]);
|
|
26
|
+
return (_jsx(fullscreenContext.Provider, { value: value, children: children(handle.node) }));
|
|
59
27
|
}
|
|
60
28
|
//# sourceMappingURL=fullscreen_context.provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fullscreen_context.provider.js","sourceRoot":"","sources":["../../../src/components/fullscreen/fullscreen_context.provider.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"fullscreen_context.provider.js","sourceRoot":"","sources":["../../../src/components/fullscreen/fullscreen_context.provider.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAgB5D,MAAM,UAAU,kBAAkB,CAAC,KAA8B;IAC/D,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC;IAE1C,MAAM,MAAM,GAAG,mBAAmB,EAAE,CAAC;IAErC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE;QACzB,SAAS,MAAM;YACb,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAChE,SAAS,WAAW,CAAC,KAAc;gBACjC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC3D,CAAC;YACD,IAAI,CAAC;gBACH,YAAY,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACpC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,WAAW,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QACD,OAAO;YACL,YAAY,EAAE,MAAM,CAAC,MAAM;YAC3B,MAAM;SACP,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;IAE5B,OAAO,CACL,KAAC,iBAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YACrC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GACK,CAC9B,CAAC;AACJ,CAAC"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { CSSProperties, ReactNode } from 'react';
|
|
2
|
+
import type { FullscreenProviderProps } from '../fullscreen/index.js';
|
|
2
3
|
interface RootLayoutProps {
|
|
3
|
-
style?: CSSProperties;
|
|
4
4
|
children: ReactNode;
|
|
5
|
+
style?: CSSProperties;
|
|
6
|
+
onFullscreenToggleError?: FullscreenProviderProps['onToggleError'];
|
|
5
7
|
}
|
|
6
8
|
export declare function RootLayout(props: RootLayoutProps): import("react/jsx-runtime").JSX.Element;
|
|
7
9
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"root_layout.d.ts","sourceRoot":"","sources":["../../../src/components/root-layout/root_layout.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAoB,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"root_layout.d.ts","sourceRoot":"","sources":["../../../src/components/root-layout/root_layout.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAoB,SAAS,EAAE,MAAM,OAAO,CAAC;AAIxE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAQtE,UAAU,eAAe;IACvB,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,uBAAuB,CAAC,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC;CACpE;AAUD,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,2CAyChD"}
|
|
@@ -20,9 +20,9 @@ export function RootLayout(props) {
|
|
|
20
20
|
setRootRef(node);
|
|
21
21
|
}
|
|
22
22
|
}, []);
|
|
23
|
-
return (_jsx(FullScreenProvider, { children: (
|
|
23
|
+
return (_jsx(FullScreenProvider, { onToggleError: props.onFullscreenToggleError, children: (fullscreenRef) => (_jsx(CustomDivPreflight, { id: "root-layout", ref: (node) => {
|
|
24
24
|
if (node) {
|
|
25
|
-
const mutableRef =
|
|
25
|
+
const mutableRef = fullscreenRef;
|
|
26
26
|
mutableRef.current = node;
|
|
27
27
|
refCallback(node);
|
|
28
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"root_layout.js","sourceRoot":"","sources":["../../../src/components/root-layout/root_layout.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEzE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"root_layout.js","sourceRoot":"","sources":["../../../src/components/root-layout/root_layout.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEzE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAEvE,iBAAiB,CAAC,mBAAmB,EAAE,CAAC;AAQxC,MAAM,KAAK,GAAkB;IAC3B,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,MAAM;IACd,QAAQ,EAAE,MAAM;IAChB,OAAO,EAAE,MAAM;IACf,aAAa,EAAE,QAAQ;CACxB,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CACpC,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CACvD,CAAC;IAEF,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,IAAoB,EAAE,EAAE;QACvD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,UAAU,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL,KAAC,kBAAkB,IAAC,aAAa,EAAE,KAAK,CAAC,uBAAuB,YAC7D,CAAC,aAAa,EAAE,EAAE,CAAC,CAClB,KAAC,kBAAkB,IACjB,EAAE,EAAC,aAAa,EAChB,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;gBACZ,IAAI,IAAI,EAAE,CAAC;oBACT,MAAM,UAAU,GACd,aAAiD,CAAC;oBACpD,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;oBAC1B,WAAW,CAAC,IAAI,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC,EACD,KAAK,EAAE;gBACL,GAAG,KAAK;gBACR,GAAG,KAAK,CAAC,KAAK;aACf,EACD,SAAS,EAAC,IAAI,YAEd,KAAC,iBAAiB,OACZ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,YAExD,KAAC,kBAAkB,IAAC,QAAQ,EAAE,OAAO,YACnC,KAAC,iBAAiB,cAAE,KAAK,CAAC,QAAQ,GAAqB,GACpC,GACH,GACD,CACtB,GACkB,CACtB,CAAC;AACJ,CAAC"}
|
|
@@ -104,13 +104,15 @@ export function Table(props) {
|
|
|
104
104
|
function useCheckProps(props, headers) {
|
|
105
105
|
const { onRowOrderChanged, getRowId } = props;
|
|
106
106
|
useEffect(() => {
|
|
107
|
-
if (onRowOrderChanged
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
107
|
+
if (onRowOrderChanged) {
|
|
108
|
+
if (!getRowId) {
|
|
109
|
+
// eslint-disable-next-line no-console
|
|
110
|
+
console.warn('When reordering rows is enabled via the `onRowOrderChanged` prop, the `getRowId` prop must be provided to identify each row unambiguously.');
|
|
111
|
+
}
|
|
112
|
+
if (headers.some((header) => header.column.getCanSort())) {
|
|
113
|
+
// eslint-disable-next-line no-console
|
|
114
|
+
console.warn('When reordering rows is enabled via the `onRowOrderChanged` prop, none of the columns should be sortable as data order will be overriden by internal sorting.');
|
|
115
|
+
}
|
|
114
116
|
}
|
|
115
117
|
}, [onRowOrderChanged, getRowId, headers]);
|
|
116
118
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table_root.js","sourceRoot":"","sources":["../../../src/components/table/table_root.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"table_root.js","sourceRoot":"","sources":["../../../src/components/table/table_root.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAOrC,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,aAAa,GACd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAEzE,OAAO,EAAE,gCAAgC,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAS9D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAA4B;IAC3D,SAAS;IACT,cAAc;IACd,UAAU;CACX,CAAgB,CAAC;AAElB,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,EAAE;IACxC,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;CAC1D,CAAC,CAA8C;;IAE5C,CAAC,KAAK,EAAE,EAAE,CACV,KAAK,CAAC,KAAK,CAAC;KACT,IAAI,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;KACxD,SAAS,CACR,CAAC,KAAK,EAAE,EAAE,CAAC;;;;;;sBAMG,KAAK,CAAC,KAAK,CAAC;KACvB,IAAI,CACH,EAAE,QAAQ,EAAE,IAAI,EAAE,EAClB,GAAG,EAAE,CAAC,sCAAsC,CAC7C;KACA,SAAS,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC;;;;;;KAMxC,CACE;;;;;kBAKW,CAAC,KAAK,EAAE,EAAE,CACtB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,SAAS;;CAE5D,CAAC;AAuIF,MAAM,UAAU,KAAK,CAAwB,KAAwB;IACnE,MAAM,EACJ,IAAI,EACJ,OAAO,EAEP,QAAQ,GAAG,KAAK,EAChB,OAAO,GAAG,KAAK,EACf,WAAW,GAAG,KAAK,EACnB,OAAO,GAAG,KAAK,EACf,QAAQ,GAAG,KAAK,EAChB,YAAY,GAAG,KAAK,EAEpB,UAAU,EACV,UAAU,EACV,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,UAAU,EAEV,cAAc,EACd,QAAQ,EACR,iBAAiB,EACjB,gBAAgB,EAEhB,cAAc,GACf,GAAG,KAAK,CAAC;IACV,MAAM,mBAAmB,GAAG,CAAC,CAAC,iBAAiB,CAAC;IAChD,MAAM,uBAAuB,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,aAAa,CAAQ;QACjC,GAAG,UAAU;QACb,IAAI;QACJ,OAAO,EAAE,UAAU;QACnB,eAAe,EAAE,eAAe,EAAE;QAClC,iBAAiB,EAAE,iBAAiB,EAAE;QACtC,QAAQ;KACT,CAAC,CAAC;IAEH,MAAM,mBAAmB,GAAG,cAAc,CAAC;QACzC,OAAO,EAAE,cAAc;QACvB,KAAK,EAAE,IAAI,CAAC,MAAM;QAClB,gBAAgB,EAAE,GAAG,EAAE,CAAC,uBAAuB,CAAC,OAAO;QACvD,YAAY,EACV,CAAC,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACjE,QAAQ,EAAE,CAAC;KACZ,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;IAEhD,wEAAwE;IACxE,IAAI,cAAkC,CAAC;IACvC,IAAI,UAAU,EAAE,SAAS,IAAI,SAAS,EAAE,CAAC;QACvC,cAAc,GAAG,GAAG,UAAU,CAAC,SAAS,IAAI,SAAS,EAAE,CAAC;IAC1D,CAAC;SAAM,IAAI,SAAS,EAAE,CAAC;QACrB,cAAc,GAAG,SAAS,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,cAAc,GAAG,UAAU,EAAE,SAAS,CAAC;IACzC,CAAC;IAED,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;IAC5C,aAAa,CACX,KAA4B,EAC5B,YAA+C,CAChD,CAAC;IAEF,MAAM,iBAAiB,GAAG,OAAO,CAC/B,GAAG,EAAE,CAAC,CAAC;QACL,SAAS;QACT,UAAU;QACV,WAAW;QACX,OAAO;QACP,OAAO;KACR,CAAC,EACF,CAAC,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CACvD,CAAC;IACF,OAAO,CACL,KAAC,kBAAkB,cACjB,KAAC,gCAAgC,IAC/B,KAAK,EAAE,iBAA2D,YAElE,KAAC,iBAAiB,IAChB,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAC/B,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE;oBACxB,iBAAiB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC1D,CAAC,YAED,KAAC,eAAe,IACd,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,mBAAmB,EAChC,KAAK,EAAE,KAA+B,EACtC,SAAS,EACP,cAAc;wBACZ,CAAC,CAAC,6FAA6F;4BAC7F,uBAAuB;wBACzB,CAAC,CAAC,wFAAwF;4BACxF,yFAAyF;4BACzF,KAAK,CAAC,oBAAoB,IAAI,QAAQ,EAE5C,cAAc,EAAE,cAAc,EAC9B,mBAAmB,EAAE,mBAAmB,YAExC,MAAC,eAAe;oBACd,2DAA2D;;wBAA3D,2DAA2D;wBAC3D,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,YAAY;wBAC1B,uDAAuD;wBACvD,GAAG,EAAE,QAAQ,EACb,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,KACpB,UAAU,EACd,SAAS,EAAE,cAAc,aAExB,CAAC,QAAQ,IAAI,CACZ,KAAC,WAAW,IACV,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,YAAY,EACrB,gBAAgB,EAAE,gBAAgB,GAClC,CACH,EACD,KAAC,SAAS,IACR,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAC9B,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,mBAAmB,EAChC,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,gBAAgB,EAClC,mBAAmB,EAAE,mBAAmB,GACxC,IACc,GACF,GACA,GACa,GAChB,CACtB,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CACpB,KAA0B,EAC1B,OAAwC;IAExC,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC9C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,iBAAiB,EAAE,CAAC;YACtB,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,sCAAsC;gBACtC,OAAO,CAAC,IAAI,CACV,4IAA4I,CAC7I,CAAC;YACJ,CAAC;YACD,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;gBACzD,sCAAsC;gBACtC,OAAO,CAAC,IAAI,CACV,+JAA+J,CAChK,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,iBAAiB,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AAC7C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-science",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "18.0.1",
|
|
4
4
|
"description": "React components to build scientific applications UI",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -65,6 +65,7 @@
|
|
|
65
65
|
"@tanstack/react-virtual": "^3.13.2",
|
|
66
66
|
"d3-scale-chromatic": "^3.1.0",
|
|
67
67
|
"react-dropzone": "^14.3.8",
|
|
68
|
+
"react-full-screen": "^1.1.1",
|
|
68
69
|
"react-icons": "^5.5.0",
|
|
69
70
|
"react-inspector": "^6.0.2",
|
|
70
71
|
"tinycolor2": "^1.6.0",
|
|
@@ -6,9 +6,10 @@ import type {
|
|
|
6
6
|
ReactElement,
|
|
7
7
|
ReactNode,
|
|
8
8
|
} from 'react';
|
|
9
|
-
import { useCallback } from 'react';
|
|
9
|
+
import { useCallback, useRef } from 'react';
|
|
10
10
|
|
|
11
|
-
import {
|
|
11
|
+
import { useAccordionItemContext } from './accordion_context.js';
|
|
12
|
+
import type { AccordionItemControls } from './accordion_context_utils.js';
|
|
12
13
|
|
|
13
14
|
export interface AccordionProps<T extends string = string> {
|
|
14
15
|
children?:
|
|
@@ -18,6 +19,12 @@ export interface AccordionProps<T extends string = string> {
|
|
|
18
19
|
| null;
|
|
19
20
|
}
|
|
20
21
|
|
|
22
|
+
export interface AccordionRenderToolbarProps<T extends string = string> {
|
|
23
|
+
id: T;
|
|
24
|
+
isOpen: boolean;
|
|
25
|
+
controls: AccordionItemControls;
|
|
26
|
+
}
|
|
27
|
+
|
|
21
28
|
export interface AccordionItemProps<T extends string = string> {
|
|
22
29
|
/**
|
|
23
30
|
* A value uniquely identifying the accordion item.
|
|
@@ -49,7 +56,12 @@ export interface AccordionItemProps<T extends string = string> {
|
|
|
49
56
|
* When not set or set to false, the item's children will be rendered but hidden when the item is closed.
|
|
50
57
|
*/
|
|
51
58
|
unmountChildren?: boolean;
|
|
52
|
-
|
|
59
|
+
/**
|
|
60
|
+
* A custom render function to display in the toolbar on the right of the accordion item.
|
|
61
|
+
* Click events will not be propagated down to the accordion item to prevent it from opening/closing.
|
|
62
|
+
* @param data
|
|
63
|
+
*/
|
|
64
|
+
renderToolbar?: (renderProps: AccordionRenderToolbarProps<T>) => ReactNode;
|
|
53
65
|
}
|
|
54
66
|
|
|
55
67
|
const AccordionItemHeader = styled.div`
|
|
@@ -106,7 +118,9 @@ Accordion.Item = function AccordionItem<T extends string = string>(
|
|
|
106
118
|
defaultProp: defaultOpen,
|
|
107
119
|
onChange: onOpenChange,
|
|
108
120
|
});
|
|
109
|
-
const {
|
|
121
|
+
const { controls, unmountChildren } = useAccordionItemContext(id, setIsOpen);
|
|
122
|
+
|
|
123
|
+
const headerRef = useRef<HTMLDivElement>(null);
|
|
110
124
|
|
|
111
125
|
const shouldUnmountChildren =
|
|
112
126
|
props.unmountChildren === undefined
|
|
@@ -116,12 +130,12 @@ Accordion.Item = function AccordionItem<T extends string = string>(
|
|
|
116
130
|
const onClickHandle = useCallback(
|
|
117
131
|
(event: ReactMouseEvent<HTMLDivElement>) => {
|
|
118
132
|
if (event.shiftKey) {
|
|
119
|
-
|
|
133
|
+
controls.closeOthers();
|
|
120
134
|
} else {
|
|
121
|
-
|
|
135
|
+
controls.toggle();
|
|
122
136
|
}
|
|
123
137
|
},
|
|
124
|
-
[
|
|
138
|
+
[controls],
|
|
125
139
|
);
|
|
126
140
|
|
|
127
141
|
return (
|
|
@@ -133,7 +147,11 @@ Accordion.Item = function AccordionItem<T extends string = string>(
|
|
|
133
147
|
isolation: 'isolate',
|
|
134
148
|
}}
|
|
135
149
|
>
|
|
136
|
-
<AccordionItemHeader
|
|
150
|
+
<AccordionItemHeader
|
|
151
|
+
onClick={onClickHandle}
|
|
152
|
+
role="button"
|
|
153
|
+
ref={headerRef}
|
|
154
|
+
>
|
|
137
155
|
<div
|
|
138
156
|
style={{
|
|
139
157
|
padding: '5px 0px',
|
|
@@ -141,7 +159,9 @@ Accordion.Item = function AccordionItem<T extends string = string>(
|
|
|
141
159
|
>
|
|
142
160
|
{title}
|
|
143
161
|
</div>
|
|
144
|
-
{
|
|
162
|
+
<ToolbarContainer onClick={(event) => event.stopPropagation()}>
|
|
163
|
+
{renderToolbar?.({ id, isOpen: isOpen ?? false, controls })}
|
|
164
|
+
</ToolbarContainer>
|
|
145
165
|
</AccordionItemHeader>
|
|
146
166
|
{!isOpen && shouldUnmountChildren ? null : (
|
|
147
167
|
<div
|
|
@@ -169,3 +189,7 @@ Accordion.Item = function AccordionItem<T extends string = string>(
|
|
|
169
189
|
</div>
|
|
170
190
|
);
|
|
171
191
|
};
|
|
192
|
+
|
|
193
|
+
const ToolbarContainer = styled.div`
|
|
194
|
+
display: flex;
|
|
195
|
+
`;
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { createContext, useContext, useEffect, useMemo } from 'react';
|
|
2
2
|
|
|
3
3
|
import type {
|
|
4
|
+
AccordionItemContextValue,
|
|
4
5
|
AccordionItemSetIsOpen,
|
|
5
|
-
AccordionState,
|
|
6
6
|
} from './accordion_context_utils.js';
|
|
7
7
|
|
|
8
|
-
export type
|
|
9
|
-
|
|
8
|
+
export type AccordionContextValue = [
|
|
9
|
+
{
|
|
10
|
+
unmountChildren: boolean;
|
|
11
|
+
},
|
|
10
12
|
{
|
|
11
13
|
closeAllExcept: (except: string) => void;
|
|
12
14
|
toggle: (id: string) => void;
|
|
@@ -15,15 +17,14 @@ export type ContextType = [
|
|
|
15
17
|
change: (id: string, isOpen: boolean) => void;
|
|
16
18
|
},
|
|
17
19
|
];
|
|
20
|
+
export const accordionContext = createContext<AccordionContextValue | null>(
|
|
21
|
+
null,
|
|
22
|
+
);
|
|
18
23
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
export const accordionContext = createContext<ContextType | null>(null);
|
|
22
|
-
|
|
23
|
-
export function useAccordionContext(
|
|
24
|
+
export function useAccordionItemContext(
|
|
24
25
|
id: string,
|
|
25
26
|
setIsOpen: AccordionItemSetIsOpen,
|
|
26
|
-
) {
|
|
27
|
+
): AccordionItemContextValue {
|
|
27
28
|
const context = useContext(accordionContext);
|
|
28
29
|
|
|
29
30
|
if (!context) {
|
|
@@ -40,9 +41,11 @@ export function useAccordionContext(
|
|
|
40
41
|
return useMemo(
|
|
41
42
|
() => ({
|
|
42
43
|
unmountChildren: state.unmountChildren,
|
|
43
|
-
|
|
44
|
+
controls: {
|
|
44
45
|
closeOthers: () => utils.closeAllExcept(id),
|
|
45
46
|
toggle: () => utils.toggle(id),
|
|
47
|
+
open: () => utils.change(id, true),
|
|
48
|
+
close: () => utils.change(id, false),
|
|
46
49
|
},
|
|
47
50
|
}),
|
|
48
51
|
[id, utils, state.unmountChildren],
|
|
@@ -3,7 +3,7 @@ import { useMemo, useRef } from 'react';
|
|
|
3
3
|
|
|
4
4
|
import { assert } from '../utils/index.js';
|
|
5
5
|
|
|
6
|
-
import type {
|
|
6
|
+
import type { AccordionContextValue } from './accordion_context.js';
|
|
7
7
|
import { accordionContext } from './accordion_context.js';
|
|
8
8
|
import type { AccordionItemSetIsOpen } from './accordion_context_utils.js';
|
|
9
9
|
import { getAccordionRegister } from './accordion_context_utils.js';
|
|
@@ -17,7 +17,7 @@ export function AccordionProvider(props: AccordionProviderProps) {
|
|
|
17
17
|
const { unmountChildren = false, children } = props;
|
|
18
18
|
const registerRef = useRef(getAccordionRegister());
|
|
19
19
|
|
|
20
|
-
const utils = useMemo<
|
|
20
|
+
const utils = useMemo<AccordionContextValue[1]>(() => {
|
|
21
21
|
return {
|
|
22
22
|
change: (id: string, isOpen: boolean) => {
|
|
23
23
|
assert(registerRef.current);
|
|
@@ -62,7 +62,7 @@ export function AccordionProvider(props: AccordionProviderProps) {
|
|
|
62
62
|
};
|
|
63
63
|
}, [registerRef]);
|
|
64
64
|
|
|
65
|
-
const contextValue = useMemo<
|
|
65
|
+
const contextValue = useMemo<AccordionContextValue>(() => {
|
|
66
66
|
return [
|
|
67
67
|
{
|
|
68
68
|
unmountChildren,
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import type { Dispatch, SetStateAction } from 'react';
|
|
2
2
|
|
|
3
|
-
export interface
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
export interface AccordionItemControls {
|
|
4
|
+
closeOthers: () => void;
|
|
5
|
+
toggle: () => void;
|
|
6
|
+
open: () => void;
|
|
7
|
+
close: () => void;
|
|
6
8
|
}
|
|
7
9
|
|
|
8
|
-
export interface
|
|
10
|
+
export interface AccordionItemContextValue {
|
|
9
11
|
unmountChildren: boolean;
|
|
12
|
+
controls: AccordionItemControls;
|
|
10
13
|
}
|
|
11
14
|
|
|
12
15
|
export type AccordionItemSetIsOpen = Dispatch<
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
export * from './accordion.js';
|
|
2
2
|
export * from './accordion_context_provider.js';
|
|
3
3
|
export * from './accordion_hooks.js';
|
|
4
|
+
|
|
5
|
+
// Exported because part of AccordionRenderToolbarProps, which is also exported.
|
|
6
|
+
export type { AccordionItemControls } from './accordion_context_utils.js';
|
|
@@ -1,86 +1,49 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
1
|
+
import type { MutableRefObject, ReactNode } from 'react';
|
|
2
|
+
import { useMemo } from 'react';
|
|
3
|
+
import { useFullScreenHandle } from 'react-full-screen';
|
|
4
4
|
|
|
5
|
-
import { fullscreenContext
|
|
5
|
+
import { fullscreenContext } from './fullscreen_context.js';
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
webkitRequestFullscreen(): Promise<void>;
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
type DocumentType = Document & {
|
|
12
|
-
webkitExitFullscreen(): Promise<void>;
|
|
13
|
-
webkitFullscreenElement: Element | null;
|
|
14
|
-
};
|
|
15
|
-
interface FullscreenProps {
|
|
7
|
+
export interface FullscreenProviderProps {
|
|
16
8
|
/**
|
|
17
9
|
* Callback providing the ref which should be passed to the element that can be displayed fullscreen.
|
|
18
10
|
* @param ref
|
|
19
11
|
*/
|
|
20
|
-
children: (ref:
|
|
12
|
+
children: (ref: MutableRefObject<HTMLDivElement | null>) => ReactNode;
|
|
13
|
+
/**
|
|
14
|
+
* Callback which will be called in case toggling results in an error.
|
|
15
|
+
* @param error - The error that happened. Value is not necessarily an instance of `Error` and may even be `undefined`.
|
|
16
|
+
* @param step - Indicates if the error happened when entering or exiting the full screen.
|
|
17
|
+
*/
|
|
18
|
+
onToggleError?: (error: unknown, step: 'enter' | 'exit') => void;
|
|
21
19
|
}
|
|
22
20
|
|
|
23
|
-
export function FullScreenProvider(props:
|
|
24
|
-
const
|
|
21
|
+
export function FullScreenProvider(props: FullscreenProviderProps) {
|
|
22
|
+
const { children, onToggleError } = props;
|
|
25
23
|
|
|
26
|
-
const
|
|
27
|
-
() => ({ isFullScreen, toggle }),
|
|
28
|
-
[isFullScreen, toggle],
|
|
29
|
-
);
|
|
30
|
-
return (
|
|
31
|
-
<fullscreenContext.Provider value={value}>
|
|
32
|
-
<FullscreenInner {...props} />
|
|
33
|
-
</fullscreenContext.Provider>
|
|
34
|
-
);
|
|
35
|
-
}
|
|
36
|
-
function FullscreenInner(props: FullscreenProps) {
|
|
37
|
-
const { children } = props;
|
|
38
|
-
const { isFullScreen, toggle } = useFullscreen();
|
|
39
|
-
const ref = useRef<ElementType>(null);
|
|
40
|
-
useEffect(() => {
|
|
41
|
-
function onFullscreenChange() {
|
|
42
|
-
const document = window.document as DocumentType;
|
|
43
|
-
const value = Boolean(
|
|
44
|
-
document.fullscreenElement || document.webkitFullscreenElement,
|
|
45
|
-
);
|
|
46
|
-
if (!value && isFullScreen) toggle();
|
|
47
|
-
}
|
|
48
|
-
const div = ref.current;
|
|
49
|
-
if (!div) {
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
div.addEventListener('fullscreenchange', onFullscreenChange);
|
|
53
|
-
div.addEventListener('webkitfullscreenchange', onFullscreenChange);
|
|
24
|
+
const handle = useFullScreenHandle();
|
|
54
25
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
useEffect(() => {
|
|
61
|
-
if (isFullScreen && ref.current) {
|
|
62
|
-
if (ref.current.requestFullscreen) {
|
|
63
|
-
ref.current.requestFullscreen().catch(() => {
|
|
64
|
-
window.alert('Fullscreen is not supported');
|
|
65
|
-
});
|
|
66
|
-
} else if (ref.current.webkitRequestFullscreen) {
|
|
67
|
-
ref.current.webkitRequestFullscreen()?.catch(() => {
|
|
68
|
-
window.alert('Fullscreen is not supported');
|
|
69
|
-
});
|
|
26
|
+
const value = useMemo(() => {
|
|
27
|
+
function toggle() {
|
|
28
|
+
const handleToggle = handle.active ? handle.exit : handle.enter;
|
|
29
|
+
function handleError(error: unknown) {
|
|
30
|
+
onToggleError?.(error, handle.active ? 'exit' : 'enter');
|
|
70
31
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
document.exitFullscreen().catch(() => {
|
|
76
|
-
window.alert("Can't exit fullscreen");
|
|
77
|
-
});
|
|
78
|
-
} else if (document.webkitExitFullscreen) {
|
|
79
|
-
document.webkitExitFullscreen().catch(() => {
|
|
80
|
-
window.alert("Can't exit fullscreen");
|
|
81
|
-
});
|
|
32
|
+
try {
|
|
33
|
+
handleToggle().catch(handleError);
|
|
34
|
+
} catch (error) {
|
|
35
|
+
handleError(error);
|
|
82
36
|
}
|
|
83
37
|
}
|
|
84
|
-
|
|
85
|
-
|
|
38
|
+
return {
|
|
39
|
+
isFullScreen: handle.active,
|
|
40
|
+
toggle,
|
|
41
|
+
};
|
|
42
|
+
}, [handle, onToggleError]);
|
|
43
|
+
|
|
44
|
+
return (
|
|
45
|
+
<fullscreenContext.Provider value={value}>
|
|
46
|
+
{children(handle.node)}
|
|
47
|
+
</fullscreenContext.Provider>
|
|
48
|
+
);
|
|
86
49
|
}
|
|
@@ -3,6 +3,7 @@ import type { CSSProperties, MutableRefObject, ReactNode } from 'react';
|
|
|
3
3
|
import { useCallback, useState } from 'react';
|
|
4
4
|
|
|
5
5
|
import { AccordionProvider } from '../accordion/index.js';
|
|
6
|
+
import type { FullscreenProviderProps } from '../fullscreen/index.js';
|
|
6
7
|
import { FullScreenProvider } from '../fullscreen/index.js';
|
|
7
8
|
|
|
8
9
|
import { CustomDivPreflight } from './css-reset/customPreflight.js';
|
|
@@ -11,8 +12,9 @@ import { RootLayoutProvider } from './root_layout_context.provider.js';
|
|
|
11
12
|
FocusStyleManager.onlyShowFocusOnTabs();
|
|
12
13
|
|
|
13
14
|
interface RootLayoutProps {
|
|
14
|
-
style?: CSSProperties;
|
|
15
15
|
children: ReactNode;
|
|
16
|
+
style?: CSSProperties;
|
|
17
|
+
onFullscreenToggleError?: FullscreenProviderProps['onToggleError'];
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
const style: CSSProperties = {
|
|
@@ -35,13 +37,14 @@ export function RootLayout(props: RootLayoutProps) {
|
|
|
35
37
|
}, []);
|
|
36
38
|
|
|
37
39
|
return (
|
|
38
|
-
<FullScreenProvider>
|
|
39
|
-
{(
|
|
40
|
+
<FullScreenProvider onToggleError={props.onFullscreenToggleError}>
|
|
41
|
+
{(fullscreenRef) => (
|
|
40
42
|
<CustomDivPreflight
|
|
41
43
|
id="root-layout"
|
|
42
44
|
ref={(node) => {
|
|
43
45
|
if (node) {
|
|
44
|
-
const mutableRef =
|
|
46
|
+
const mutableRef =
|
|
47
|
+
fullscreenRef as MutableRefObject<HTMLDivElement>;
|
|
45
48
|
mutableRef.current = node;
|
|
46
49
|
refCallback(node);
|
|
47
50
|
}
|
|
@@ -353,17 +353,19 @@ function useCheckProps(
|
|
|
353
353
|
) {
|
|
354
354
|
const { onRowOrderChanged, getRowId } = props;
|
|
355
355
|
useEffect(() => {
|
|
356
|
-
if (onRowOrderChanged
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
356
|
+
if (onRowOrderChanged) {
|
|
357
|
+
if (!getRowId) {
|
|
358
|
+
// eslint-disable-next-line no-console
|
|
359
|
+
console.warn(
|
|
360
|
+
'When reordering rows is enabled via the `onRowOrderChanged` prop, the `getRowId` prop must be provided to identify each row unambiguously.',
|
|
361
|
+
);
|
|
362
|
+
}
|
|
363
|
+
if (headers.some((header) => header.column.getCanSort())) {
|
|
364
|
+
// eslint-disable-next-line no-console
|
|
365
|
+
console.warn(
|
|
366
|
+
'When reordering rows is enabled via the `onRowOrderChanged` prop, none of the columns should be sortable as data order will be overriden by internal sorting.',
|
|
367
|
+
);
|
|
368
|
+
}
|
|
367
369
|
}
|
|
368
370
|
}, [onRowOrderChanged, getRowId, headers]);
|
|
369
371
|
}
|