@linzjs/windows 1.4.5 → 1.4.6
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/package.json +5 -2
- package/.eslintrc.cjs +0 -103
- package/.github/dependabot.yml +0 -12
- package/.github/pull_request_template.md +0 -29
- package/.github/workflows/chromatic.yml +0 -23
- package/.github/workflows/deploy-storybook.yml +0 -86
- package/.prettierrc.cjs +0 -12
- package/.storybook/main.ts +0 -37
- package/.storybook/preview.ts +0 -15
- package/.stylelintrc.json +0 -68
- package/config/jest/babelTransform.cjs +0 -29
- package/config/jest/cssTransform.cjs +0 -14
- package/config/jest/fileTransform.cjs +0 -38
- package/config/jest/setup.js +0 -2
- package/empty.js +0 -1
- package/jest.config.cjs +0 -19
- package/rollup.config.cjs +0 -37
- package/src/panel/generateId.test.ts +0 -9
- package/src/setupTests.ts +0 -5
- package/src/stories/Introduction.mdx +0 -18
- package/src/stories/Introduction.stories.tsx +0 -8
- package/src/stories/modal/Modal.mdx +0 -26
- package/src/stories/modal/Modal.stories.tsx +0 -27
- package/src/stories/modal/PrefabModal.mdx +0 -26
- package/src/stories/modal/PrefabModal.stories.tsx +0 -27
- package/src/stories/modal/PrefabModal.tsx +0 -63
- package/src/stories/modal/TestModal.scss +0 -16
- package/src/stories/modal/TestModal.tsx +0 -55
- package/src/stories/panel/PanelButtons/ShowPanel.mdx +0 -21
- package/src/stories/panel/PanelButtons/ShowPanel.stories.tsx +0 -27
- package/src/stories/panel/PanelButtons/ShowPanel.tsx +0 -88
- package/src/stories/panel/ShowPanel/ShowPanel.mdx +0 -20
- package/src/stories/panel/ShowPanel/ShowPanel.stories.tsx +0 -27
- package/src/stories/panel/ShowPanel/ShowPanel.tsx +0 -68
- package/src/stories/panel/ShowPanelDocking/ShowPanel.mdx +0 -20
- package/src/stories/panel/ShowPanelDocking/ShowPanel.stories.tsx +0 -27
- package/src/stories/panel/ShowPanelDocking/ShowPanel.tsx +0 -61
- package/src/stories/panel/ShowPanelResizingAgGrid/ShowPanelResizingAgGrid.mdx +0 -21
- package/src/stories/panel/ShowPanelResizingAgGrid/ShowPanelResizingAgGrid.stories.tsx +0 -27
- package/src/stories/panel/ShowPanelResizingAgGrid/ShowPanelResizingStepAgGrid.tsx +0 -162
- package/src/stories/panel/ShowTabbedPanel/ShowPanel.mdx +0 -20
- package/src/stories/panel/ShowTabbedPanel/ShowPanel.stories.tsx +0 -27
- package/src/stories/panel/ShowTabbedPanel/ShowPanel.tsx +0 -73
- package/src/stories/panel/story.scss +0 -14
- package/src/stories/support.js +0 -16
- package/src/util/useInterval.test.tsx +0 -26
- package/tsconfig.json +0 -37
- /package/{src → dist}/index.ts +0 -0
- /package/{src → dist}/modal/Modal.tsx +0 -0
- /package/{src → dist}/modal/ModalContext.scss +0 -0
- /package/{src → dist}/modal/ModalContext.tsx +0 -0
- /package/{src → dist}/modal/ModalContextProvider.tsx +0 -0
- /package/{src → dist}/modal/ModalInstanceContext.ts +0 -0
- /package/{src → dist}/modal/PrefabModal.scss +0 -0
- /package/{src → dist}/modal/PrefabModal.tsx +0 -0
- /package/{src → dist}/modal/index.ts +0 -0
- /package/{src → dist}/modal/useShowModal.ts +0 -0
- /package/{src → dist}/panel/OpenPanelButton.tsx +0 -0
- /package/{src → dist}/panel/OpenPanelIcon.scss +0 -0
- /package/{src → dist}/panel/OpenPanelIcon.tsx +0 -0
- /package/{src → dist}/panel/Panel.scss +0 -0
- /package/{src → dist}/panel/Panel.tsx +0 -0
- /package/{src → dist}/panel/PanelBlue.scss +0 -0
- /package/{src → dist}/panel/PanelContext.ts +0 -0
- /package/{src → dist}/panel/PanelDock.tsx +0 -0
- /package/{src → dist}/panel/PanelHeader.tsx +0 -0
- /package/{src → dist}/panel/PanelHeaderButton.tsx +0 -0
- /package/{src → dist}/panel/PanelInstanceContext.ts +0 -0
- /package/{src → dist}/panel/PanelInstanceContextProvider.tsx +0 -0
- /package/{src → dist}/panel/PanelsContext.tsx +0 -0
- /package/{src → dist}/panel/PanelsContextProvider.tsx +0 -0
- /package/{src → dist}/panel/PopoutWindow.tsx +0 -0
- /package/{src → dist}/panel/generateId.ts +0 -0
- /package/{src → dist}/panel/handleStyleSheetsChanges.ts +0 -0
- /package/{src → dist}/panel/index.ts +0 -0
- /package/{src → dist}/util/useInterval.ts +0 -0
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
import "../story.scss";
|
|
2
|
-
import "@linzjs/lui/dist/scss/base.scss";
|
|
3
|
-
import "@linzjs/step-ag-grid/dist/GridTheme.scss";
|
|
4
|
-
import "@linzjs/step-ag-grid/dist/index.css";
|
|
5
|
-
|
|
6
|
-
import { OpenPanelButton, Panel, PanelContent, PanelContext, PanelHeader, PanelsContextProvider } from "../../../panel";
|
|
7
|
-
import { useContext, useMemo, useState } from "react";
|
|
8
|
-
|
|
9
|
-
import {
|
|
10
|
-
ColDefT,
|
|
11
|
-
Grid,
|
|
12
|
-
GridCell,
|
|
13
|
-
GridContextProvider,
|
|
14
|
-
GridIcon,
|
|
15
|
-
GridPopoverMenu,
|
|
16
|
-
GridPopoverMessage,
|
|
17
|
-
GridUpdatingContextProvider,
|
|
18
|
-
GridWrapper,
|
|
19
|
-
} from "@linzjs/step-ag-grid";
|
|
20
|
-
|
|
21
|
-
// #Example: Panel Context Provider
|
|
22
|
-
// Don't forget to add a PanelContextProvider at the root of your project
|
|
23
|
-
export const App = () => (
|
|
24
|
-
<PanelsContextProvider baseZIndex={500}>
|
|
25
|
-
<div>...the rest of your app...</div>
|
|
26
|
-
</PanelsContextProvider>
|
|
27
|
-
);
|
|
28
|
-
|
|
29
|
-
// #Example: Panel Component
|
|
30
|
-
export interface TestPanelProps {
|
|
31
|
-
data: number;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export const TestPanelResizing = ({ data }: TestPanelProps) => {
|
|
35
|
-
return (
|
|
36
|
-
<Panel title={`Panel resizing demo ${data}`} size={{ width: 320, height: 400 }} className={"WindowPanel-blue"}>
|
|
37
|
-
<PanelHeader />
|
|
38
|
-
<PanelContent>
|
|
39
|
-
<PanelContentsWithResize />
|
|
40
|
-
</PanelContent>
|
|
41
|
-
</Panel>
|
|
42
|
-
);
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
// #Example: Panel Invocation
|
|
46
|
-
export const TestShowPanelResizingAgGrid = () => (
|
|
47
|
-
<>
|
|
48
|
-
<OpenPanelButton buttonText={"TestPanel resizing 1"} component={() => <TestPanelResizing data={1} />} />{" "}
|
|
49
|
-
<OpenPanelButton buttonText={"TestPanel resizing 2"} component={() => <TestPanelResizing data={2} />} />
|
|
50
|
-
</>
|
|
51
|
-
);
|
|
52
|
-
|
|
53
|
-
/* exclude */
|
|
54
|
-
interface ITestRow {
|
|
55
|
-
id: number;
|
|
56
|
-
position: string;
|
|
57
|
-
age: number;
|
|
58
|
-
desc: string;
|
|
59
|
-
dd: string;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/* exclude */
|
|
63
|
-
|
|
64
|
-
// #Example: Resizing panel to content after load
|
|
65
|
-
// Note: Resize can only be used from within the panel content.
|
|
66
|
-
export const PanelContentsWithResize = () => {
|
|
67
|
-
// This is the first important bit
|
|
68
|
-
const { resizePanel } = useContext(PanelContext);
|
|
69
|
-
|
|
70
|
-
const columnDefs: ColDefT<ITestRow>[] = useMemo(
|
|
71
|
-
() => [
|
|
72
|
-
/* Your grid ColDefs */
|
|
73
|
-
/* exclude */
|
|
74
|
-
GridCell({
|
|
75
|
-
field: "id",
|
|
76
|
-
headerName: "Id",
|
|
77
|
-
lockVisible: true,
|
|
78
|
-
}),
|
|
79
|
-
GridCell({
|
|
80
|
-
field: "position",
|
|
81
|
-
headerName: "Position",
|
|
82
|
-
cellRendererParams: {
|
|
83
|
-
warning: (props) => props.value === "Tester" && "Testers are testing",
|
|
84
|
-
info: (props) => props.value === "Developer" && "Developers are awesome",
|
|
85
|
-
},
|
|
86
|
-
}),
|
|
87
|
-
GridCell({
|
|
88
|
-
field: "age",
|
|
89
|
-
headerName: "Age",
|
|
90
|
-
}),
|
|
91
|
-
GridCell({
|
|
92
|
-
field: "desc",
|
|
93
|
-
headerName: "Description",
|
|
94
|
-
flex: 1,
|
|
95
|
-
}),
|
|
96
|
-
GridPopoverMessage(
|
|
97
|
-
{
|
|
98
|
-
headerName: "Popout message",
|
|
99
|
-
cellRenderer: () => <>Single Click me!</>,
|
|
100
|
-
exportable: false,
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
multiEdit: true,
|
|
104
|
-
editorParams: {
|
|
105
|
-
message: async (selectedRows): Promise<string> => {
|
|
106
|
-
return `There are ${selectedRows.length} row(s) selected`;
|
|
107
|
-
},
|
|
108
|
-
},
|
|
109
|
-
},
|
|
110
|
-
),
|
|
111
|
-
GridCell({
|
|
112
|
-
headerName: "Custom edit",
|
|
113
|
-
editable: true,
|
|
114
|
-
valueFormatter: () => "Press E",
|
|
115
|
-
cellRendererParams: {
|
|
116
|
-
rightHoverElement: (
|
|
117
|
-
<GridIcon icon={"ic_launch_modal"} title={"Title text"} className={"GridCell-editableIcon"} />
|
|
118
|
-
),
|
|
119
|
-
editAction: (selectedRows) => {
|
|
120
|
-
alert(`Custom edit ${selectedRows.map((r) => r.id)} rowId(s) selected`);
|
|
121
|
-
},
|
|
122
|
-
shortcutKeys: {
|
|
123
|
-
e: () => {
|
|
124
|
-
alert("Hi");
|
|
125
|
-
},
|
|
126
|
-
},
|
|
127
|
-
},
|
|
128
|
-
}),
|
|
129
|
-
GridPopoverMenu(
|
|
130
|
-
{},
|
|
131
|
-
{
|
|
132
|
-
multiEdit: true,
|
|
133
|
-
editorParams: {
|
|
134
|
-
options: async () => [],
|
|
135
|
-
},
|
|
136
|
-
},
|
|
137
|
-
),
|
|
138
|
-
/* exclude */
|
|
139
|
-
],
|
|
140
|
-
[],
|
|
141
|
-
);
|
|
142
|
-
|
|
143
|
-
const [rowData] = useState([
|
|
144
|
-
/* Your grid row data */
|
|
145
|
-
/* exclude */
|
|
146
|
-
{ id: 1000, position: "Tester", age: 30, desc: "Tests application", dd: "1" },
|
|
147
|
-
{ id: 1001, position: "Developer", age: 12, desc: "Develops application", dd: "2" },
|
|
148
|
-
{ id: 1002, position: "Manager", age: 65, desc: "Manages", dd: "3" },
|
|
149
|
-
/* exclude */
|
|
150
|
-
]);
|
|
151
|
-
|
|
152
|
-
return (
|
|
153
|
-
<GridUpdatingContextProvider>
|
|
154
|
-
<GridContextProvider>
|
|
155
|
-
<GridWrapper>
|
|
156
|
-
{/* onContentSize={resizePanel} does the resize on a callback */}
|
|
157
|
-
<Grid columnDefs={columnDefs} rowData={rowData} onContentSize={resizePanel} />
|
|
158
|
-
</GridWrapper>
|
|
159
|
-
</GridContextProvider>
|
|
160
|
-
</GridUpdatingContextProvider>
|
|
161
|
-
);
|
|
162
|
-
};
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import {getBlocks, blockToString} from "../../support.js";
|
|
2
|
-
import {Meta, Source, Story} from "@storybook/blocks";
|
|
3
|
-
import * as ShowPanelStories from "./ShowPanel.stories.tsx"
|
|
4
|
-
|
|
5
|
-
import myModule from './ShowPanel.tsx?raw';
|
|
6
|
-
|
|
7
|
-
<Meta name="Tabbed Panel" of={ShowPanelStories}/>
|
|
8
|
-
# Show Tabbed Panel
|
|
9
|
-
## Example
|
|
10
|
-
Click to show the tabbed panel:
|
|
11
|
-
<Story of={ShowPanelStories.ShowTabbedPanel}/>
|
|
12
|
-
|
|
13
|
-
## Code
|
|
14
|
-
<br/>
|
|
15
|
-
{getBlocks(myModule).map(block => (
|
|
16
|
-
<>
|
|
17
|
-
<h3>{block.split("\n")[0]}</h3>
|
|
18
|
-
<Source code={blockToString(block)} language='typescript'/>
|
|
19
|
-
</>
|
|
20
|
-
))}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { PanelsContextProvider } from "../../../panel/PanelsContextProvider";
|
|
2
|
-
import { TestShowTabbedPanel } from "./ShowPanel";
|
|
3
|
-
import type { Meta, StoryObj } from "@storybook/react";
|
|
4
|
-
|
|
5
|
-
const meta: Meta<typeof TestShowTabbedPanel> = {
|
|
6
|
-
title: "Components/Panel",
|
|
7
|
-
component: TestShowTabbedPanel,
|
|
8
|
-
argTypes: {
|
|
9
|
-
backgroundColor: { control: "color" },
|
|
10
|
-
},
|
|
11
|
-
decorators: [
|
|
12
|
-
(Story: any) => (
|
|
13
|
-
<div>
|
|
14
|
-
<PanelsContextProvider baseZIndex={500}>
|
|
15
|
-
<Story />
|
|
16
|
-
</PanelsContextProvider>
|
|
17
|
-
</div>
|
|
18
|
-
),
|
|
19
|
-
],
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
export default meta;
|
|
23
|
-
type Story = StoryObj<typeof meta>;
|
|
24
|
-
|
|
25
|
-
export const ShowTabbedPanel: Story = {
|
|
26
|
-
args: {},
|
|
27
|
-
};
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import "../story.scss";
|
|
2
|
-
import "@linzjs/lui/dist/scss/base.scss";
|
|
3
|
-
|
|
4
|
-
import { OpenPanelButton, Panel, PanelContent, PanelHeader, PanelsContextProvider } from "../../../panel/";
|
|
5
|
-
|
|
6
|
-
import { LuiTabs, LuiTabsGroup, LuiTabsPanel, LuiTabsPanelSwitch } from "@linzjs/lui";
|
|
7
|
-
|
|
8
|
-
// #Example: Panel Context Provider
|
|
9
|
-
// Don't forget to add a PanelContextProvider at the root of your project
|
|
10
|
-
export const App = () => (
|
|
11
|
-
<PanelsContextProvider baseZIndex={500}>
|
|
12
|
-
<div>...the rest of your app...</div>
|
|
13
|
-
</PanelsContextProvider>
|
|
14
|
-
);
|
|
15
|
-
|
|
16
|
-
// #Example: Panel Component
|
|
17
|
-
export interface ShowPanelComponentProps {
|
|
18
|
-
data: number;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export const ShowPanelComponent = ({ data }: ShowPanelComponentProps) => (
|
|
22
|
-
<LuiTabs defaultPanel="africa">
|
|
23
|
-
<Panel title={`Panel demo ${data}`} size={{ width: 640, height: 400 }} className={"WindowPanel-blue"}>
|
|
24
|
-
<PanelHeader
|
|
25
|
-
icon={"ic_send"}
|
|
26
|
-
onHelpClick={() => alert("Help!!!")}
|
|
27
|
-
extraLeft={
|
|
28
|
-
<LuiTabsGroup ariaLabel="Animals">
|
|
29
|
-
<LuiTabsPanelSwitch targetPanel="africa">Africa</LuiTabsPanelSwitch>
|
|
30
|
-
<LuiTabsPanelSwitch targetPanel="asia">Asia</LuiTabsPanelSwitch>
|
|
31
|
-
</LuiTabsGroup>
|
|
32
|
-
}
|
|
33
|
-
/>
|
|
34
|
-
<PanelContent>
|
|
35
|
-
<PanelContents />
|
|
36
|
-
</PanelContent>
|
|
37
|
-
</Panel>
|
|
38
|
-
</LuiTabs>
|
|
39
|
-
);
|
|
40
|
-
|
|
41
|
-
/* exclude */
|
|
42
|
-
export const PanelContents = () => (
|
|
43
|
-
<div style={{ margin: "10px 16px" }}>
|
|
44
|
-
<LuiTabsPanel panel="africa">
|
|
45
|
-
<h2>African Countries</h2>
|
|
46
|
-
<ul className={"lui-list-bullet"}>
|
|
47
|
-
<li>Gabon</li>
|
|
48
|
-
<li>Malawi</li>
|
|
49
|
-
<li>Mozambique</li>
|
|
50
|
-
</ul>
|
|
51
|
-
</LuiTabsPanel>
|
|
52
|
-
<LuiTabsPanel panel="asia">
|
|
53
|
-
<h2>Asian Countries</h2>
|
|
54
|
-
<ul className={"lui-list-bullet"}>
|
|
55
|
-
<li>Laos</li>
|
|
56
|
-
<li>Nepal</li>
|
|
57
|
-
<li>Philippines</li>
|
|
58
|
-
</ul>
|
|
59
|
-
</LuiTabsPanel>
|
|
60
|
-
</div>
|
|
61
|
-
);
|
|
62
|
-
|
|
63
|
-
/* exclude */
|
|
64
|
-
|
|
65
|
-
// #Example: Panel Invocation
|
|
66
|
-
export const TestShowTabbedPanel = () => {
|
|
67
|
-
return (
|
|
68
|
-
<>
|
|
69
|
-
<OpenPanelButton buttonText={"TestPanel 1"} component={() => <ShowPanelComponent data={1} />} />{" "}
|
|
70
|
-
<OpenPanelButton buttonText={"TestPanel 2"} component={() => <ShowPanelComponent data={2} />} />
|
|
71
|
-
</>
|
|
72
|
-
);
|
|
73
|
-
};
|
package/src/stories/support.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export const getBlocks = (obj) => obj.toString().split("// #").splice(1);
|
|
2
|
-
|
|
3
|
-
export const blockToString = (block) => {
|
|
4
|
-
const result = block.split("\n").splice(1);
|
|
5
|
-
let inComment = false;
|
|
6
|
-
return result
|
|
7
|
-
.map((line) => {
|
|
8
|
-
if (line.includes("// exclude") || line.includes("/* exclude */") || line.includes("/*exclude*/")) {
|
|
9
|
-
inComment = !inComment;
|
|
10
|
-
return undefined;
|
|
11
|
-
}
|
|
12
|
-
return inComment ? undefined : line;
|
|
13
|
-
})
|
|
14
|
-
.filter((l) => l)
|
|
15
|
-
.join("\n");
|
|
16
|
-
};
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { useInterval } from "./useInterval";
|
|
2
|
-
import { render } from "@testing-library/react";
|
|
3
|
-
|
|
4
|
-
describe("useInterval", () => {
|
|
5
|
-
beforeEach(() => {
|
|
6
|
-
jest.useFakeTimers();
|
|
7
|
-
});
|
|
8
|
-
|
|
9
|
-
afterEach(async () => {
|
|
10
|
-
jest.useRealTimers();
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
const TestComponent = (props: { callback: () => void }) => {
|
|
14
|
-
useInterval(props.callback, 1000);
|
|
15
|
-
return <div />;
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
test("invokes on timeout", async () => {
|
|
19
|
-
const callback = jest.fn();
|
|
20
|
-
|
|
21
|
-
render(<TestComponent callback={callback} />);
|
|
22
|
-
expect(callback).toHaveBeenCalledTimes(0);
|
|
23
|
-
jest.runOnlyPendingTimers();
|
|
24
|
-
expect(callback).toHaveBeenCalledTimes(1);
|
|
25
|
-
});
|
|
26
|
-
});
|
package/tsconfig.json
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
// see https://www.typescriptlang.org/tsconfig to better understand tsconfigs
|
|
3
|
-
"include": ["src"],
|
|
4
|
-
"files": ["node_modules/jest-expect-message/types/index.d.ts"],
|
|
5
|
-
"compilerOptions": {
|
|
6
|
-
"baseUrl": "./src",
|
|
7
|
-
"module": "esnext",
|
|
8
|
-
"lib": ["dom", "esnext"],
|
|
9
|
-
"target": "ESNext",
|
|
10
|
-
"importHelpers": true,
|
|
11
|
-
// output .d.ts declaration files for consumers
|
|
12
|
-
"declaration": true,
|
|
13
|
-
// output .js.map sourcemap files for consumers
|
|
14
|
-
"sourceMap": true,
|
|
15
|
-
// match output dir to input dir. e.g. dist/index instead of dist/src/index
|
|
16
|
-
"rootDir": ".",
|
|
17
|
-
// stricter type-checking for stronger correctness. Recommended by TS
|
|
18
|
-
"strict": true,
|
|
19
|
-
// linter checks for common issues
|
|
20
|
-
"noImplicitReturns": true,
|
|
21
|
-
"noFallthroughCasesInSwitch": true,
|
|
22
|
-
// noUnused* overlap with @typescript-eslint/no-unused-vars, can disable if duplicative
|
|
23
|
-
"noUnusedLocals": false,
|
|
24
|
-
"noUnusedParameters": true,
|
|
25
|
-
// use Node's module resolution algorithm, instead of the legacy TS one
|
|
26
|
-
"moduleResolution": "node",
|
|
27
|
-
// transpile JSX to React.createElement
|
|
28
|
-
"jsx": "react-jsx",
|
|
29
|
-
// interop between ESM and CJS modules. Recommended by TS
|
|
30
|
-
"esModuleInterop": true,
|
|
31
|
-
// significant perf increase by skipping checking .d.ts files, particularly those in node_modules. Recommended by TS
|
|
32
|
-
"skipLibCheck": true,
|
|
33
|
-
// error out if import and file system have a casing mismatch. Recommended by TS
|
|
34
|
-
"forceConsistentCasingInFileNames": true,
|
|
35
|
-
"declarationDir":"./declaration"
|
|
36
|
-
}
|
|
37
|
-
}
|
/package/{src → dist}/index.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|