mirror of
https://github.com/mathuo/dockview
synced 2025-03-09 15:32:03 +00:00
chore: docs
This commit is contained in:
parent
8b1499e89a
commit
861d13c4ad
packages
dockview-core/src
docs
docs
api
dockview
gridview
paneview
splitview
core
sandboxes
demo-dockview/src
react/dockview/update-parameters
src
scripts
yarn.lock@ -170,10 +170,10 @@ type AddPanelPositionUnion = {
|
||||
|
||||
type AddPanelOptionsUnion = AddPanelFloatingGroupUnion | AddPanelPositionUnion;
|
||||
|
||||
export type AddPanelOptions<P extends object = Parameters> = Omit<
|
||||
PanelOptions<P>,
|
||||
'component' | 'tabComponent'
|
||||
> & {
|
||||
export type AddPanelOptions<P extends object = Parameters> = {
|
||||
params?: P;
|
||||
id: string;
|
||||
title?: string;
|
||||
component: string;
|
||||
tabComponent?: string;
|
||||
renderer?: DockviewPanelRenderer;
|
||||
|
@ -15,10 +15,11 @@ export * from './panel/types';
|
||||
export * from './panel/componentFactory';
|
||||
|
||||
export * from './splitview/splitview';
|
||||
export * from './splitview/options';
|
||||
export { SplitviewComponentOptions } from './splitview/options';
|
||||
|
||||
export * from './paneview/paneview';
|
||||
export * from './gridview/gridview';
|
||||
export { GridviewComponentOptions } from './gridview/options';
|
||||
export * from './dockview/dockviewGroupPanelModel';
|
||||
export * from './gridview/baseComponentGridview';
|
||||
|
||||
|
@ -15,10 +15,6 @@ export interface PanelViewInitParameters extends PanelInitParameters {
|
||||
accessor: SplitviewComponent;
|
||||
}
|
||||
|
||||
export interface ISerializableView extends IView, IPanel {
|
||||
init: (params: PanelViewInitParameters) => void;
|
||||
}
|
||||
|
||||
export interface SplitviewComponentOptions extends SplitViewOptions {
|
||||
disableAutoResizing?: boolean;
|
||||
components?: {
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { ISerializableView, PanelViewInitParameters } from './options';
|
||||
import { PanelViewInitParameters } from './options';
|
||||
import {
|
||||
BasePanelView,
|
||||
BasePanelViewExported,
|
||||
@ -19,7 +19,7 @@ export interface ISplitviewPanel
|
||||
|
||||
export abstract class SplitviewPanel
|
||||
extends BasePanelView<SplitviewPanelApiImpl>
|
||||
implements ISerializableView, ISplitviewPanel
|
||||
implements ISplitviewPanel
|
||||
{
|
||||
private _evaluatedMinimumSize = 0;
|
||||
private _evaluatedMaximumSize = Number.POSITIVE_INFINITY;
|
||||
|
14
packages/docs/docs/api/dockview/groupApi.mdx
Normal file
14
packages/docs/docs/api/dockview/groupApi.mdx
Normal 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" />
|
18
packages/docs/docs/api/dockview/options.mdx
Normal file
18
packages/docs/docs/api/dockview/options.mdx
Normal 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>
|
||||
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Overview
|
||||
sidebar_position: 0
|
||||
title: API
|
||||
sidebar_position: 1
|
||||
---
|
||||
|
||||
import { DocRef } from '@site/src/components/ui/reference/docRef';
|
||||
|
@ -1,6 +1,7 @@
|
||||
---
|
||||
description: API
|
||||
title: Panel API
|
||||
sidebar_position: 2
|
||||
---
|
||||
|
||||
import { DocRef } from '@site/src/components/ui/reference/docRef';
|
||||
|
@ -1,9 +0,0 @@
|
||||
---
|
||||
description: API
|
||||
title: React Props
|
||||
---
|
||||
|
||||
import { DocRef } from '@site/src/components/ui/reference/docRef';
|
||||
|
||||
|
||||
<DocRef declaration="IDockviewReactProps" />
|
@ -1,6 +1,7 @@
|
||||
---
|
||||
description: API
|
||||
title: "API"
|
||||
sidebar_position: 1
|
||||
---
|
||||
|
||||
import { DocRef } from '@site/src/components/ui/reference/docRef';
|
||||
|
18
packages/docs/docs/api/gridview/options.mdx
Normal file
18
packages/docs/docs/api/gridview/options.mdx
Normal 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>
|
||||
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
---
|
||||
description: API
|
||||
title: Panel API
|
||||
sidebar_position: 2
|
||||
---
|
||||
|
||||
import { DocRef } from '@site/src/components/ui/reference/docRef';
|
||||
|
@ -1,9 +0,0 @@
|
||||
---
|
||||
description: API
|
||||
title: React Props
|
||||
---
|
||||
|
||||
import { DocRef } from '@site/src/components/ui/reference/docRef';
|
||||
|
||||
|
||||
<DocRef declaration="IGridviewReactProps" />
|
@ -1,6 +1,7 @@
|
||||
---
|
||||
description: API
|
||||
title: "API"
|
||||
sidebar_position: 1
|
||||
---
|
||||
|
||||
import { DocRef } from '@site/src/components/ui/reference/docRef';
|
||||
|
18
packages/docs/docs/api/paneview/options.mdx
Normal file
18
packages/docs/docs/api/paneview/options.mdx
Normal 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>
|
||||
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
---
|
||||
description: API
|
||||
title: Panel API
|
||||
sidebar_position: 2
|
||||
---
|
||||
|
||||
import { DocRef } from '@site/src/components/ui/reference/docRef';
|
||||
|
@ -1,9 +0,0 @@
|
||||
---
|
||||
description: API
|
||||
title: React Props
|
||||
---
|
||||
|
||||
import { DocRef } from '@site/src/components/ui/reference/docRef';
|
||||
|
||||
|
||||
<DocRef declaration="IPaneviewReactProps" />
|
@ -1,6 +1,7 @@
|
||||
---
|
||||
description: API
|
||||
title: "API"
|
||||
sidebar_position: 1
|
||||
---
|
||||
|
||||
import { DocRef } from '@site/src/components/ui/reference/docRef';
|
||||
|
18
packages/docs/docs/api/splitview/options.mdx
Normal file
18
packages/docs/docs/api/splitview/options.mdx
Normal 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>
|
||||
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
---
|
||||
description: API
|
||||
title: Panel API
|
||||
sidebar_position: 2
|
||||
---
|
||||
|
||||
import { DocRef } from '@site/src/components/ui/reference/docRef';
|
||||
|
@ -1,9 +0,0 @@
|
||||
---
|
||||
description: API
|
||||
title: React Props
|
||||
---
|
||||
|
||||
import { DocRef } from '@site/src/components/ui/reference/docRef';
|
||||
|
||||
|
||||
<DocRef declaration="ISplitviewReactProps" />
|
24
packages/docs/docs/core/groups/move.mdx
Normal file
24
packages/docs/docs/core/groups/move.mdx
Normal 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...
|
@ -5,7 +5,10 @@ sidebar_position: 0
|
||||
|
||||
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'>
|
||||
```tsx
|
||||
@ -21,3 +24,12 @@ function onReady(event: DockviewReadyEvent) {
|
||||
```
|
||||
</FrameworkSpecific>
|
||||
|
||||
|
||||
<FrameworkSpecific framework='JavaScript'>
|
||||
```tsx
|
||||
const component = new DockviewComponent({
|
||||
/** options */
|
||||
});
|
||||
```
|
||||
</FrameworkSpecific>
|
||||
|
||||
|
@ -9,95 +9,128 @@ This section describes how to add a new panel.
|
||||
|
||||
## API
|
||||
|
||||
The API associated with opening a panel
|
||||
|
||||
<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 method signature is:
|
||||
The minimum options required to open a panel a unique `id` for the panel and the name of the `component` you want to render.
|
||||
|
||||
```ts
|
||||
const panel = api.addPanel({
|
||||
const panel: IDockviewPanel = api.addPanel({
|
||||
id: 'my_unique_panel_id',
|
||||
component: 'my_component',
|
||||
});
|
||||
```
|
||||
|
||||
where `id` is the unique id of the panel and `component` is the implenentation which
|
||||
will be used to render the panel. You will have registered this using the `components` prop of the `DockviewReactComponent` component.
|
||||
> See [Overview](/docs/core/overview) to learn how to register components.
|
||||
|
||||
You can optionally provide a `tabComponent` parameters to the `addPanel` method which will render the tab using a custom renderer.
|
||||
You will have registered this using the `tabComponents` prop of the `DockviewReactComponent` component.
|
||||
## Provide a custom Tab renderer
|
||||
|
||||
:::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
|
||||
const panel = api.addPanel({
|
||||
const panel: IDockviewPanel = api.addPanel({
|
||||
id: 'my_unique_panel_id',
|
||||
component: 'my_component',
|
||||
tabComponent: 'my_tab_component',
|
||||
});
|
||||
```
|
||||
|
||||
You can pass properties to the panel using the `params` key.
|
||||
You can update these properties through the panels `api` object and its `updateParameters` method.
|
||||
> See [Overview](/docs/core/overview) to learn how to register tab components.
|
||||
|
||||
## 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
|
||||
const panel = api.addPanel({
|
||||
const panel: IDockviewPanel = api.addPanel({
|
||||
id: 'my_unique_panel_id',
|
||||
component: 'my_component',
|
||||
params: {
|
||||
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
|
||||
> you want the panel to receive.
|
||||
## Rendering
|
||||
|
||||
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
|
||||
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.
|
||||
## Positioning the Panel
|
||||
|
||||
> If neither a `referencePanel` or `referenceGroup` is provided then the `direction` will be treated as absolute.
|
||||
|
||||
> If no `direction` is provided the library will place the new panel in a pre-determined position.
|
||||
### Relative to another Panel
|
||||
|
||||
```ts
|
||||
const panel = api.addPanel({
|
||||
id: 'panel_1',
|
||||
component: 'default',
|
||||
});
|
||||
|
||||
const panel2 = api.addPanel({
|
||||
const panel2: IDockviewPanel = api.addPanel({
|
||||
id: 'panel_2',
|
||||
component: 'default',
|
||||
position: {
|
||||
referencePanel: panel1,
|
||||
direction: 'right',
|
||||
},
|
||||
referencePanel: 'panel_1',
|
||||
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.
|
||||
These bounds are relative to the dockview component.
|
||||
### Relative to another Group
|
||||
|
||||
```ts
|
||||
const panel1 = api.addPanel({
|
||||
const panel2: IDockviewPanel = api.addPanel({
|
||||
id: 'panel_2',
|
||||
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,
|
||||
});
|
||||
|
||||
const panel2 = api.addPanel({
|
||||
api.addPanel({
|
||||
id: 'panel_2',
|
||||
component: 'default',
|
||||
floating: { x: 10, y: 10, width: 300, height: 300 },
|
||||
|
@ -3,9 +3,17 @@ title: Move Panel
|
||||
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
|
||||
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;
|
||||
group.api.moveTo({ group, position });
|
||||
```
|
||||
|
||||
## Live Example
|
||||
|
||||
To Be Completed...
|
||||
|
@ -3,17 +3,27 @@ title: Remove Panel
|
||||
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
|
||||
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
|
||||
const panel = api.getPanel('myPanel');
|
||||
const panel: IDockviewPanel = api.getPanel('myPanel');
|
||||
api.removePanel(panel);
|
||||
```
|
||||
|
@ -7,18 +7,66 @@ import { MultiFrameworkContainer } from '@site/src/components/ui/container';
|
||||
import DockviewRenderMode from '@site/sandboxes/rendermode-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
|
||||
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.
|
||||
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
|
||||
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
|
||||
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.
|
||||
- `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
|
||||
HTMLElement and hidden the HTMLElement with `display: none` when it should be hidden.
|
||||
1. (*onlyWhenVisible*) Remove the element from the DOM tree to make space for the new panel.
|
||||
|
||||
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,
|
||||
this is also true for any active ResizeObservers.
|
||||
|
||||
```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
|
||||
height={500}
|
||||
|
@ -4,49 +4,43 @@ sidebar_position: 2
|
||||
---
|
||||
|
||||
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.
|
||||
|
||||
:::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.
|
||||
**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']} />
|
||||
|
||||
## 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
|
||||
const panel = api.addPanel({
|
||||
id: 'panel_1',
|
||||
component: 'default',
|
||||
params: {
|
||||
keyA: 'valueA',
|
||||
},
|
||||
});
|
||||
|
||||
// ...
|
||||
|
||||
panel.api.updateParameters({
|
||||
keyB: 'valueB',
|
||||
});
|
||||
|
||||
// ...
|
||||
|
||||
panel.api.updateParameters({
|
||||
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
|
||||
panel.api.updateParameters({
|
||||
keyA: undefined, // this will delete 'keyA'.
|
||||
keyA: undefined,
|
||||
});
|
||||
```
|
||||
|
||||
## Live Example
|
||||
|
||||
<LiveExample framework="react" id="dockview/update-parameters"/>
|
||||
|
@ -260,6 +260,9 @@ const config = {
|
||||
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>`,
|
||||
},
|
||||
tableOfContents: {
|
||||
maxHeadingLevel: 5,
|
||||
},
|
||||
}),
|
||||
};
|
||||
|
||||
|
@ -23,9 +23,9 @@
|
||||
]
|
||||
},
|
||||
"dependencies": {
|
||||
"@docusaurus/core": "^3.1.0",
|
||||
"@docusaurus/module-type-aliases": "^3.1.0",
|
||||
"@docusaurus/preset-classic": "^3.1.0",
|
||||
"@docusaurus/core": "^3.1.1",
|
||||
"@docusaurus/module-type-aliases": "^3.1.1",
|
||||
"@docusaurus/preset-classic": "^3.1.1",
|
||||
"@mdx-js/react": "^3.0.0",
|
||||
"@minoru/react-dnd-treeview": "^3.4.4",
|
||||
"@radix-ui/react-icons": "^1.3.0",
|
||||
|
@ -5,6 +5,7 @@ import {
|
||||
IDockviewPanelHeaderProps,
|
||||
IDockviewPanelProps,
|
||||
IDockviewHeaderActionsProps,
|
||||
DockviewApi,
|
||||
} from 'dockview';
|
||||
import * as React from 'react';
|
||||
import * as ReactDOM from 'react-dom';
|
||||
@ -38,6 +39,17 @@ const components = {
|
||||
</div>
|
||||
);
|
||||
},
|
||||
iframe: () => {
|
||||
return (
|
||||
<iframe
|
||||
style={{
|
||||
width: '100%',
|
||||
height: '100%',
|
||||
}}
|
||||
src="https://dockview.dev"
|
||||
/>
|
||||
);
|
||||
},
|
||||
};
|
||||
|
||||
const headerComponents = {
|
||||
@ -114,7 +126,7 @@ const RightControls = (props: IDockviewHeaderActionsProps) => {
|
||||
};
|
||||
|
||||
const onClick2 = () => {
|
||||
if (props.api.location !== 'popout') {
|
||||
if (props.api.location.type !== 'popout') {
|
||||
props.containerApi.addPopoutGroup(props.group);
|
||||
} else {
|
||||
props.api.moveTo({ position: 'right' });
|
||||
@ -198,10 +210,21 @@ const PrefixHeaderControls = (props: IDockviewHeaderActionsProps) => {
|
||||
};
|
||||
|
||||
const DockviewDemo = (props: { theme?: string }) => {
|
||||
const [api, setApi] = React.useState<DockviewApi>();
|
||||
|
||||
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({
|
||||
id: 'panel_1',
|
||||
component: 'default',
|
||||
component: 'iframe',
|
||||
renderer: 'always',
|
||||
title: 'Panel 1',
|
||||
});
|
||||
|
||||
@ -258,15 +281,64 @@ const DockviewDemo = (props: { theme?: string }) => {
|
||||
};
|
||||
|
||||
return (
|
||||
<DockviewReact
|
||||
components={components}
|
||||
defaultTabComponent={headerComponents.default}
|
||||
rightHeaderActionsComponent={RightControls}
|
||||
leftHeaderActionsComponent={LeftControls}
|
||||
prefixHeaderActionsComponent={PrefixHeaderControls}
|
||||
onReady={onReady}
|
||||
className={props.theme || 'dockview-theme-abyss'}
|
||||
/>
|
||||
<div
|
||||
style={{ height: '100%', display: 'flex', flexDirection: 'column' }}
|
||||
>
|
||||
<div>
|
||||
<button
|
||||
onClick={() => {
|
||||
if (!api) {
|
||||
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>
|
||||
);
|
||||
};
|
||||
|
||||
|
@ -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"
|
||||
]
|
||||
}
|
@ -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>
|
@ -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;
|
@ -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>
|
||||
);
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
body {
|
||||
margin: 0px;
|
||||
color: white;
|
||||
font-family: sans-serif;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#root {
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
}
|
||||
|
||||
.app {
|
||||
height: 100%;
|
||||
|
||||
}
|
@ -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
|
||||
}
|
||||
}
|
28
packages/docs/src/components/ui/exampleFrame.tsx
Normal file
28
packages/docs/src/components/ui/exampleFrame.tsx
Normal 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;
|
@ -7,7 +7,8 @@ export interface DocRefProps {
|
||||
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 DocsTag = { tag: string; content: DocsContent[] };
|
||||
@ -15,13 +16,19 @@ type DocsComment = {
|
||||
summary?: DocsContent[];
|
||||
blockTags?: DocsTag[];
|
||||
};
|
||||
type Doc = {
|
||||
name: string;
|
||||
code: string;
|
||||
comment?: DocsComment;
|
||||
kind: 'accessor' | 'property' | 'method';
|
||||
pieces: string[];
|
||||
};
|
||||
type DocsJson = {
|
||||
[index: string]: Array<{
|
||||
name: string;
|
||||
code: string;
|
||||
comment?: DocsComment;
|
||||
kind: 'accessor' | 'property' | 'method';
|
||||
}>;
|
||||
[index: string]: {
|
||||
kind: string;
|
||||
metadata?: Doc;
|
||||
children: Doc[];
|
||||
};
|
||||
};
|
||||
|
||||
export const Text = (props: { content: DocsContent[] }) => {
|
||||
@ -74,87 +81,125 @@ export const Markdown = (props: { children: string }) => {
|
||||
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) => {
|
||||
const docs = React.useMemo(
|
||||
() => (docsJson as DocsJson)[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) {
|
||||
return null;
|
||||
return <span>{`Failed to find docs for '${props.declaration}'`}</span>;
|
||||
}
|
||||
|
||||
return (
|
||||
<table className="doc-ref-table">
|
||||
<tbody>
|
||||
{docs.map((doc) => {
|
||||
if (props.methods && !props.methods.includes(doc.name)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
{filteredDocs.map((doc, i) => {
|
||||
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',
|
||||
}}
|
||||
>
|
||||
{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>
|
||||
<>
|
||||
<Row key={i} doc={doc} />
|
||||
{/* {doc.pieces?.map((piece) => (
|
||||
<tr>
|
||||
<th colSpan={2}>
|
||||
<Piece piece={piece} />
|
||||
</th>
|
||||
</tr>
|
||||
))} */}
|
||||
</>
|
||||
);
|
||||
})}
|
||||
</tbody>
|
||||
|
File diff suppressed because it is too large
Load Diff
256
scripts/docs.mjs
256
scripts/docs.mjs
@ -67,8 +67,9 @@ const dockviewCore = content.children.find(
|
||||
const dockview = content.children.find((child) => child.name === 'dockview');
|
||||
|
||||
const declarations = [dockviewCore, dockview]
|
||||
.flatMap((item) =>
|
||||
item.children.filter((child) => DOCUMENT_LIST.includes(child.name))
|
||||
.flatMap(
|
||||
(item) => item.children
|
||||
// .filter((child) => DOCUMENT_LIST.includes(child.name))
|
||||
)
|
||||
.filter(Boolean);
|
||||
|
||||
@ -93,44 +94,77 @@ function parseType(obj) {
|
||||
return `${obj.qualifiedName ?? obj.name}${parseTypeArguments(obj)}`;
|
||||
case 'array':
|
||||
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:
|
||||
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) {
|
||||
const { name, comment, flags } = data;
|
||||
|
||||
let code = '';
|
||||
const pieces = [];
|
||||
|
||||
switch (data.kind) {
|
||||
case ReflectionKind.Accessor: // 262144
|
||||
if (!data.getSignature) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const getSignature = parse(data.getSignature);
|
||||
code += getSignature.code;
|
||||
pieces.push(...getSignature.pieces);
|
||||
|
||||
return {
|
||||
name,
|
||||
code,
|
||||
kind: 'accessor',
|
||||
comment: getSignature.comment,
|
||||
pieces,
|
||||
};
|
||||
case ReflectionKind.Method: // 2048
|
||||
if (data.signatures.length > 1) {
|
||||
throw new Error('unhandled');
|
||||
}
|
||||
const methodSignature = data.signatures.map((signature) =>
|
||||
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, code, kind: 'method', comment: signature.comment };
|
||||
return {
|
||||
name,
|
||||
code,
|
||||
kind: 'method',
|
||||
comment: data.signatures[0].comment,
|
||||
pieces,
|
||||
};
|
||||
case ReflectionKind.Property: // 1024
|
||||
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
|
||||
code += `${name}`;
|
||||
|
||||
@ -140,10 +174,12 @@ function parse(data) {
|
||||
code += ': ';
|
||||
|
||||
code += parseType(data.type);
|
||||
pieces.push(extractPiecesFromType(data.type));
|
||||
|
||||
return {
|
||||
name,
|
||||
code,
|
||||
pieces,
|
||||
};
|
||||
case ReflectionKind.TypeLiteral: // 65536
|
||||
if (Array.isArray(data.children)) {
|
||||
@ -155,7 +191,10 @@ function parse(data) {
|
||||
if (child.flags.isOptional) {
|
||||
code += '?';
|
||||
}
|
||||
code += `: ${parse(child).code}`;
|
||||
const childData = parse(child);
|
||||
pieces.push(...childData.pieces);
|
||||
|
||||
code += `: ${childData.code}`;
|
||||
return code;
|
||||
})
|
||||
.join(', ');
|
||||
@ -163,23 +202,34 @@ function parse(data) {
|
||||
}
|
||||
|
||||
if (Array.isArray(data.signatures)) {
|
||||
code += data.signatures
|
||||
.map((signature) => parse(signature).code)
|
||||
const signatures = data.signatures.map((signature) =>
|
||||
parse(signature)
|
||||
);
|
||||
code += signatures
|
||||
.map((signature) => signature.code)
|
||||
.join(', ');
|
||||
pieces.push(...signatures.flatMap((_) => _.pieces));
|
||||
}
|
||||
|
||||
return { name, code };
|
||||
return { name, code, pieces };
|
||||
case ReflectionKind.CallSignature: // 4096
|
||||
// don't care for constrcutors
|
||||
|
||||
if (Array.isArray(data.typeParameter)) {
|
||||
code += `<${data.typeParameter.map((typeParameter) => {
|
||||
let type = `${typeParameter.name} extends ${parseType(
|
||||
typeParameter.type
|
||||
)}`;
|
||||
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;
|
||||
@ -189,57 +239,191 @@ function parse(data) {
|
||||
code += '(';
|
||||
|
||||
if (Array.isArray(data.parameters)) {
|
||||
code += `${data.parameters
|
||||
.map((parameter) => parse(parameter).code)
|
||||
const parameters = data.parameters.map((parameter) =>
|
||||
parse(parameter)
|
||||
);
|
||||
code += `${parameters
|
||||
.map((parameter) => parameter.code)
|
||||
.join(', ')}`;
|
||||
pieces.push(...parameters.flatMap((_) => _.pieces));
|
||||
}
|
||||
|
||||
code += '): ';
|
||||
|
||||
code += parseType(data.type);
|
||||
pieces.push(extractPiecesFromType(data.type));
|
||||
|
||||
return {
|
||||
name,
|
||||
comment,
|
||||
code,
|
||||
pieces,
|
||||
};
|
||||
case ReflectionKind.GetSignature: // 524288
|
||||
code += parseType(data.type);
|
||||
pieces.push(extractPiecesFromType(data.type));
|
||||
|
||||
return {
|
||||
name,
|
||||
comment,
|
||||
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:
|
||||
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) {
|
||||
const documentation = {};
|
||||
|
||||
for (const declaration of declarations) {
|
||||
const { children, name } = declaration;
|
||||
|
||||
documentation[name] = [];
|
||||
/**
|
||||
* 4: Namespace
|
||||
* 8: Enum
|
||||
* 64: Function
|
||||
* 128: Class
|
||||
* 256: Interface
|
||||
* 2097152: TypeAlias
|
||||
*/
|
||||
|
||||
for (const child of children) {
|
||||
try {
|
||||
const { flags } = child;
|
||||
const metadata = parseDeclarationMetadata(declaration);
|
||||
|
||||
if (flags.isPrivate) {
|
||||
continue;
|
||||
documentation[name] = {
|
||||
...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
354
yarn.lock
@ -2059,10 +2059,10 @@
|
||||
"@docsearch/css" "3.5.2"
|
||||
algoliasearch "^4.19.1"
|
||||
|
||||
"@docusaurus/core@3.1.0", "@docusaurus/core@^3.1.0":
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.1.0.tgz#b66e7eaf867c1f44738d725d217a1c0e879629d7"
|
||||
integrity sha512-GWudMGYA9v26ssbAWJNfgeDZk+lrudUTclLPRsmxiknEBk7UMp7Rglonhqbsf3IKHOyHkMU4Fr5jFyg5SBx9jQ==
|
||||
"@docusaurus/core@3.1.1", "@docusaurus/core@^3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.1.1.tgz#29ce8df7a3d3d12ee8962d6d86133b87235ff17b"
|
||||
integrity sha512-2nQfKFcf+MLEM7JXsXwQxPOmQAR6ytKMZVSx7tVi9HEm9WtfwBH1fp6bn8Gj4zLUhjWKCLoysQ9/Wm+EZCQ4yQ==
|
||||
dependencies:
|
||||
"@babel/core" "^7.23.3"
|
||||
"@babel/generator" "^7.23.3"
|
||||
@ -2074,13 +2074,13 @@
|
||||
"@babel/runtime" "^7.22.6"
|
||||
"@babel/runtime-corejs3" "^7.22.6"
|
||||
"@babel/traverse" "^7.22.8"
|
||||
"@docusaurus/cssnano-preset" "3.1.0"
|
||||
"@docusaurus/logger" "3.1.0"
|
||||
"@docusaurus/mdx-loader" "3.1.0"
|
||||
"@docusaurus/cssnano-preset" "3.1.1"
|
||||
"@docusaurus/logger" "3.1.1"
|
||||
"@docusaurus/mdx-loader" "3.1.1"
|
||||
"@docusaurus/react-loadable" "5.5.2"
|
||||
"@docusaurus/utils" "3.1.0"
|
||||
"@docusaurus/utils-common" "3.1.0"
|
||||
"@docusaurus/utils-validation" "3.1.0"
|
||||
"@docusaurus/utils" "3.1.1"
|
||||
"@docusaurus/utils-common" "3.1.1"
|
||||
"@docusaurus/utils-validation" "3.1.1"
|
||||
"@slorber/static-site-generator-webpack-plugin" "^4.0.7"
|
||||
"@svgr/webpack" "^6.5.1"
|
||||
autoprefixer "^10.4.14"
|
||||
@ -2134,34 +2134,34 @@
|
||||
webpack-merge "^5.9.0"
|
||||
webpackbar "^5.0.2"
|
||||
|
||||
"@docusaurus/cssnano-preset@3.1.0":
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.1.0.tgz#b3fe7134cc4d0c1950eeb1c940089a190591ad4e"
|
||||
integrity sha512-ned7qsgCqSv/e7KyugFNroAfiszuxLwnvMW7gmT2Ywxb/Nyt61yIw7KHyAZCMKglOalrqnYA4gMhLUCK/mVePA==
|
||||
"@docusaurus/cssnano-preset@3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.1.1.tgz#03a4cb8e6d41654d7ff5ed79fddd73fd224feea4"
|
||||
integrity sha512-LnoIDjJWbirdbVZDMq+4hwmrTl2yHDnBf9MLG9qyExeAE3ac35s4yUhJI8yyTCdixzNfKit4cbXblzzqMu4+8g==
|
||||
dependencies:
|
||||
cssnano-preset-advanced "^5.3.10"
|
||||
postcss "^8.4.26"
|
||||
postcss-sort-media-queries "^4.4.1"
|
||||
tslib "^2.6.0"
|
||||
|
||||
"@docusaurus/logger@3.1.0":
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.1.0.tgz#eef6475c2d59a3ae7e138ac1f60007d6fafd76b0"
|
||||
integrity sha512-p740M+HCst1VnKKzL60Hru9xfG4EUYJDarjlEC4hHeBy9+afPmY3BNPoSHx9/8zxuYfUlv/psf7I9NvRVdmdvg==
|
||||
"@docusaurus/logger@3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.1.1.tgz#423e8270c00a57b1b3a0cc8a3ee0a4c522a68387"
|
||||
integrity sha512-BjkNDpQzewcTnST8trx4idSoAla6zZ3w22NqM/UMcFtvYJgmoE4layuTzlfql3VFPNuivvj7BOExa/+21y4X2Q==
|
||||
dependencies:
|
||||
chalk "^4.1.2"
|
||||
tslib "^2.6.0"
|
||||
|
||||
"@docusaurus/mdx-loader@3.1.0":
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.1.0.tgz#61d562ff442f62ef04cc31d3f0d5865a8dd390e4"
|
||||
integrity sha512-D7onDz/3mgBonexWoQXPw3V2E5Bc4+jYRf9gGUUK+KoQwU8xMDaDkUUfsr7t6UBa/xox9p5+/3zwLuXOYMzGSg==
|
||||
"@docusaurus/mdx-loader@3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.1.1.tgz#f79290abc5044bef1d7ecac4eccec887058b8e03"
|
||||
integrity sha512-xN2IccH9+sv7TmxwsDJNS97BHdmlqWwho+kIVY4tcCXkp+k4QuzvWBeunIMzeayY4Fu13A6sAjHGv5qm72KyGA==
|
||||
dependencies:
|
||||
"@babel/parser" "^7.22.7"
|
||||
"@babel/traverse" "^7.22.8"
|
||||
"@docusaurus/logger" "3.1.0"
|
||||
"@docusaurus/utils" "3.1.0"
|
||||
"@docusaurus/utils-validation" "3.1.0"
|
||||
"@docusaurus/logger" "3.1.1"
|
||||
"@docusaurus/utils" "3.1.1"
|
||||
"@docusaurus/utils-validation" "3.1.1"
|
||||
"@mdx-js/mdx" "^3.0.0"
|
||||
"@slorber/remark-comment" "^1.0.0"
|
||||
escape-html "^1.0.3"
|
||||
@ -2184,13 +2184,13 @@
|
||||
vfile "^6.0.1"
|
||||
webpack "^5.88.1"
|
||||
|
||||
"@docusaurus/module-type-aliases@3.1.0", "@docusaurus/module-type-aliases@^3.1.0":
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.1.0.tgz#f3451702f143557bfde0502287713a08086a0415"
|
||||
integrity sha512-XUl7Z4PWlKg4l6KF05JQ3iDHQxnPxbQUqTNKvviHyuHdlalOFv6qeDAm7IbzyQPJD5VA6y4dpRbTWSqP9ClwPg==
|
||||
"@docusaurus/module-type-aliases@3.1.1", "@docusaurus/module-type-aliases@^3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.1.1.tgz#b304402b0535a13ebd4c0db1c368d2604d54d02f"
|
||||
integrity sha512-xBJyx0TMfAfVZ9ZeIOb1awdXgR4YJMocIEzTps91rq+hJDFJgJaylDtmoRhUxkwuYmNK1GJpW95b7DLztSBJ3A==
|
||||
dependencies:
|
||||
"@docusaurus/react-loadable" "5.5.2"
|
||||
"@docusaurus/types" "3.1.0"
|
||||
"@docusaurus/types" "3.1.1"
|
||||
"@types/history" "^4.7.11"
|
||||
"@types/react" "*"
|
||||
"@types/react-router-config" "*"
|
||||
@ -2198,18 +2198,18 @@
|
||||
react-helmet-async "*"
|
||||
react-loadable "npm:@docusaurus/react-loadable@5.5.2"
|
||||
|
||||
"@docusaurus/plugin-content-blog@3.1.0":
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.1.0.tgz#d2102e9286486e526dbc0dfc741e53dc5cee0ff0"
|
||||
integrity sha512-iMa6WBaaEdYuxckvJtLcq/HQdlA4oEbCXf/OFfsYJCCULcDX7GDZpKxLF3X1fLsax3sSm5bmsU+CA0WD+R1g3A==
|
||||
"@docusaurus/plugin-content-blog@3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.1.1.tgz#16f4fd723227b2158461bba6b9bcc18c1926f7ea"
|
||||
integrity sha512-ew/3VtVoG3emoAKmoZl7oKe1zdFOsI0NbcHS26kIxt2Z8vcXKCUgK9jJJrz0TbOipyETPhqwq4nbitrY3baibg==
|
||||
dependencies:
|
||||
"@docusaurus/core" "3.1.0"
|
||||
"@docusaurus/logger" "3.1.0"
|
||||
"@docusaurus/mdx-loader" "3.1.0"
|
||||
"@docusaurus/types" "3.1.0"
|
||||
"@docusaurus/utils" "3.1.0"
|
||||
"@docusaurus/utils-common" "3.1.0"
|
||||
"@docusaurus/utils-validation" "3.1.0"
|
||||
"@docusaurus/core" "3.1.1"
|
||||
"@docusaurus/logger" "3.1.1"
|
||||
"@docusaurus/mdx-loader" "3.1.1"
|
||||
"@docusaurus/types" "3.1.1"
|
||||
"@docusaurus/utils" "3.1.1"
|
||||
"@docusaurus/utils-common" "3.1.1"
|
||||
"@docusaurus/utils-validation" "3.1.1"
|
||||
cheerio "^1.0.0-rc.12"
|
||||
feed "^4.2.2"
|
||||
fs-extra "^11.1.1"
|
||||
@ -2221,18 +2221,18 @@
|
||||
utility-types "^3.10.0"
|
||||
webpack "^5.88.1"
|
||||
|
||||
"@docusaurus/plugin-content-docs@3.1.0":
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.1.0.tgz#55d7bdb8e14f854ea6c6e256f1b51b8c17963c19"
|
||||
integrity sha512-el5GxhT8BLrsWD0qGa8Rq+Ttb/Ni6V3DGT2oAPio0qcs/mUAxeyXEAmihkvmLCnAgp6xD27Ce7dISZ5c6BXeqA==
|
||||
"@docusaurus/plugin-content-docs@3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.1.1.tgz#f2eddebf351dd8dd504a2c26061165c519e1f964"
|
||||
integrity sha512-lhFq4E874zw0UOH7ujzxnCayOyAt0f9YPVYSb9ohxrdCM8B4szxitUw9rIX4V9JLLHVoqIJb6k+lJJ1jrcGJ0A==
|
||||
dependencies:
|
||||
"@docusaurus/core" "3.1.0"
|
||||
"@docusaurus/logger" "3.1.0"
|
||||
"@docusaurus/mdx-loader" "3.1.0"
|
||||
"@docusaurus/module-type-aliases" "3.1.0"
|
||||
"@docusaurus/types" "3.1.0"
|
||||
"@docusaurus/utils" "3.1.0"
|
||||
"@docusaurus/utils-validation" "3.1.0"
|
||||
"@docusaurus/core" "3.1.1"
|
||||
"@docusaurus/logger" "3.1.1"
|
||||
"@docusaurus/mdx-loader" "3.1.1"
|
||||
"@docusaurus/module-type-aliases" "3.1.1"
|
||||
"@docusaurus/types" "3.1.1"
|
||||
"@docusaurus/utils" "3.1.1"
|
||||
"@docusaurus/utils-validation" "3.1.1"
|
||||
"@types/react-router-config" "^5.0.7"
|
||||
combine-promises "^1.1.0"
|
||||
fs-extra "^11.1.1"
|
||||
@ -2242,96 +2242,96 @@
|
||||
utility-types "^3.10.0"
|
||||
webpack "^5.88.1"
|
||||
|
||||
"@docusaurus/plugin-content-pages@3.1.0":
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.1.0.tgz#cdb73c804ded307e81ceea39874dc0bb540c2dc4"
|
||||
integrity sha512-9gntYQFpk+93+Xl7gYczJu8I9uWoyRLnRwS0+NUFcs9iZtHKsdqKWPRrONC9elfN3wJ9ORwTbcVzsTiB8jvYlg==
|
||||
"@docusaurus/plugin-content-pages@3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.1.1.tgz#05aec68c2abeac2140c7a16d4c5b506bf4d19fb2"
|
||||
integrity sha512-NQHncNRAJbyLtgTim9GlEnNYsFhuCxaCNkMwikuxLTiGIPH7r/jpb7O3f3jUMYMebZZZrDq5S7om9a6rvB/YCA==
|
||||
dependencies:
|
||||
"@docusaurus/core" "3.1.0"
|
||||
"@docusaurus/mdx-loader" "3.1.0"
|
||||
"@docusaurus/types" "3.1.0"
|
||||
"@docusaurus/utils" "3.1.0"
|
||||
"@docusaurus/utils-validation" "3.1.0"
|
||||
"@docusaurus/core" "3.1.1"
|
||||
"@docusaurus/mdx-loader" "3.1.1"
|
||||
"@docusaurus/types" "3.1.1"
|
||||
"@docusaurus/utils" "3.1.1"
|
||||
"@docusaurus/utils-validation" "3.1.1"
|
||||
fs-extra "^11.1.1"
|
||||
tslib "^2.6.0"
|
||||
webpack "^5.88.1"
|
||||
|
||||
"@docusaurus/plugin-debug@3.1.0":
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-3.1.0.tgz#545872bc8f9cd697d9f1d6c695f8a1674bfc149c"
|
||||
integrity sha512-AbvJwCVRbmQ8w9d8QXbF4Iq/ui0bjPZNYFIhtducGFnm2YQRN1mraK8mCEQb0Aq0T8SqRRvSfC/far4n/s531w==
|
||||
"@docusaurus/plugin-debug@3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-3.1.1.tgz#cee5aae1fef288fb93f68894db79a2612e313d3f"
|
||||
integrity sha512-xWeMkueM9wE/8LVvl4+Qf1WqwXmreMjI5Kgr7GYCDoJ8zu4kD+KaMhrh7py7MNM38IFvU1RfrGKacCEe2DRRfQ==
|
||||
dependencies:
|
||||
"@docusaurus/core" "3.1.0"
|
||||
"@docusaurus/types" "3.1.0"
|
||||
"@docusaurus/utils" "3.1.0"
|
||||
"@docusaurus/core" "3.1.1"
|
||||
"@docusaurus/types" "3.1.1"
|
||||
"@docusaurus/utils" "3.1.1"
|
||||
fs-extra "^11.1.1"
|
||||
react-json-view-lite "^1.2.0"
|
||||
tslib "^2.6.0"
|
||||
|
||||
"@docusaurus/plugin-google-analytics@3.1.0":
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.1.0.tgz#3035eace3121db16aec7c10852ebb4cd860f4434"
|
||||
integrity sha512-zvUOMzu9Uhz0ciqnSbtnp/5i1zEYlzarQrOXG90P3Is3efQI43p2YLW/rzSGdLb5MfQo2HvKT6Q5+tioMO045Q==
|
||||
"@docusaurus/plugin-google-analytics@3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.1.1.tgz#bfc58205b4fcaf3222e04f9c3542f3bef9804887"
|
||||
integrity sha512-+q2UpWTqVi8GdlLoSlD5bS/YpxW+QMoBwrPrUH/NpvpuOi0Of7MTotsQf9JWd3hymZxl2uu1o3PIrbpxfeDFDQ==
|
||||
dependencies:
|
||||
"@docusaurus/core" "3.1.0"
|
||||
"@docusaurus/types" "3.1.0"
|
||||
"@docusaurus/utils-validation" "3.1.0"
|
||||
"@docusaurus/core" "3.1.1"
|
||||
"@docusaurus/types" "3.1.1"
|
||||
"@docusaurus/utils-validation" "3.1.1"
|
||||
tslib "^2.6.0"
|
||||
|
||||
"@docusaurus/plugin-google-gtag@3.1.0":
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.1.0.tgz#2f4040da81d36bfc6324abc1a12b258e6c7f202a"
|
||||
integrity sha512-0txshvaY8qIBdkk2UATdVcfiCLGq3KAUfuRQD2cRNgO39iIf4/ihQxH9NXcRTwKs4Q5d9yYHoix3xT6pFuEYOg==
|
||||
"@docusaurus/plugin-google-gtag@3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.1.1.tgz#7e8b5aa6847a12461c104a65a335f4a45dae2f28"
|
||||
integrity sha512-0mMPiBBlQ5LFHTtjxuvt/6yzh8v7OxLi3CbeEsxXZpUzcKO/GC7UA1VOWUoBeQzQL508J12HTAlR3IBU9OofSw==
|
||||
dependencies:
|
||||
"@docusaurus/core" "3.1.0"
|
||||
"@docusaurus/types" "3.1.0"
|
||||
"@docusaurus/utils-validation" "3.1.0"
|
||||
"@docusaurus/core" "3.1.1"
|
||||
"@docusaurus/types" "3.1.1"
|
||||
"@docusaurus/utils-validation" "3.1.1"
|
||||
"@types/gtag.js" "^0.0.12"
|
||||
tslib "^2.6.0"
|
||||
|
||||
"@docusaurus/plugin-google-tag-manager@3.1.0":
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.1.0.tgz#4c026e9f65468a332326770f95ccd9c6e12d564b"
|
||||
integrity sha512-zOWPEi8kMyyPtwG0vhyXrdbLs8fIZmY5vlbi9lUU+v8VsroO5iHmfR2V3SMsrsfOanw5oV/ciWqbxezY00qEZg==
|
||||
"@docusaurus/plugin-google-tag-manager@3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.1.1.tgz#e1aae4d821e786d133386b4ae6e6fe66a4bc0089"
|
||||
integrity sha512-d07bsrMLdDIryDtY17DgqYUbjkswZQr8cLWl4tzXrt5OR/T/zxC1SYKajzB3fd87zTu5W5klV5GmUwcNSMXQXA==
|
||||
dependencies:
|
||||
"@docusaurus/core" "3.1.0"
|
||||
"@docusaurus/types" "3.1.0"
|
||||
"@docusaurus/utils-validation" "3.1.0"
|
||||
"@docusaurus/core" "3.1.1"
|
||||
"@docusaurus/types" "3.1.1"
|
||||
"@docusaurus/utils-validation" "3.1.1"
|
||||
tslib "^2.6.0"
|
||||
|
||||
"@docusaurus/plugin-sitemap@3.1.0":
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.1.0.tgz#9d9dbb4d87e6dc46ae9321badf6ac7cd9aa96b23"
|
||||
integrity sha512-TkR5vGBpUooEB9SoW42thahqqwKzfHrQQhkB+JrEGERsl4bKODSuJNle4aA4h6LSkg4IyfXOW8XOI0NIPWb9Cg==
|
||||
"@docusaurus/plugin-sitemap@3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.1.1.tgz#8828bf5e2922273aad207a35189f22913e6a0dfd"
|
||||
integrity sha512-iJ4hCaMmDaUqRv131XJdt/C/jJQx8UreDWTRqZKtNydvZVh/o4yXGRRFOplea1D9b/zpwL1Y+ZDwX7xMhIOTmg==
|
||||
dependencies:
|
||||
"@docusaurus/core" "3.1.0"
|
||||
"@docusaurus/logger" "3.1.0"
|
||||
"@docusaurus/types" "3.1.0"
|
||||
"@docusaurus/utils" "3.1.0"
|
||||
"@docusaurus/utils-common" "3.1.0"
|
||||
"@docusaurus/utils-validation" "3.1.0"
|
||||
"@docusaurus/core" "3.1.1"
|
||||
"@docusaurus/logger" "3.1.1"
|
||||
"@docusaurus/types" "3.1.1"
|
||||
"@docusaurus/utils" "3.1.1"
|
||||
"@docusaurus/utils-common" "3.1.1"
|
||||
"@docusaurus/utils-validation" "3.1.1"
|
||||
fs-extra "^11.1.1"
|
||||
sitemap "^7.1.1"
|
||||
tslib "^2.6.0"
|
||||
|
||||
"@docusaurus/preset-classic@^3.1.0":
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-3.1.0.tgz#ca67d5e416c211b4c23f0fb01f0e3e36b759dfa0"
|
||||
integrity sha512-xGLQRFmmT9IinAGUDVRYZ54Ys28USNbA3OTXQXnSJLPr1rCY7CYnHI4XoOnKWrNnDiAI4ruMzunXWyaElUYCKQ==
|
||||
"@docusaurus/preset-classic@^3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-3.1.1.tgz#15fd80012529dafd7e01cc0bce59d39ee6ad6bf5"
|
||||
integrity sha512-jG4ys/hWYf69iaN/xOmF+3kjs4Nnz1Ay3CjFLDtYa8KdxbmUhArA9HmP26ru5N0wbVWhY+6kmpYhTJpez5wTyg==
|
||||
dependencies:
|
||||
"@docusaurus/core" "3.1.0"
|
||||
"@docusaurus/plugin-content-blog" "3.1.0"
|
||||
"@docusaurus/plugin-content-docs" "3.1.0"
|
||||
"@docusaurus/plugin-content-pages" "3.1.0"
|
||||
"@docusaurus/plugin-debug" "3.1.0"
|
||||
"@docusaurus/plugin-google-analytics" "3.1.0"
|
||||
"@docusaurus/plugin-google-gtag" "3.1.0"
|
||||
"@docusaurus/plugin-google-tag-manager" "3.1.0"
|
||||
"@docusaurus/plugin-sitemap" "3.1.0"
|
||||
"@docusaurus/theme-classic" "3.1.0"
|
||||
"@docusaurus/theme-common" "3.1.0"
|
||||
"@docusaurus/theme-search-algolia" "3.1.0"
|
||||
"@docusaurus/types" "3.1.0"
|
||||
"@docusaurus/core" "3.1.1"
|
||||
"@docusaurus/plugin-content-blog" "3.1.1"
|
||||
"@docusaurus/plugin-content-docs" "3.1.1"
|
||||
"@docusaurus/plugin-content-pages" "3.1.1"
|
||||
"@docusaurus/plugin-debug" "3.1.1"
|
||||
"@docusaurus/plugin-google-analytics" "3.1.1"
|
||||
"@docusaurus/plugin-google-gtag" "3.1.1"
|
||||
"@docusaurus/plugin-google-tag-manager" "3.1.1"
|
||||
"@docusaurus/plugin-sitemap" "3.1.1"
|
||||
"@docusaurus/theme-classic" "3.1.1"
|
||||
"@docusaurus/theme-common" "3.1.1"
|
||||
"@docusaurus/theme-search-algolia" "3.1.1"
|
||||
"@docusaurus/types" "3.1.1"
|
||||
|
||||
"@docusaurus/react-loadable@5.5.2", "react-loadable@npm:@docusaurus/react-loadable@5.5.2":
|
||||
version "5.5.2"
|
||||
@ -2341,23 +2341,23 @@
|
||||
"@types/react" "*"
|
||||
prop-types "^15.6.2"
|
||||
|
||||
"@docusaurus/theme-classic@3.1.0":
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-3.1.0.tgz#6ee68bf4d4db53c8d9b18d4866512abadb00a802"
|
||||
integrity sha512-/+jMl2Z9O8QQxves5AtHdt91gWsEZFgOV3La/6eyKEd7QLqQUtM5fxEJ40rq9NKYjqCd1HzZ9egIMeJoWwillw==
|
||||
"@docusaurus/theme-classic@3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-3.1.1.tgz#0a188c787fc4bf2bb525cc30c7aa34e555ee96b8"
|
||||
integrity sha512-GiPE/jbWM8Qv1A14lk6s9fhc0LhPEQ00eIczRO4QL2nAQJZXkjPG6zaVx+1cZxPFWbAsqSjKe2lqkwF3fGkQ7Q==
|
||||
dependencies:
|
||||
"@docusaurus/core" "3.1.0"
|
||||
"@docusaurus/mdx-loader" "3.1.0"
|
||||
"@docusaurus/module-type-aliases" "3.1.0"
|
||||
"@docusaurus/plugin-content-blog" "3.1.0"
|
||||
"@docusaurus/plugin-content-docs" "3.1.0"
|
||||
"@docusaurus/plugin-content-pages" "3.1.0"
|
||||
"@docusaurus/theme-common" "3.1.0"
|
||||
"@docusaurus/theme-translations" "3.1.0"
|
||||
"@docusaurus/types" "3.1.0"
|
||||
"@docusaurus/utils" "3.1.0"
|
||||
"@docusaurus/utils-common" "3.1.0"
|
||||
"@docusaurus/utils-validation" "3.1.0"
|
||||
"@docusaurus/core" "3.1.1"
|
||||
"@docusaurus/mdx-loader" "3.1.1"
|
||||
"@docusaurus/module-type-aliases" "3.1.1"
|
||||
"@docusaurus/plugin-content-blog" "3.1.1"
|
||||
"@docusaurus/plugin-content-docs" "3.1.1"
|
||||
"@docusaurus/plugin-content-pages" "3.1.1"
|
||||
"@docusaurus/theme-common" "3.1.1"
|
||||
"@docusaurus/theme-translations" "3.1.1"
|
||||
"@docusaurus/types" "3.1.1"
|
||||
"@docusaurus/utils" "3.1.1"
|
||||
"@docusaurus/utils-common" "3.1.1"
|
||||
"@docusaurus/utils-validation" "3.1.1"
|
||||
"@mdx-js/react" "^3.0.0"
|
||||
clsx "^2.0.0"
|
||||
copy-text-to-clipboard "^3.2.0"
|
||||
@ -2372,18 +2372,18 @@
|
||||
tslib "^2.6.0"
|
||||
utility-types "^3.10.0"
|
||||
|
||||
"@docusaurus/theme-common@3.1.0":
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-3.1.0.tgz#d176af1d0fc8ea27fea0afb298157f9a75256336"
|
||||
integrity sha512-YGwEFALLIbF5ocW/Fy6Ae7tFWUOugEN3iwxTx8UkLAcLqYUboDSadesYtVBmRCEB4FVA2qoP7YaW3lu3apUPPw==
|
||||
"@docusaurus/theme-common@3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-3.1.1.tgz#5a16893928b8379c9e83aef01d753e7e142459e2"
|
||||
integrity sha512-38urZfeMhN70YaXkwIGXmcUcv2CEYK/2l4b05GkJPrbEbgpsIZM3Xc+Js2ehBGGZmfZq8GjjQ5RNQYG+MYzCYg==
|
||||
dependencies:
|
||||
"@docusaurus/mdx-loader" "3.1.0"
|
||||
"@docusaurus/module-type-aliases" "3.1.0"
|
||||
"@docusaurus/plugin-content-blog" "3.1.0"
|
||||
"@docusaurus/plugin-content-docs" "3.1.0"
|
||||
"@docusaurus/plugin-content-pages" "3.1.0"
|
||||
"@docusaurus/utils" "3.1.0"
|
||||
"@docusaurus/utils-common" "3.1.0"
|
||||
"@docusaurus/mdx-loader" "3.1.1"
|
||||
"@docusaurus/module-type-aliases" "3.1.1"
|
||||
"@docusaurus/plugin-content-blog" "3.1.1"
|
||||
"@docusaurus/plugin-content-docs" "3.1.1"
|
||||
"@docusaurus/plugin-content-pages" "3.1.1"
|
||||
"@docusaurus/utils" "3.1.1"
|
||||
"@docusaurus/utils-common" "3.1.1"
|
||||
"@types/history" "^4.7.11"
|
||||
"@types/react" "*"
|
||||
"@types/react-router-config" "*"
|
||||
@ -2393,19 +2393,19 @@
|
||||
tslib "^2.6.0"
|
||||
utility-types "^3.10.0"
|
||||
|
||||
"@docusaurus/theme-search-algolia@3.1.0":
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.1.0.tgz#3cdb1f0e8d15698a60110856ca5a06f10d3b049d"
|
||||
integrity sha512-8cJH0ZhPsEDjq3jR3I+wHmWzVY2bXMQJ59v2QxUmsTZxbWA4u+IzccJMIJx4ooFl9J6iYynwYsFuHxyx/KUmfQ==
|
||||
"@docusaurus/theme-search-algolia@3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.1.1.tgz#5170cd68cc59d150416b070bdc6d15c363ddf5e1"
|
||||
integrity sha512-tBH9VY5EpRctVdaAhT+b1BY8y5dyHVZGFXyCHgTrvcXQy5CV4q7serEX7U3SveNT9zksmchPyct6i1sFDC4Z5g==
|
||||
dependencies:
|
||||
"@docsearch/react" "^3.5.2"
|
||||
"@docusaurus/core" "3.1.0"
|
||||
"@docusaurus/logger" "3.1.0"
|
||||
"@docusaurus/plugin-content-docs" "3.1.0"
|
||||
"@docusaurus/theme-common" "3.1.0"
|
||||
"@docusaurus/theme-translations" "3.1.0"
|
||||
"@docusaurus/utils" "3.1.0"
|
||||
"@docusaurus/utils-validation" "3.1.0"
|
||||
"@docusaurus/core" "3.1.1"
|
||||
"@docusaurus/logger" "3.1.1"
|
||||
"@docusaurus/plugin-content-docs" "3.1.1"
|
||||
"@docusaurus/theme-common" "3.1.1"
|
||||
"@docusaurus/theme-translations" "3.1.1"
|
||||
"@docusaurus/utils" "3.1.1"
|
||||
"@docusaurus/utils-validation" "3.1.1"
|
||||
algoliasearch "^4.18.0"
|
||||
algoliasearch-helper "^3.13.3"
|
||||
clsx "^2.0.0"
|
||||
@ -2415,18 +2415,18 @@
|
||||
tslib "^2.6.0"
|
||||
utility-types "^3.10.0"
|
||||
|
||||
"@docusaurus/theme-translations@3.1.0":
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.1.0.tgz#1c6bdc19723a87e042b5e89b6cdc8b747fdcbc13"
|
||||
integrity sha512-DApE4AbDI+WBajihxB54L4scWQhVGNZAochlC9fkbciPuFAgdRBD3NREb0rgfbKexDC/rioppu/WJA0u8tS+yA==
|
||||
"@docusaurus/theme-translations@3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.1.1.tgz#117e91ba5e3a8178cb59f3028bf41de165a508c1"
|
||||
integrity sha512-xvWQFwjxHphpJq5fgk37FXCDdAa2o+r7FX8IpMg+bGZBNXyWBu3MjZ+G4+eUVNpDhVinTc+j6ucL0Ain5KCGrg==
|
||||
dependencies:
|
||||
fs-extra "^11.1.1"
|
||||
tslib "^2.6.0"
|
||||
|
||||
"@docusaurus/types@3.1.0":
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.1.0.tgz#1dbb60ea38e98ba869f8d7ea2323e4460f05ab65"
|
||||
integrity sha512-VaczOZf7+re8aFBIWnex1XENomwHdsSTkrdX43zyor7G/FY4OIsP6X28Xc3o0jiY0YdNuvIDyA5TNwOtpgkCVw==
|
||||
"@docusaurus/types@3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.1.1.tgz#747c9dee8cf7c3b0e5ee7351bac5e9c4fdc7f259"
|
||||
integrity sha512-grBqOLnubUecgKFXN9q3uit2HFbCxTWX4Fam3ZFbMN0sWX9wOcDoA7lwdX/8AmeL20Oc4kQvWVgNrsT8bKRvzg==
|
||||
dependencies:
|
||||
"@mdx-js/mdx" "^3.0.0"
|
||||
"@types/history" "^4.7.11"
|
||||
@ -2438,30 +2438,30 @@
|
||||
webpack "^5.88.1"
|
||||
webpack-merge "^5.9.0"
|
||||
|
||||
"@docusaurus/utils-common@3.1.0":
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.1.0.tgz#846ce9c12b9ebf1ebf513e65303fb8158dcd2e1b"
|
||||
integrity sha512-SfvnRLHoZ9bwTw67knkSs7IcUR0GY2SaGkpdB/J9pChrDiGhwzKNUhcieoPyPYrOWGRPk3rVNYtoy+Bc7psPAw==
|
||||
"@docusaurus/utils-common@3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.1.1.tgz#b48fade63523fd40f3adb67b47c3371e5183c20b"
|
||||
integrity sha512-eGne3olsIoNfPug5ixjepZAIxeYFzHHnor55Wb2P57jNbtVaFvij/T+MS8U0dtZRFi50QU+UPmRrXdVUM8uyMg==
|
||||
dependencies:
|
||||
tslib "^2.6.0"
|
||||
|
||||
"@docusaurus/utils-validation@3.1.0":
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.1.0.tgz#3e88c42caec29cd3eedbbd17af97f88719613340"
|
||||
integrity sha512-dFxhs1NLxPOSzmcTk/eeKxLY5R+U4cua22g9MsAMiRWcwFKStZ2W3/GDY0GmnJGqNS8QAQepJrxQoyxXkJNDeg==
|
||||
"@docusaurus/utils-validation@3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.1.1.tgz#3a747349ed05aee0e4d543552b41f3c9467ee731"
|
||||
integrity sha512-KlY4P9YVDnwL+nExvlIpu79abfEv6ZCHuOX4ZQ+gtip+Wxj0daccdReIWWtqxM/Fb5Cz1nQvUCc7VEtT8IBUAA==
|
||||
dependencies:
|
||||
"@docusaurus/logger" "3.1.0"
|
||||
"@docusaurus/utils" "3.1.0"
|
||||
"@docusaurus/logger" "3.1.1"
|
||||
"@docusaurus/utils" "3.1.1"
|
||||
joi "^17.9.2"
|
||||
js-yaml "^4.1.0"
|
||||
tslib "^2.6.0"
|
||||
|
||||
"@docusaurus/utils@3.1.0":
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.1.0.tgz#6ef821bc4c40a91586835a385110b5c0082c590c"
|
||||
integrity sha512-LgZfp0D+UBqAh7PZ//MUNSFBMavmAPku6Si9x8x3V+S318IGCNJ6hUr2O29UO0oLybEWUjD5Jnj9IUN6XyZeeg==
|
||||
"@docusaurus/utils@3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.1.1.tgz#e822d14704e4b3bb451ca464a7cc56aea9b55a45"
|
||||
integrity sha512-ZJfJa5cJQtRYtqijsPEnAZoduW6sjAQ7ZCWSZavLcV10Fw0Z3gSaPKA/B4micvj2afRZ4gZxT7KfYqe5H8Cetg==
|
||||
dependencies:
|
||||
"@docusaurus/logger" "3.1.0"
|
||||
"@docusaurus/logger" "3.1.1"
|
||||
"@svgr/webpack" "^6.5.1"
|
||||
escape-string-regexp "^4.0.0"
|
||||
file-loader "^6.2.0"
|
||||
|
Loading…
Reference in New Issue
Block a user