@stoplight/elements-core 9.0.16 → 9.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.esm.js +34 -43
- package/index.js +33 -42
- package/index.mjs +34 -43
- package/package.json +1 -1
package/index.esm.js
CHANGED
|
@@ -10,7 +10,7 @@ import { parse } from '@stoplight/yaml';
|
|
|
10
10
|
import { isArray as isArray$1, Box, useBreakpoints, Panel, CopyButton, Menu, Button, Text, Flex, Input, Icon, Select, FieldButton, Image, Link, useThemeIsDark, HStack, VStack, InvertTheme, Tooltip, Badge, LinkHeading as LinkHeading$1, NodeAnnotation, Callout, useModalState, Modal, ListBox, ListBoxItem, TabList, Tab, Tabs, TabPanels, TabPanel, Heading, useClipboard, Drawer, useMosaicContext, Provider as Provider$1 } from '@stoplight/mosaic';
|
|
11
11
|
import isObject from 'lodash/isObject.js';
|
|
12
12
|
import { withErrorBoundary } from '@stoplight/react-error-boundary';
|
|
13
|
-
import { useLocation, Link as Link$1,
|
|
13
|
+
import { useLocation, Link as Link$1, HashRouter, MemoryRouter, BrowserRouter, useInRouterContext, Routes, Route } from 'react-router-dom';
|
|
14
14
|
import { MarkdownViewer as MarkdownViewer$1, DefaultSMDComponents, MarkdownViewerProvider } from '@stoplight/markdown-viewer';
|
|
15
15
|
export { DefaultSMDComponents } from '@stoplight/markdown-viewer';
|
|
16
16
|
import cn from 'classnames';
|
|
@@ -1936,7 +1936,7 @@ function buildFetchRequest({ httpOperation, mediaTypeContent, bodyInput, paramet
|
|
|
1936
1936
|
var _a, _b, _c;
|
|
1937
1937
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1938
1938
|
const serverUrl = getServerUrl({ httpOperation, mockData, chosenServer, corsProxy, serverVariableValues });
|
|
1939
|
-
const shouldIncludeBody = ['PUT', 'POST', 'PATCH'].includes(httpOperation.method.toUpperCase()) && bodyInput !== undefined;
|
|
1939
|
+
const shouldIncludeBody = ['PUT', 'POST', 'PATCH', 'DELETE'].includes(httpOperation.method.toUpperCase()) && bodyInput !== undefined;
|
|
1940
1940
|
const queryParams = getQueryParams({ httpOperation, parameterValues });
|
|
1941
1941
|
const rawHeaders = filterOutAuthorizationParams((_b = (_a = httpOperation.request) === null || _a === void 0 ? void 0 : _a.headers) !== null && _b !== void 0 ? _b : [], httpOperation.security)
|
|
1942
1942
|
.map(header => { var _a; return ({ name: header.name, value: (_a = parameterValues[header.name]) !== null && _a !== void 0 ? _a : '' }); })
|
|
@@ -2017,7 +2017,7 @@ function buildHarRequest({ httpOperation, bodyInput, parameterValues, serverVari
|
|
|
2017
2017
|
return __awaiter(this, void 0, void 0, function* () {
|
|
2018
2018
|
const serverUrl = getServerUrl({ httpOperation, mockData, chosenServer, corsProxy, serverVariableValues });
|
|
2019
2019
|
const mimeType = (_a = mediaTypeContent === null || mediaTypeContent === void 0 ? void 0 : mediaTypeContent.mediaType) !== null && _a !== void 0 ? _a : 'application/json';
|
|
2020
|
-
const shouldIncludeBody = ['PUT', 'POST', 'PATCH'].includes(httpOperation.method.toUpperCase()) && bodyInput !== undefined;
|
|
2020
|
+
const shouldIncludeBody = ['PUT', 'POST', 'PATCH', 'DELETE'].includes(httpOperation.method.toUpperCase()) && bodyInput !== undefined;
|
|
2021
2021
|
const queryParams = getQueryParams({ httpOperation, parameterValues });
|
|
2022
2022
|
const headerParams = (_d = (_c = (_b = httpOperation.request) === null || _b === void 0 ? void 0 : _b.headers) === null || _c === void 0 ? void 0 : _c.map(header => { var _a; return ({ name: header.name, value: (_a = parameterValues[header.name]) !== null && _a !== void 0 ? _a : '' }); })) !== null && _d !== void 0 ? _d : [];
|
|
2023
2023
|
if (mockData === null || mockData === void 0 ? void 0 : mockData.header) {
|
|
@@ -2702,20 +2702,7 @@ const SubSectionPanel = ({ title, children, hasContent, rightComponent, defaultI
|
|
|
2702
2702
|
};
|
|
2703
2703
|
|
|
2704
2704
|
const operation = {
|
|
2705
|
-
id: '?http-operation-id?'
|
|
2706
|
-
iid: 'GET-simple',
|
|
2707
|
-
method: 'get',
|
|
2708
|
-
path: '/todos',
|
|
2709
|
-
summary: 'Get 200',
|
|
2710
|
-
responses: [
|
|
2711
|
-
{
|
|
2712
|
-
id: '?http-response-200?',
|
|
2713
|
-
code: '200',
|
|
2714
|
-
description: 'OK',
|
|
2715
|
-
},
|
|
2716
|
-
],
|
|
2717
|
-
servers: [{ id: '?http-server-0?', url: 'https://todos.stoplight.io' }],
|
|
2718
|
-
};
|
|
2705
|
+
id: '?http-operation-id?'};
|
|
2719
2706
|
|
|
2720
2707
|
const oauthFlowNames = {
|
|
2721
2708
|
implicit: 'Implicit',
|
|
@@ -3606,33 +3593,37 @@ const TableOfContents = React.memo(({ tree, activeId, Link, maxDepthOpenByDefaul
|
|
|
3606
3593
|
});
|
|
3607
3594
|
}, []);
|
|
3608
3595
|
const updatedTree = updateTocTree(tree, '');
|
|
3609
|
-
const
|
|
3610
|
-
let
|
|
3611
|
-
let
|
|
3612
|
-
|
|
3613
|
-
|
|
3614
|
-
|
|
3615
|
-
|
|
3616
|
-
const
|
|
3617
|
-
|
|
3618
|
-
|
|
3619
|
-
if (
|
|
3620
|
-
|
|
3621
|
-
|
|
3622
|
-
|
|
3623
|
-
|
|
3596
|
+
const findMatchingItems = (updateTree, activeId, lastActiveIndex) => {
|
|
3597
|
+
let exactMatch;
|
|
3598
|
+
let partialMatch;
|
|
3599
|
+
const searchInChildren = (items) => {
|
|
3600
|
+
for (const item of items) {
|
|
3601
|
+
const hasSlug = 'slug' in item;
|
|
3602
|
+
const hasId = 'id' in item;
|
|
3603
|
+
const isIdMatch = (hasSlug && item.slug === activeId) || (hasId && item.id === activeId);
|
|
3604
|
+
if (isIdMatch) {
|
|
3605
|
+
const hasIndex = 'index' in item;
|
|
3606
|
+
if (hasIndex && item.index === lastActiveIndex) {
|
|
3607
|
+
exactMatch = exactMatch !== null && exactMatch !== void 0 ? exactMatch : item;
|
|
3608
|
+
}
|
|
3609
|
+
else {
|
|
3610
|
+
partialMatch = partialMatch !== null && partialMatch !== void 0 ? partialMatch : item;
|
|
3611
|
+
}
|
|
3624
3612
|
}
|
|
3625
|
-
|
|
3626
|
-
|
|
3627
|
-
|
|
3613
|
+
const hasItems = 'items' in item;
|
|
3614
|
+
if (hasItems && Array.isArray(item.items)) {
|
|
3615
|
+
searchInChildren(item.items);
|
|
3628
3616
|
}
|
|
3629
3617
|
}
|
|
3630
|
-
return false;
|
|
3631
3618
|
};
|
|
3632
|
-
|
|
3633
|
-
|
|
3634
|
-
|
|
3635
|
-
|
|
3619
|
+
searchInChildren(updateTree);
|
|
3620
|
+
const hasExactMatch = exactMatch !== undefined;
|
|
3621
|
+
const bestMatch = exactMatch !== null && exactMatch !== void 0 ? exactMatch : partialMatch;
|
|
3622
|
+
return [bestMatch, hasExactMatch];
|
|
3623
|
+
};
|
|
3624
|
+
const [firstMatchItem, hasAnyLastIndexMatch] = React.useMemo(() => {
|
|
3625
|
+
return findMatchingItems(updatedTree, activeId, lastActiveIndex);
|
|
3626
|
+
}, [updatedTree, activeId, lastActiveIndex]);
|
|
3636
3627
|
React.useEffect(() => {
|
|
3637
3628
|
if (!hasAnyLastIndexMatch && firstMatchItem && 'index' in firstMatchItem && firstMatchItem.index) {
|
|
3638
3629
|
setLastActiveIndex(firstMatchItem.index);
|
|
@@ -4175,15 +4166,15 @@ const useRouter = (router, basePath, staticRouterPath) => {
|
|
|
4175
4166
|
const components = {
|
|
4176
4167
|
a: ReactRouterMarkdownLink,
|
|
4177
4168
|
h2: (_a) => {
|
|
4178
|
-
var props = __rest(_a, ["color"]);
|
|
4169
|
+
var { color } = _a, props = __rest(_a, ["color"]);
|
|
4179
4170
|
return React.createElement(LinkHeading, Object.assign({ size: 2 }, props));
|
|
4180
4171
|
},
|
|
4181
4172
|
h3: (_a) => {
|
|
4182
|
-
var props = __rest(_a, ["color"]);
|
|
4173
|
+
var { color } = _a, props = __rest(_a, ["color"]);
|
|
4183
4174
|
return React.createElement(LinkHeading, Object.assign({ size: 3 }, props));
|
|
4184
4175
|
},
|
|
4185
4176
|
h4: (_a) => {
|
|
4186
|
-
var props = __rest(_a, ["color"]);
|
|
4177
|
+
var { color } = _a, props = __rest(_a, ["color"]);
|
|
4187
4178
|
return React.createElement(LinkHeading, Object.assign({ size: 4 }, props));
|
|
4188
4179
|
},
|
|
4189
4180
|
};
|
package/index.js
CHANGED
|
@@ -1957,7 +1957,7 @@ function buildFetchRequest({ httpOperation, mediaTypeContent, bodyInput, paramet
|
|
|
1957
1957
|
var _a, _b, _c;
|
|
1958
1958
|
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
1959
1959
|
const serverUrl = getServerUrl({ httpOperation, mockData, chosenServer, corsProxy, serverVariableValues });
|
|
1960
|
-
const shouldIncludeBody = ['PUT', 'POST', 'PATCH'].includes(httpOperation.method.toUpperCase()) && bodyInput !== undefined;
|
|
1960
|
+
const shouldIncludeBody = ['PUT', 'POST', 'PATCH', 'DELETE'].includes(httpOperation.method.toUpperCase()) && bodyInput !== undefined;
|
|
1961
1961
|
const queryParams = getQueryParams({ httpOperation, parameterValues });
|
|
1962
1962
|
const rawHeaders = filterOutAuthorizationParams((_b = (_a = httpOperation.request) === null || _a === void 0 ? void 0 : _a.headers) !== null && _b !== void 0 ? _b : [], httpOperation.security)
|
|
1963
1963
|
.map(header => { var _a; return ({ name: header.name, value: (_a = parameterValues[header.name]) !== null && _a !== void 0 ? _a : '' }); })
|
|
@@ -2038,7 +2038,7 @@ function buildHarRequest({ httpOperation, bodyInput, parameterValues, serverVari
|
|
|
2038
2038
|
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
2039
2039
|
const serverUrl = getServerUrl({ httpOperation, mockData, chosenServer, corsProxy, serverVariableValues });
|
|
2040
2040
|
const mimeType = (_a = mediaTypeContent === null || mediaTypeContent === void 0 ? void 0 : mediaTypeContent.mediaType) !== null && _a !== void 0 ? _a : 'application/json';
|
|
2041
|
-
const shouldIncludeBody = ['PUT', 'POST', 'PATCH'].includes(httpOperation.method.toUpperCase()) && bodyInput !== undefined;
|
|
2041
|
+
const shouldIncludeBody = ['PUT', 'POST', 'PATCH', 'DELETE'].includes(httpOperation.method.toUpperCase()) && bodyInput !== undefined;
|
|
2042
2042
|
const queryParams = getQueryParams({ httpOperation, parameterValues });
|
|
2043
2043
|
const headerParams = (_d = (_c = (_b = httpOperation.request) === null || _b === void 0 ? void 0 : _b.headers) === null || _c === void 0 ? void 0 : _c.map(header => { var _a; return ({ name: header.name, value: (_a = parameterValues[header.name]) !== null && _a !== void 0 ? _a : '' }); })) !== null && _d !== void 0 ? _d : [];
|
|
2044
2044
|
if (mockData === null || mockData === void 0 ? void 0 : mockData.header) {
|
|
@@ -2723,20 +2723,7 @@ const SubSectionPanel = ({ title, children, hasContent, rightComponent, defaultI
|
|
|
2723
2723
|
};
|
|
2724
2724
|
|
|
2725
2725
|
const operation = {
|
|
2726
|
-
id: '?http-operation-id?'
|
|
2727
|
-
iid: 'GET-simple',
|
|
2728
|
-
method: 'get',
|
|
2729
|
-
path: '/todos',
|
|
2730
|
-
summary: 'Get 200',
|
|
2731
|
-
responses: [
|
|
2732
|
-
{
|
|
2733
|
-
id: '?http-response-200?',
|
|
2734
|
-
code: '200',
|
|
2735
|
-
description: 'OK',
|
|
2736
|
-
},
|
|
2737
|
-
],
|
|
2738
|
-
servers: [{ id: '?http-server-0?', url: 'https://todos.stoplight.io' }],
|
|
2739
|
-
};
|
|
2726
|
+
id: '?http-operation-id?'};
|
|
2740
2727
|
|
|
2741
2728
|
const oauthFlowNames = {
|
|
2742
2729
|
implicit: 'Implicit',
|
|
@@ -3627,33 +3614,37 @@ const TableOfContents = React__namespace.memo(({ tree, activeId, Link, maxDepthO
|
|
|
3627
3614
|
});
|
|
3628
3615
|
}, []);
|
|
3629
3616
|
const updatedTree = updateTocTree(tree, '');
|
|
3630
|
-
const
|
|
3631
|
-
let
|
|
3632
|
-
let
|
|
3633
|
-
|
|
3634
|
-
|
|
3635
|
-
|
|
3636
|
-
|
|
3637
|
-
const
|
|
3638
|
-
|
|
3639
|
-
|
|
3640
|
-
if (
|
|
3641
|
-
|
|
3642
|
-
|
|
3643
|
-
|
|
3644
|
-
|
|
3617
|
+
const findMatchingItems = (updateTree, activeId, lastActiveIndex) => {
|
|
3618
|
+
let exactMatch;
|
|
3619
|
+
let partialMatch;
|
|
3620
|
+
const searchInChildren = (items) => {
|
|
3621
|
+
for (const item of items) {
|
|
3622
|
+
const hasSlug = 'slug' in item;
|
|
3623
|
+
const hasId = 'id' in item;
|
|
3624
|
+
const isIdMatch = (hasSlug && item.slug === activeId) || (hasId && item.id === activeId);
|
|
3625
|
+
if (isIdMatch) {
|
|
3626
|
+
const hasIndex = 'index' in item;
|
|
3627
|
+
if (hasIndex && item.index === lastActiveIndex) {
|
|
3628
|
+
exactMatch = exactMatch !== null && exactMatch !== void 0 ? exactMatch : item;
|
|
3629
|
+
}
|
|
3630
|
+
else {
|
|
3631
|
+
partialMatch = partialMatch !== null && partialMatch !== void 0 ? partialMatch : item;
|
|
3632
|
+
}
|
|
3645
3633
|
}
|
|
3646
|
-
|
|
3647
|
-
|
|
3648
|
-
|
|
3634
|
+
const hasItems = 'items' in item;
|
|
3635
|
+
if (hasItems && Array.isArray(item.items)) {
|
|
3636
|
+
searchInChildren(item.items);
|
|
3649
3637
|
}
|
|
3650
3638
|
}
|
|
3651
|
-
return false;
|
|
3652
3639
|
};
|
|
3653
|
-
|
|
3654
|
-
|
|
3655
|
-
|
|
3656
|
-
|
|
3640
|
+
searchInChildren(updateTree);
|
|
3641
|
+
const hasExactMatch = exactMatch !== undefined;
|
|
3642
|
+
const bestMatch = exactMatch !== null && exactMatch !== void 0 ? exactMatch : partialMatch;
|
|
3643
|
+
return [bestMatch, hasExactMatch];
|
|
3644
|
+
};
|
|
3645
|
+
const [firstMatchItem, hasAnyLastIndexMatch] = React__namespace.useMemo(() => {
|
|
3646
|
+
return findMatchingItems(updatedTree, activeId, lastActiveIndex);
|
|
3647
|
+
}, [updatedTree, activeId, lastActiveIndex]);
|
|
3657
3648
|
React__namespace.useEffect(() => {
|
|
3658
3649
|
if (!hasAnyLastIndexMatch && firstMatchItem && 'index' in firstMatchItem && firstMatchItem.index) {
|
|
3659
3650
|
setLastActiveIndex(firstMatchItem.index);
|
|
@@ -4196,15 +4187,15 @@ const useRouter = (router, basePath, staticRouterPath) => {
|
|
|
4196
4187
|
const components = {
|
|
4197
4188
|
a: ReactRouterMarkdownLink,
|
|
4198
4189
|
h2: (_a) => {
|
|
4199
|
-
var props = tslib.__rest(_a, ["color"]);
|
|
4190
|
+
var { color } = _a, props = tslib.__rest(_a, ["color"]);
|
|
4200
4191
|
return React__namespace.createElement(LinkHeading, Object.assign({ size: 2 }, props));
|
|
4201
4192
|
},
|
|
4202
4193
|
h3: (_a) => {
|
|
4203
|
-
var props = tslib.__rest(_a, ["color"]);
|
|
4194
|
+
var { color } = _a, props = tslib.__rest(_a, ["color"]);
|
|
4204
4195
|
return React__namespace.createElement(LinkHeading, Object.assign({ size: 3 }, props));
|
|
4205
4196
|
},
|
|
4206
4197
|
h4: (_a) => {
|
|
4207
|
-
var props = tslib.__rest(_a, ["color"]);
|
|
4198
|
+
var { color } = _a, props = tslib.__rest(_a, ["color"]);
|
|
4208
4199
|
return React__namespace.createElement(LinkHeading, Object.assign({ size: 4 }, props));
|
|
4209
4200
|
},
|
|
4210
4201
|
};
|
package/index.mjs
CHANGED
|
@@ -10,7 +10,7 @@ import { parse } from '@stoplight/yaml';
|
|
|
10
10
|
import { isArray as isArray$1, Box, useBreakpoints, Panel, CopyButton, Menu, Button, Text, Flex, Input, Icon, Select, FieldButton, Image, Link, useThemeIsDark, HStack, VStack, InvertTheme, Tooltip, Badge, LinkHeading as LinkHeading$1, NodeAnnotation, Callout, useModalState, Modal, ListBox, ListBoxItem, TabList, Tab, Tabs, TabPanels, TabPanel, Heading, useClipboard, Drawer, useMosaicContext, Provider as Provider$1 } from '@stoplight/mosaic';
|
|
11
11
|
import isObject from 'lodash/isObject.js';
|
|
12
12
|
import { withErrorBoundary } from '@stoplight/react-error-boundary';
|
|
13
|
-
import { useLocation, Link as Link$1,
|
|
13
|
+
import { useLocation, Link as Link$1, HashRouter, MemoryRouter, BrowserRouter, useInRouterContext, Routes, Route } from 'react-router-dom';
|
|
14
14
|
import { MarkdownViewer as MarkdownViewer$1, DefaultSMDComponents, MarkdownViewerProvider } from '@stoplight/markdown-viewer';
|
|
15
15
|
export { DefaultSMDComponents } from '@stoplight/markdown-viewer';
|
|
16
16
|
import cn from 'classnames';
|
|
@@ -1936,7 +1936,7 @@ function buildFetchRequest({ httpOperation, mediaTypeContent, bodyInput, paramet
|
|
|
1936
1936
|
var _a, _b, _c;
|
|
1937
1937
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1938
1938
|
const serverUrl = getServerUrl({ httpOperation, mockData, chosenServer, corsProxy, serverVariableValues });
|
|
1939
|
-
const shouldIncludeBody = ['PUT', 'POST', 'PATCH'].includes(httpOperation.method.toUpperCase()) && bodyInput !== undefined;
|
|
1939
|
+
const shouldIncludeBody = ['PUT', 'POST', 'PATCH', 'DELETE'].includes(httpOperation.method.toUpperCase()) && bodyInput !== undefined;
|
|
1940
1940
|
const queryParams = getQueryParams({ httpOperation, parameterValues });
|
|
1941
1941
|
const rawHeaders = filterOutAuthorizationParams((_b = (_a = httpOperation.request) === null || _a === void 0 ? void 0 : _a.headers) !== null && _b !== void 0 ? _b : [], httpOperation.security)
|
|
1942
1942
|
.map(header => { var _a; return ({ name: header.name, value: (_a = parameterValues[header.name]) !== null && _a !== void 0 ? _a : '' }); })
|
|
@@ -2017,7 +2017,7 @@ function buildHarRequest({ httpOperation, bodyInput, parameterValues, serverVari
|
|
|
2017
2017
|
return __awaiter(this, void 0, void 0, function* () {
|
|
2018
2018
|
const serverUrl = getServerUrl({ httpOperation, mockData, chosenServer, corsProxy, serverVariableValues });
|
|
2019
2019
|
const mimeType = (_a = mediaTypeContent === null || mediaTypeContent === void 0 ? void 0 : mediaTypeContent.mediaType) !== null && _a !== void 0 ? _a : 'application/json';
|
|
2020
|
-
const shouldIncludeBody = ['PUT', 'POST', 'PATCH'].includes(httpOperation.method.toUpperCase()) && bodyInput !== undefined;
|
|
2020
|
+
const shouldIncludeBody = ['PUT', 'POST', 'PATCH', 'DELETE'].includes(httpOperation.method.toUpperCase()) && bodyInput !== undefined;
|
|
2021
2021
|
const queryParams = getQueryParams({ httpOperation, parameterValues });
|
|
2022
2022
|
const headerParams = (_d = (_c = (_b = httpOperation.request) === null || _b === void 0 ? void 0 : _b.headers) === null || _c === void 0 ? void 0 : _c.map(header => { var _a; return ({ name: header.name, value: (_a = parameterValues[header.name]) !== null && _a !== void 0 ? _a : '' }); })) !== null && _d !== void 0 ? _d : [];
|
|
2023
2023
|
if (mockData === null || mockData === void 0 ? void 0 : mockData.header) {
|
|
@@ -2702,20 +2702,7 @@ const SubSectionPanel = ({ title, children, hasContent, rightComponent, defaultI
|
|
|
2702
2702
|
};
|
|
2703
2703
|
|
|
2704
2704
|
const operation = {
|
|
2705
|
-
id: '?http-operation-id?'
|
|
2706
|
-
iid: 'GET-simple',
|
|
2707
|
-
method: 'get',
|
|
2708
|
-
path: '/todos',
|
|
2709
|
-
summary: 'Get 200',
|
|
2710
|
-
responses: [
|
|
2711
|
-
{
|
|
2712
|
-
id: '?http-response-200?',
|
|
2713
|
-
code: '200',
|
|
2714
|
-
description: 'OK',
|
|
2715
|
-
},
|
|
2716
|
-
],
|
|
2717
|
-
servers: [{ id: '?http-server-0?', url: 'https://todos.stoplight.io' }],
|
|
2718
|
-
};
|
|
2705
|
+
id: '?http-operation-id?'};
|
|
2719
2706
|
|
|
2720
2707
|
const oauthFlowNames = {
|
|
2721
2708
|
implicit: 'Implicit',
|
|
@@ -3606,33 +3593,37 @@ const TableOfContents = React.memo(({ tree, activeId, Link, maxDepthOpenByDefaul
|
|
|
3606
3593
|
});
|
|
3607
3594
|
}, []);
|
|
3608
3595
|
const updatedTree = updateTocTree(tree, '');
|
|
3609
|
-
const
|
|
3610
|
-
let
|
|
3611
|
-
let
|
|
3612
|
-
|
|
3613
|
-
|
|
3614
|
-
|
|
3615
|
-
|
|
3616
|
-
const
|
|
3617
|
-
|
|
3618
|
-
|
|
3619
|
-
if (
|
|
3620
|
-
|
|
3621
|
-
|
|
3622
|
-
|
|
3623
|
-
|
|
3596
|
+
const findMatchingItems = (updateTree, activeId, lastActiveIndex) => {
|
|
3597
|
+
let exactMatch;
|
|
3598
|
+
let partialMatch;
|
|
3599
|
+
const searchInChildren = (items) => {
|
|
3600
|
+
for (const item of items) {
|
|
3601
|
+
const hasSlug = 'slug' in item;
|
|
3602
|
+
const hasId = 'id' in item;
|
|
3603
|
+
const isIdMatch = (hasSlug && item.slug === activeId) || (hasId && item.id === activeId);
|
|
3604
|
+
if (isIdMatch) {
|
|
3605
|
+
const hasIndex = 'index' in item;
|
|
3606
|
+
if (hasIndex && item.index === lastActiveIndex) {
|
|
3607
|
+
exactMatch = exactMatch !== null && exactMatch !== void 0 ? exactMatch : item;
|
|
3608
|
+
}
|
|
3609
|
+
else {
|
|
3610
|
+
partialMatch = partialMatch !== null && partialMatch !== void 0 ? partialMatch : item;
|
|
3611
|
+
}
|
|
3624
3612
|
}
|
|
3625
|
-
|
|
3626
|
-
|
|
3627
|
-
|
|
3613
|
+
const hasItems = 'items' in item;
|
|
3614
|
+
if (hasItems && Array.isArray(item.items)) {
|
|
3615
|
+
searchInChildren(item.items);
|
|
3628
3616
|
}
|
|
3629
3617
|
}
|
|
3630
|
-
return false;
|
|
3631
3618
|
};
|
|
3632
|
-
|
|
3633
|
-
|
|
3634
|
-
|
|
3635
|
-
|
|
3619
|
+
searchInChildren(updateTree);
|
|
3620
|
+
const hasExactMatch = exactMatch !== undefined;
|
|
3621
|
+
const bestMatch = exactMatch !== null && exactMatch !== void 0 ? exactMatch : partialMatch;
|
|
3622
|
+
return [bestMatch, hasExactMatch];
|
|
3623
|
+
};
|
|
3624
|
+
const [firstMatchItem, hasAnyLastIndexMatch] = React.useMemo(() => {
|
|
3625
|
+
return findMatchingItems(updatedTree, activeId, lastActiveIndex);
|
|
3626
|
+
}, [updatedTree, activeId, lastActiveIndex]);
|
|
3636
3627
|
React.useEffect(() => {
|
|
3637
3628
|
if (!hasAnyLastIndexMatch && firstMatchItem && 'index' in firstMatchItem && firstMatchItem.index) {
|
|
3638
3629
|
setLastActiveIndex(firstMatchItem.index);
|
|
@@ -4175,15 +4166,15 @@ const useRouter = (router, basePath, staticRouterPath) => {
|
|
|
4175
4166
|
const components = {
|
|
4176
4167
|
a: ReactRouterMarkdownLink,
|
|
4177
4168
|
h2: (_a) => {
|
|
4178
|
-
var props = __rest(_a, ["color"]);
|
|
4169
|
+
var { color } = _a, props = __rest(_a, ["color"]);
|
|
4179
4170
|
return React.createElement(LinkHeading, Object.assign({ size: 2 }, props));
|
|
4180
4171
|
},
|
|
4181
4172
|
h3: (_a) => {
|
|
4182
|
-
var props = __rest(_a, ["color"]);
|
|
4173
|
+
var { color } = _a, props = __rest(_a, ["color"]);
|
|
4183
4174
|
return React.createElement(LinkHeading, Object.assign({ size: 3 }, props));
|
|
4184
4175
|
},
|
|
4185
4176
|
h4: (_a) => {
|
|
4186
|
-
var props = __rest(_a, ["color"]);
|
|
4177
|
+
var { color } = _a, props = __rest(_a, ["color"]);
|
|
4187
4178
|
return React.createElement(LinkHeading, Object.assign({ size: 4 }, props));
|
|
4188
4179
|
},
|
|
4189
4180
|
};
|