chore: docs

This commit is contained in:
mathuo 2024-02-01 22:01:14 +00:00
parent 8b1499e89a
commit 861d13c4ad
No known key found for this signature in database
GPG Key ID: C6EEDEFD6CA07281
42 changed files with 17695 additions and 2911 deletions

View File

@ -170,10 +170,10 @@ type AddPanelPositionUnion = {
type AddPanelOptionsUnion = AddPanelFloatingGroupUnion | AddPanelPositionUnion; type AddPanelOptionsUnion = AddPanelFloatingGroupUnion | AddPanelPositionUnion;
export type AddPanelOptions<P extends object = Parameters> = Omit< export type AddPanelOptions<P extends object = Parameters> = {
PanelOptions<P>, params?: P;
'component' | 'tabComponent' id: string;
> & { title?: string;
component: string; component: string;
tabComponent?: string; tabComponent?: string;
renderer?: DockviewPanelRenderer; renderer?: DockviewPanelRenderer;

View File

@ -15,10 +15,11 @@ export * from './panel/types';
export * from './panel/componentFactory'; export * from './panel/componentFactory';
export * from './splitview/splitview'; export * from './splitview/splitview';
export * from './splitview/options'; export { SplitviewComponentOptions } from './splitview/options';
export * from './paneview/paneview'; export * from './paneview/paneview';
export * from './gridview/gridview'; export * from './gridview/gridview';
export { GridviewComponentOptions } from './gridview/options';
export * from './dockview/dockviewGroupPanelModel'; export * from './dockview/dockviewGroupPanelModel';
export * from './gridview/baseComponentGridview'; export * from './gridview/baseComponentGridview';

View File

@ -15,10 +15,6 @@ export interface PanelViewInitParameters extends PanelInitParameters {
accessor: SplitviewComponent; accessor: SplitviewComponent;
} }
export interface ISerializableView extends IView, IPanel {
init: (params: PanelViewInitParameters) => void;
}
export interface SplitviewComponentOptions extends SplitViewOptions { export interface SplitviewComponentOptions extends SplitViewOptions {
disableAutoResizing?: boolean; disableAutoResizing?: boolean;
components?: { components?: {

View File

@ -1,4 +1,4 @@
import { ISerializableView, PanelViewInitParameters } from './options'; import { PanelViewInitParameters } from './options';
import { import {
BasePanelView, BasePanelView,
BasePanelViewExported, BasePanelViewExported,
@ -19,7 +19,7 @@ export interface ISplitviewPanel
export abstract class SplitviewPanel export abstract class SplitviewPanel
extends BasePanelView<SplitviewPanelApiImpl> extends BasePanelView<SplitviewPanelApiImpl>
implements ISerializableView, ISplitviewPanel implements ISplitviewPanel
{ {
private _evaluatedMinimumSize = 0; private _evaluatedMinimumSize = 0;
private _evaluatedMaximumSize = Number.POSITIVE_INFINITY; private _evaluatedMaximumSize = Number.POSITIVE_INFINITY;

View File

@ -0,0 +1,14 @@
---
title: Group API
sidebar_position: 3
---
:::info
Use the group API sparingly. As you move panels, groups change and if you don't track this correctly you may encounter unexpected
behaviours. You should be able to achieve most things directly through the panel API.
:::
import { DocRef } from '@site/src/components/ui/reference/docRef';
<DocRef declaration="DockviewGroupPanelApi" />

View File

@ -0,0 +1,18 @@
---
title: Options
sidebar_position: 0
---
import { DocRef } from '@site/src/components/ui/reference/docRef';
<FrameworkSpecific framework="JavaScript">
<DocRef declaration="DockviewComponentOptions" />
</FrameworkSpecific>
<FrameworkSpecific framework="React">
<DocRef declaration="IDockviewReactProps" />
</FrameworkSpecific>

View File

@ -1,6 +1,6 @@
--- ---
title: Overview title: API
sidebar_position: 0 sidebar_position: 1
--- ---
import { DocRef } from '@site/src/components/ui/reference/docRef'; import { DocRef } from '@site/src/components/ui/reference/docRef';

View File

@ -1,6 +1,7 @@
--- ---
description: API description: API
title: Panel API title: Panel API
sidebar_position: 2
--- ---
import { DocRef } from '@site/src/components/ui/reference/docRef'; import { DocRef } from '@site/src/components/ui/reference/docRef';

View File

@ -1,9 +0,0 @@
---
description: API
title: React Props
---
import { DocRef } from '@site/src/components/ui/reference/docRef';
<DocRef declaration="IDockviewReactProps" />

View File

@ -1,6 +1,7 @@
--- ---
description: API description: API
title: "API" title: "API"
sidebar_position: 1
--- ---
import { DocRef } from '@site/src/components/ui/reference/docRef'; import { DocRef } from '@site/src/components/ui/reference/docRef';

View File

@ -0,0 +1,18 @@
---
title: Options
sidebar_position: 0
---
import { DocRef } from '@site/src/components/ui/reference/docRef';
<FrameworkSpecific framework="JavaScript">
<DocRef declaration="GridviewComponentOptions" />
</FrameworkSpecific>
<FrameworkSpecific framework="React">
<DocRef declaration="IGridviewReactProps" />
</FrameworkSpecific>

View File

@ -1,6 +1,7 @@
--- ---
description: API description: API
title: Panel API title: Panel API
sidebar_position: 2
--- ---
import { DocRef } from '@site/src/components/ui/reference/docRef'; import { DocRef } from '@site/src/components/ui/reference/docRef';

View File

@ -1,9 +0,0 @@
---
description: API
title: React Props
---
import { DocRef } from '@site/src/components/ui/reference/docRef';
<DocRef declaration="IGridviewReactProps" />

View File

@ -1,6 +1,7 @@
--- ---
description: API description: API
title: "API" title: "API"
sidebar_position: 1
--- ---
import { DocRef } from '@site/src/components/ui/reference/docRef'; import { DocRef } from '@site/src/components/ui/reference/docRef';

View File

@ -0,0 +1,18 @@
---
title: Options
sidebar_position: 0
---
import { DocRef } from '@site/src/components/ui/reference/docRef';
<FrameworkSpecific framework="JavaScript">
<DocRef declaration="PaneviewComponentOptions" />
</FrameworkSpecific>
<FrameworkSpecific framework="React">
<DocRef declaration="IPaneviewReactProps" />
</FrameworkSpecific>

View File

@ -1,6 +1,7 @@
--- ---
description: API description: API
title: Panel API title: Panel API
sidebar_position: 2
--- ---
import { DocRef } from '@site/src/components/ui/reference/docRef'; import { DocRef } from '@site/src/components/ui/reference/docRef';

View File

@ -1,9 +0,0 @@
---
description: API
title: React Props
---
import { DocRef } from '@site/src/components/ui/reference/docRef';
<DocRef declaration="IPaneviewReactProps" />

View File

@ -1,6 +1,7 @@
--- ---
description: API description: API
title: "API" title: "API"
sidebar_position: 1
--- ---
import { DocRef } from '@site/src/components/ui/reference/docRef'; import { DocRef } from '@site/src/components/ui/reference/docRef';

View File

@ -0,0 +1,18 @@
---
title: Options
sidebar_position: 0
---
import { DocRef } from '@site/src/components/ui/reference/docRef';
<FrameworkSpecific framework="JavaScript">
<DocRef declaration="SplitviewComponentOptions" />
</FrameworkSpecific>
<FrameworkSpecific framework="React">
<DocRef declaration="ISplitviewReactProps" />
</FrameworkSpecific>

View File

@ -1,6 +1,7 @@
--- ---
description: API description: API
title: Panel API title: Panel API
sidebar_position: 2
--- ---
import { DocRef } from '@site/src/components/ui/reference/docRef'; import { DocRef } from '@site/src/components/ui/reference/docRef';

View File

@ -1,9 +0,0 @@
---
description: API
title: React Props
---
import { DocRef } from '@site/src/components/ui/reference/docRef';
<DocRef declaration="ISplitviewReactProps" />

View File

@ -0,0 +1,24 @@
---
title: Move Group
sidebar_position: 5
---
import { DocRef } from '@site/src/components/ui/reference/docRef';
This section describes how you can move a group.
## Methods
<DocRef declaration="DockviewGroupPanelApi" methods={["moveTo"]}/>
## Move a Group
You can move a group through the [Group API](/docs/api/dockview/groupApi) and you can find out how to move a Panel [here](/docs/core/panels/move).
```ts
panel.group.api.moveTo({ group, position, index });
```
## Live Example
To Be Completed...

View File

@ -5,7 +5,10 @@ sidebar_position: 0
This section provided a core overview. This section provided a core overview.
Once you have created an dock you will want to store a reference to the [API](/docs/api/dockview/overview).
The component takes a collection of [Options](/docs/api/dockview/options) as inputs and
once you have created a dock you can store a reference to the [API](/docs/api/dockview/overview) that is created.
<FrameworkSpecific framework='React'> <FrameworkSpecific framework='React'>
```tsx ```tsx
@ -21,3 +24,12 @@ function onReady(event: DockviewReadyEvent) {
``` ```
</FrameworkSpecific> </FrameworkSpecific>
<FrameworkSpecific framework='JavaScript'>
```tsx
const component = new DockviewComponent({
/** options */
});
```
</FrameworkSpecific>

View File

@ -9,95 +9,128 @@ This section describes how to add a new panel.
## API ## API
The API associated with opening a panel
<DocRef declaration="DockviewApi" methods={['addPanel']} /> <DocRef declaration="DockviewApi" methods={['addPanel']} />
## Open a panel ## Opening a Simple Panel
Using the dockview API you can access the `addPanel` method which returns an instance of the created panel. The minimum options required to open a panel a unique `id` for the panel and the name of the `component` you want to render.
The minimum method signature is:
```ts ```ts
const panel = api.addPanel({ const panel: IDockviewPanel = api.addPanel({
id: 'my_unique_panel_id', id: 'my_unique_panel_id',
component: 'my_component', component: 'my_component',
}); });
``` ```
where `id` is the unique id of the panel and `component` is the implenentation which > See [Overview](/docs/core/overview) to learn how to register components.
will be used to render the panel. You will have registered this using the `components` prop of the `DockviewReactComponent` component.
You can optionally provide a `tabComponent` parameters to the `addPanel` method which will render the tab using a custom renderer. ## Provide a custom Tab renderer
You will have registered this using the `tabComponents` prop of the `DockviewReactComponent` component.
:::info
You can override the default tab renderer through the [Options](/docs/api/dockview/options).
:::
To render a custom tab component you should specify the `tabComponent`.
```ts ```ts
const panel = api.addPanel({ const panel: IDockviewPanel = api.addPanel({
id: 'my_unique_panel_id', id: 'my_unique_panel_id',
component: 'my_component', component: 'my_component',
tabComponent: 'my_tab_component', tabComponent: 'my_tab_component',
}); });
``` ```
You can pass properties to the panel using the `params` key. > See [Overview](/docs/core/overview) to learn how to register tab components.
You can update these properties through the panels `api` object and its `updateParameters` method.
## Provide custom Parameters
Using the `params` option you can specific a simple object that is accessible in both the panel and tab renderer.
To update these parameters after the panel has been created see [Update Panel](/docs/core/panels/update).
```ts ```ts
const panel = api.addPanel({ const panel: IDockviewPanel = api.addPanel({
id: 'my_unique_panel_id', id: 'my_unique_panel_id',
component: 'my_component', component: 'my_component',
params: { params: {
myCustomKey: 'my_custom_value', myCustomKey: 'my_custom_value',
}, },
}); });
panel.api.updateParameters({
myCustomKey: 'my_custom_value',
myOtherCustomKey: 'my_other_custom_key',
});
``` ```
> Note `updateParameters` does not accept partial parameter updates, you should call it with the entire set of parameters ## Rendering
> you want the panel to receive.
Finally `addPanel` accepts a `position` object which tells dockview where to place the panel. Rendering is worthy of it's own page which can be found [here](/docs/core/panels/rendering).
- This object optionally accepts either a `referencePanel` or `referenceGroup` which can be the associated id as a string ## Positioning the Panel
or the panel/group object reference.
- This object accepts a `direction` property which dictates where,
relative to the provided reference the new panel will be placed.
> If neither a `referencePanel` or `referenceGroup` is provided then the `direction` will be treated as absolute. ### Relative to another Panel
> If no `direction` is provided the library will place the new panel in a pre-determined position.
```ts ```ts
const panel = api.addPanel({ const panel2: IDockviewPanel = api.addPanel({
id: 'panel_1',
component: 'default',
});
const panel2 = api.addPanel({
id: 'panel_2', id: 'panel_2',
component: 'default', component: 'default',
position: { position: {
referencePanel: panel1, referencePanel: 'panel_1',
direction: 'right', direction: 'above'
}, }
});
api.addPanel({
id: 'panel_3',
component: 'default',
position: {
referencePanel: panel2,
direction: 'above'
}
}); });
``` ```
To add a floating panel you should include the `floating` variable which can be either a `boolean` or an object defining it's bounds. ### Relative to another Group
These bounds are relative to the dockview component.
```ts ```ts
const panel1 = api.addPanel({ const panel2: IDockviewPanel = api.addPanel({
id: 'panel_2', id: 'panel_2',
component: 'default', component: 'default',
position: {
referenceGroup: 'panel_1',
direction: 'left'
}
});
const panel = api.addPanel({
id: 'panel_2',
component: 'default',
position: {
referenceGroup: panel2.group,
direction: 'left'
}
});
```
### Relative to the container
```ts
const panel = api.addPanel({
id: 'panel_2',
component: 'default',
position: {
direction: 'right'
}
});
```
### Floating
You should specific the `floating` option which can be either `true` or an object describing the position of the floating group.
```ts
api.addPanel({
id: 'panel_1',
component: 'default',
floating: true, floating: true,
}); });
const panel2 = api.addPanel({ api.addPanel({
id: 'panel_2', id: 'panel_2',
component: 'default', component: 'default',
floating: { x: 10, y: 10, width: 300, height: 300 }, floating: { x: 10, y: 10, width: 300, height: 300 },

View File

@ -3,9 +3,17 @@ title: Move Panel
sidebar_position: 3 sidebar_position: 3
--- ---
## Move panel import { DocRef } from '@site/src/components/ui/reference/docRef';
You can programatically move a panel using the panel `api`. This section describes how you can move a panel to another panel or group.
## Methods
<DocRef declaration="DockviewPanelApi" methods={["moveTo"]}/>
## Move a Panel
You can move a panel through the [Panel API](/docs/api/dockview/panelApi) and you can find out how to move a Group [here](/docs/core/groups/move).
```ts ```ts
panel.api.moveTo({ group, position, index }); panel.api.moveTo({ group, position, index });
@ -17,3 +25,7 @@ An equivalent method for moving groups is avaliable on the group `api`.
const group = panel.api.group; const group = panel.api.group;
group.api.moveTo({ group, position }); group.api.moveTo({ group, position });
``` ```
## Live Example
To Be Completed...

View File

@ -3,17 +3,27 @@ title: Remove Panel
sidebar_position: 4 sidebar_position: 4
--- ---
## Remove panel import { DocRef } from '@site/src/components/ui/reference/docRef';
You can programatically remove a panel using the panel `api`. This section describes multiple ways to remove a panel.
## Remove a Panel using the Panel API
<DocRef declaration="DockviewPanelApi" methods={["close"]}/>
Calling `close` on the panel API is the easiest way to close a panel through code.
```ts ```ts
panel.api.close(); panel.api.close();
``` ```
Given a reference to the panel you can also use the component `api` to remove it. ## Remove a Panel using the API
<DocRef declaration="DockviewApi" methods={["removePanel"]}/>
Firstly, you can retrieve a reference to the panel given it's id and then you can
pass that reference into `removePanel` to remove the panel.
```ts ```ts
const panel = api.getPanel('myPanel'); const panel: IDockviewPanel = api.getPanel('myPanel');
api.removePanel(panel); api.removePanel(panel);
``` ```

View File

@ -7,18 +7,66 @@ import { MultiFrameworkContainer } from '@site/src/components/ui/container';
import DockviewRenderMode from '@site/sandboxes/rendermode-dockview/src/app'; import DockviewRenderMode from '@site/sandboxes/rendermode-dockview/src/app';
import RenderingDockview from '@site/sandboxes/rendering-dockview/src/app'; import RenderingDockview from '@site/sandboxes/rendering-dockview/src/app';
## Panel Rendering Rendering type is an important consideration when creating your application and whether your panels should be destroyed when hidden.
## Render Mode :::info
If you are looking for information on how to render **iframes** in Dockview please go the the [iframes](/docs/advanced/iframe) section.
:::
Dockview has two rendering modes `onlyWhenVisible` (default) and `always`. A rendering mode can be defined through the `renderer` prop to `DockviewReact` or at an individual panel level when added where When a panel is selected all other panels in that group are not visible. The API does expose methods to determine whether your panel is visible or not
the panel declaration takes precedence if both are defined. Rendering modes defined at the panel level are persisted, those defined at the `DockviewReact` level are not persisted. and the panel instance only ever destroyed when removed however the question still remains, what to do with the partial DOM tree that makes up your panel and there are two options the dock can take:
- `onlyWhenVisible` mode is the default mode. In this mode when a panel is no longer visible through either it's visiblity being hidden or it not being the active panel within a group the panels HTMLElement is removed 1. (*onlyWhenVisible*) Remove the element from the DOM tree to make space for the new panel.
from the DOM and any DOM state such as scrollbar positions will be lost. If you are using any ResizeObservers to measure size this will result both zero height and width as the HTMLElement no longer belongs to the DOM.
This design allows for maximum performance at some cost. This will cause the element to loss any DOM-specific state such as scrollbar position and if you measure the size of any elements during this time you will mostly like see both a width and height of 0px,
- `always` mode. In this mode when panels become hidden the HTMLElement is not destroyed so all DOM state such as scrollbar positions will be maintained. This is implemented by rendering each panel as an absolutely positioned this is also true for any active ResizeObservers.
HTMLElement and hidden the HTMLElement with `display: none` when it should be hidden.
```ts
api.addPanel({
id: 'my_unique_panel_id',
component: 'my_component',
renderer: 'always'
});
```
2. (*always*) Keep the DOM tree alive but hide it in order to allow the select panels content to show.
This approach will maintain any DOM-sepcific state you had and is essential if you require the native scrollbar position to be preserved.
```ts
api.addPanel({
id: 'my_unique_panel_id',
component: 'my_component',
renderer: 'onlyWhenVisible'
});
```
Both are valid use-cases therefore the dock allows you to choose your rendering mode, the default however is the first option since this is the most memory efficient solution.
> You can change the `defaultRenderer` in the Dock [Options](/docs/api/dockview/options).
:::info
The panel instance is only ever destroyed when it is removed from the dock allowing you to still run code associated with the panel when it is not visible.
The renderer only affects what happens to the DOM element.
:::
## Choose a Render Mode
```ts
api.addPanel({
id: 'my_unique_panel_id',
component: 'my_component',
renderer: 'always'
});
api.addPanel({
id: 'my_unique_panel_id',
component: 'my_component',
renderer: 'onlyWhenVisible'
});
```
## Live Example
<MultiFrameworkContainer <MultiFrameworkContainer
height={500} height={500}

View File

@ -4,49 +4,43 @@ sidebar_position: 2
--- ---
import { DocRef } from '@site/src/components/ui/reference/docRef'; import { DocRef } from '@site/src/components/ui/reference/docRef';
import LiveExample from '@site/src/components/ui/exampleFrame';
This section describes how to update the parameters of a panel. This section describes how to update the parameters of a panel.
:::warning :::warning
**Use this feature sparingly**: Anything you assign to the `params` options of a panel will be persisted. **Use this feature sparingly**: Anything you assign to the `params` options of a panel will be saved when calling `api.toJSON()`.
Only use this to store small amounts of static view data. Only use this to store small amounts of static view data.
**Do not** use this to pass application state. **Do not** use this to store application state or dynamic panel state.
::: :::
## Panel API ## Methods
<DocRef declaration="DockviewPanelApi" methods={['updateParameters']} /> <DocRef declaration="DockviewPanelApi" methods={['updateParameters']} />
## Update Panel ## Updating parameters
You can programatically update the `params` passed through to the panel through the panal api using `api.updateParameters`. :::info
If you want to set initial parameters when adding a panel see the [Add Panel](/docs/core/panels/add) section.
:::
You can update a panel through the [Panel API](/docs/api/dockview/panelApi).
```ts ```ts
const panel = api.addPanel({
id: 'panel_1',
component: 'default',
params: {
keyA: 'valueA',
},
});
// ...
panel.api.updateParameters({
keyB: 'valueB',
});
// ...
panel.api.updateParameters({ panel.api.updateParameters({
keyA: 'anotherValueA', keyA: 'anotherValueA',
keyB: 'valueB',
}); });
``` ```
To delete a parameter you should pass a value of `undefined` for the key. To delete a parameter you should pass a value of `undefined`.
```ts ```ts
panel.api.updateParameters({ panel.api.updateParameters({
keyA: undefined, // this will delete 'keyA'. keyA: undefined,
}); });
``` ```
## Live Example
<LiveExample framework="react" id="dockview/update-parameters"/>

View File

@ -260,6 +260,9 @@ const config = {
id: 'announcementBar', // Increment on change id: 'announcementBar', // Increment on change
content: `⭐️ If you like Dockview, give it a star on <a target="_blank" rel="noopener noreferrer" href="https://github.com/mathuo/dockview">GitHub</a>`, content: `⭐️ If you like Dockview, give it a star on <a target="_blank" rel="noopener noreferrer" href="https://github.com/mathuo/dockview">GitHub</a>`,
}, },
tableOfContents: {
maxHeadingLevel: 5,
},
}), }),
}; };

View File

@ -23,9 +23,9 @@
] ]
}, },
"dependencies": { "dependencies": {
"@docusaurus/core": "^3.1.0", "@docusaurus/core": "^3.1.1",
"@docusaurus/module-type-aliases": "^3.1.0", "@docusaurus/module-type-aliases": "^3.1.1",
"@docusaurus/preset-classic": "^3.1.0", "@docusaurus/preset-classic": "^3.1.1",
"@mdx-js/react": "^3.0.0", "@mdx-js/react": "^3.0.0",
"@minoru/react-dnd-treeview": "^3.4.4", "@minoru/react-dnd-treeview": "^3.4.4",
"@radix-ui/react-icons": "^1.3.0", "@radix-ui/react-icons": "^1.3.0",

View File

@ -5,6 +5,7 @@ import {
IDockviewPanelHeaderProps, IDockviewPanelHeaderProps,
IDockviewPanelProps, IDockviewPanelProps,
IDockviewHeaderActionsProps, IDockviewHeaderActionsProps,
DockviewApi,
} from 'dockview'; } from 'dockview';
import * as React from 'react'; import * as React from 'react';
import * as ReactDOM from 'react-dom'; import * as ReactDOM from 'react-dom';
@ -38,6 +39,17 @@ const components = {
</div> </div>
); );
}, },
iframe: () => {
return (
<iframe
style={{
width: '100%',
height: '100%',
}}
src="https://dockview.dev"
/>
);
},
}; };
const headerComponents = { const headerComponents = {
@ -114,7 +126,7 @@ const RightControls = (props: IDockviewHeaderActionsProps) => {
}; };
const onClick2 = () => { const onClick2 = () => {
if (props.api.location !== 'popout') { if (props.api.location.type !== 'popout') {
props.containerApi.addPopoutGroup(props.group); props.containerApi.addPopoutGroup(props.group);
} else { } else {
props.api.moveTo({ position: 'right' }); props.api.moveTo({ position: 'right' });
@ -198,10 +210,21 @@ const PrefixHeaderControls = (props: IDockviewHeaderActionsProps) => {
}; };
const DockviewDemo = (props: { theme?: string }) => { const DockviewDemo = (props: { theme?: string }) => {
const [api, setApi] = React.useState<DockviewApi>();
const onReady = (event: DockviewReadyEvent) => { const onReady = (event: DockviewReadyEvent) => {
setApi(event.api);
const value = localStorage.getItem('dv-demo-app');
if (typeof value === 'string') {
event.api.fromJSON(JSON.parse(value));
return;
}
const panel1 = event.api.addPanel({ const panel1 = event.api.addPanel({
id: 'panel_1', id: 'panel_1',
component: 'default', component: 'iframe',
renderer: 'always',
title: 'Panel 1', title: 'Panel 1',
}); });
@ -258,15 +281,64 @@ const DockviewDemo = (props: { theme?: string }) => {
}; };
return ( return (
<DockviewReact <div
components={components} style={{ height: '100%', display: 'flex', flexDirection: 'column' }}
defaultTabComponent={headerComponents.default} >
rightHeaderActionsComponent={RightControls} <div>
leftHeaderActionsComponent={LeftControls} <button
prefixHeaderActionsComponent={PrefixHeaderControls} onClick={() => {
onReady={onReady} if (!api) {
className={props.theme || 'dockview-theme-abyss'} return;
/> }
const value = localStorage.getItem('dv-demo-app');
if (typeof value === 'string') {
api.fromJSON(JSON.parse(value));
}
}}
>
{'Load'}
</button>
<button
onClick={() => {
if (!api) {
return;
}
localStorage.setItem(
'dv-demo-app',
JSON.stringify(api.toJSON())
);
}}
>
{'Save'}
</button>
<button
onClick={() => {
api?.clear();
}}
>
{'Clear'}
</button>
<button
onClick={() => {
localStorage.removeItem('dv-demo-app');
}}
>
{'Reset'}
</button>
</div>
<div style={{ flexGrow: 1 }}>
<DockviewReact
components={components}
defaultTabComponent={headerComponents.default}
rightHeaderActionsComponent={RightControls}
leftHeaderActionsComponent={LeftControls}
prefixHeaderActionsComponent={PrefixHeaderControls}
onReady={onReady}
className={props.theme || 'dockview-theme-abyss'}
/>
</div>
</div>
); );
}; };

View File

@ -0,0 +1,32 @@
{
"name": "dockview.update-parameters",
"description": "",
"keywords": [
"dockview"
],
"version": "1.0.0",
"main": "src/index.tsx",
"dependencies": {
"dockview": "*",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
"devDependencies": {
"@types/react": "^18.0.28",
"@types/react-dom": "^18.0.11",
"typescript": "^4.9.5",
"react-scripts": "*"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test --env=jsdom",
"eject": "react-scripts eject"
},
"browserslist": [
">0.2%",
"not dead",
"not ie <= 11",
"not op_mini all"
]
}

View File

@ -0,0 +1,44 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="theme-color" content="#000000">
<!--
manifest.json provides metadata used when your web app is added to the
homescreen on Android. See https://developers.google.com/web/fundamentals/engage-and-retain/web-app-manifest/
-->
<link rel="manifest" href="%PUBLIC_URL%/manifest.json">
<link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico">
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200" />
<!--
Notice the use of %PUBLIC_URL% in the tags above.
It will be replaced with the URL of the `public` folder during the build.
Only files inside the `public` folder can be referenced from the HTML.
Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
work correctly both with client-side routing and a non-root public URL.
Learn how to configure a non-root public URL by running `npm run build`.
-->
<title>React App</title>
</head>
<body>
<noscript>
You need to enable JavaScript to run this app.
</noscript>
<div id="root"></div>
<!--
This HTML file is a template.
If you open it directly in the browser, you will see an empty page.
You can add webfonts, meta tags, or analytics to this file.
The build step will place the bundled scripts into the <body> tag.
To begin the development, run `npm start` or `yarn start`.
To create a production bundle, use `npm run build` or `yarn build`.
-->
</body>
</html>

View File

@ -0,0 +1,85 @@
import {
DockviewReact,
DockviewReadyEvent,
IDockviewPanelHeaderProps,
IDockviewPanelProps,
} from 'dockview';
import * as React from 'react';
interface CustomParams {
myValue: number;
}
const components = {
default: (props: IDockviewPanelProps<CustomParams>) => {
const [running, setRunning] = React.useState<boolean>(false);
React.useEffect(() => {
if (!running) {
return;
}
const interval = setInterval(() => {
props.api.updateParameters({ myValue: Date.now() });
}, 1000);
props.api.updateParameters({ myValue: Date.now() });
return () => {
clearInterval(interval);
};
}, [running]);
return (
<div style={{ padding: '20px', color: 'white' }}>
<div>{props.api.title}</div>
<button onClick={() => setRunning(!running)}>
{running ? 'Stop' : 'Start'}
</button>
<span>{`value: ${props.params.myValue}`}</span>
</div>
);
},
};
const tabComponents = {
default: (props: IDockviewPanelHeaderProps<CustomParams>) => {
return (
<div>
<div>{`custom tab: ${props.api.title}`}</div>
<span>{`value: ${props.params.myValue}`}</span>
</div>
);
},
};
export const App: React.FC = (props: { theme?: string }) => {
const onReady = (event: DockviewReadyEvent) => {
event.api.addPanel({
id: 'panel_1',
component: 'default',
tabComponent: 'default',
params: {
myValue: Date.now(),
},
});
event.api.addPanel({
id: 'panel_2',
component: 'default',
tabComponent: 'default',
params: {
myValue: Date.now(),
},
});
};
return (
<DockviewReact
components={components}
tabComponents={tabComponents}
onReady={onReady}
className={props.theme || 'dockview-theme-abyss'}
/>
);
};
export default App;

View File

@ -0,0 +1,20 @@
import { StrictMode } from 'react';
import * as ReactDOMClient from 'react-dom/client';
import './styles.css';
import 'dockview/dist/styles/dockview.css';
import App from './app';
const rootElement = document.getElementById('root');
if (rootElement) {
const root = ReactDOMClient.createRoot(rootElement);
root.render(
<StrictMode>
<div className="app">
<App />
</div>
</StrictMode>
);
}

View File

@ -0,0 +1,16 @@
body {
margin: 0px;
color: white;
font-family: sans-serif;
text-align: center;
}
#root {
height: 100vh;
width: 100vw;
}
.app {
height: 100%;
}

View File

@ -0,0 +1,18 @@
{
"compilerOptions": {
"outDir": "build/dist",
"module": "esnext",
"target": "es5",
"lib": ["es6", "dom"],
"sourceMap": true,
"allowJs": true,
"jsx": "react-jsx",
"moduleResolution": "node",
"rootDir": "src",
"forceConsistentCasingInFileNames": true,
"noImplicitReturns": true,
"noImplicitThis": true,
"noImplicitAny": true,
"strictNullChecks": true
}
}

View File

@ -0,0 +1,28 @@
import * as React from 'react';
const ExampleFrame = (props: {
framework: string;
id: string;
height?: string;
}) => {
const Component = React.useMemo(
() =>
React.lazy(
() =>
import(
`../../../sandboxes/${props.framework}/${props.id}/src/app`
)
),
[props.framework, props.id]
);
return (
<React.Suspense>
<div style={{ height: props.height ?? '500px' }}>
<Component />
</div>
</React.Suspense>
);
};
export default ExampleFrame;

View File

@ -7,7 +7,8 @@ export interface DocRefProps {
methods?: string[]; methods?: string[];
} }
import docsJson from '../../../generated/api.output.json'; import docsJson_ from '../../../generated/api.output.json';
const docsJson = docsJson_ as any as DocsJson;
type DocsContent = { kind: string; text: string; tag?: string }; type DocsContent = { kind: string; text: string; tag?: string };
type DocsTag = { tag: string; content: DocsContent[] }; type DocsTag = { tag: string; content: DocsContent[] };
@ -15,13 +16,19 @@ type DocsComment = {
summary?: DocsContent[]; summary?: DocsContent[];
blockTags?: DocsTag[]; blockTags?: DocsTag[];
}; };
type Doc = {
name: string;
code: string;
comment?: DocsComment;
kind: 'accessor' | 'property' | 'method';
pieces: string[];
};
type DocsJson = { type DocsJson = {
[index: string]: Array<{ [index: string]: {
name: string; kind: string;
code: string; metadata?: Doc;
comment?: DocsComment; children: Doc[];
kind: 'accessor' | 'property' | 'method'; };
}>;
}; };
export const Text = (props: { content: DocsContent[] }) => { export const Text = (props: { content: DocsContent[] }) => {
@ -74,87 +81,125 @@ export const Markdown = (props: { children: string }) => {
return <span>{props.children}</span>; return <span>{props.children}</span>;
}; };
const Piece = (props: { piece: string }) => {
const item = docsJson[props.piece];
if (!item) {
return;
}
if (item.kind === 'interface') {
return;
}
if (!item.metadata?.code) {
return;
}
return <CodeBlock language="tsx">{item.metadata.code}</CodeBlock>;
};
const Row = (props: { doc: Doc }) => {
return (
<tr>
<th
style={{
width: '40%',
display: 'flex',
}}
>
<div
style={{
// maxWidth: '30%',
display: 'flex',
flexDirection: 'column',
alignItems: 'start',
}}
>
<h6
style={{
fontFamily: 'monospace',
fontSize: '1.2em',
}}
>
{props.doc.name}
</h6>
<div
style={{
display: 'flex',
flexDirection: 'column',
alignItems: 'start',
}}
>
{/* <span
style={{
fontSize: '0.75em',
color: 'var(--ifm-color-content-secondary)',
}}
>
{'Type'}
</span>
<span
style={{
color: 'var(--ifm-color-primary)',
}}
>
{doc.type}
</span> */}
</div>
</div>
</th>
<th style={{ width: '60%' }}>
{/* <div>{'-'}</div> */}
<div>
<div>
{props.doc.comment && (
<Summary summary={props.doc.comment} />
)}
</div>
<CodeBlock language="tsx">{props.doc.code}</CodeBlock>
</div>
</th>
</tr>
);
};
export const DocRef = (props: DocRefProps) => { export const DocRef = (props: DocRefProps) => {
const docs = React.useMemo( const docs = React.useMemo(
() => (docsJson as DocsJson)[props.declaration], () => (docsJson as DocsJson)[props.declaration],
[props.declaration] [props.declaration]
); );
const filteredDocs = React.useMemo(
() =>
docs?.children?.filter((child) => {
if (props.methods && !props.methods.includes(child.name)) {
return false;
}
return true;
}),
[docs]
);
if (!docs) { if (!docs) {
return null; return <span>{`Failed to find docs for '${props.declaration}'`}</span>;
} }
return ( return (
<table className="doc-ref-table"> <table className="doc-ref-table">
<tbody> <tbody>
{docs.map((doc) => { {filteredDocs.map((doc, i) => {
if (props.methods && !props.methods.includes(doc.name)) {
return null;
}
return ( return (
<tr> <>
<th <Row key={i} doc={doc} />
style={{ {/* {doc.pieces?.map((piece) => (
width: '40%', <tr>
display: 'flex', <th colSpan={2}>
}} <Piece piece={piece} />
> </th>
<div </tr>
style={{ ))} */}
// maxWidth: '30%', </>
display: 'flex',
flexDirection: 'column',
alignItems: 'start',
}}
>
<h6
style={{
fontFamily: 'monospace',
fontSize: '1.2em',
}}
>
{doc.name}
</h6>
<div
style={{
display: 'flex',
flexDirection: 'column',
alignItems: 'start',
}}
>
{/* <span
style={{
fontSize: '0.75em',
color: 'var(--ifm-color-content-secondary)',
}}
>
{'Type'}
</span>
<span
style={{
color: 'var(--ifm-color-primary)',
}}
>
{doc.type}
</span> */}
</div>
</div>
</th>
<th style={{ width: '60%' }}>
{/* <div>{'-'}</div> */}
<div>
<div>
{doc.comment && (
<Summary summary={doc.comment} />
)}
</div>
<CodeBlock language="tsx">
{doc.code}
</CodeBlock>
</div>
</th>
</tr>
); );
})} })}
</tbody> </tbody>

File diff suppressed because it is too large Load Diff

View File

@ -67,8 +67,9 @@ const dockviewCore = content.children.find(
const dockview = content.children.find((child) => child.name === 'dockview'); const dockview = content.children.find((child) => child.name === 'dockview');
const declarations = [dockviewCore, dockview] const declarations = [dockviewCore, dockview]
.flatMap((item) => .flatMap(
item.children.filter((child) => DOCUMENT_LIST.includes(child.name)) (item) => item.children
// .filter((child) => DOCUMENT_LIST.includes(child.name))
) )
.filter(Boolean); .filter(Boolean);
@ -93,44 +94,77 @@ function parseType(obj) {
return `${obj.qualifiedName ?? obj.name}${parseTypeArguments(obj)}`; return `${obj.qualifiedName ?? obj.name}${parseTypeArguments(obj)}`;
case 'array': case 'array':
return `${parseType(obj.elementType)}[]`; return `${parseType(obj.elementType)}[]`;
case 'intersection':
return obj.types.map(parseType).reverse().join(' & ');
case 'predicate':
return `${obj.name} is ${parseType(obj.targetType)}`;
case 'tuple':
return `[${obj.elements.map(parseType)}]`;
default: default:
throw new Error(`unhandled type ${obj.type}`); throw new Error(`unhandled type ${obj.type}`);
} }
} }
function extractPiecesFromType(obj) {
if (obj.type === 'reference' && obj.package?.startsWith('dockview-')) {
return obj.name;
}
return null;
}
function parse(data) { function parse(data) {
const { name, comment, flags } = data; const { name, comment, flags } = data;
let code = ''; let code = '';
const pieces = [];
switch (data.kind) { switch (data.kind) {
case ReflectionKind.Accessor: // 262144 case ReflectionKind.Accessor: // 262144
if (!data.getSignature) {
return null;
}
const getSignature = parse(data.getSignature); const getSignature = parse(data.getSignature);
code += getSignature.code; code += getSignature.code;
pieces.push(...getSignature.pieces);
return { return {
name, name,
code, code,
kind: 'accessor', kind: 'accessor',
comment: getSignature.comment, comment: getSignature.comment,
pieces,
}; };
case ReflectionKind.Method: // 2048 case ReflectionKind.Method: // 2048
if (data.signatures.length > 1) { const methodSignature = data.signatures.map((signature) =>
throw new Error('unhandled'); parse(signature)
} );
pieces.push(...methodSignature.flatMap((_) => _.pieces));
const signature = parse(data.signatures[0]); code += methodSignature
.map((signature) => signature.code)
.join('\n');
code += signature.code; return {
name,
return { name, code, kind: 'method', comment: signature.comment }; code,
kind: 'method',
comment: data.signatures[0].comment,
pieces,
};
case ReflectionKind.Property: // 1024 case ReflectionKind.Property: // 1024
code += parseType(data.type); code += parseType(data.type);
pieces.push(extractPiecesFromType(data.type));
return {
name,
code,
kind: 'property',
flags,
comment,
pieces,
};
return { name, code, kind: 'property', flags, comment };
case ReflectionKind.Constructor: // 512
// don't care for constrcutors
return null;
case ReflectionKind.Parameter: // 32768 case ReflectionKind.Parameter: // 32768
code += `${name}`; code += `${name}`;
@ -140,10 +174,12 @@ function parse(data) {
code += ': '; code += ': ';
code += parseType(data.type); code += parseType(data.type);
pieces.push(extractPiecesFromType(data.type));
return { return {
name, name,
code, code,
pieces,
}; };
case ReflectionKind.TypeLiteral: // 65536 case ReflectionKind.TypeLiteral: // 65536
if (Array.isArray(data.children)) { if (Array.isArray(data.children)) {
@ -155,7 +191,10 @@ function parse(data) {
if (child.flags.isOptional) { if (child.flags.isOptional) {
code += '?'; code += '?';
} }
code += `: ${parse(child).code}`; const childData = parse(child);
pieces.push(...childData.pieces);
code += `: ${childData.code}`;
return code; return code;
}) })
.join(', '); .join(', ');
@ -163,23 +202,34 @@ function parse(data) {
} }
if (Array.isArray(data.signatures)) { if (Array.isArray(data.signatures)) {
code += data.signatures const signatures = data.signatures.map((signature) =>
.map((signature) => parse(signature).code) parse(signature)
);
code += signatures
.map((signature) => signature.code)
.join(', '); .join(', ');
pieces.push(...signatures.flatMap((_) => _.pieces));
} }
return { name, code }; return { name, code, pieces };
case ReflectionKind.CallSignature: // 4096 case ReflectionKind.CallSignature: // 4096
// don't care for constrcutors // don't care for constrcutors
if (Array.isArray(data.typeParameter)) { if (Array.isArray(data.typeParameter)) {
code += `<${data.typeParameter.map((typeParameter) => { code += `<${data.typeParameter.map((typeParameter) => {
let type = `${typeParameter.name} extends ${parseType( let type = `${typeParameter.name}`;
typeParameter.type
)}`; if (typeParameter.type) {
type += ` extends ${parseType(typeParameter.type)}`;
pieces.push(extractPiecesFromType(typeParameter.type));
}
if (typeParameter.default) { if (typeParameter.default) {
type += ` = ${typeParameter.default.name}`; type += ` = ${typeParameter.default.name}`;
pieces.push(
extractPiecesFromType(typeParameter.default)
);
} }
return type; return type;
@ -189,57 +239,191 @@ function parse(data) {
code += '('; code += '(';
if (Array.isArray(data.parameters)) { if (Array.isArray(data.parameters)) {
code += `${data.parameters const parameters = data.parameters.map((parameter) =>
.map((parameter) => parse(parameter).code) parse(parameter)
);
code += `${parameters
.map((parameter) => parameter.code)
.join(', ')}`; .join(', ')}`;
pieces.push(...parameters.flatMap((_) => _.pieces));
} }
code += '): '; code += '): ';
code += parseType(data.type); code += parseType(data.type);
pieces.push(extractPiecesFromType(data.type));
return { return {
name, name,
comment, comment,
code, code,
pieces,
}; };
case ReflectionKind.GetSignature: // 524288 case ReflectionKind.GetSignature: // 524288
code += parseType(data.type); code += parseType(data.type);
pieces.push(extractPiecesFromType(data.type));
return { return {
name, name,
comment, comment,
code, code,
pieces,
}; };
case ReflectionKind.Function: // 64
if (data.signatures.length > 1) {
throw new Error('unhandled');
}
const functionSignature = parse(data.signatures[0]);
pieces.push(...functionSignature.pieces);
code += functionSignature.code;
return {
name,
comment,
code,
pieces,
};
case ReflectionKind.Variable: // 32
return {
name,
comment,
code,
pieces,
};
case ReflectionKind.EnumMember: // 16
return {
name,
comment,
code,
pieces,
};
case ReflectionKind.Interface: // 16
return {
name,
comment,
code,
pieces,
};
case ReflectionKind.ConstructorSignature: // 16384
return {
name,
comment,
code,
pieces,
};
case ReflectionKind.Constructor: // 512
// don't care for constrcutors
return {
name,
comment,
code,
pieces,
};
case ReflectionKind.TypeAlias: // 2097152
if (Array.isArray(data.typeParameter)) {
code += `<${data.typeParameter.map((typeParameter) => {
let type = `${typeParameter.name}`;
if (typeParameter.type) {
type += ` extends ${parseType(typeParameter.type)}`;
pieces.push(extractPiecesFromType(typeParameter.type));
}
if (typeParameter.default) {
type += ` = ${typeParameter.default.name}`;
pieces.push(
extractPiecesFromType(typeParameter.default)
);
}
return type;
})}>`;
}
code += parseType(data.type);
pieces.push(extractPiecesFromType(data.type));
return {
name,
comment,
code,
pieces,
};
default: default:
throw new Error(`unhandled kind ${data.kind}`); throw new Error(`unhandled kind ${data.kind}`);
} }
} }
function parseDeclarationMetadata(declaration) {
switch (declaration.kind) {
case ReflectionKind.Namespace:
return { kind: 'namespace' };
case ReflectionKind.Variable:
return { kind: 'variable' };
case ReflectionKind.Enum:
return { kind: 'enum' };
case ReflectionKind.Function:
return { kind: 'function' };
case ReflectionKind.Class:
return { kind: 'class' };
case ReflectionKind.Interface:
return { kind: 'interface' };
case ReflectionKind.TypeAlias:
return { kind: 'typeAlias' };
default:
throw new Error(`unhandled declaration kind ${declaration.kind}`);
}
}
function createDocument(declarations) { function createDocument(declarations) {
const documentation = {}; const documentation = {};
for (const declaration of declarations) { for (const declaration of declarations) {
const { children, name } = declaration; const { children, name } = declaration;
documentation[name] = []; /**
* 4: Namespace
* 8: Enum
* 64: Function
* 128: Class
* 256: Interface
* 2097152: TypeAlias
*/
for (const child of children) { const metadata = parseDeclarationMetadata(declaration);
try {
const { flags } = child;
if (flags.isPrivate) { documentation[name] = {
continue; ...metadata,
children: [],
};
if (!children) {
documentation[name].metadata = parse(declaration);
}
if (children) {
for (const child of children) {
try {
const { flags } = child;
if (flags.isPrivate) {
continue;
}
const output = parse(child);
if (output) {
output.pieces = Array.from(new Set(output.pieces))
.filter(Boolean)
.sort();
documentation[name].children.push(output);
}
} catch (err) {
console.error('error', err, JSON.stringify(child, null, 4));
process.exit(-1);
} }
const output = parse(child);
if (output) {
documentation[name].push(output);
}
} catch (err) {
console.error('error', err, JSON.stringify(child, null, 4));
process.exit(-1);
} }
} }
} }

354
yarn.lock
View File

@ -2059,10 +2059,10 @@
"@docsearch/css" "3.5.2" "@docsearch/css" "3.5.2"
algoliasearch "^4.19.1" algoliasearch "^4.19.1"
"@docusaurus/core@3.1.0", "@docusaurus/core@^3.1.0": "@docusaurus/core@3.1.1", "@docusaurus/core@^3.1.1":
version "3.1.0" version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.1.0.tgz#b66e7eaf867c1f44738d725d217a1c0e879629d7" resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.1.1.tgz#29ce8df7a3d3d12ee8962d6d86133b87235ff17b"
integrity sha512-GWudMGYA9v26ssbAWJNfgeDZk+lrudUTclLPRsmxiknEBk7UMp7Rglonhqbsf3IKHOyHkMU4Fr5jFyg5SBx9jQ== integrity sha512-2nQfKFcf+MLEM7JXsXwQxPOmQAR6ytKMZVSx7tVi9HEm9WtfwBH1fp6bn8Gj4zLUhjWKCLoysQ9/Wm+EZCQ4yQ==
dependencies: dependencies:
"@babel/core" "^7.23.3" "@babel/core" "^7.23.3"
"@babel/generator" "^7.23.3" "@babel/generator" "^7.23.3"
@ -2074,13 +2074,13 @@
"@babel/runtime" "^7.22.6" "@babel/runtime" "^7.22.6"
"@babel/runtime-corejs3" "^7.22.6" "@babel/runtime-corejs3" "^7.22.6"
"@babel/traverse" "^7.22.8" "@babel/traverse" "^7.22.8"
"@docusaurus/cssnano-preset" "3.1.0" "@docusaurus/cssnano-preset" "3.1.1"
"@docusaurus/logger" "3.1.0" "@docusaurus/logger" "3.1.1"
"@docusaurus/mdx-loader" "3.1.0" "@docusaurus/mdx-loader" "3.1.1"
"@docusaurus/react-loadable" "5.5.2" "@docusaurus/react-loadable" "5.5.2"
"@docusaurus/utils" "3.1.0" "@docusaurus/utils" "3.1.1"
"@docusaurus/utils-common" "3.1.0" "@docusaurus/utils-common" "3.1.1"
"@docusaurus/utils-validation" "3.1.0" "@docusaurus/utils-validation" "3.1.1"
"@slorber/static-site-generator-webpack-plugin" "^4.0.7" "@slorber/static-site-generator-webpack-plugin" "^4.0.7"
"@svgr/webpack" "^6.5.1" "@svgr/webpack" "^6.5.1"
autoprefixer "^10.4.14" autoprefixer "^10.4.14"
@ -2134,34 +2134,34 @@
webpack-merge "^5.9.0" webpack-merge "^5.9.0"
webpackbar "^5.0.2" webpackbar "^5.0.2"
"@docusaurus/cssnano-preset@3.1.0": "@docusaurus/cssnano-preset@3.1.1":
version "3.1.0" version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.1.0.tgz#b3fe7134cc4d0c1950eeb1c940089a190591ad4e" resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.1.1.tgz#03a4cb8e6d41654d7ff5ed79fddd73fd224feea4"
integrity sha512-ned7qsgCqSv/e7KyugFNroAfiszuxLwnvMW7gmT2Ywxb/Nyt61yIw7KHyAZCMKglOalrqnYA4gMhLUCK/mVePA== integrity sha512-LnoIDjJWbirdbVZDMq+4hwmrTl2yHDnBf9MLG9qyExeAE3ac35s4yUhJI8yyTCdixzNfKit4cbXblzzqMu4+8g==
dependencies: dependencies:
cssnano-preset-advanced "^5.3.10" cssnano-preset-advanced "^5.3.10"
postcss "^8.4.26" postcss "^8.4.26"
postcss-sort-media-queries "^4.4.1" postcss-sort-media-queries "^4.4.1"
tslib "^2.6.0" tslib "^2.6.0"
"@docusaurus/logger@3.1.0": "@docusaurus/logger@3.1.1":
version "3.1.0" version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.1.0.tgz#eef6475c2d59a3ae7e138ac1f60007d6fafd76b0" resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.1.1.tgz#423e8270c00a57b1b3a0cc8a3ee0a4c522a68387"
integrity sha512-p740M+HCst1VnKKzL60Hru9xfG4EUYJDarjlEC4hHeBy9+afPmY3BNPoSHx9/8zxuYfUlv/psf7I9NvRVdmdvg== integrity sha512-BjkNDpQzewcTnST8trx4idSoAla6zZ3w22NqM/UMcFtvYJgmoE4layuTzlfql3VFPNuivvj7BOExa/+21y4X2Q==
dependencies: dependencies:
chalk "^4.1.2" chalk "^4.1.2"
tslib "^2.6.0" tslib "^2.6.0"
"@docusaurus/mdx-loader@3.1.0": "@docusaurus/mdx-loader@3.1.1":
version "3.1.0" version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.1.0.tgz#61d562ff442f62ef04cc31d3f0d5865a8dd390e4" resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.1.1.tgz#f79290abc5044bef1d7ecac4eccec887058b8e03"
integrity sha512-D7onDz/3mgBonexWoQXPw3V2E5Bc4+jYRf9gGUUK+KoQwU8xMDaDkUUfsr7t6UBa/xox9p5+/3zwLuXOYMzGSg== integrity sha512-xN2IccH9+sv7TmxwsDJNS97BHdmlqWwho+kIVY4tcCXkp+k4QuzvWBeunIMzeayY4Fu13A6sAjHGv5qm72KyGA==
dependencies: dependencies:
"@babel/parser" "^7.22.7" "@babel/parser" "^7.22.7"
"@babel/traverse" "^7.22.8" "@babel/traverse" "^7.22.8"
"@docusaurus/logger" "3.1.0" "@docusaurus/logger" "3.1.1"
"@docusaurus/utils" "3.1.0" "@docusaurus/utils" "3.1.1"
"@docusaurus/utils-validation" "3.1.0" "@docusaurus/utils-validation" "3.1.1"
"@mdx-js/mdx" "^3.0.0" "@mdx-js/mdx" "^3.0.0"
"@slorber/remark-comment" "^1.0.0" "@slorber/remark-comment" "^1.0.0"
escape-html "^1.0.3" escape-html "^1.0.3"
@ -2184,13 +2184,13 @@
vfile "^6.0.1" vfile "^6.0.1"
webpack "^5.88.1" webpack "^5.88.1"
"@docusaurus/module-type-aliases@3.1.0", "@docusaurus/module-type-aliases@^3.1.0": "@docusaurus/module-type-aliases@3.1.1", "@docusaurus/module-type-aliases@^3.1.1":
version "3.1.0" version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.1.0.tgz#f3451702f143557bfde0502287713a08086a0415" resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.1.1.tgz#b304402b0535a13ebd4c0db1c368d2604d54d02f"
integrity sha512-XUl7Z4PWlKg4l6KF05JQ3iDHQxnPxbQUqTNKvviHyuHdlalOFv6qeDAm7IbzyQPJD5VA6y4dpRbTWSqP9ClwPg== integrity sha512-xBJyx0TMfAfVZ9ZeIOb1awdXgR4YJMocIEzTps91rq+hJDFJgJaylDtmoRhUxkwuYmNK1GJpW95b7DLztSBJ3A==
dependencies: dependencies:
"@docusaurus/react-loadable" "5.5.2" "@docusaurus/react-loadable" "5.5.2"
"@docusaurus/types" "3.1.0" "@docusaurus/types" "3.1.1"
"@types/history" "^4.7.11" "@types/history" "^4.7.11"
"@types/react" "*" "@types/react" "*"
"@types/react-router-config" "*" "@types/react-router-config" "*"
@ -2198,18 +2198,18 @@
react-helmet-async "*" react-helmet-async "*"
react-loadable "npm:@docusaurus/react-loadable@5.5.2" react-loadable "npm:@docusaurus/react-loadable@5.5.2"
"@docusaurus/plugin-content-blog@3.1.0": "@docusaurus/plugin-content-blog@3.1.1":
version "3.1.0" version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.1.0.tgz#d2102e9286486e526dbc0dfc741e53dc5cee0ff0" resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.1.1.tgz#16f4fd723227b2158461bba6b9bcc18c1926f7ea"
integrity sha512-iMa6WBaaEdYuxckvJtLcq/HQdlA4oEbCXf/OFfsYJCCULcDX7GDZpKxLF3X1fLsax3sSm5bmsU+CA0WD+R1g3A== integrity sha512-ew/3VtVoG3emoAKmoZl7oKe1zdFOsI0NbcHS26kIxt2Z8vcXKCUgK9jJJrz0TbOipyETPhqwq4nbitrY3baibg==
dependencies: dependencies:
"@docusaurus/core" "3.1.0" "@docusaurus/core" "3.1.1"
"@docusaurus/logger" "3.1.0" "@docusaurus/logger" "3.1.1"
"@docusaurus/mdx-loader" "3.1.0" "@docusaurus/mdx-loader" "3.1.1"
"@docusaurus/types" "3.1.0" "@docusaurus/types" "3.1.1"
"@docusaurus/utils" "3.1.0" "@docusaurus/utils" "3.1.1"
"@docusaurus/utils-common" "3.1.0" "@docusaurus/utils-common" "3.1.1"
"@docusaurus/utils-validation" "3.1.0" "@docusaurus/utils-validation" "3.1.1"
cheerio "^1.0.0-rc.12" cheerio "^1.0.0-rc.12"
feed "^4.2.2" feed "^4.2.2"
fs-extra "^11.1.1" fs-extra "^11.1.1"
@ -2221,18 +2221,18 @@
utility-types "^3.10.0" utility-types "^3.10.0"
webpack "^5.88.1" webpack "^5.88.1"
"@docusaurus/plugin-content-docs@3.1.0": "@docusaurus/plugin-content-docs@3.1.1":
version "3.1.0" version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.1.0.tgz#55d7bdb8e14f854ea6c6e256f1b51b8c17963c19" resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.1.1.tgz#f2eddebf351dd8dd504a2c26061165c519e1f964"
integrity sha512-el5GxhT8BLrsWD0qGa8Rq+Ttb/Ni6V3DGT2oAPio0qcs/mUAxeyXEAmihkvmLCnAgp6xD27Ce7dISZ5c6BXeqA== integrity sha512-lhFq4E874zw0UOH7ujzxnCayOyAt0f9YPVYSb9ohxrdCM8B4szxitUw9rIX4V9JLLHVoqIJb6k+lJJ1jrcGJ0A==
dependencies: dependencies:
"@docusaurus/core" "3.1.0" "@docusaurus/core" "3.1.1"
"@docusaurus/logger" "3.1.0" "@docusaurus/logger" "3.1.1"
"@docusaurus/mdx-loader" "3.1.0" "@docusaurus/mdx-loader" "3.1.1"
"@docusaurus/module-type-aliases" "3.1.0" "@docusaurus/module-type-aliases" "3.1.1"
"@docusaurus/types" "3.1.0" "@docusaurus/types" "3.1.1"
"@docusaurus/utils" "3.1.0" "@docusaurus/utils" "3.1.1"
"@docusaurus/utils-validation" "3.1.0" "@docusaurus/utils-validation" "3.1.1"
"@types/react-router-config" "^5.0.7" "@types/react-router-config" "^5.0.7"
combine-promises "^1.1.0" combine-promises "^1.1.0"
fs-extra "^11.1.1" fs-extra "^11.1.1"
@ -2242,96 +2242,96 @@
utility-types "^3.10.0" utility-types "^3.10.0"
webpack "^5.88.1" webpack "^5.88.1"
"@docusaurus/plugin-content-pages@3.1.0": "@docusaurus/plugin-content-pages@3.1.1":
version "3.1.0" version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.1.0.tgz#cdb73c804ded307e81ceea39874dc0bb540c2dc4" resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.1.1.tgz#05aec68c2abeac2140c7a16d4c5b506bf4d19fb2"
integrity sha512-9gntYQFpk+93+Xl7gYczJu8I9uWoyRLnRwS0+NUFcs9iZtHKsdqKWPRrONC9elfN3wJ9ORwTbcVzsTiB8jvYlg== integrity sha512-NQHncNRAJbyLtgTim9GlEnNYsFhuCxaCNkMwikuxLTiGIPH7r/jpb7O3f3jUMYMebZZZrDq5S7om9a6rvB/YCA==
dependencies: dependencies:
"@docusaurus/core" "3.1.0" "@docusaurus/core" "3.1.1"
"@docusaurus/mdx-loader" "3.1.0" "@docusaurus/mdx-loader" "3.1.1"
"@docusaurus/types" "3.1.0" "@docusaurus/types" "3.1.1"
"@docusaurus/utils" "3.1.0" "@docusaurus/utils" "3.1.1"
"@docusaurus/utils-validation" "3.1.0" "@docusaurus/utils-validation" "3.1.1"
fs-extra "^11.1.1" fs-extra "^11.1.1"
tslib "^2.6.0" tslib "^2.6.0"
webpack "^5.88.1" webpack "^5.88.1"
"@docusaurus/plugin-debug@3.1.0": "@docusaurus/plugin-debug@3.1.1":
version "3.1.0" version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-3.1.0.tgz#545872bc8f9cd697d9f1d6c695f8a1674bfc149c" resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-3.1.1.tgz#cee5aae1fef288fb93f68894db79a2612e313d3f"
integrity sha512-AbvJwCVRbmQ8w9d8QXbF4Iq/ui0bjPZNYFIhtducGFnm2YQRN1mraK8mCEQb0Aq0T8SqRRvSfC/far4n/s531w== integrity sha512-xWeMkueM9wE/8LVvl4+Qf1WqwXmreMjI5Kgr7GYCDoJ8zu4kD+KaMhrh7py7MNM38IFvU1RfrGKacCEe2DRRfQ==
dependencies: dependencies:
"@docusaurus/core" "3.1.0" "@docusaurus/core" "3.1.1"
"@docusaurus/types" "3.1.0" "@docusaurus/types" "3.1.1"
"@docusaurus/utils" "3.1.0" "@docusaurus/utils" "3.1.1"
fs-extra "^11.1.1" fs-extra "^11.1.1"
react-json-view-lite "^1.2.0" react-json-view-lite "^1.2.0"
tslib "^2.6.0" tslib "^2.6.0"
"@docusaurus/plugin-google-analytics@3.1.0": "@docusaurus/plugin-google-analytics@3.1.1":
version "3.1.0" version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.1.0.tgz#3035eace3121db16aec7c10852ebb4cd860f4434" resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.1.1.tgz#bfc58205b4fcaf3222e04f9c3542f3bef9804887"
integrity sha512-zvUOMzu9Uhz0ciqnSbtnp/5i1zEYlzarQrOXG90P3Is3efQI43p2YLW/rzSGdLb5MfQo2HvKT6Q5+tioMO045Q== integrity sha512-+q2UpWTqVi8GdlLoSlD5bS/YpxW+QMoBwrPrUH/NpvpuOi0Of7MTotsQf9JWd3hymZxl2uu1o3PIrbpxfeDFDQ==
dependencies: dependencies:
"@docusaurus/core" "3.1.0" "@docusaurus/core" "3.1.1"
"@docusaurus/types" "3.1.0" "@docusaurus/types" "3.1.1"
"@docusaurus/utils-validation" "3.1.0" "@docusaurus/utils-validation" "3.1.1"
tslib "^2.6.0" tslib "^2.6.0"
"@docusaurus/plugin-google-gtag@3.1.0": "@docusaurus/plugin-google-gtag@3.1.1":
version "3.1.0" version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.1.0.tgz#2f4040da81d36bfc6324abc1a12b258e6c7f202a" resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.1.1.tgz#7e8b5aa6847a12461c104a65a335f4a45dae2f28"
integrity sha512-0txshvaY8qIBdkk2UATdVcfiCLGq3KAUfuRQD2cRNgO39iIf4/ihQxH9NXcRTwKs4Q5d9yYHoix3xT6pFuEYOg== integrity sha512-0mMPiBBlQ5LFHTtjxuvt/6yzh8v7OxLi3CbeEsxXZpUzcKO/GC7UA1VOWUoBeQzQL508J12HTAlR3IBU9OofSw==
dependencies: dependencies:
"@docusaurus/core" "3.1.0" "@docusaurus/core" "3.1.1"
"@docusaurus/types" "3.1.0" "@docusaurus/types" "3.1.1"
"@docusaurus/utils-validation" "3.1.0" "@docusaurus/utils-validation" "3.1.1"
"@types/gtag.js" "^0.0.12" "@types/gtag.js" "^0.0.12"
tslib "^2.6.0" tslib "^2.6.0"
"@docusaurus/plugin-google-tag-manager@3.1.0": "@docusaurus/plugin-google-tag-manager@3.1.1":
version "3.1.0" version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.1.0.tgz#4c026e9f65468a332326770f95ccd9c6e12d564b" resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.1.1.tgz#e1aae4d821e786d133386b4ae6e6fe66a4bc0089"
integrity sha512-zOWPEi8kMyyPtwG0vhyXrdbLs8fIZmY5vlbi9lUU+v8VsroO5iHmfR2V3SMsrsfOanw5oV/ciWqbxezY00qEZg== integrity sha512-d07bsrMLdDIryDtY17DgqYUbjkswZQr8cLWl4tzXrt5OR/T/zxC1SYKajzB3fd87zTu5W5klV5GmUwcNSMXQXA==
dependencies: dependencies:
"@docusaurus/core" "3.1.0" "@docusaurus/core" "3.1.1"
"@docusaurus/types" "3.1.0" "@docusaurus/types" "3.1.1"
"@docusaurus/utils-validation" "3.1.0" "@docusaurus/utils-validation" "3.1.1"
tslib "^2.6.0" tslib "^2.6.0"
"@docusaurus/plugin-sitemap@3.1.0": "@docusaurus/plugin-sitemap@3.1.1":
version "3.1.0" version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.1.0.tgz#9d9dbb4d87e6dc46ae9321badf6ac7cd9aa96b23" resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.1.1.tgz#8828bf5e2922273aad207a35189f22913e6a0dfd"
integrity sha512-TkR5vGBpUooEB9SoW42thahqqwKzfHrQQhkB+JrEGERsl4bKODSuJNle4aA4h6LSkg4IyfXOW8XOI0NIPWb9Cg== integrity sha512-iJ4hCaMmDaUqRv131XJdt/C/jJQx8UreDWTRqZKtNydvZVh/o4yXGRRFOplea1D9b/zpwL1Y+ZDwX7xMhIOTmg==
dependencies: dependencies:
"@docusaurus/core" "3.1.0" "@docusaurus/core" "3.1.1"
"@docusaurus/logger" "3.1.0" "@docusaurus/logger" "3.1.1"
"@docusaurus/types" "3.1.0" "@docusaurus/types" "3.1.1"
"@docusaurus/utils" "3.1.0" "@docusaurus/utils" "3.1.1"
"@docusaurus/utils-common" "3.1.0" "@docusaurus/utils-common" "3.1.1"
"@docusaurus/utils-validation" "3.1.0" "@docusaurus/utils-validation" "3.1.1"
fs-extra "^11.1.1" fs-extra "^11.1.1"
sitemap "^7.1.1" sitemap "^7.1.1"
tslib "^2.6.0" tslib "^2.6.0"
"@docusaurus/preset-classic@^3.1.0": "@docusaurus/preset-classic@^3.1.1":
version "3.1.0" version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-3.1.0.tgz#ca67d5e416c211b4c23f0fb01f0e3e36b759dfa0" resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-3.1.1.tgz#15fd80012529dafd7e01cc0bce59d39ee6ad6bf5"
integrity sha512-xGLQRFmmT9IinAGUDVRYZ54Ys28USNbA3OTXQXnSJLPr1rCY7CYnHI4XoOnKWrNnDiAI4ruMzunXWyaElUYCKQ== integrity sha512-jG4ys/hWYf69iaN/xOmF+3kjs4Nnz1Ay3CjFLDtYa8KdxbmUhArA9HmP26ru5N0wbVWhY+6kmpYhTJpez5wTyg==
dependencies: dependencies:
"@docusaurus/core" "3.1.0" "@docusaurus/core" "3.1.1"
"@docusaurus/plugin-content-blog" "3.1.0" "@docusaurus/plugin-content-blog" "3.1.1"
"@docusaurus/plugin-content-docs" "3.1.0" "@docusaurus/plugin-content-docs" "3.1.1"
"@docusaurus/plugin-content-pages" "3.1.0" "@docusaurus/plugin-content-pages" "3.1.1"
"@docusaurus/plugin-debug" "3.1.0" "@docusaurus/plugin-debug" "3.1.1"
"@docusaurus/plugin-google-analytics" "3.1.0" "@docusaurus/plugin-google-analytics" "3.1.1"
"@docusaurus/plugin-google-gtag" "3.1.0" "@docusaurus/plugin-google-gtag" "3.1.1"
"@docusaurus/plugin-google-tag-manager" "3.1.0" "@docusaurus/plugin-google-tag-manager" "3.1.1"
"@docusaurus/plugin-sitemap" "3.1.0" "@docusaurus/plugin-sitemap" "3.1.1"
"@docusaurus/theme-classic" "3.1.0" "@docusaurus/theme-classic" "3.1.1"
"@docusaurus/theme-common" "3.1.0" "@docusaurus/theme-common" "3.1.1"
"@docusaurus/theme-search-algolia" "3.1.0" "@docusaurus/theme-search-algolia" "3.1.1"
"@docusaurus/types" "3.1.0" "@docusaurus/types" "3.1.1"
"@docusaurus/react-loadable@5.5.2", "react-loadable@npm:@docusaurus/react-loadable@5.5.2": "@docusaurus/react-loadable@5.5.2", "react-loadable@npm:@docusaurus/react-loadable@5.5.2":
version "5.5.2" version "5.5.2"
@ -2341,23 +2341,23 @@
"@types/react" "*" "@types/react" "*"
prop-types "^15.6.2" prop-types "^15.6.2"
"@docusaurus/theme-classic@3.1.0": "@docusaurus/theme-classic@3.1.1":
version "3.1.0" version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-3.1.0.tgz#6ee68bf4d4db53c8d9b18d4866512abadb00a802" resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-3.1.1.tgz#0a188c787fc4bf2bb525cc30c7aa34e555ee96b8"
integrity sha512-/+jMl2Z9O8QQxves5AtHdt91gWsEZFgOV3La/6eyKEd7QLqQUtM5fxEJ40rq9NKYjqCd1HzZ9egIMeJoWwillw== integrity sha512-GiPE/jbWM8Qv1A14lk6s9fhc0LhPEQ00eIczRO4QL2nAQJZXkjPG6zaVx+1cZxPFWbAsqSjKe2lqkwF3fGkQ7Q==
dependencies: dependencies:
"@docusaurus/core" "3.1.0" "@docusaurus/core" "3.1.1"
"@docusaurus/mdx-loader" "3.1.0" "@docusaurus/mdx-loader" "3.1.1"
"@docusaurus/module-type-aliases" "3.1.0" "@docusaurus/module-type-aliases" "3.1.1"
"@docusaurus/plugin-content-blog" "3.1.0" "@docusaurus/plugin-content-blog" "3.1.1"
"@docusaurus/plugin-content-docs" "3.1.0" "@docusaurus/plugin-content-docs" "3.1.1"
"@docusaurus/plugin-content-pages" "3.1.0" "@docusaurus/plugin-content-pages" "3.1.1"
"@docusaurus/theme-common" "3.1.0" "@docusaurus/theme-common" "3.1.1"
"@docusaurus/theme-translations" "3.1.0" "@docusaurus/theme-translations" "3.1.1"
"@docusaurus/types" "3.1.0" "@docusaurus/types" "3.1.1"
"@docusaurus/utils" "3.1.0" "@docusaurus/utils" "3.1.1"
"@docusaurus/utils-common" "3.1.0" "@docusaurus/utils-common" "3.1.1"
"@docusaurus/utils-validation" "3.1.0" "@docusaurus/utils-validation" "3.1.1"
"@mdx-js/react" "^3.0.0" "@mdx-js/react" "^3.0.0"
clsx "^2.0.0" clsx "^2.0.0"
copy-text-to-clipboard "^3.2.0" copy-text-to-clipboard "^3.2.0"
@ -2372,18 +2372,18 @@
tslib "^2.6.0" tslib "^2.6.0"
utility-types "^3.10.0" utility-types "^3.10.0"
"@docusaurus/theme-common@3.1.0": "@docusaurus/theme-common@3.1.1":
version "3.1.0" version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-3.1.0.tgz#d176af1d0fc8ea27fea0afb298157f9a75256336" resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-3.1.1.tgz#5a16893928b8379c9e83aef01d753e7e142459e2"
integrity sha512-YGwEFALLIbF5ocW/Fy6Ae7tFWUOugEN3iwxTx8UkLAcLqYUboDSadesYtVBmRCEB4FVA2qoP7YaW3lu3apUPPw== integrity sha512-38urZfeMhN70YaXkwIGXmcUcv2CEYK/2l4b05GkJPrbEbgpsIZM3Xc+Js2ehBGGZmfZq8GjjQ5RNQYG+MYzCYg==
dependencies: dependencies:
"@docusaurus/mdx-loader" "3.1.0" "@docusaurus/mdx-loader" "3.1.1"
"@docusaurus/module-type-aliases" "3.1.0" "@docusaurus/module-type-aliases" "3.1.1"
"@docusaurus/plugin-content-blog" "3.1.0" "@docusaurus/plugin-content-blog" "3.1.1"
"@docusaurus/plugin-content-docs" "3.1.0" "@docusaurus/plugin-content-docs" "3.1.1"
"@docusaurus/plugin-content-pages" "3.1.0" "@docusaurus/plugin-content-pages" "3.1.1"
"@docusaurus/utils" "3.1.0" "@docusaurus/utils" "3.1.1"
"@docusaurus/utils-common" "3.1.0" "@docusaurus/utils-common" "3.1.1"
"@types/history" "^4.7.11" "@types/history" "^4.7.11"
"@types/react" "*" "@types/react" "*"
"@types/react-router-config" "*" "@types/react-router-config" "*"
@ -2393,19 +2393,19 @@
tslib "^2.6.0" tslib "^2.6.0"
utility-types "^3.10.0" utility-types "^3.10.0"
"@docusaurus/theme-search-algolia@3.1.0": "@docusaurus/theme-search-algolia@3.1.1":
version "3.1.0" version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.1.0.tgz#3cdb1f0e8d15698a60110856ca5a06f10d3b049d" resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.1.1.tgz#5170cd68cc59d150416b070bdc6d15c363ddf5e1"
integrity sha512-8cJH0ZhPsEDjq3jR3I+wHmWzVY2bXMQJ59v2QxUmsTZxbWA4u+IzccJMIJx4ooFl9J6iYynwYsFuHxyx/KUmfQ== integrity sha512-tBH9VY5EpRctVdaAhT+b1BY8y5dyHVZGFXyCHgTrvcXQy5CV4q7serEX7U3SveNT9zksmchPyct6i1sFDC4Z5g==
dependencies: dependencies:
"@docsearch/react" "^3.5.2" "@docsearch/react" "^3.5.2"
"@docusaurus/core" "3.1.0" "@docusaurus/core" "3.1.1"
"@docusaurus/logger" "3.1.0" "@docusaurus/logger" "3.1.1"
"@docusaurus/plugin-content-docs" "3.1.0" "@docusaurus/plugin-content-docs" "3.1.1"
"@docusaurus/theme-common" "3.1.0" "@docusaurus/theme-common" "3.1.1"
"@docusaurus/theme-translations" "3.1.0" "@docusaurus/theme-translations" "3.1.1"
"@docusaurus/utils" "3.1.0" "@docusaurus/utils" "3.1.1"
"@docusaurus/utils-validation" "3.1.0" "@docusaurus/utils-validation" "3.1.1"
algoliasearch "^4.18.0" algoliasearch "^4.18.0"
algoliasearch-helper "^3.13.3" algoliasearch-helper "^3.13.3"
clsx "^2.0.0" clsx "^2.0.0"
@ -2415,18 +2415,18 @@
tslib "^2.6.0" tslib "^2.6.0"
utility-types "^3.10.0" utility-types "^3.10.0"
"@docusaurus/theme-translations@3.1.0": "@docusaurus/theme-translations@3.1.1":
version "3.1.0" version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.1.0.tgz#1c6bdc19723a87e042b5e89b6cdc8b747fdcbc13" resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.1.1.tgz#117e91ba5e3a8178cb59f3028bf41de165a508c1"
integrity sha512-DApE4AbDI+WBajihxB54L4scWQhVGNZAochlC9fkbciPuFAgdRBD3NREb0rgfbKexDC/rioppu/WJA0u8tS+yA== integrity sha512-xvWQFwjxHphpJq5fgk37FXCDdAa2o+r7FX8IpMg+bGZBNXyWBu3MjZ+G4+eUVNpDhVinTc+j6ucL0Ain5KCGrg==
dependencies: dependencies:
fs-extra "^11.1.1" fs-extra "^11.1.1"
tslib "^2.6.0" tslib "^2.6.0"
"@docusaurus/types@3.1.0": "@docusaurus/types@3.1.1":
version "3.1.0" version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.1.0.tgz#1dbb60ea38e98ba869f8d7ea2323e4460f05ab65" resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.1.1.tgz#747c9dee8cf7c3b0e5ee7351bac5e9c4fdc7f259"
integrity sha512-VaczOZf7+re8aFBIWnex1XENomwHdsSTkrdX43zyor7G/FY4OIsP6X28Xc3o0jiY0YdNuvIDyA5TNwOtpgkCVw== integrity sha512-grBqOLnubUecgKFXN9q3uit2HFbCxTWX4Fam3ZFbMN0sWX9wOcDoA7lwdX/8AmeL20Oc4kQvWVgNrsT8bKRvzg==
dependencies: dependencies:
"@mdx-js/mdx" "^3.0.0" "@mdx-js/mdx" "^3.0.0"
"@types/history" "^4.7.11" "@types/history" "^4.7.11"
@ -2438,30 +2438,30 @@
webpack "^5.88.1" webpack "^5.88.1"
webpack-merge "^5.9.0" webpack-merge "^5.9.0"
"@docusaurus/utils-common@3.1.0": "@docusaurus/utils-common@3.1.1":
version "3.1.0" version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.1.0.tgz#846ce9c12b9ebf1ebf513e65303fb8158dcd2e1b" resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.1.1.tgz#b48fade63523fd40f3adb67b47c3371e5183c20b"
integrity sha512-SfvnRLHoZ9bwTw67knkSs7IcUR0GY2SaGkpdB/J9pChrDiGhwzKNUhcieoPyPYrOWGRPk3rVNYtoy+Bc7psPAw== integrity sha512-eGne3olsIoNfPug5ixjepZAIxeYFzHHnor55Wb2P57jNbtVaFvij/T+MS8U0dtZRFi50QU+UPmRrXdVUM8uyMg==
dependencies: dependencies:
tslib "^2.6.0" tslib "^2.6.0"
"@docusaurus/utils-validation@3.1.0": "@docusaurus/utils-validation@3.1.1":
version "3.1.0" version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.1.0.tgz#3e88c42caec29cd3eedbbd17af97f88719613340" resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.1.1.tgz#3a747349ed05aee0e4d543552b41f3c9467ee731"
integrity sha512-dFxhs1NLxPOSzmcTk/eeKxLY5R+U4cua22g9MsAMiRWcwFKStZ2W3/GDY0GmnJGqNS8QAQepJrxQoyxXkJNDeg== integrity sha512-KlY4P9YVDnwL+nExvlIpu79abfEv6ZCHuOX4ZQ+gtip+Wxj0daccdReIWWtqxM/Fb5Cz1nQvUCc7VEtT8IBUAA==
dependencies: dependencies:
"@docusaurus/logger" "3.1.0" "@docusaurus/logger" "3.1.1"
"@docusaurus/utils" "3.1.0" "@docusaurus/utils" "3.1.1"
joi "^17.9.2" joi "^17.9.2"
js-yaml "^4.1.0" js-yaml "^4.1.0"
tslib "^2.6.0" tslib "^2.6.0"
"@docusaurus/utils@3.1.0": "@docusaurus/utils@3.1.1":
version "3.1.0" version "3.1.1"
resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.1.0.tgz#6ef821bc4c40a91586835a385110b5c0082c590c" resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.1.1.tgz#e822d14704e4b3bb451ca464a7cc56aea9b55a45"
integrity sha512-LgZfp0D+UBqAh7PZ//MUNSFBMavmAPku6Si9x8x3V+S318IGCNJ6hUr2O29UO0oLybEWUjD5Jnj9IUN6XyZeeg== integrity sha512-ZJfJa5cJQtRYtqijsPEnAZoduW6sjAQ7ZCWSZavLcV10Fw0Z3gSaPKA/B4micvj2afRZ4gZxT7KfYqe5H8Cetg==
dependencies: dependencies:
"@docusaurus/logger" "3.1.0" "@docusaurus/logger" "3.1.1"
"@svgr/webpack" "^6.5.1" "@svgr/webpack" "^6.5.1"
escape-string-regexp "^4.0.0" escape-string-regexp "^4.0.0"
file-loader "^6.2.0" file-loader "^6.2.0"