@linzjs/windows 4.1.2 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/LuiModalAsync/LuiModalAsync.scss +1 -1
- package/dist/LuiModalAsync/LuiModalAsync.tsx +17 -13
- package/dist/LuiModalAsync/LuiModalAsyncButtonGroup.tsx +12 -12
- package/dist/LuiModalAsync/LuiModalAsyncContent.tsx +2 -2
- package/dist/LuiModalAsync/LuiModalAsyncContext.tsx +10 -7
- package/dist/LuiModalAsync/LuiModalAsyncContextProvider.tsx +25 -16
- package/dist/LuiModalAsync/LuiModalAsyncHeader.tsx +18 -18
- package/dist/LuiModalAsync/LuiModalAsyncInstanceContext.ts +3 -2
- package/dist/LuiModalAsync/LuiModalAsyncMain.tsx +2 -2
- package/dist/LuiModalAsync/index.ts +10 -10
- package/dist/LuiModalAsync/useLuiModalPrefab.tsx +50 -49
- package/dist/LuiModalAsync/useShowAsyncModal.ts +6 -4
- package/dist/common/index.ts +1 -1
- package/dist/common/useConstFunction.ts +1 -1
- package/dist/index.ts +4 -4
- package/dist/panel/OpenPanelButton.tsx +4 -3
- package/dist/panel/OpenPanelIcon.scss +3 -4
- package/dist/panel/OpenPanelIcon.tsx +12 -12
- package/dist/panel/Panel.scss +6 -6
- package/dist/panel/Panel.tsx +30 -17
- package/dist/panel/PanelBlue.scss +3 -3
- package/dist/panel/PanelContext.ts +4 -3
- package/dist/panel/PanelDock.tsx +6 -5
- package/dist/panel/PanelHeader.tsx +25 -25
- package/dist/panel/PanelHeaderButton.tsx +8 -8
- package/dist/panel/PanelInstanceContext.ts +5 -5
- package/dist/panel/PanelInstanceContextProvider.tsx +6 -5
- package/dist/panel/PanelsContext.tsx +5 -4
- package/dist/panel/PanelsContextProvider.tsx +12 -11
- package/dist/panel/PopinWIndow.tsx +23 -22
- package/dist/panel/PopoutWindow.tsx +18 -26
- package/dist/panel/generateId.ts +12 -12
- package/dist/panel/handleStyleSheetsChanges.ts +7 -7
- package/dist/panel/index.ts +12 -13
- package/dist/panel/types/PanelProps.ts +5 -4
- package/dist/panel/types/PanelRestoredState.ts +2 -2
- package/dist/panel/types/PanelState.ts +3 -3
- package/dist/panel/types/PanelStateOptions.ts +3 -3
- package/dist/panel/types/index.ts +6 -6
- package/dist/panel/usePanelStateHandler.tsx +12 -11
- package/package.json +47 -66
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
8
|
-
import {
|
|
9
|
-
import { PanelPosition, PanelSize } from
|
|
1
|
+
import createCache from '@emotion/cache';
|
|
2
|
+
import { CacheProvider } from '@emotion/react';
|
|
3
|
+
import { Dispatch, ReactElement, ReactNode, SetStateAction, useContext, useEffect, useState } from 'react';
|
|
4
|
+
import ReactDOM from 'react-dom';
|
|
5
|
+
|
|
6
|
+
import { makePopoutId, popoutWindowDivId } from './generateId';
|
|
7
|
+
import { copyStyleSheets, observeStyleSheetChanges } from './handleStyleSheetsChanges';
|
|
8
|
+
import { PanelInstanceContext } from './PanelInstanceContext';
|
|
9
|
+
import { PanelPosition, PanelSize } from './types';
|
|
10
|
+
import { useRestoreStateFrom, useSaveStateIn } from './usePanelStateHandler';
|
|
10
11
|
|
|
11
12
|
interface PopoutWindowProps {
|
|
12
13
|
name: string;
|
|
@@ -62,14 +63,14 @@ const openExternalWindow = ({
|
|
|
62
63
|
const features =
|
|
63
64
|
`scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,` +
|
|
64
65
|
`width=${size.width},height=${size.height},left=${position.x},top=${position.y}`;
|
|
65
|
-
response.externalWindow = window.open(
|
|
66
|
+
response.externalWindow = window.open('', makePopoutId(title), features);
|
|
66
67
|
|
|
67
68
|
if (response.externalWindow) {
|
|
68
69
|
const { externalWindow } = response;
|
|
69
70
|
|
|
70
71
|
// Reset the default body style applied by the browser
|
|
71
|
-
externalWindow.document.body.style.margin =
|
|
72
|
-
externalWindow.document.body.style.padding =
|
|
72
|
+
externalWindow.document.body.style.margin = '0';
|
|
73
|
+
externalWindow.document.body.style.padding = '0';
|
|
73
74
|
|
|
74
75
|
// Remove any existing body HTML from this window
|
|
75
76
|
const existingBodyMountElement = externalWindow.document.body?.firstChild;
|
|
@@ -77,7 +78,7 @@ const openExternalWindow = ({
|
|
|
77
78
|
externalWindow.document.body.removeChild(existingBodyMountElement);
|
|
78
79
|
}
|
|
79
80
|
// Create a new HTML element to hang our rendering off
|
|
80
|
-
const newMountElement = externalWindow.document.createElement(
|
|
81
|
+
const newMountElement = externalWindow.document.createElement('div');
|
|
81
82
|
newMountElement.className = `PopoutWindowContainer ${className}`;
|
|
82
83
|
setContainerElement(newMountElement);
|
|
83
84
|
externalWindow.document.body.appendChild(newMountElement);
|
|
@@ -88,7 +89,7 @@ const openExternalWindow = ({
|
|
|
88
89
|
externalWindow.document.head.removeChild(existingHeadMountElement);
|
|
89
90
|
}
|
|
90
91
|
// and an HTML element to hang our copied styles off
|
|
91
|
-
const newHeadMountElement = externalWindow.document.createElement(
|
|
92
|
+
const newHeadMountElement = externalWindow.document.createElement('div');
|
|
92
93
|
externalWindow.document.head.appendChild(newHeadMountElement);
|
|
93
94
|
setHeadElement(newHeadMountElement);
|
|
94
95
|
|
|
@@ -128,18 +129,9 @@ export const PopoutWindow = ({
|
|
|
128
129
|
}: PopoutWindowProps): ReactElement | null => {
|
|
129
130
|
const { setPanelWindow } = useContext(PanelInstanceContext);
|
|
130
131
|
|
|
131
|
-
const extWindow = useRef<Window | null>(null);
|
|
132
|
-
|
|
133
132
|
const [containerElement, setContainerElement] = useState<HTMLElement>();
|
|
134
133
|
const [headElement, setHeadElement] = useState<HTMLElement>();
|
|
135
134
|
|
|
136
|
-
// We only want to update the title when it changes
|
|
137
|
-
useEffect(() => {
|
|
138
|
-
if (extWindow.current) {
|
|
139
|
-
extWindow.current.document.title = title;
|
|
140
|
-
}
|
|
141
|
-
}, [title]);
|
|
142
|
-
|
|
143
135
|
const savedState = useRestoreStateFrom({ panelPoppedOut: true, uniqueId: name });
|
|
144
136
|
|
|
145
137
|
const panelPosition = savedState?.panelPosition ?? { x: 300, y: 200 };
|
|
@@ -184,11 +176,11 @@ export const PopoutWindow = ({
|
|
|
184
176
|
});
|
|
185
177
|
};
|
|
186
178
|
|
|
187
|
-
externalWindow.addEventListener(
|
|
188
|
-
externalWindow.addEventListener(
|
|
179
|
+
externalWindow.addEventListener('beforeunload', savePanelState);
|
|
180
|
+
externalWindow.addEventListener('resize', savePanelState);
|
|
189
181
|
|
|
190
182
|
// When the main window closes or reloads, close the popout
|
|
191
|
-
window.addEventListener(
|
|
183
|
+
window.addEventListener('beforeunload', closeExternalWindow, { once: true });
|
|
192
184
|
|
|
193
185
|
return () => {
|
|
194
186
|
onCloseExternalWindow?.();
|
package/dist/panel/generateId.ts
CHANGED
|
@@ -5,18 +5,18 @@
|
|
|
5
5
|
export const makePopoutId = (str: string): string =>
|
|
6
6
|
str
|
|
7
7
|
.toLowerCase()
|
|
8
|
-
.replaceAll(/[^a-z0-9-]/g,
|
|
9
|
-
.replaceAll(
|
|
10
|
-
.replaceAll(
|
|
11
|
-
.replaceAll(
|
|
12
|
-
.replaceAll(
|
|
13
|
-
.replaceAll(
|
|
14
|
-
.replaceAll(
|
|
15
|
-
.replaceAll(
|
|
16
|
-
.replaceAll(
|
|
17
|
-
.replaceAll(
|
|
18
|
-
.replaceAll(
|
|
19
|
-
.replaceAll(/-+/g,
|
|
8
|
+
.replaceAll(/[^a-z0-9-]/g, '-')
|
|
9
|
+
.replaceAll('0', '-zero-')
|
|
10
|
+
.replaceAll('1', '-one-')
|
|
11
|
+
.replaceAll('2', '-two-')
|
|
12
|
+
.replaceAll('3', '-three-')
|
|
13
|
+
.replaceAll('4', '-four-')
|
|
14
|
+
.replaceAll('5', '-five-')
|
|
15
|
+
.replaceAll('6', '-six-')
|
|
16
|
+
.replaceAll('7', '-seven-')
|
|
17
|
+
.replaceAll('8', '-eight-')
|
|
18
|
+
.replaceAll('9', '-nine-')
|
|
19
|
+
.replaceAll(/-+/g, '-')
|
|
20
20
|
.toLowerCase();
|
|
21
21
|
|
|
22
22
|
export const popoutWindowDivId = (windowTitle: string): string => `popoutWindow-${makePopoutId(windowTitle)}`;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { throttle } from
|
|
1
|
+
import { throttle } from 'lodash-es';
|
|
2
2
|
|
|
3
3
|
// Copy the app's styles into the new window
|
|
4
4
|
export const copyStyleSheets = (newHeadMountElement: HTMLDivElement) => {
|
|
@@ -6,14 +6,14 @@ export const copyStyleSheets = (newHeadMountElement: HTMLDivElement) => {
|
|
|
6
6
|
|
|
7
7
|
stylesheets.forEach((stylesheet) => {
|
|
8
8
|
if (stylesheet.href) {
|
|
9
|
-
const newStyleElement = document.createElement(
|
|
10
|
-
newStyleElement.rel =
|
|
9
|
+
const newStyleElement = document.createElement('link');
|
|
10
|
+
newStyleElement.rel = 'stylesheet';
|
|
11
11
|
newStyleElement.href = stylesheet.href;
|
|
12
12
|
newHeadMountElement.appendChild(newStyleElement);
|
|
13
13
|
} else {
|
|
14
|
-
const css = stylesheet
|
|
14
|
+
const css = stylesheet;
|
|
15
15
|
if (css && css.cssRules && css.cssRules.length > 0) {
|
|
16
|
-
const newStyleElement = document.createElement(
|
|
16
|
+
const newStyleElement = document.createElement('style');
|
|
17
17
|
Array.from(css.cssRules).forEach((rule) => {
|
|
18
18
|
newStyleElement.appendChild(document.createTextNode(rule.cssText));
|
|
19
19
|
});
|
|
@@ -30,7 +30,7 @@ export const copyStyleSheets = (newHeadMountElement: HTMLDivElement) => {
|
|
|
30
30
|
* @param newHeadMountElement
|
|
31
31
|
*/
|
|
32
32
|
export const observeStyleSheetChanges = (newHeadMountElement: HTMLDivElement) => {
|
|
33
|
-
const targetNode = document.querySelector(
|
|
33
|
+
const targetNode = document.querySelector('head');
|
|
34
34
|
|
|
35
35
|
if (!targetNode) {
|
|
36
36
|
return null;
|
|
@@ -46,7 +46,7 @@ export const observeStyleSheetChanges = (newHeadMountElement: HTMLDivElement) =>
|
|
|
46
46
|
// Callback function to execute when mutations are observed
|
|
47
47
|
const callback: MutationCallback = function (mutationList) {
|
|
48
48
|
for (const mutation of mutationList) {
|
|
49
|
-
if (mutation.type ===
|
|
49
|
+
if (mutation.type === 'childList') {
|
|
50
50
|
// console.log("A child node has been added or removed.", mutation);
|
|
51
51
|
//naive way up updating style sheets
|
|
52
52
|
//the observer tells us what has been added and removed, but syncing the changes with the
|
package/dist/panel/index.ts
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
|
|
3
|
-
export * from
|
|
4
|
-
export * from
|
|
5
|
-
export * from
|
|
6
|
-
export * from
|
|
7
|
-
export * from
|
|
8
|
-
export * from
|
|
9
|
-
export * from
|
|
10
|
-
export * from
|
|
11
|
-
export * from
|
|
12
|
-
export * from
|
|
13
|
-
export * from "./PanelsContextProvider";
|
|
1
|
+
export * from './OpenPanelButton';
|
|
2
|
+
export * from './OpenPanelIcon';
|
|
3
|
+
export * from './Panel';
|
|
4
|
+
export * from './PanelContext';
|
|
5
|
+
export * from './PanelDock';
|
|
6
|
+
export * from './PanelHeader';
|
|
7
|
+
export * from './PanelHeaderButton';
|
|
8
|
+
export * from './PanelInstanceContext';
|
|
9
|
+
export * from './PanelInstanceContextProvider';
|
|
10
|
+
export * from './PanelsContext';
|
|
11
|
+
export * from './PanelsContextProvider';
|
|
12
|
+
export * from './types';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { ReactNode } from
|
|
2
|
-
|
|
3
|
-
import {
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
|
|
3
|
+
import { PanelPosition } from './PanelPosition';
|
|
4
|
+
import { PanelSize } from './PanelSize';
|
|
4
5
|
|
|
5
6
|
export interface PanelProps {
|
|
6
7
|
children: ReactNode;
|
|
@@ -11,7 +12,7 @@ export interface PanelProps {
|
|
|
11
12
|
minWidth?: number | string;
|
|
12
13
|
modal?: boolean;
|
|
13
14
|
onClose?: () => void;
|
|
14
|
-
position?: PanelPosition |
|
|
15
|
+
position?: PanelPosition | 'tile' | 'center';
|
|
15
16
|
resizeable?: boolean;
|
|
16
17
|
size?: PanelSize;
|
|
17
18
|
title: string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { PanelPosition } from
|
|
2
|
-
import { PanelSize } from
|
|
1
|
+
import { PanelPosition } from './PanelPosition';
|
|
2
|
+
import { PanelSize } from './PanelSize';
|
|
3
3
|
|
|
4
|
-
export type PanelMode =
|
|
4
|
+
export type PanelMode = 'poppedIn' | 'poppedOut';
|
|
5
5
|
|
|
6
6
|
export interface PanelLayout {
|
|
7
7
|
panelPosition?: PanelPosition;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { PanelRestoredState } from
|
|
2
|
-
import { PanelState } from
|
|
1
|
+
import { PanelRestoredState } from './PanelRestoredState';
|
|
2
|
+
import { PanelState } from './PanelState';
|
|
3
3
|
|
|
4
|
-
export type SaveStateInOption =
|
|
4
|
+
export type SaveStateInOption = 'external' | 'localStorage';
|
|
5
5
|
|
|
6
6
|
export type PanelStateOptions = {
|
|
7
7
|
onRestoreState?: () => PanelRestoredState;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
4
|
-
export * from
|
|
5
|
-
export * from
|
|
6
|
-
export * from
|
|
1
|
+
export * from './PanelPosition';
|
|
2
|
+
export * from './PanelProps';
|
|
3
|
+
export * from './PanelRestoredState';
|
|
4
|
+
export * from './PanelSize';
|
|
5
|
+
export * from './PanelState';
|
|
6
|
+
export * from './PanelStateOptions';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { useContext, useMemo } from
|
|
2
|
-
|
|
3
|
-
import {
|
|
1
|
+
import { useContext, useMemo } from 'react';
|
|
2
|
+
|
|
3
|
+
import { PanelsContext } from './PanelsContext';
|
|
4
|
+
import { PanelLayout, PanelMode, PanelRestoredState, PanelState } from './types';
|
|
4
5
|
|
|
5
6
|
type HookArgs = {
|
|
6
7
|
panelPoppedOut?: boolean;
|
|
@@ -15,7 +16,7 @@ export const useRestoreStateFrom = ({ panelPoppedOut, uniqueId }: HookArgs) => {
|
|
|
15
16
|
return;
|
|
16
17
|
}
|
|
17
18
|
|
|
18
|
-
if (panelStateOptions.saveStateIn ===
|
|
19
|
+
if (panelStateOptions.saveStateIn === 'external') {
|
|
19
20
|
return panelStateOptions.onRestoreState?.();
|
|
20
21
|
}
|
|
21
22
|
|
|
@@ -29,16 +30,16 @@ export const useRestoreStateFrom = ({ panelPoppedOut, uniqueId }: HookArgs) => {
|
|
|
29
30
|
if (storedState) {
|
|
30
31
|
const { mode, ...state } = JSON.parse(storedState) as PanelState;
|
|
31
32
|
|
|
32
|
-
const currentMode: PanelMode = panelPoppedOut === undefined ? mode : panelPoppedOut ?
|
|
33
|
+
const currentMode: PanelMode = panelPoppedOut === undefined ? mode : panelPoppedOut ? 'poppedOut' : 'poppedIn';
|
|
33
34
|
const panelLayout = state[currentMode];
|
|
34
35
|
|
|
35
36
|
return {
|
|
36
|
-
panelPoppedOut: currentMode ===
|
|
37
|
+
panelPoppedOut: currentMode === 'poppedOut',
|
|
37
38
|
...panelLayout,
|
|
38
39
|
};
|
|
39
40
|
}
|
|
40
41
|
} catch (e) {
|
|
41
|
-
console.error(
|
|
42
|
+
console.error('Failed to read stored panel state!', e);
|
|
42
43
|
}
|
|
43
44
|
|
|
44
45
|
return null;
|
|
@@ -57,9 +58,9 @@ export const useSaveStateIn = ({ panelPoppedOut = false, uniqueId }: HookArgs) =
|
|
|
57
58
|
uniqueId,
|
|
58
59
|
});
|
|
59
60
|
|
|
60
|
-
const mode: PanelMode = panelPoppedOut ?
|
|
61
|
+
const mode: PanelMode = panelPoppedOut ? 'poppedOut' : 'poppedIn';
|
|
61
62
|
|
|
62
|
-
if (panelStateOptions.saveStateIn ===
|
|
63
|
+
if (panelStateOptions.saveStateIn === 'external') {
|
|
63
64
|
panelStateOptions.onSaveState?.({
|
|
64
65
|
mode,
|
|
65
66
|
[mode]: panelLayout,
|
|
@@ -84,14 +85,14 @@ export const useSaveStateIn = ({ panelPoppedOut = false, uniqueId }: HookArgs) =
|
|
|
84
85
|
...panelLayout,
|
|
85
86
|
};
|
|
86
87
|
} catch (e) {
|
|
87
|
-
console.error(
|
|
88
|
+
console.error('Failed to read existing panel state!', e);
|
|
88
89
|
}
|
|
89
90
|
}
|
|
90
91
|
|
|
91
92
|
try {
|
|
92
93
|
localStorage.setItem(uniqueKey, JSON.stringify(panelState));
|
|
93
94
|
} catch (e) {
|
|
94
|
-
console.error(
|
|
95
|
+
console.error('Failed to save panel state!', e);
|
|
95
96
|
}
|
|
96
97
|
};
|
|
97
98
|
};
|
package/package.json
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"popout"
|
|
14
14
|
],
|
|
15
15
|
"main": "./dist/index.ts",
|
|
16
|
-
"version": "
|
|
16
|
+
"version": "5.0.0",
|
|
17
17
|
"peerDependencies": {
|
|
18
18
|
"@linzjs/lui": ">=21",
|
|
19
19
|
"lodash-es": ">=4",
|
|
@@ -32,107 +32,88 @@
|
|
|
32
32
|
},
|
|
33
33
|
"scripts": {
|
|
34
34
|
"build": "run-s clean stylelint lint lint-circular-deps bundle",
|
|
35
|
-
"yalc": "run-s clean bundle && yalc
|
|
35
|
+
"yalc": "run-s clean bundle && yalc push",
|
|
36
36
|
"clean": "rimraf dist && mkdirp ./dist",
|
|
37
37
|
"bundle": "tsc --noEmit && rollup -c",
|
|
38
|
-
"test": "
|
|
38
|
+
"test": "vitest run",
|
|
39
|
+
"test:watch": "vitest --watch",
|
|
39
40
|
"stylelint": "stylelint src/**/*.scss src/**/*.css --fix",
|
|
40
|
-
"lint": "eslint ./src --ext .js,.ts,.tsx --
|
|
41
|
+
"lint": "eslint ./src --ext .js,.ts,.tsx --cache --ignore-path .gitignore",
|
|
42
|
+
"lint:fix": "eslint ./src --ext .js,.ts,.tsx --fix --cache --ignore-path .gitignore",
|
|
41
43
|
"lint-circular-deps": "npx madge --circular --extensions ts,tsx ./",
|
|
42
44
|
"storybook": "storybook dev -p 6006",
|
|
43
45
|
"build-storybook": "storybook build",
|
|
44
46
|
"deploy-storybook": "npx --yes -p @storybook/storybook-deployer storybook-to-ghpages",
|
|
45
47
|
"chromatic": "chromatic --exit-zero-on-changes",
|
|
46
|
-
"semantic-release": "semantic-release"
|
|
48
|
+
"semantic-release": "semantic-release",
|
|
49
|
+
"upgrade": "npx ncu -i --format group"
|
|
47
50
|
},
|
|
48
51
|
"dependencies": {
|
|
49
|
-
"@emotion/cache": "^11.
|
|
50
|
-
"@emotion/react": "^11.
|
|
51
|
-
"@emotion/styled": "^11.
|
|
52
|
+
"@emotion/cache": "^11.14.0",
|
|
53
|
+
"@emotion/react": "^11.14.0",
|
|
54
|
+
"@emotion/styled": "^11.14.0",
|
|
52
55
|
"@types/uuid": "^10.0.0",
|
|
53
56
|
"lodash-es": ">=4",
|
|
54
|
-
"react-rnd": "^10.4.
|
|
57
|
+
"react-rnd": "^10.4.14",
|
|
55
58
|
"usehooks-ts": "^3.1.0",
|
|
56
|
-
"uuid": "^11.0.
|
|
59
|
+
"uuid": "^11.0.5"
|
|
57
60
|
},
|
|
58
61
|
"devDependencies": {
|
|
59
|
-
"@chromatic-com/storybook": "^3.2.
|
|
60
|
-
"@
|
|
61
|
-
"@
|
|
62
|
-
"@linzjs/
|
|
63
|
-
"@
|
|
64
|
-
"@rollup/plugin-commonjs": "^28.0.1",
|
|
62
|
+
"@chromatic-com/storybook": "^3.2.4",
|
|
63
|
+
"@linzjs/lui": "^22.4.2",
|
|
64
|
+
"@linzjs/step-ag-grid": "^24.0.0",
|
|
65
|
+
"@linzjs/style": "^5.4.0",
|
|
66
|
+
"@rollup/plugin-commonjs": "^28.0.2",
|
|
65
67
|
"@rollup/plugin-json": "^6.1.0",
|
|
66
68
|
"@rollup/plugin-node-resolve": "^15.3.0",
|
|
67
|
-
"@storybook/addon-docs": "^8.
|
|
68
|
-
"@storybook/addon-essentials": "^8.
|
|
69
|
-
"@storybook/addon-interactions": "^8.
|
|
70
|
-
"@storybook/addon-links": "^8.
|
|
71
|
-
"@storybook/addon-mdx-gfm": "^8.
|
|
72
|
-
"@storybook/blocks": "^8.
|
|
73
|
-
"@storybook/react": "^8.
|
|
74
|
-
"@storybook/react-vite": "^8.
|
|
75
|
-
"@storybook/test": "^8.
|
|
76
|
-
"@testing-library/
|
|
77
|
-
"@testing-library/
|
|
78
|
-
"@testing-library/user-event": "^14.5.2",
|
|
79
|
-
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
|
|
80
|
-
"@types/jest": "^29.5.14",
|
|
69
|
+
"@storybook/addon-docs": "^8.5.2",
|
|
70
|
+
"@storybook/addon-essentials": "^8.5.2",
|
|
71
|
+
"@storybook/addon-interactions": "^8.5.2",
|
|
72
|
+
"@storybook/addon-links": "^8.5.2",
|
|
73
|
+
"@storybook/addon-mdx-gfm": "^8.5.2",
|
|
74
|
+
"@storybook/blocks": "^8.5.2",
|
|
75
|
+
"@storybook/react": "^8.5.2",
|
|
76
|
+
"@storybook/react-vite": "^8.5.2",
|
|
77
|
+
"@storybook/test": "^8.5.2",
|
|
78
|
+
"@testing-library/react": "^16.2.0",
|
|
79
|
+
"@testing-library/user-event": "^14.6.1",
|
|
81
80
|
"@types/lodash-es": "^4.17.12",
|
|
82
|
-
"@types/node": "^22.
|
|
81
|
+
"@types/node": "^22.12.0",
|
|
83
82
|
"@types/react": "^18.3.12",
|
|
84
83
|
"@types/react-dom": "^18.3.1",
|
|
85
|
-
"@
|
|
86
|
-
"@
|
|
84
|
+
"@vitejs/plugin-react-swc": "^3.7.2",
|
|
85
|
+
"@vitest/ui": "^3.0.4",
|
|
87
86
|
"ag-grid-community": "^32.3.3",
|
|
88
87
|
"ag-grid-react": "^32.3.3",
|
|
89
|
-
"
|
|
90
|
-
"eslint": "^
|
|
91
|
-
"
|
|
92
|
-
"eslint-config-react-app": "^7.0.1",
|
|
93
|
-
"eslint-plugin-deprecation": "^3.0.0",
|
|
94
|
-
"eslint-plugin-import": "^2.31.0",
|
|
95
|
-
"eslint-plugin-jest": "^28.9.0",
|
|
96
|
-
"eslint-plugin-jsx-a11y": "^6.10.2",
|
|
97
|
-
"eslint-plugin-prettier": "^5.2.1",
|
|
98
|
-
"eslint-plugin-react": "^7.37.2",
|
|
99
|
-
"eslint-plugin-react-hooks": "^4.6.2",
|
|
100
|
-
"eslint-plugin-storybook": "^0.8.0",
|
|
101
|
-
"eslint-plugin-testing-library": "^6.3.0",
|
|
102
|
-
"jest": "^29.7.0",
|
|
103
|
-
"jest-canvas-mock": "^2.5.2",
|
|
104
|
-
"jest-environment-jsdom": "^29.7.0",
|
|
105
|
-
"jest-expect-message": "^1.1.3",
|
|
88
|
+
"babel-preset-react-app": "^10.0.1",
|
|
89
|
+
"eslint-plugin-react": "^7.37.4",
|
|
90
|
+
"jsdom": "^26.0.0",
|
|
106
91
|
"mkdirp": "^3.0.1",
|
|
107
92
|
"npm-run-all": "^4.1.5",
|
|
108
|
-
"prettier": "^3.4.1",
|
|
109
93
|
"react": "^18.3.1",
|
|
110
94
|
"react-app-polyfill": "^3.0.0",
|
|
111
95
|
"react-dom": "^18.3.1",
|
|
112
|
-
"rollup": "^4.
|
|
96
|
+
"rollup": "^4.32.1",
|
|
113
97
|
"rollup-plugin-copy": "^3.5.0",
|
|
114
|
-
"sass": "^1.83.
|
|
98
|
+
"sass": "^1.83.4",
|
|
115
99
|
"sass-loader": "^16.0.4",
|
|
116
100
|
"semantic-release": "^22.0.12",
|
|
117
|
-
"storybook": "^8.
|
|
101
|
+
"storybook": "^8.5.2",
|
|
118
102
|
"style-loader": "^4.0.0",
|
|
119
|
-
"stylelint": "^16.
|
|
103
|
+
"stylelint": "^16.14.1",
|
|
120
104
|
"stylelint-config-recommended": "^14.0.1",
|
|
121
105
|
"stylelint-config-recommended-scss": "^14.1.0",
|
|
122
106
|
"stylelint-config-standard": "^36.0.1",
|
|
123
|
-
"stylelint-prettier": "5.0.
|
|
124
|
-
"stylelint-scss": "6.10.
|
|
125
|
-
"typescript": "^5.7.
|
|
126
|
-
"vite": "^5.4.11"
|
|
107
|
+
"stylelint-prettier": "5.0.3",
|
|
108
|
+
"stylelint-scss": "6.10.1",
|
|
109
|
+
"typescript": "^5.7.3",
|
|
110
|
+
"vite": "^5.4.11",
|
|
111
|
+
"vite-plugin-html": "^3.2.2",
|
|
112
|
+
"vite-tsconfig-paths": "^5.1.4",
|
|
113
|
+
"vitest": "^3.0.4"
|
|
127
114
|
},
|
|
128
115
|
"optionalDependencies": {
|
|
129
|
-
"@rollup/rollup-linux-x64-gnu": "^4.
|
|
130
|
-
},
|
|
131
|
-
"eslintConfig": {
|
|
132
|
-
"extends": [
|
|
133
|
-
"react-app",
|
|
134
|
-
"react-app/jest"
|
|
135
|
-
]
|
|
116
|
+
"@rollup/rollup-linux-x64-gnu": "^4.32.1"
|
|
136
117
|
},
|
|
137
118
|
"browserslist": {
|
|
138
119
|
"production": [
|