@fern-api/fdr-sdk 1.2.79-88e3cf0ca5 → 1.2.80-050d6c9417
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/js/client/FdrClient.js +13 -3
- package/dist/js/client/FdrClient.js.map +1 -1
- package/dist/js/client/FdrClient.mjs +13 -3
- package/dist/js/client/FdrClient.mjs.map +1 -1
- package/dist/js/client/types.js.map +1 -1
- package/dist/js/client/types.mjs.map +1 -1
- package/dist/js/converters/index.js +39 -25
- package/dist/js/converters/index.js.map +1 -1
- package/dist/js/converters/index.mjs +39 -25
- package/dist/js/converters/index.mjs.map +1 -1
- package/dist/js/index.js +52 -28
- package/dist/js/index.js.map +1 -1
- package/dist/js/index.mjs +52 -28
- package/dist/js/index.mjs.map +1 -1
- package/dist/js/navigation/index.js +39 -25
- package/dist/js/navigation/index.js.map +1 -1
- package/dist/js/navigation/index.mjs +39 -25
- package/dist/js/navigation/index.mjs.map +1 -1
- package/dist/js/navigation/ledger-root-builder.js +29 -5
- package/dist/js/navigation/ledger-root-builder.js.map +1 -1
- package/dist/js/navigation/ledger-root-builder.mjs +29 -5
- package/dist/js/navigation/ledger-root-builder.mjs.map +1 -1
- package/dist/js/navigation/types/latest.js.map +1 -1
- package/dist/js/navigation/types/latest.mjs.map +1 -1
- package/dist/js/navigation/types/v1.js.map +1 -1
- package/dist/js/navigation/types/v1.mjs.map +1 -1
- package/dist/js/orpc-client.js +13 -3
- package/dist/js/orpc-client.js.map +1 -1
- package/dist/js/orpc-client.mjs +13 -3
- package/dist/js/orpc-client.mjs.map +1 -1
- package/dist/navigation/__test__/ledger-root-builder.playgroundPreservation.test.d.ts +2 -0
- package/dist/navigation/__test__/ledger-root-builder.playgroundPreservation.test.d.ts.map +1 -0
- package/dist/navigation/__test__/ledger-root-builder.playgroundPreservation.test.js +185 -0
- package/dist/navigation/__test__/ledger-root-builder.playgroundPreservation.test.js.map +1 -0
- package/dist/navigation/ledger-root-builder.d.ts.map +1 -1
- package/dist/navigation/ledger-root-builder.js +41 -5
- package/dist/navigation/ledger-root-builder.js.map +1 -1
- package/dist/navigation/types/latest.d.ts +1 -0
- package/dist/navigation/types/latest.d.ts.map +1 -1
- package/dist/navigation/types/v1.d.ts +1 -0
- package/dist/navigation/types/v1.d.ts.map +1 -1
- package/dist/navigation/utils/__test__/resolveCurrentTab.test.d.ts +2 -0
- package/dist/navigation/utils/__test__/resolveCurrentTab.test.d.ts.map +1 -0
- package/dist/navigation/utils/__test__/resolveCurrentTab.test.js +70 -0
- package/dist/navigation/utils/__test__/resolveCurrentTab.test.js.map +1 -0
- package/dist/navigation/utils/findNode.d.ts.map +1 -1
- package/dist/navigation/utils/findNode.js +3 -30
- package/dist/navigation/utils/findNode.js.map +1 -1
- package/dist/navigation/utils/index.d.ts +1 -0
- package/dist/navigation/utils/index.d.ts.map +1 -1
- package/dist/navigation/utils/index.js +1 -0
- package/dist/navigation/utils/index.js.map +1 -1
- package/dist/navigation/utils/resolveCurrentTab.d.ts +26 -0
- package/dist/navigation/utils/resolveCurrentTab.d.ts.map +1 -0
- package/dist/navigation/utils/resolveCurrentTab.js +60 -0
- package/dist/navigation/utils/resolveCurrentTab.js.map +1 -0
- package/dist/orpc-client/docs-ledger/contract.d.ts +5126 -0
- package/dist/orpc-client/docs-ledger/contract.d.ts.map +1 -1
- package/dist/orpc-client/docs-ledger/contract.js +17 -3
- package/dist/orpc-client/docs-ledger/contract.js.map +1 -1
- package/dist/orpc-client/docs-ledger/ledger-manifest.d.ts +7356 -0
- package/dist/orpc-client/docs-ledger/ledger-manifest.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/navigation/__test__/ledger-root-builder.playgroundPreservation.test.d.ts +2 -0
- package/dist/types/navigation/__test__/ledger-root-builder.playgroundPreservation.test.d.ts.map +1 -0
- package/dist/types/navigation/ledger-root-builder.d.ts.map +1 -1
- package/dist/types/navigation/types/latest.d.ts +1 -0
- package/dist/types/navigation/types/latest.d.ts.map +1 -1
- package/dist/types/navigation/types/v1.d.ts +1 -0
- package/dist/types/navigation/types/v1.d.ts.map +1 -1
- package/dist/types/navigation/utils/__test__/resolveCurrentTab.test.d.ts +2 -0
- package/dist/types/navigation/utils/__test__/resolveCurrentTab.test.d.ts.map +1 -0
- package/dist/types/navigation/utils/findNode.d.ts.map +1 -1
- package/dist/types/navigation/utils/index.d.ts +1 -0
- package/dist/types/navigation/utils/index.d.ts.map +1 -1
- package/dist/types/navigation/utils/resolveCurrentTab.d.ts +26 -0
- package/dist/types/navigation/utils/resolveCurrentTab.d.ts.map +1 -0
- package/dist/types/orpc-client/docs-ledger/contract.d.ts +5126 -0
- package/dist/types/orpc-client/docs-ledger/contract.d.ts.map +1 -1
- package/dist/types/orpc-client/docs-ledger/ledger-manifest.d.ts +7356 -0
- package/dist/types/orpc-client/docs-ledger/ledger-manifest.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -5,12 +5,12 @@ import { isApiReferenceNode } from "../versions/latest/isApiReferenceNode";
|
|
|
5
5
|
import { isProductGroupNode } from "../versions/latest/isProductGroupNode";
|
|
6
6
|
import { isProductNode } from "../versions/latest/isProductNode";
|
|
7
7
|
import { isSidebarRootNode } from "../versions/latest/isSidebarRootNode";
|
|
8
|
-
import { isTabbedNode } from "../versions/latest/isTabbedNode";
|
|
9
8
|
import { isUnversionedNode } from "../versions/latest/isUnversionedNode";
|
|
10
9
|
import { isVariantNode } from "../versions/latest/isVariantNode";
|
|
11
10
|
import { isVersionNode } from "../versions/latest/isVersionNode";
|
|
12
11
|
import { canonicalSlugKey } from "./canonicalSlugKey";
|
|
13
12
|
import { createBreadcrumb } from "./createBreadcrumb";
|
|
13
|
+
import { getEnclosingTabbedNode, resolveCurrentTab } from "./resolveCurrentTab";
|
|
14
14
|
export function findNode(root, slug) {
|
|
15
15
|
const collector = NodeCollector.collect(root);
|
|
16
16
|
const found = collector.getSlugMapWithParents().get(canonicalSlugKey(slug));
|
|
@@ -53,7 +53,6 @@ export function findNode(root, slug) {
|
|
|
53
53
|
const currentProduct = found.parents.find(isProductNode);
|
|
54
54
|
const currentVersion = found.parents.find(isVersionNode);
|
|
55
55
|
const unversionedNode = found.parents.find(isUnversionedNode);
|
|
56
|
-
const versionChild = (currentVersion ?? unversionedNode)?.child;
|
|
57
56
|
const currentVariant = found.parents.find(isVariantNode);
|
|
58
57
|
if (!sidebar && currentVersion != null) {
|
|
59
58
|
if (isSidebarRootNode(currentVersion.child)) {
|
|
@@ -61,15 +60,10 @@ export function findNode(root, slug) {
|
|
|
61
60
|
}
|
|
62
61
|
}
|
|
63
62
|
const landingPage = (currentProductGroup ?? currentVersion ?? unversionedNode)?.landingPage;
|
|
64
|
-
const tabbedNode = found.parents
|
|
65
|
-
// fallback to the version child because the current node may be a landing page
|
|
66
|
-
(versionChild != null && isTabbedNode(versionChild) ? versionChild : undefined);
|
|
63
|
+
const tabbedNode = getEnclosingTabbedNode(found.parents);
|
|
67
64
|
const apiReference = found.parents.find(isApiReferenceNode) ?? (found.node.type === "apiReference" ? found.node : undefined);
|
|
68
65
|
// if the node is visible (because it's a page), return it as "found"
|
|
69
66
|
if (FernNavigation.isPage(found.node)) {
|
|
70
|
-
const parentsAndNode = [...found.parents, found.node];
|
|
71
|
-
const tabbedNodeIndex = parentsAndNode.findIndex((node) => node === tabbedNode);
|
|
72
|
-
const currentTabNode = tabbedNodeIndex !== -1 ? parentsAndNode[tabbedNodeIndex + 1] : undefined;
|
|
73
67
|
const products = collector.getProductNodes().map((node) => {
|
|
74
68
|
if (node.default) {
|
|
75
69
|
// if we're currently viewing the default product, we may be viewing the non-pruned product node
|
|
@@ -103,28 +97,7 @@ export function findNode(root, slug) {
|
|
|
103
97
|
}
|
|
104
98
|
return node;
|
|
105
99
|
});
|
|
106
|
-
|
|
107
|
-
// If currentTab is undefined and we have tabs, try to find the appropriate tab
|
|
108
|
-
if (currentTab == null && tabbedNode != null) {
|
|
109
|
-
// First, check if any tab's pointsTo matches the current page's slug
|
|
110
|
-
for (const tab of tabbedNode.children) {
|
|
111
|
-
if (tab.type === "tab" && tab.pointsTo === found.node.slug) {
|
|
112
|
-
currentTab = tab;
|
|
113
|
-
break;
|
|
114
|
-
}
|
|
115
|
-
if (tab.type === "changelog" && tab.slug === found.node.slug) {
|
|
116
|
-
currentTab = tab;
|
|
117
|
-
break;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
// If still no tab found and we're on a landing page, select the first tab
|
|
121
|
-
if (currentTab == null && found.node.type === "landingPage") {
|
|
122
|
-
const firstTab = tabbedNode.children.find((tab) => tab.type === "tab" || tab.type === "changelog");
|
|
123
|
-
if (firstTab != null && (firstTab.type === "tab" || firstTab.type === "changelog")) {
|
|
124
|
-
currentTab = firstTab;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
100
|
+
const currentTab = resolveCurrentTab(found.node, found.parents);
|
|
128
101
|
// External product links don't have slugs, so fall back to version or root slug
|
|
129
102
|
const slugPrefix = currentVariant?.slug ??
|
|
130
103
|
(currentProduct?.type === "product" ? currentProduct.slug : undefined) ??
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findNode.js","sourceRoot":"","sources":["../../../src/navigation/utils/findNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"findNode.js","sourceRoot":"","sources":["../../../src/navigation/utils/findNode.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ export * from "./createBreadcrumb";
|
|
|
7
7
|
export * from "./findNode";
|
|
8
8
|
export * from "./getApiReferenceId";
|
|
9
9
|
export * from "./getNoIndexFromFrontmatter";
|
|
10
|
+
export * from "./resolveCurrentTab";
|
|
10
11
|
export * from "./syntheticSectionPath";
|
|
11
12
|
export * from "./toApis";
|
|
12
13
|
export * from "./toPages";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/navigation/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/navigation/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC"}
|
|
@@ -7,6 +7,7 @@ export * from "./createBreadcrumb";
|
|
|
7
7
|
export * from "./findNode";
|
|
8
8
|
export * from "./getApiReferenceId";
|
|
9
9
|
export * from "./getNoIndexFromFrontmatter";
|
|
10
|
+
export * from "./resolveCurrentTab";
|
|
10
11
|
export * from "./syntheticSectionPath";
|
|
11
12
|
export * from "./toApis";
|
|
12
13
|
export * from "./toPages";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/navigation/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/navigation/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { FernNavigation } from "../..";
|
|
2
|
+
/**
|
|
3
|
+
* Resolve the `tabbed` node that encloses a page, given its ancestor chain.
|
|
4
|
+
*
|
|
5
|
+
* Normally the tabbed node is an ancestor, but a version/product **landing
|
|
6
|
+
* page** hangs off its version as a *sibling* of the tabbed node (via
|
|
7
|
+
* `landingPage`, not `child`), so it isn't in the ancestor chain — fall back to
|
|
8
|
+
* the version child in that case.
|
|
9
|
+
*/
|
|
10
|
+
export declare function getEnclosingTabbedNode(parents: readonly FernNavigation.NavigationNodeParent[]): FernNavigation.TabbedNode | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* Resolve the header tab that should be highlighted for a page, given the page
|
|
13
|
+
* node and its ancestor chain.
|
|
14
|
+
*
|
|
15
|
+
* This is the single source of truth shared by `findNode` (used by the Vercel
|
|
16
|
+
* runtime) and the Astro static build's `buildSlugToTabId`, so both highlight
|
|
17
|
+
* the same tab and can't drift apart. The resolution order:
|
|
18
|
+
*
|
|
19
|
+
* 1. The tabbed node's child on the path to this page — a `tab` (Guides, API
|
|
20
|
+
* Reference) or a `changelog` (Changelog, Blog); both are valid header tabs.
|
|
21
|
+
* 2. A tab whose `pointsTo` (or a changelog whose `slug`) targets this page
|
|
22
|
+
* from another subtree.
|
|
23
|
+
* 3. The first tab, when this page is a version/product landing page.
|
|
24
|
+
*/
|
|
25
|
+
export declare function resolveCurrentTab(node: FernNavigation.NavigationNodeWithMetadata, parents: readonly FernNavigation.NavigationNodeParent[]): FernNavigation.TabNode | FernNavigation.ChangelogNode | undefined;
|
|
26
|
+
//# sourceMappingURL=resolveCurrentTab.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveCurrentTab.d.ts","sourceRoot":"","sources":["../../../src/navigation/utils/resolveCurrentTab.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAS5C;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAClC,OAAO,EAAE,SAAS,cAAc,CAAC,oBAAoB,EAAE,GACxD,cAAc,CAAC,UAAU,GAAG,SAAS,CAKvC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAC7B,IAAI,EAAE,cAAc,CAAC,0BAA0B,EAC/C,OAAO,EAAE,SAAS,cAAc,CAAC,oBAAoB,EAAE,GACxD,cAAc,CAAC,OAAO,GAAG,cAAc,CAAC,aAAa,GAAG,SAAS,CAgCnE"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { isTabbedNode } from "../versions/latest/isTabbedNode";
|
|
2
|
+
import { isUnversionedNode } from "../versions/latest/isUnversionedNode";
|
|
3
|
+
import { isVersionNode } from "../versions/latest/isVersionNode";
|
|
4
|
+
/** A tabbed node's child that is a real header tab — a `link` child owns no page. */
|
|
5
|
+
const isHeaderTab = (child) => child.type === "tab" || child.type === "changelog";
|
|
6
|
+
/**
|
|
7
|
+
* Resolve the `tabbed` node that encloses a page, given its ancestor chain.
|
|
8
|
+
*
|
|
9
|
+
* Normally the tabbed node is an ancestor, but a version/product **landing
|
|
10
|
+
* page** hangs off its version as a *sibling* of the tabbed node (via
|
|
11
|
+
* `landingPage`, not `child`), so it isn't in the ancestor chain — fall back to
|
|
12
|
+
* the version child in that case.
|
|
13
|
+
*/
|
|
14
|
+
export function getEnclosingTabbedNode(parents) {
|
|
15
|
+
const versionChild = (parents.find(isVersionNode) ?? parents.find(isUnversionedNode))?.child;
|
|
16
|
+
return (parents.find(isTabbedNode) ?? (versionChild != null && isTabbedNode(versionChild) ? versionChild : undefined));
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Resolve the header tab that should be highlighted for a page, given the page
|
|
20
|
+
* node and its ancestor chain.
|
|
21
|
+
*
|
|
22
|
+
* This is the single source of truth shared by `findNode` (used by the Vercel
|
|
23
|
+
* runtime) and the Astro static build's `buildSlugToTabId`, so both highlight
|
|
24
|
+
* the same tab and can't drift apart. The resolution order:
|
|
25
|
+
*
|
|
26
|
+
* 1. The tabbed node's child on the path to this page — a `tab` (Guides, API
|
|
27
|
+
* Reference) or a `changelog` (Changelog, Blog); both are valid header tabs.
|
|
28
|
+
* 2. A tab whose `pointsTo` (or a changelog whose `slug`) targets this page
|
|
29
|
+
* from another subtree.
|
|
30
|
+
* 3. The first tab, when this page is a version/product landing page.
|
|
31
|
+
*/
|
|
32
|
+
export function resolveCurrentTab(node, parents) {
|
|
33
|
+
const tabbedNode = getEnclosingTabbedNode(parents);
|
|
34
|
+
if (tabbedNode == null) {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
const parentsAndNode = [...parents, node];
|
|
38
|
+
const tabbedNodeIndex = parentsAndNode.indexOf(tabbedNode);
|
|
39
|
+
const currentTabNode = tabbedNodeIndex !== -1 ? parentsAndNode[tabbedNodeIndex + 1] : undefined;
|
|
40
|
+
let currentTab = currentTabNode?.type === "tab" || currentTabNode?.type === "changelog" ? currentTabNode : undefined;
|
|
41
|
+
if (currentTab == null) {
|
|
42
|
+
// A tab whose pointsTo (or changelog whose slug) targets this page.
|
|
43
|
+
for (const tab of tabbedNode.children) {
|
|
44
|
+
if (tab.type === "tab" && tab.pointsTo === node.slug) {
|
|
45
|
+
currentTab = tab;
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
if (tab.type === "changelog" && tab.slug === node.slug) {
|
|
49
|
+
currentTab = tab;
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// The first tab, for a version/product landing page.
|
|
54
|
+
if (currentTab == null && node.type === "landingPage") {
|
|
55
|
+
currentTab = tabbedNode.children.find(isHeaderTab);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return currentTab;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=resolveCurrentTab.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveCurrentTab.js","sourceRoot":"","sources":["../../../src/navigation/utils/resolveCurrentTab.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAEjE,qFAAqF;AACrF,MAAM,WAAW,GAAG,CAAC,KAA8B,EAAkE,EAAE,CACnH,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC;AAEvD;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CAClC,OAAuD;IAEvD,MAAM,YAAY,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,KAAK,CAAC;IAC7F,OAAO,CACH,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,IAAI,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAChH,CAAC;AACN,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB,CAC7B,IAA+C,EAC/C,OAAuD;IAEvD,MAAM,UAAU,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACnD,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;QACrB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,cAAc,GAAG,CAAC,GAAG,OAAO,EAAE,IAAI,CAAC,CAAC;IAC1C,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3D,MAAM,cAAc,GAAG,eAAe,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChG,IAAI,UAAU,GACV,cAAc,EAAE,IAAI,KAAK,KAAK,IAAI,cAAc,EAAE,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;IAExG,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;QACrB,oEAAoE;QACpE,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;YACpC,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;gBACnD,UAAU,GAAG,GAAG,CAAC;gBACjB,MAAM;YACV,CAAC;YACD,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;gBACrD,UAAU,GAAG,GAAG,CAAC;gBACjB,MAAM;YACV,CAAC;QACL,CAAC;QAED,qDAAqD;QACrD,IAAI,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACpD,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvD,CAAC;IACL,CAAC;IAED,OAAO,UAAU,CAAC;AACtB,CAAC"}
|