@looker/api-explorer 0.9.35 → 0.9.37
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/CHANGELOG.md +56 -1
- package/dist/bundle.js +1 -1
- package/dist/bundle.js.map +1 -1
- package/e2e/MethodScene.spec.ts +80 -0
- package/e2e/diffScene.spec.ts +28 -20
- package/e2e/e2e.spec.ts +45 -7
- package/lib/ApiExplorer.js +24 -5
- package/lib/ApiExplorer.js.map +1 -1
- package/lib/components/DocMarkdown/DocMarkdown.js +9 -7
- package/lib/components/DocMarkdown/DocMarkdown.js.map +1 -1
- package/lib/components/DocSDKs/DocDeclarations.js +10 -15
- package/lib/components/DocSDKs/DocDeclarations.js.map +1 -1
- package/lib/components/SelectorContainer/ApiSpecSelector.js +6 -2
- package/lib/components/SelectorContainer/ApiSpecSelector.js.map +1 -1
- package/lib/components/SelectorContainer/SdkLanguageSelector.js +20 -21
- package/lib/components/SelectorContainer/SdkLanguageSelector.js.map +1 -1
- package/lib/components/SelectorContainer/SelectorContainer.js +4 -1
- package/lib/components/SelectorContainer/SelectorContainer.js.map +1 -1
- package/lib/components/SelectorContainer/utils.d.ts +2 -0
- package/lib/components/SelectorContainer/utils.js +32 -0
- package/lib/components/SelectorContainer/utils.js.map +1 -0
- package/lib/components/SideNav/SideNav.js +37 -16
- package/lib/components/SideNav/SideNav.js.map +1 -1
- package/lib/components/SideNav/SideNavMethods.js +9 -6
- package/lib/components/SideNav/SideNavMethods.js.map +1 -1
- package/lib/components/SideNav/SideNavTypes.js +7 -4
- package/lib/components/SideNav/SideNavTypes.js.map +1 -1
- package/lib/components/index.d.ts +0 -1
- package/lib/components/index.js +0 -8
- package/lib/components/index.js.map +1 -1
- package/lib/esm/ApiExplorer.js +26 -7
- package/lib/esm/ApiExplorer.js.map +1 -1
- package/lib/esm/components/DocMarkdown/DocMarkdown.js +6 -4
- package/lib/esm/components/DocMarkdown/DocMarkdown.js.map +1 -1
- package/lib/esm/components/DocSDKs/DocDeclarations.js +9 -14
- package/lib/esm/components/DocSDKs/DocDeclarations.js.map +1 -1
- package/lib/esm/components/SelectorContainer/ApiSpecSelector.js +6 -3
- package/lib/esm/components/SelectorContainer/ApiSpecSelector.js.map +1 -1
- package/lib/esm/components/SelectorContainer/SdkLanguageSelector.js +16 -18
- package/lib/esm/components/SelectorContainer/SdkLanguageSelector.js.map +1 -1
- package/lib/esm/components/SelectorContainer/SelectorContainer.js +5 -2
- package/lib/esm/components/SelectorContainer/SelectorContainer.js.map +1 -1
- package/lib/esm/components/SelectorContainer/utils.js +22 -0
- package/lib/esm/components/SelectorContainer/utils.js.map +1 -0
- package/lib/esm/components/SideNav/SideNav.js +40 -20
- package/lib/esm/components/SideNav/SideNav.js.map +1 -1
- package/lib/esm/components/SideNav/SideNavMethods.js +9 -6
- package/lib/esm/components/SideNav/SideNavMethods.js.map +1 -1
- package/lib/esm/components/SideNav/SideNavTypes.js +9 -6
- package/lib/esm/components/SideNav/SideNavTypes.js.map +1 -1
- package/lib/esm/components/index.js +0 -1
- package/lib/esm/components/index.js.map +1 -1
- package/lib/esm/routes/AppRouter.js +6 -4
- package/lib/esm/routes/AppRouter.js.map +1 -1
- package/lib/esm/scenes/DiffScene/DiffScene.js +11 -9
- package/lib/esm/scenes/DiffScene/DiffScene.js.map +1 -1
- package/lib/esm/scenes/DiffScene/DocDiff/DiffItem.js +5 -4
- package/lib/esm/scenes/DiffScene/DocDiff/DiffItem.js.map +1 -1
- package/lib/esm/scenes/DiffScene/DocDiff/DocDiff.js +4 -4
- package/lib/esm/scenes/DiffScene/DocDiff/DocDiff.js.map +1 -1
- package/lib/esm/scenes/ErrorDetailScene/ErrorDetailScene.js +31 -0
- package/lib/esm/scenes/ErrorDetailScene/ErrorDetailScene.js.map +1 -0
- package/lib/esm/scenes/ErrorDetailScene/index.js +2 -0
- package/lib/esm/scenes/ErrorDetailScene/index.js.map +1 -0
- package/lib/esm/scenes/MethodScene/MethodScene.js +30 -10
- package/lib/esm/scenes/MethodScene/MethodScene.js.map +1 -1
- package/lib/esm/{components → scenes/MethodScene/components}/DocResponses/DocResponseTypes.js +1 -1
- package/lib/esm/scenes/MethodScene/components/DocResponses/DocResponseTypes.js.map +1 -0
- package/lib/esm/scenes/MethodScene/components/DocResponses/DocResponses.js +73 -0
- package/lib/esm/scenes/MethodScene/components/DocResponses/DocResponses.js.map +1 -0
- package/lib/esm/{components → scenes/MethodScene/components}/DocResponses/index.js +0 -0
- package/lib/esm/scenes/MethodScene/components/DocResponses/index.js.map +1 -0
- package/lib/esm/{components → scenes/MethodScene/components}/DocResponses/utils.js +0 -0
- package/lib/esm/scenes/MethodScene/components/DocResponses/utils.js.map +1 -0
- package/lib/esm/scenes/MethodScene/components/index.js +1 -0
- package/lib/esm/scenes/MethodScene/components/index.js.map +1 -1
- package/lib/esm/scenes/MethodTagScene/MethodTagScene.js +38 -10
- package/lib/esm/scenes/MethodTagScene/MethodTagScene.js.map +1 -1
- package/lib/esm/scenes/TypeScene/TypeScene.js +7 -1
- package/lib/esm/scenes/TypeScene/TypeScene.js.map +1 -1
- package/lib/esm/scenes/TypeTagScene/TypeTagScene.js +39 -12
- package/lib/esm/scenes/TypeTagScene/TypeTagScene.js.map +1 -1
- package/lib/esm/scenes/index.js +1 -0
- package/lib/esm/scenes/index.js.map +1 -1
- package/lib/esm/scenes/utils/hooks/index.js +2 -0
- package/lib/esm/scenes/utils/hooks/index.js.map +1 -0
- package/lib/esm/scenes/utils/hooks/tagStoreSync.js +37 -0
- package/lib/esm/scenes/utils/hooks/tagStoreSync.js.map +1 -0
- package/lib/esm/scenes/utils/index.js +2 -0
- package/lib/esm/scenes/utils/index.js.map +1 -0
- package/lib/esm/state/settings/selectors.js +1 -0
- package/lib/esm/state/settings/selectors.js.map +1 -1
- package/lib/esm/state/settings/slice.js +6 -1
- package/lib/esm/state/settings/slice.js.map +1 -1
- package/lib/esm/utils/hooks/globalStoreSync.js +53 -0
- package/lib/esm/utils/hooks/globalStoreSync.js.map +1 -0
- package/lib/esm/utils/hooks/index.js +4 -0
- package/lib/esm/utils/hooks/index.js.map +1 -0
- package/lib/esm/utils/hooks/navigation.js +72 -0
- package/lib/esm/utils/hooks/navigation.js.map +1 -0
- package/lib/esm/utils/hooks/useQuery.js +9 -0
- package/lib/esm/utils/hooks/useQuery.js.map +1 -0
- package/lib/esm/utils/index.js +2 -0
- package/lib/esm/utils/index.js.map +1 -1
- package/lib/esm/utils/path.js +23 -2
- package/lib/esm/utils/path.js.map +1 -1
- package/lib/esm/utils/sdkLanguage.js +42 -0
- package/lib/esm/utils/sdkLanguage.js.map +1 -0
- package/lib/routes/AppRouter.d.ts +1 -2
- package/lib/routes/AppRouter.js +5 -3
- package/lib/routes/AppRouter.js.map +1 -1
- package/lib/scenes/DiffScene/DiffScene.d.ts +0 -2
- package/lib/scenes/DiffScene/DiffScene.js +8 -6
- package/lib/scenes/DiffScene/DiffScene.js.map +1 -1
- package/lib/scenes/DiffScene/DocDiff/DiffItem.js +4 -4
- package/lib/scenes/DiffScene/DocDiff/DiffItem.js.map +1 -1
- package/lib/scenes/DiffScene/DocDiff/DocDiff.js +4 -4
- package/lib/scenes/DiffScene/DocDiff/DocDiff.js.map +1 -1
- package/lib/scenes/ErrorDetailScene/ErrorDetailScene.d.ts +7 -0
- package/lib/scenes/ErrorDetailScene/ErrorDetailScene.js +47 -0
- package/lib/scenes/ErrorDetailScene/ErrorDetailScene.js.map +1 -0
- package/lib/scenes/ErrorDetailScene/index.d.ts +1 -0
- package/lib/scenes/ErrorDetailScene/index.js +14 -0
- package/lib/{components/DocResponses → scenes/ErrorDetailScene}/index.js.map +1 -1
- package/lib/scenes/MethodScene/MethodScene.js +25 -5
- package/lib/scenes/MethodScene/MethodScene.js.map +1 -1
- package/lib/{components → scenes/MethodScene/components}/DocResponses/DocResponseTypes.d.ts +2 -2
- package/lib/{components → scenes/MethodScene/components}/DocResponses/DocResponseTypes.js +2 -2
- package/lib/scenes/MethodScene/components/DocResponses/DocResponseTypes.js.map +1 -0
- package/lib/scenes/MethodScene/components/DocResponses/DocResponses.d.ts +9 -0
- package/lib/scenes/MethodScene/components/DocResponses/DocResponses.js +93 -0
- package/lib/scenes/MethodScene/components/DocResponses/DocResponses.js.map +1 -0
- package/lib/{components → scenes/MethodScene/components}/DocResponses/index.d.ts +0 -0
- package/lib/{components → scenes/MethodScene/components}/DocResponses/index.js +0 -0
- package/lib/scenes/MethodScene/components/DocResponses/index.js.map +1 -0
- package/lib/{components → scenes/MethodScene/components}/DocResponses/utils.d.ts +0 -0
- package/lib/{components → scenes/MethodScene/components}/DocResponses/utils.js +0 -0
- package/lib/scenes/MethodScene/components/DocResponses/utils.js.map +1 -0
- package/lib/scenes/MethodScene/components/index.d.ts +1 -0
- package/lib/scenes/MethodScene/components/index.js +8 -0
- package/lib/scenes/MethodScene/components/index.js.map +1 -1
- package/lib/scenes/MethodTagScene/MethodTagScene.js +42 -11
- package/lib/scenes/MethodTagScene/MethodTagScene.js.map +1 -1
- package/lib/scenes/TypeScene/TypeScene.js +8 -1
- package/lib/scenes/TypeScene/TypeScene.js.map +1 -1
- package/lib/scenes/TypeTagScene/TypeTagScene.js +42 -12
- package/lib/scenes/TypeTagScene/TypeTagScene.js.map +1 -1
- package/lib/scenes/index.d.ts +1 -0
- package/lib/scenes/index.js +8 -0
- package/lib/scenes/index.js.map +1 -1
- package/lib/scenes/utils/hooks/index.d.ts +1 -0
- package/lib/scenes/utils/hooks/index.js +14 -0
- package/lib/scenes/utils/hooks/index.js.map +1 -0
- package/lib/scenes/utils/hooks/tagStoreSync.d.ts +1 -0
- package/lib/scenes/utils/hooks/tagStoreSync.js +51 -0
- package/lib/scenes/utils/hooks/tagStoreSync.js.map +1 -0
- package/lib/scenes/utils/index.d.ts +1 -0
- package/lib/scenes/utils/index.js +14 -0
- package/lib/scenes/utils/index.js.map +1 -0
- package/lib/state/settings/selectors.d.ts +2 -1
- package/lib/state/settings/selectors.js +5 -1
- package/lib/state/settings/selectors.js.map +1 -1
- package/lib/state/settings/slice.d.ts +7 -1
- package/lib/state/settings/slice.js +6 -1
- package/lib/state/settings/slice.js.map +1 -1
- package/lib/test-data/index.d.ts +1 -0
- package/lib/test-data/index.js +14 -0
- package/lib/test-data/index.js.map +1 -1
- package/lib/test-data/sdkLanguages.d.ts +10 -0
- package/lib/test-data/sdkLanguages.js +19 -0
- package/lib/test-data/sdkLanguages.js.map +1 -0
- package/lib/utils/hooks/globalStoreSync.d.ts +1 -0
- package/lib/utils/hooks/globalStoreSync.js +67 -0
- package/lib/utils/hooks/globalStoreSync.js.map +1 -0
- package/lib/utils/hooks/index.d.ts +3 -0
- package/lib/utils/hooks/index.js +30 -0
- package/lib/utils/hooks/index.js.map +1 -0
- package/lib/utils/hooks/navigation.d.ts +11 -0
- package/lib/utils/hooks/navigation.js +83 -0
- package/lib/utils/hooks/navigation.js.map +1 -0
- package/lib/utils/hooks/useQuery.d.ts +1 -0
- package/lib/utils/hooks/useQuery.js +20 -0
- package/lib/utils/hooks/useQuery.js.map +1 -0
- package/lib/utils/index.d.ts +2 -0
- package/lib/utils/index.js +38 -1
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/path.d.ts +6 -2
- package/lib/utils/path.js +34 -3
- package/lib/utils/path.js.map +1 -1
- package/lib/utils/sdkLanguage.d.ts +6 -0
- package/lib/utils/sdkLanguage.js +59 -0
- package/lib/utils/sdkLanguage.js.map +1 -0
- package/package.json +14 -14
- package/src/ApiExplorer.tsx +18 -7
- package/src/components/DocMarkdown/DocMarkdown.tsx +4 -4
- package/src/components/DocSDKs/DocDeclarations.tsx +11 -22
- package/src/components/DocSDKs/DocSDKs.spec.tsx +4 -1
- package/src/components/Header/Header.spec.tsx +1 -1
- package/src/components/SelectorContainer/ApiSpecSelector.spec.tsx +5 -2
- package/src/components/SelectorContainer/ApiSpecSelector.tsx +4 -3
- package/src/components/SelectorContainer/SdkLanguageSelector.spec.tsx +60 -33
- package/src/components/SelectorContainer/SdkLanguageSelector.tsx +15 -22
- package/src/components/SelectorContainer/SelectorContainer.spec.tsx +1 -1
- package/src/components/SelectorContainer/SelectorContainer.tsx +18 -15
- package/src/components/SelectorContainer/utils.ts +45 -0
- package/src/components/SideNav/SideNav.spec.tsx +39 -5
- package/src/components/SideNav/SideNav.tsx +42 -29
- package/src/components/SideNav/SideNavMethods.spec.tsx +5 -0
- package/src/components/SideNav/SideNavMethods.tsx +11 -8
- package/src/components/SideNav/SideNavTypes.spec.tsx +9 -2
- package/src/components/SideNav/SideNavTypes.tsx +10 -8
- package/src/components/index.ts +0 -1
- package/src/routes/AppRouter.tsx +7 -5
- package/src/scenes/DiffScene/DiffScene.tsx +10 -10
- package/src/scenes/DiffScene/DocDiff/DiffItem.spec.tsx +4 -3
- package/src/scenes/DiffScene/DocDiff/DiffItem.tsx +3 -4
- package/src/scenes/DiffScene/DocDiff/DocDiff.spec.tsx +73 -2
- package/src/scenes/DiffScene/DocDiff/DocDiff.tsx +4 -4
- package/src/scenes/ErrorDetailScene/ErrorDetailScene.tsx +72 -0
- package/src/scenes/ErrorDetailScene/index.ts +26 -0
- package/src/scenes/MethodScene/MethodScene.tsx +23 -8
- package/src/{components → scenes/MethodScene/components}/DocResponses/DocResponseTypes.tsx +3 -6
- package/src/scenes/MethodScene/components/DocResponses/DocResponses.spec.tsx +153 -0
- package/src/scenes/MethodScene/components/DocResponses/DocResponses.tsx +103 -0
- package/src/{components → scenes/MethodScene/components}/DocResponses/index.ts +0 -0
- package/src/{components → scenes/MethodScene/components}/DocResponses/utils.spec.ts +1 -1
- package/src/{components → scenes/MethodScene/components}/DocResponses/utils.ts +0 -0
- package/src/scenes/MethodScene/components/index.ts +1 -0
- package/src/scenes/MethodTagScene/MethodTagScene.spec.tsx +25 -14
- package/src/scenes/MethodTagScene/MethodTagScene.tsx +42 -10
- package/src/scenes/TypeScene/TypeScene.tsx +8 -2
- package/src/scenes/TypeTagScene/TypeTagScene.spec.tsx +21 -11
- package/src/scenes/TypeTagScene/TypeTagScene.tsx +46 -13
- package/src/scenes/index.ts +1 -0
- package/src/scenes/utils/hooks/index.ts +27 -0
- package/src/scenes/utils/hooks/tagStoreSync.spec.ts +102 -0
- package/src/scenes/utils/hooks/tagStoreSync.ts +68 -0
- package/src/scenes/utils/index.ts +27 -0
- package/src/state/settings/selectors.spec.ts +5 -1
- package/src/state/settings/selectors.ts +3 -0
- package/src/state/settings/slice.ts +6 -0
- package/src/test-data/index.ts +1 -0
- package/src/test-data/sdkLanguages.ts +36 -0
- package/src/utils/hooks/globalStoreSync.spec.tsx +146 -0
- package/src/utils/hooks/globalStoreSync.ts +77 -0
- package/src/utils/hooks/index.ts +28 -0
- package/src/utils/hooks/navigation.spec.ts +118 -0
- package/src/utils/hooks/navigation.ts +121 -0
- package/src/utils/hooks/useQuery.ts +36 -0
- package/src/utils/index.ts +2 -0
- package/src/utils/path.spec.ts +92 -3
- package/src/utils/path.ts +46 -4
- package/src/utils/sdkLanguage.spec.ts +69 -0
- package/src/utils/sdkLanguage.ts +63 -0
- package/lib/components/DocResponses/DocResponseTypes.js.map +0 -1
- package/lib/components/DocResponses/DocResponses.d.ts +0 -8
- package/lib/components/DocResponses/DocResponses.js +0 -46
- package/lib/components/DocResponses/DocResponses.js.map +0 -1
- package/lib/components/DocResponses/utils.js.map +0 -1
- package/lib/esm/components/DocResponses/DocResponseTypes.js.map +0 -1
- package/lib/esm/components/DocResponses/DocResponses.js +0 -30
- package/lib/esm/components/DocResponses/DocResponses.js.map +0 -1
- package/lib/esm/components/DocResponses/index.js.map +0 -1
- package/lib/esm/components/DocResponses/utils.js.map +0 -1
- package/src/components/DocResponses/DocResponses.spec.tsx +0 -60
- package/src/components/DocResponses/DocResponses.tsx +0 -69
package/lib/esm/ApiExplorer.js
CHANGED
|
@@ -13,8 +13,8 @@ import { useLocation } from 'react-router-dom';
|
|
|
13
13
|
import { Header, SideNav, ErrorBoundary, SelectorContainer, HEADER_TOGGLE_LABEL, Loader, Banner } from './components';
|
|
14
14
|
import { AppRouter } from './routes';
|
|
15
15
|
import { apixFilesHost } from './utils/lodeUtils';
|
|
16
|
-
import { useSettingActions,
|
|
17
|
-
import { getSpecKey,
|
|
16
|
+
import { useSettingActions, useLodeActions, useLodesStoreState, useSpecActions, useSpecStoreState, selectSpecs, selectCurrentSpec, useSettingStoreState } from './state';
|
|
17
|
+
import { getSpecKey, findSdk, useGlobalStoreSync } from './utils';
|
|
18
18
|
var BodyOverride = createGlobalStyle(_templateObject || (_templateObject = _taggedTemplateLiteral([" html { height: 100%; overflow: hidden; } "])));
|
|
19
19
|
export var ApiExplorer = _ref => {
|
|
20
20
|
var _location$pathname2;
|
|
@@ -25,7 +25,6 @@ export var ApiExplorer = _ref => {
|
|
|
25
25
|
declarationsLodeUrl = "".concat(apixFilesHost, "/declarationsIndex.json"),
|
|
26
26
|
headless = false
|
|
27
27
|
} = _ref;
|
|
28
|
-
useSettingStoreState();
|
|
29
28
|
useLodesStoreState();
|
|
30
29
|
var {
|
|
31
30
|
working,
|
|
@@ -37,13 +36,19 @@ export var ApiExplorer = _ref => {
|
|
|
37
36
|
initLodesAction
|
|
38
37
|
} = useLodeActions();
|
|
39
38
|
var {
|
|
40
|
-
|
|
39
|
+
initialized
|
|
40
|
+
} = useSettingStoreState();
|
|
41
|
+
var {
|
|
42
|
+
initSettingsAction,
|
|
43
|
+
setSearchPatternAction,
|
|
44
|
+
setSdkLanguageAction
|
|
41
45
|
} = useSettingActions();
|
|
42
46
|
var {
|
|
43
47
|
initSpecsAction,
|
|
44
48
|
setCurrentSpecAction
|
|
45
49
|
} = useSpecActions();
|
|
46
50
|
var location = useLocation();
|
|
51
|
+
useGlobalStoreSync();
|
|
47
52
|
var [hasNavigation, setHasNavigation] = useState(true);
|
|
48
53
|
|
|
49
54
|
var toggleNavigation = target => setHasNavigation(target || !hasNavigation);
|
|
@@ -71,12 +76,27 @@ export var ApiExplorer = _ref => {
|
|
|
71
76
|
|
|
72
77
|
var maybeSpec = (_location$pathname = location.pathname) === null || _location$pathname === void 0 ? void 0 : _location$pathname.split('/')[1];
|
|
73
78
|
|
|
74
|
-
if (spec && maybeSpec && maybeSpec !==
|
|
79
|
+
if (spec && maybeSpec && maybeSpec !== spec.key) {
|
|
75
80
|
setCurrentSpecAction({
|
|
76
81
|
currentSpecKey: maybeSpec
|
|
77
82
|
});
|
|
78
83
|
}
|
|
79
84
|
}, [location.pathname, spec]);
|
|
85
|
+
useEffect(() => {
|
|
86
|
+
if (!initialized) return;
|
|
87
|
+
var searchParams = new URLSearchParams(location.search);
|
|
88
|
+
var searchPattern = searchParams.get('s') || '';
|
|
89
|
+
var sdkParam = searchParams.get('sdk') || 'all';
|
|
90
|
+
var {
|
|
91
|
+
language: sdkLanguage
|
|
92
|
+
} = findSdk(sdkParam);
|
|
93
|
+
setSearchPatternAction({
|
|
94
|
+
searchPattern
|
|
95
|
+
});
|
|
96
|
+
setSdkLanguageAction({
|
|
97
|
+
sdkLanguage
|
|
98
|
+
});
|
|
99
|
+
}, [location.search]);
|
|
80
100
|
useEffect(() => {
|
|
81
101
|
if (headless) {
|
|
82
102
|
window.addEventListener('message', hasNavigationToggle);
|
|
@@ -91,7 +111,7 @@ export var ApiExplorer = _ref => {
|
|
|
91
111
|
var themeOverrides = adaptor.themeOverrides();
|
|
92
112
|
var neededSpec = (_location$pathname2 = location.pathname) === null || _location$pathname2 === void 0 ? void 0 : _location$pathname2.split('/')[1];
|
|
93
113
|
|
|
94
|
-
if (!neededSpec
|
|
114
|
+
if (!neededSpec) {
|
|
95
115
|
neededSpec = spec === null || spec === void 0 ? void 0 : spec.key;
|
|
96
116
|
}
|
|
97
117
|
|
|
@@ -149,7 +169,6 @@ export var ApiExplorer = _ref => {
|
|
|
149
169
|
})), React.createElement(AppRouter, {
|
|
150
170
|
specKey: spec.key,
|
|
151
171
|
api: spec.api,
|
|
152
|
-
specs: specs,
|
|
153
172
|
toggleNavigation: toggleNavigation
|
|
154
173
|
}))))), !headless && React.createElement(BodyOverride, null));
|
|
155
174
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ApiExplorer.tsx"],"names":["React","useState","useEffect","useCallback","styled","createGlobalStyle","Aside","ComponentsProvider","Divider","Heading","IconButton","Layout","Page","Space","FirstPage","LastPage","registerEnvAdaptor","unregisterEnvAdaptor","useSelector","useLocation","Header","SideNav","ErrorBoundary","SelectorContainer","HEADER_TOGGLE_LABEL","Loader","Banner","AppRouter","apixFilesHost","useSettingActions","useSettingStoreState","useLodeActions","useLodesStoreState","useSpecActions","useSpecStoreState","selectSpecs","selectCurrentSpec","getSpecKey","diffPath","BodyOverride","ApiExplorer","adaptor","examplesLodeUrl","declarationsLodeUrl","headless","working","description","specs","spec","initLodesAction","initSettingsAction","initSpecsAction","setCurrentSpecAction","location","hasNavigation","setHasNavigation","toggleNavigation","target","hasNavigationToggle","e","origin","window","data","action","currentHasNavigation","specKey","maybeSpec","pathname","split","key","currentSpecKey","addEventListener","removeEventListener","themeOverrides","neededSpec","loadGoogleFonts","themeCustomizations","logError","bind","overflow","api","AsideBorder","isOpen"],"mappings":"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","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type { FC } from 'react'\nimport React, { useState, useEffect, useCallback } from 'react'\nimport styled, { createGlobalStyle } from 'styled-components'\nimport {\n Aside,\n ComponentsProvider,\n Divider,\n Heading,\n IconButton,\n Layout,\n Page,\n Space,\n} from '@looker/components'\nimport { FirstPage } from '@styled-icons/material/FirstPage'\nimport { LastPage } from '@styled-icons/material/LastPage'\nimport {\n registerEnvAdaptor,\n unregisterEnvAdaptor,\n} from '@looker/extension-utils'\nimport { useSelector } from 'react-redux'\nimport { useLocation } from 'react-router-dom'\n\nimport type { IApixAdaptor } from './utils'\nimport {\n Header,\n SideNav,\n ErrorBoundary,\n SelectorContainer,\n HEADER_TOGGLE_LABEL,\n Loader,\n Banner,\n} from './components'\nimport { AppRouter } from './routes'\nimport { apixFilesHost } from './utils/lodeUtils'\nimport {\n useSettingActions,\n useSettingStoreState,\n useLodeActions,\n useLodesStoreState,\n useSpecActions,\n useSpecStoreState,\n selectSpecs,\n selectCurrentSpec,\n} from './state'\nimport { getSpecKey, diffPath } from './utils'\n\nexport interface ApiExplorerProps {\n adaptor: IApixAdaptor\n examplesLodeUrl?: string\n declarationsLodeUrl?: string\n headless?: boolean\n}\n\nconst BodyOverride = createGlobalStyle` html { height: 100%; overflow: hidden; } `\n\nexport const ApiExplorer: FC<ApiExplorerProps> = ({\n adaptor,\n examplesLodeUrl = 'https://raw.githubusercontent.com/looker-open-source/sdk-codegen/main/examplesIndex.json',\n declarationsLodeUrl = `${apixFilesHost}/declarationsIndex.json`,\n headless = false,\n}) => {\n useSettingStoreState()\n useLodesStoreState()\n const { working, description } = useSpecStoreState()\n const specs = useSelector(selectSpecs)\n const spec = useSelector(selectCurrentSpec)\n const { initLodesAction } = useLodeActions()\n const { initSettingsAction } = useSettingActions()\n const { initSpecsAction, setCurrentSpecAction } = useSpecActions()\n\n const location = useLocation()\n const [hasNavigation, setHasNavigation] = useState(true)\n const toggleNavigation = (target?: boolean) =>\n setHasNavigation(target || !hasNavigation)\n\n const hasNavigationToggle = useCallback((e: MessageEvent<any>) => {\n if (e.origin === window.origin && e.data.action === 'toggle_sidebar') {\n setHasNavigation((currentHasNavigation) => !currentHasNavigation)\n }\n }, [])\n\n registerEnvAdaptor(adaptor)\n\n useEffect(() => {\n initSettingsAction()\n initLodesAction({ examplesLodeUrl, declarationsLodeUrl })\n\n const specKey = getSpecKey(location)\n initSpecsAction({ specKey })\n return () => unregisterEnvAdaptor()\n }, [])\n\n useEffect(() => {\n const maybeSpec = location.pathname?.split('/')[1]\n if (spec && maybeSpec && maybeSpec !== diffPath && maybeSpec !== spec.key) {\n setCurrentSpecAction({ currentSpecKey: maybeSpec })\n }\n }, [location.pathname, spec])\n\n useEffect(() => {\n if (headless) {\n window.addEventListener('message', hasNavigationToggle)\n }\n return () => {\n if (headless) {\n window.removeEventListener('message', hasNavigationToggle)\n }\n }\n }, [headless, hasNavigationToggle])\n\n const themeOverrides = adaptor.themeOverrides()\n\n let neededSpec = location.pathname?.split('/')[1]\n if (!neededSpec || neededSpec === diffPath) {\n neededSpec = spec?.key\n }\n\n return (\n <>\n <ComponentsProvider\n loadGoogleFonts={themeOverrides.loadGoogleFonts}\n themeCustomizations={themeOverrides.themeCustomizations}\n >\n {working || !neededSpec || neededSpec !== spec.key ? (\n <Loader message={description} themeOverrides={themeOverrides} />\n ) : (\n <ErrorBoundary logError={adaptor.logError.bind(adaptor)}>\n <Banner adaptor={adaptor} specs={specs} />\n <Page style={{ overflow: 'hidden' }}>\n {!headless && (\n <Header spec={spec} toggleNavigation={toggleNavigation} />\n )}\n <Layout hasAside height=\"100%\">\n <AsideBorder\n borderRight\n isOpen={hasNavigation}\n headless={headless}\n >\n {headless && (\n <>\n <Space\n alignItems=\"center\"\n py=\"u3\"\n px={hasNavigation ? 'u5' : '0'}\n justifyContent={\n hasNavigation ? 'space-between' : 'center'\n }\n >\n {hasNavigation && (\n <Heading\n as=\"h2\"\n fontSize=\"xsmall\"\n fontWeight=\"bold\"\n color=\"text2\"\n >\n API DOCUMENTATION\n </Heading>\n )}\n <IconButton\n size=\"xsmall\"\n shape=\"round\"\n icon={hasNavigation ? <FirstPage /> : <LastPage />}\n label={HEADER_TOGGLE_LABEL}\n onClick={() => toggleNavigation()}\n />\n </Space>\n {hasNavigation && (\n <>\n <Divider mb=\"u3\" appearance=\"light\" />\n <SelectorContainer\n spec={spec}\n ml=\"large\"\n mr=\"large\"\n />\n </>\n )}\n </>\n )}\n {hasNavigation && <SideNav headless={headless} spec={spec} />}\n </AsideBorder>\n <AppRouter\n specKey={spec.key}\n api={spec.api!}\n specs={specs}\n toggleNavigation={toggleNavigation}\n />\n </Layout>\n </Page>\n </ErrorBoundary>\n )}\n </ComponentsProvider>\n {!headless && <BodyOverride />}\n </>\n )\n}\n\nconst AsideBorder = styled(Aside)<{\n isOpen: boolean\n headless: boolean\n}>`\n width: ${({ isOpen, headless }) =>\n isOpen ? '20rem' : headless ? '2.75rem' : '0rem'};\n`\n"],"file":"ApiExplorer.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/ApiExplorer.tsx"],"names":["React","useState","useEffect","useCallback","styled","createGlobalStyle","Aside","ComponentsProvider","Divider","Heading","IconButton","Layout","Page","Space","FirstPage","LastPage","registerEnvAdaptor","unregisterEnvAdaptor","useSelector","useLocation","Header","SideNav","ErrorBoundary","SelectorContainer","HEADER_TOGGLE_LABEL","Loader","Banner","AppRouter","apixFilesHost","useSettingActions","useLodeActions","useLodesStoreState","useSpecActions","useSpecStoreState","selectSpecs","selectCurrentSpec","useSettingStoreState","getSpecKey","findSdk","useGlobalStoreSync","BodyOverride","ApiExplorer","adaptor","examplesLodeUrl","declarationsLodeUrl","headless","working","description","specs","spec","initLodesAction","initialized","initSettingsAction","setSearchPatternAction","setSdkLanguageAction","initSpecsAction","setCurrentSpecAction","location","hasNavigation","setHasNavigation","toggleNavigation","target","hasNavigationToggle","e","origin","window","data","action","currentHasNavigation","specKey","maybeSpec","pathname","split","key","currentSpecKey","searchParams","URLSearchParams","search","searchPattern","get","sdkParam","language","sdkLanguage","addEventListener","removeEventListener","themeOverrides","neededSpec","loadGoogleFonts","themeCustomizations","logError","bind","overflow","api","AsideBorder","isOpen"],"mappings":";;;;AA2BA,OAAOA,KAAP,IAAgBC,QAAhB,EAA0BC,SAA1B,EAAqCC,WAArC,QAAwD,OAAxD;AACA,OAAOC,MAAP,IAAiBC,iBAAjB,QAA0C,mBAA1C;AACA,SACEC,KADF,EAEEC,kBAFF,EAGEC,OAHF,EAIEC,OAJF,EAKEC,UALF,EAMEC,MANF,EAOEC,IAPF,EAQEC,KARF,QASO,oBATP;AAUA,SAASC,SAAT,QAA0B,kCAA1B;AACA,SAASC,QAAT,QAAyB,iCAAzB;AACA,SACEC,kBADF,EAEEC,oBAFF,QAGO,yBAHP;AAIA,SAASC,WAAT,QAA4B,aAA5B;AACA,SAASC,WAAT,QAA4B,kBAA5B;AAGA,SACEC,MADF,EAEEC,OAFF,EAGEC,aAHF,EAIEC,iBAJF,EAKEC,mBALF,EAMEC,MANF,EAOEC,MAPF,QAQO,cARP;AASA,SAASC,SAAT,QAA0B,UAA1B;AACA,SAASC,aAAT,QAA8B,mBAA9B;AACA,SACEC,iBADF,EAEEC,cAFF,EAGEC,kBAHF,EAIEC,cAJF,EAKEC,iBALF,EAMEC,WANF,EAOEC,iBAPF,EAQEC,oBARF,QASO,SATP;AAUA,SAASC,UAAT,EAAqBC,OAArB,EAA8BC,kBAA9B,QAAwD,SAAxD;AASA,IAAMC,YAAY,GAAGnC,iBAAH,+GAAlB;AAEA,OAAO,IAAMoC,WAAiC,GAAG,QAK3C;AAAA;;AAAA,MAL4C;AAChDC,IAAAA,OADgD;AAEhDC,IAAAA,eAAe,GAAG,0FAF8B;AAGhDC,IAAAA,mBAAmB,aAAMhB,aAAN,4BAH6B;AAIhDiB,IAAAA,QAAQ,GAAG;AAJqC,GAK5C;AACJd,EAAAA,kBAAkB;AAClB,MAAM;AAAEe,IAAAA,OAAF;AAAWC,IAAAA;AAAX,MAA2Bd,iBAAiB,EAAlD;AACA,MAAMe,KAAK,GAAG9B,WAAW,CAACgB,WAAD,CAAzB;AACA,MAAMe,IAAI,GAAG/B,WAAW,CAACiB,iBAAD,CAAxB;AACA,MAAM;AAAEe,IAAAA;AAAF,MAAsBpB,cAAc,EAA1C;AACA,MAAM;AAAEqB,IAAAA;AAAF,MAAkBf,oBAAoB,EAA5C;AACA,MAAM;AAAEgB,IAAAA,kBAAF;AAAsBC,IAAAA,sBAAtB;AAA8CC,IAAAA;AAA9C,MACJzB,iBAAiB,EADnB;AAEA,MAAM;AAAE0B,IAAAA,eAAF;AAAmBC,IAAAA;AAAnB,MAA4CxB,cAAc,EAAhE;AAEA,MAAMyB,QAAQ,GAAGtC,WAAW,EAA5B;AACAoB,EAAAA,kBAAkB;AAClB,MAAM,CAACmB,aAAD,EAAgBC,gBAAhB,IAAoC1D,QAAQ,CAAC,IAAD,CAAlD;;AACA,MAAM2D,gBAAgB,GAAIC,MAAD,IACvBF,gBAAgB,CAACE,MAAM,IAAI,CAACH,aAAZ,CADlB;;AAGA,MAAMI,mBAAmB,GAAG3D,WAAW,CAAE4D,CAAD,IAA0B;AAChE,QAAIA,CAAC,CAACC,MAAF,KAAaC,MAAM,CAACD,MAApB,IAA8BD,CAAC,CAACG,IAAF,CAAOC,MAAP,KAAkB,gBAApD,EAAsE;AACpER,MAAAA,gBAAgB,CAAES,oBAAD,IAA0B,CAACA,oBAA5B,CAAhB;AACD;AACF,GAJsC,EAIpC,EAJoC,CAAvC;AAMApD,EAAAA,kBAAkB,CAAC0B,OAAD,CAAlB;AAEAxC,EAAAA,SAAS,CAAC,MAAM;AACdkD,IAAAA,kBAAkB;AAClBF,IAAAA,eAAe,CAAC;AAAEP,MAAAA,eAAF;AAAmBC,MAAAA;AAAnB,KAAD,CAAf;AAEA,QAAMyB,OAAO,GAAGhC,UAAU,CAACoB,QAAD,CAA1B;AACAF,IAAAA,eAAe,CAAC;AAAEc,MAAAA;AAAF,KAAD,CAAf;AACA,WAAO,MAAMpD,oBAAoB,EAAjC;AACD,GAPQ,EAON,EAPM,CAAT;AASAf,EAAAA,SAAS,CAAC,MAAM;AAAA;;AACd,QAAMoE,SAAS,yBAAGb,QAAQ,CAACc,QAAZ,uDAAG,mBAAmBC,KAAnB,CAAyB,GAAzB,EAA8B,CAA9B,CAAlB;;AACA,QAAIvB,IAAI,IAAIqB,SAAR,IAAqBA,SAAS,KAAKrB,IAAI,CAACwB,GAA5C,EAAiD;AAC/CjB,MAAAA,oBAAoB,CAAC;AAAEkB,QAAAA,cAAc,EAAEJ;AAAlB,OAAD,CAApB;AACD;AACF,GALQ,EAKN,CAACb,QAAQ,CAACc,QAAV,EAAoBtB,IAApB,CALM,CAAT;AAOA/C,EAAAA,SAAS,CAAC,MAAM;AACd,QAAI,CAACiD,WAAL,EAAkB;AAClB,QAAMwB,YAAY,GAAG,IAAIC,eAAJ,CAAoBnB,QAAQ,CAACoB,MAA7B,CAArB;AACA,QAAMC,aAAa,GAAGH,YAAY,CAACI,GAAb,CAAiB,GAAjB,KAAyB,EAA/C;AACA,QAAMC,QAAQ,GAAGL,YAAY,CAACI,GAAb,CAAiB,KAAjB,KAA2B,KAA5C;AACA,QAAM;AAAEE,MAAAA,QAAQ,EAAEC;AAAZ,QAA4B5C,OAAO,CAAC0C,QAAD,CAAzC;AACA3B,IAAAA,sBAAsB,CAAC;AAAEyB,MAAAA;AAAF,KAAD,CAAtB;AACAxB,IAAAA,oBAAoB,CAAC;AAAE4B,MAAAA;AAAF,KAAD,CAApB;AACD,GARQ,EAQN,CAACzB,QAAQ,CAACoB,MAAV,CARM,CAAT;AAUA3E,EAAAA,SAAS,CAAC,MAAM;AACd,QAAI2C,QAAJ,EAAc;AACZoB,MAAAA,MAAM,CAACkB,gBAAP,CAAwB,SAAxB,EAAmCrB,mBAAnC;AACD;;AACD,WAAO,MAAM;AACX,UAAIjB,QAAJ,EAAc;AACZoB,QAAAA,MAAM,CAACmB,mBAAP,CAA2B,SAA3B,EAAsCtB,mBAAtC;AACD;AACF,KAJD;AAKD,GATQ,EASN,CAACjB,QAAD,EAAWiB,mBAAX,CATM,CAAT;AAWA,MAAMuB,cAAc,GAAG3C,OAAO,CAAC2C,cAAR,EAAvB;AAEA,MAAIC,UAAU,0BAAG7B,QAAQ,CAACc,QAAZ,wDAAG,oBAAmBC,KAAnB,CAAyB,GAAzB,EAA8B,CAA9B,CAAjB;;AACA,MAAI,CAACc,UAAL,EAAiB;AACfA,IAAAA,UAAU,GAAGrC,IAAH,aAAGA,IAAH,uBAAGA,IAAI,CAAEwB,GAAnB;AACD;;AAED,SACE,0CACE,oBAAC,kBAAD;AACE,IAAA,eAAe,EAAEY,cAAc,CAACE,eADlC;AAEE,IAAA,mBAAmB,EAAEF,cAAc,CAACG;AAFtC,KAIG1C,OAAO,IAAI,CAACwC,UAAZ,IAA0BA,UAAU,KAAKrC,IAAI,CAACwB,GAA9C,GACC,oBAAC,MAAD;AAAQ,IAAA,OAAO,EAAE1B,WAAjB;AAA8B,IAAA,cAAc,EAAEsC;AAA9C,IADD,GAGC,oBAAC,aAAD;AAAe,IAAA,QAAQ,EAAE3C,OAAO,CAAC+C,QAAR,CAAiBC,IAAjB,CAAsBhD,OAAtB;AAAzB,KACE,oBAAC,MAAD;AAAQ,IAAA,OAAO,EAAEA,OAAjB;AAA0B,IAAA,KAAK,EAAEM;AAAjC,IADF,EAEE,oBAAC,IAAD;AAAM,IAAA,KAAK,EAAE;AAAE2C,MAAAA,QAAQ,EAAE;AAAZ;AAAb,KACG,CAAC9C,QAAD,IACC,oBAAC,MAAD;AAAQ,IAAA,IAAI,EAAEI,IAAd;AAAoB,IAAA,gBAAgB,EAAEW;AAAtC,IAFJ,EAIE,oBAAC,MAAD;AAAQ,IAAA,QAAQ,MAAhB;AAAiB,IAAA,MAAM,EAAC;AAAxB,KACE,oBAAC,WAAD;AACE,IAAA,WAAW,MADb;AAEE,IAAA,MAAM,EAAEF,aAFV;AAGE,IAAA,QAAQ,EAAEb;AAHZ,KAKGA,QAAQ,IACP,0CACE,oBAAC,KAAD;AACE,IAAA,UAAU,EAAC,QADb;AAEE,IAAA,EAAE,EAAC,IAFL;AAGE,IAAA,EAAE,EAAEa,aAAa,GAAG,IAAH,GAAU,GAH7B;AAIE,IAAA,cAAc,EACZA,aAAa,GAAG,eAAH,GAAqB;AALtC,KAQGA,aAAa,IACZ,oBAAC,OAAD;AACE,IAAA,EAAE,EAAC,IADL;AAEE,IAAA,QAAQ,EAAC,QAFX;AAGE,IAAA,UAAU,EAAC,MAHb;AAIE,IAAA,KAAK,EAAC;AAJR,yBATJ,EAkBE,oBAAC,UAAD;AACE,IAAA,IAAI,EAAC,QADP;AAEE,IAAA,KAAK,EAAC,OAFR;AAGE,IAAA,IAAI,EAAEA,aAAa,GAAG,oBAAC,SAAD,OAAH,GAAmB,oBAAC,QAAD,OAHxC;AAIE,IAAA,KAAK,EAAElC,mBAJT;AAKE,IAAA,OAAO,EAAE,MAAMoC,gBAAgB;AALjC,IAlBF,CADF,EA2BGF,aAAa,IACZ,0CACE,oBAAC,OAAD;AAAS,IAAA,EAAE,EAAC,IAAZ;AAAiB,IAAA,UAAU,EAAC;AAA5B,IADF,EAEE,oBAAC,iBAAD;AACE,IAAA,IAAI,EAAET,IADR;AAEE,IAAA,EAAE,EAAC,OAFL;AAGE,IAAA,EAAE,EAAC;AAHL,IAFF,CA5BJ,CANJ,EA6CGS,aAAa,IAAI,oBAAC,OAAD;AAAS,IAAA,QAAQ,EAAEb,QAAnB;AAA6B,IAAA,IAAI,EAAEI;AAAnC,IA7CpB,CADF,EAgDE,oBAAC,SAAD;AACE,IAAA,OAAO,EAAEA,IAAI,CAACwB,GADhB;AAEE,IAAA,GAAG,EAAExB,IAAI,CAAC2C,GAFZ;AAGE,IAAA,gBAAgB,EAAEhC;AAHpB,IAhDF,CAJF,CAFF,CAPJ,CADF,EAwEG,CAACf,QAAD,IAAa,oBAAC,YAAD,OAxEhB,CADF;AA4ED,CAtJM;AAwJP,IAAMgD,WAAW,GAAGzF,MAAM,CAACE,KAAD,CAAT;AAAA;AAAA;AAAA,oBAIN;AAAA,MAAC;AAAEwF,IAAAA,MAAF;AAAUjD,IAAAA;AAAV,GAAD;AAAA,SACPiD,MAAM,GAAG,OAAH,GAAajD,QAAQ,GAAG,SAAH,GAAe,MADnC;AAAA,CAJM,CAAjB","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type { FC } from 'react'\nimport React, { useState, useEffect, useCallback } from 'react'\nimport styled, { createGlobalStyle } from 'styled-components'\nimport {\n Aside,\n ComponentsProvider,\n Divider,\n Heading,\n IconButton,\n Layout,\n Page,\n Space,\n} from '@looker/components'\nimport { FirstPage } from '@styled-icons/material/FirstPage'\nimport { LastPage } from '@styled-icons/material/LastPage'\nimport {\n registerEnvAdaptor,\n unregisterEnvAdaptor,\n} from '@looker/extension-utils'\nimport { useSelector } from 'react-redux'\nimport { useLocation } from 'react-router-dom'\n\nimport type { IApixAdaptor } from './utils'\nimport {\n Header,\n SideNav,\n ErrorBoundary,\n SelectorContainer,\n HEADER_TOGGLE_LABEL,\n Loader,\n Banner,\n} from './components'\nimport { AppRouter } from './routes'\nimport { apixFilesHost } from './utils/lodeUtils'\nimport {\n useSettingActions,\n useLodeActions,\n useLodesStoreState,\n useSpecActions,\n useSpecStoreState,\n selectSpecs,\n selectCurrentSpec,\n useSettingStoreState,\n} from './state'\nimport { getSpecKey, findSdk, useGlobalStoreSync } from './utils'\n\nexport interface ApiExplorerProps {\n adaptor: IApixAdaptor\n examplesLodeUrl?: string\n declarationsLodeUrl?: string\n headless?: boolean\n}\n\nconst BodyOverride = createGlobalStyle` html { height: 100%; overflow: hidden; } `\n\nexport const ApiExplorer: FC<ApiExplorerProps> = ({\n adaptor,\n examplesLodeUrl = 'https://raw.githubusercontent.com/looker-open-source/sdk-codegen/main/examplesIndex.json',\n declarationsLodeUrl = `${apixFilesHost}/declarationsIndex.json`,\n headless = false,\n}) => {\n useLodesStoreState()\n const { working, description } = useSpecStoreState()\n const specs = useSelector(selectSpecs)\n const spec = useSelector(selectCurrentSpec)\n const { initLodesAction } = useLodeActions()\n const { initialized } = useSettingStoreState()\n const { initSettingsAction, setSearchPatternAction, setSdkLanguageAction } =\n useSettingActions()\n const { initSpecsAction, setCurrentSpecAction } = useSpecActions()\n\n const location = useLocation()\n useGlobalStoreSync()\n const [hasNavigation, setHasNavigation] = useState(true)\n const toggleNavigation = (target?: boolean) =>\n setHasNavigation(target || !hasNavigation)\n\n const hasNavigationToggle = useCallback((e: MessageEvent<any>) => {\n if (e.origin === window.origin && e.data.action === 'toggle_sidebar') {\n setHasNavigation((currentHasNavigation) => !currentHasNavigation)\n }\n }, [])\n\n registerEnvAdaptor(adaptor)\n\n useEffect(() => {\n initSettingsAction()\n initLodesAction({ examplesLodeUrl, declarationsLodeUrl })\n\n const specKey = getSpecKey(location)\n initSpecsAction({ specKey })\n return () => unregisterEnvAdaptor()\n }, [])\n\n useEffect(() => {\n const maybeSpec = location.pathname?.split('/')[1]\n if (spec && maybeSpec && maybeSpec !== spec.key) {\n setCurrentSpecAction({ currentSpecKey: maybeSpec })\n }\n }, [location.pathname, spec])\n\n useEffect(() => {\n if (!initialized) return\n const searchParams = new URLSearchParams(location.search)\n const searchPattern = searchParams.get('s') || ''\n const sdkParam = searchParams.get('sdk') || 'all'\n const { language: sdkLanguage } = findSdk(sdkParam)\n setSearchPatternAction({ searchPattern })\n setSdkLanguageAction({ sdkLanguage })\n }, [location.search])\n\n useEffect(() => {\n if (headless) {\n window.addEventListener('message', hasNavigationToggle)\n }\n return () => {\n if (headless) {\n window.removeEventListener('message', hasNavigationToggle)\n }\n }\n }, [headless, hasNavigationToggle])\n\n const themeOverrides = adaptor.themeOverrides()\n\n let neededSpec = location.pathname?.split('/')[1]\n if (!neededSpec) {\n neededSpec = spec?.key\n }\n\n return (\n <>\n <ComponentsProvider\n loadGoogleFonts={themeOverrides.loadGoogleFonts}\n themeCustomizations={themeOverrides.themeCustomizations}\n >\n {working || !neededSpec || neededSpec !== spec.key ? (\n <Loader message={description} themeOverrides={themeOverrides} />\n ) : (\n <ErrorBoundary logError={adaptor.logError.bind(adaptor)}>\n <Banner adaptor={adaptor} specs={specs} />\n <Page style={{ overflow: 'hidden' }}>\n {!headless && (\n <Header spec={spec} toggleNavigation={toggleNavigation} />\n )}\n <Layout hasAside height=\"100%\">\n <AsideBorder\n borderRight\n isOpen={hasNavigation}\n headless={headless}\n >\n {headless && (\n <>\n <Space\n alignItems=\"center\"\n py=\"u3\"\n px={hasNavigation ? 'u5' : '0'}\n justifyContent={\n hasNavigation ? 'space-between' : 'center'\n }\n >\n {hasNavigation && (\n <Heading\n as=\"h2\"\n fontSize=\"xsmall\"\n fontWeight=\"bold\"\n color=\"text2\"\n >\n API DOCUMENTATION\n </Heading>\n )}\n <IconButton\n size=\"xsmall\"\n shape=\"round\"\n icon={hasNavigation ? <FirstPage /> : <LastPage />}\n label={HEADER_TOGGLE_LABEL}\n onClick={() => toggleNavigation()}\n />\n </Space>\n {hasNavigation && (\n <>\n <Divider mb=\"u3\" appearance=\"light\" />\n <SelectorContainer\n spec={spec}\n ml=\"large\"\n mr=\"large\"\n />\n </>\n )}\n </>\n )}\n {hasNavigation && <SideNav headless={headless} spec={spec} />}\n </AsideBorder>\n <AppRouter\n specKey={spec.key}\n api={spec.api!}\n toggleNavigation={toggleNavigation}\n />\n </Layout>\n </Page>\n </ErrorBoundary>\n )}\n </ComponentsProvider>\n {!headless && <BodyOverride />}\n </>\n )\n}\n\nconst AsideBorder = styled(Aside)<{\n isOpen: boolean\n headless: boolean\n}>`\n width: ${({ isOpen, headless }) =>\n isOpen ? '20rem' : headless ? '2.75rem' : '0rem'};\n`\n"],"file":"ApiExplorer.js"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { useHistory } from 'react-router-dom';
|
|
3
2
|
import { Markdown } from '@looker/code-editor';
|
|
4
3
|
import { useSelector } from 'react-redux';
|
|
5
4
|
import { getEnvAdaptor } from '@looker/extension-utils';
|
|
6
5
|
import { selectSearchPattern } from '../../state';
|
|
6
|
+
import { useNavigation } from '../../utils';
|
|
7
7
|
import { transformURL } from './utils';
|
|
8
8
|
export var DocMarkdown = _ref => {
|
|
9
9
|
var {
|
|
@@ -11,13 +11,15 @@ export var DocMarkdown = _ref => {
|
|
|
11
11
|
specKey
|
|
12
12
|
} = _ref;
|
|
13
13
|
var searchPattern = useSelector(selectSearchPattern);
|
|
14
|
-
var
|
|
14
|
+
var {
|
|
15
|
+
navigate
|
|
16
|
+
} = useNavigation();
|
|
15
17
|
|
|
16
18
|
var linkClickHandler = (pathname, url) => {
|
|
17
19
|
if (pathname.startsWith("/".concat(specKey))) {
|
|
18
|
-
|
|
20
|
+
navigate(pathname);
|
|
19
21
|
} else if (url.startsWith("/".concat(specKey))) {
|
|
20
|
-
|
|
22
|
+
navigate(url);
|
|
21
23
|
} else if (url.startsWith('https://')) {
|
|
22
24
|
var adaptor = getEnvAdaptor();
|
|
23
25
|
adaptor.openBrowserWindow(url);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/DocMarkdown/DocMarkdown.tsx"],"names":["React","
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/DocMarkdown/DocMarkdown.tsx"],"names":["React","Markdown","useSelector","getEnvAdaptor","selectSearchPattern","useNavigation","transformURL","DocMarkdown","source","specKey","searchPattern","navigate","linkClickHandler","pathname","url","startsWith","adaptor","openBrowserWindow","bind"],"mappings":"AA2BA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,QAAT,QAAyB,qBAAzB;AACA,SAASC,WAAT,QAA4B,aAA5B;AACA,SAASC,aAAT,QAA8B,yBAA9B;AACA,SAASC,mBAAT,QAAoC,aAApC;AACA,SAASC,aAAT,QAA8B,aAA9B;AACA,SAASC,YAAT,QAA6B,SAA7B;AAOA,OAAO,IAAMC,WAAiC,GAAG,QAAyB;AAAA,MAAxB;AAAEC,IAAAA,MAAF;AAAUC,IAAAA;AAAV,GAAwB;AACxE,MAAMC,aAAa,GAAGR,WAAW,CAACE,mBAAD,CAAjC;AACA,MAAM;AAAEO,IAAAA;AAAF,MAAeN,aAAa,EAAlC;;AAEA,MAAMO,gBAAgB,GAAG,CAACC,QAAD,EAAmBC,GAAnB,KAAmC;AAC1D,QAAID,QAAQ,CAACE,UAAT,YAAwBN,OAAxB,EAAJ,EAAwC;AACtCE,MAAAA,QAAQ,CAACE,QAAD,CAAR;AACD,KAFD,MAEO,IAAIC,GAAG,CAACC,UAAJ,YAAmBN,OAAnB,EAAJ,EAAmC;AACxCE,MAAAA,QAAQ,CAACG,GAAD,CAAR;AACD,KAFM,MAEA,IAAIA,GAAG,CAACC,UAAJ,CAAe,UAAf,CAAJ,EAAgC;AACrC,UAAMC,OAAO,GAAGb,aAAa,EAA7B;AACAa,MAAAA,OAAO,CAACC,iBAAR,CAA0BH,GAA1B;AACD;AACF,GATD;;AAUA,SACE,oBAAC,QAAD;AACE,IAAA,MAAM,EAAEN,MADV;AAEE,IAAA,OAAO,EAAEE,aAFX;AAGE,IAAA,gBAAgB,EAAEE,gBAHpB;AAIE,IAAA,gBAAgB,EAAEN,YAAY,CAACY,IAAb,CAAkB,IAAlB,EAAwBT,OAAxB;AAJpB,IADF;AAQD,CAtBM","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type { FC } from 'react'\nimport React from 'react'\nimport { Markdown } from '@looker/code-editor'\nimport { useSelector } from 'react-redux'\nimport { getEnvAdaptor } from '@looker/extension-utils'\nimport { selectSearchPattern } from '../../state'\nimport { useNavigation } from '../../utils'\nimport { transformURL } from './utils'\n\ninterface DocMarkdownProps {\n source: string\n specKey: string\n}\n\nexport const DocMarkdown: FC<DocMarkdownProps> = ({ source, specKey }) => {\n const searchPattern = useSelector(selectSearchPattern)\n const { navigate } = useNavigation()\n\n const linkClickHandler = (pathname: string, url: string) => {\n if (pathname.startsWith(`/${specKey}`)) {\n navigate(pathname)\n } else if (url.startsWith(`/${specKey}`)) {\n navigate(url)\n } else if (url.startsWith('https://')) {\n const adaptor = getEnvAdaptor()\n adaptor.openBrowserWindow(url)\n }\n }\n return (\n <Markdown\n source={source}\n pattern={searchPattern}\n linkClickHandler={linkClickHandler}\n transformLinkUri={transformURL.bind(null, specKey)}\n />\n )\n}\n"],"file":"DocMarkdown.js"}
|
|
@@ -1,25 +1,20 @@
|
|
|
1
|
-
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
|
-
|
|
3
|
-
import { Tab, TabList, TabPanel, TabPanels, useTabs } from '@looker/components';
|
|
4
1
|
import React from 'react';
|
|
2
|
+
import { Tab2, Tabs2 } from '@looker/components';
|
|
5
3
|
import { DocCode } from '../DocCode';
|
|
6
4
|
export var DocDeclarations = _ref => {
|
|
7
5
|
var {
|
|
8
6
|
declarations
|
|
9
7
|
} = _ref;
|
|
10
|
-
|
|
11
|
-
return React.createElement(React.Fragment, null, React.createElement(TabList, tabs, Object.keys(declarations).map(language => React.createElement(Tab, {
|
|
12
|
-
key: language
|
|
13
|
-
}, language))), React.createElement(TabPanels, _extends({}, tabs, {
|
|
14
|
-
pt: "0"
|
|
15
|
-
}), Object.entries(declarations).map(_ref2 => {
|
|
8
|
+
return React.createElement(Tabs2, null, Object.entries(declarations).map(_ref2 => {
|
|
16
9
|
var [language, code] = _ref2;
|
|
17
|
-
return React.createElement(
|
|
18
|
-
key: language
|
|
10
|
+
return React.createElement(Tab2, {
|
|
11
|
+
key: language,
|
|
12
|
+
id: language,
|
|
13
|
+
label: language
|
|
19
14
|
}, React.createElement(DocCode, {
|
|
20
|
-
|
|
21
|
-
|
|
15
|
+
code: code,
|
|
16
|
+
language: language
|
|
22
17
|
}));
|
|
23
|
-
}))
|
|
18
|
+
}));
|
|
24
19
|
};
|
|
25
20
|
//# sourceMappingURL=DocDeclarations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/DocSDKs/DocDeclarations.tsx"],"names":["
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/DocSDKs/DocDeclarations.tsx"],"names":["React","Tab2","Tabs2","DocCode","DocDeclarations","declarations","Object","entries","map","language","code"],"mappings":"AAyBA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,IAAT,EAAeC,KAAf,QAA4B,oBAA5B;AAGA,SAASC,OAAT,QAAwB,YAAxB;AAUA,OAAO,IAAMC,eAAyC,GAAG;AAAA,MAAC;AAAEC,IAAAA;AAAF,GAAD;AAAA,SACvD,oBAAC,KAAD,QACGC,MAAM,CAACC,OAAP,CAAeF,YAAf,EAA6BG,GAA7B,CAAiC;AAAA,QAAC,CAACC,QAAD,EAAWC,IAAX,CAAD;AAAA,WAChC,oBAAC,IAAD;AAAM,MAAA,GAAG,EAAED,QAAX;AAAqB,MAAA,EAAE,EAAEA,QAAzB;AAAmC,MAAA,KAAK,EAAEA;AAA1C,OACE,oBAAC,OAAD;AAAS,MAAA,IAAI,EAAEC,IAAf;AAAqB,MAAA,QAAQ,EAAED;AAA/B,MADF,CADgC;AAAA,GAAjC,CADH,CADuD;AAAA,CAAlD","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\nimport React from 'react'\nimport { Tab2, Tabs2 } from '@looker/components'\nimport type { KeyedCollection } from '@looker/sdk-codegen'\nimport type { FC } from 'react'\nimport { DocCode } from '../DocCode'\n\ninterface DocDeclarationsProps {\n declarations: KeyedCollection<string>\n}\n\n/**\n * Renders all provided declarations\n * @param declarations A collection of SDK declarations in various languages\n */\nexport const DocDeclarations: FC<DocDeclarationsProps> = ({ declarations }) => (\n <Tabs2>\n {Object.entries(declarations).map(([language, code]) => (\n <Tab2 key={language} id={language} label={language}>\n <DocCode code={code} language={language} />\n </Tab2>\n ))}\n </Tabs2>\n)\n"],"file":"DocDeclarations.js"}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { Select } from '@looker/components';
|
|
3
|
-
import {
|
|
3
|
+
import { useLocation } from 'react-router-dom';
|
|
4
4
|
import { useSelector } from 'react-redux';
|
|
5
|
+
import { useNavigation } from '../../utils';
|
|
5
6
|
import { selectSpecs } from '../../state';
|
|
6
7
|
export var ApiSpecSelector = _ref => {
|
|
7
8
|
var {
|
|
8
9
|
spec
|
|
9
10
|
} = _ref;
|
|
10
|
-
var history = useHistory();
|
|
11
11
|
var location = useLocation();
|
|
12
|
+
var {
|
|
13
|
+
navigate
|
|
14
|
+
} = useNavigation();
|
|
12
15
|
var specs = useSelector(selectSpecs);
|
|
13
16
|
var options = Object.entries(specs).map(_ref2 => {
|
|
14
17
|
var [key, spec] = _ref2;
|
|
@@ -21,7 +24,7 @@ export var ApiSpecSelector = _ref => {
|
|
|
21
24
|
|
|
22
25
|
var handleChange = specKey => {
|
|
23
26
|
var matchPath = location.pathname.replace("/".concat(spec.key), "/".concat(specKey));
|
|
24
|
-
|
|
27
|
+
navigate(matchPath);
|
|
25
28
|
};
|
|
26
29
|
|
|
27
30
|
return React.createElement(Select, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/SelectorContainer/ApiSpecSelector.tsx"],"names":["React","Select","
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/SelectorContainer/ApiSpecSelector.tsx"],"names":["React","Select","useLocation","useSelector","useNavigation","selectSpecs","ApiSpecSelector","spec","location","navigate","specs","options","Object","entries","map","key","value","label","description","status","handleChange","specKey","matchPath","pathname","replace"],"mappings":"AA2BA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,MAAT,QAAuB,oBAAvB;AACA,SAASC,WAAT,QAA4B,kBAA5B;AAEA,SAASC,WAAT,QAA4B,aAA5B;AACA,SAASC,aAAT,QAA8B,aAA9B;AAEA,SAASC,WAAT,QAA4B,aAA5B;AAMA,OAAO,IAAMC,eAAyC,GAAG,QAAc;AAAA,MAAb;AAAEC,IAAAA;AAAF,GAAa;AACrE,MAAMC,QAAQ,GAAGN,WAAW,EAA5B;AACA,MAAM;AAAEO,IAAAA;AAAF,MAAeL,aAAa,EAAlC;AACA,MAAMM,KAAK,GAAGP,WAAW,CAACE,WAAD,CAAzB;AACA,MAAMM,OAAO,GAAGC,MAAM,CAACC,OAAP,CAAeH,KAAf,EAAsBI,GAAtB,CAA0B;AAAA,QAAC,CAACC,GAAD,EAAMR,IAAN,CAAD;AAAA,WAAkB;AAC1DS,MAAAA,KAAK,EAAED,GADmD;AAE1DE,MAAAA,KAAK,EAAEF,GAFmD;AAG1DG,MAAAA,WAAW,EAAEX,IAAI,CAACY;AAHwC,KAAlB;AAAA,GAA1B,CAAhB;;AAMA,MAAMC,YAAY,GAAIC,OAAD,IAAqB;AACxC,QAAMC,SAAS,GAAGd,QAAQ,CAACe,QAAT,CAAkBC,OAAlB,YAA8BjB,IAAI,CAACQ,GAAnC,cAA8CM,OAA9C,EAAlB;AACAZ,IAAAA,QAAQ,CAACa,SAAD,CAAR;AACD,GAHD;;AAKA,SACE,oBAAC,MAAD;AACE,IAAA,KAAK,EAAC,OADR;AAEE,kBAAW,eAFb;AAGE,IAAA,YAAY,EAAEf,IAAI,CAACQ,GAHrB;AAIE,IAAA,OAAO,EAAEJ,OAJX;AAKE,IAAA,QAAQ,EAAES;AALZ,IADF;AASD,CAxBM","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type { FC } from 'react'\nimport React from 'react'\nimport { Select } from '@looker/components'\nimport { useLocation } from 'react-router-dom'\nimport type { SpecItem } from '@looker/sdk-codegen'\nimport { useSelector } from 'react-redux'\nimport { useNavigation } from '../../utils'\n\nimport { selectSpecs } from '../../state'\n\ninterface ApiSpecSelectorProps {\n spec: SpecItem\n}\n\nexport const ApiSpecSelector: FC<ApiSpecSelectorProps> = ({ spec }) => {\n const location = useLocation()\n const { navigate } = useNavigation()\n const specs = useSelector(selectSpecs)\n const options = Object.entries(specs).map(([key, spec]) => ({\n value: key,\n label: key,\n description: spec.status,\n }))\n\n const handleChange = (specKey: string) => {\n const matchPath = location.pathname.replace(`/${spec.key}`, `/${specKey}`)\n navigate(matchPath)\n }\n\n return (\n <Select\n width=\"10rem\"\n aria-label=\"spec selector\"\n defaultValue={spec.key}\n options={options}\n onChange={handleChange}\n />\n )\n}\n"],"file":"ApiSpecSelector.js"}
|
|
@@ -1,33 +1,31 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { codeGenerators } from '@looker/sdk-codegen';
|
|
1
|
+
import React, { useEffect, useState } from 'react';
|
|
3
2
|
import { Select } from '@looker/components';
|
|
4
3
|
import { useSelector } from 'react-redux';
|
|
5
|
-
import {
|
|
4
|
+
import { selectSdkLanguage } from '../../state';
|
|
5
|
+
import { allAlias, useNavigation } from '../../utils';
|
|
6
|
+
import { allSdkLanguageOptions } from './utils';
|
|
6
7
|
export var SdkLanguageSelector = () => {
|
|
7
8
|
var {
|
|
8
|
-
|
|
9
|
-
} =
|
|
9
|
+
navigate
|
|
10
|
+
} = useNavigation();
|
|
10
11
|
var selectedSdkLanguage = useSelector(selectSdkLanguage);
|
|
11
|
-
var
|
|
12
|
-
|
|
13
|
-
}));
|
|
14
|
-
allSdkLanguages.push({
|
|
15
|
-
options: [{
|
|
16
|
-
value: 'All'
|
|
17
|
-
}]
|
|
18
|
-
});
|
|
12
|
+
var [language, setLanguage] = useState(selectedSdkLanguage);
|
|
13
|
+
var options = allSdkLanguageOptions();
|
|
19
14
|
|
|
20
|
-
var handleChange =
|
|
21
|
-
|
|
22
|
-
|
|
15
|
+
var handleChange = alias => {
|
|
16
|
+
navigate(location.pathname, {
|
|
17
|
+
sdk: alias === allAlias ? null : alias
|
|
23
18
|
});
|
|
24
19
|
};
|
|
25
20
|
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
setLanguage(selectedSdkLanguage);
|
|
23
|
+
}, [selectedSdkLanguage]);
|
|
26
24
|
return React.createElement(Select, {
|
|
27
25
|
"aria-label": "sdk language selector",
|
|
28
|
-
value:
|
|
26
|
+
value: language,
|
|
29
27
|
onChange: handleChange,
|
|
30
|
-
options:
|
|
28
|
+
options: options
|
|
31
29
|
});
|
|
32
30
|
};
|
|
33
31
|
//# sourceMappingURL=SdkLanguageSelector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/SelectorContainer/SdkLanguageSelector.tsx"],"names":["React","
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/SelectorContainer/SdkLanguageSelector.tsx"],"names":["React","useEffect","useState","Select","useSelector","selectSdkLanguage","allAlias","useNavigation","allSdkLanguageOptions","SdkLanguageSelector","navigate","selectedSdkLanguage","language","setLanguage","options","handleChange","alias","location","pathname","sdk"],"mappings":"AA0BA,OAAOA,KAAP,IAAgBC,SAAhB,EAA2BC,QAA3B,QAA2C,OAA3C;AACA,SAASC,MAAT,QAAuB,oBAAvB;AACA,SAASC,WAAT,QAA4B,aAA5B;AACA,SAASC,iBAAT,QAAkC,aAAlC;AACA,SAASC,QAAT,EAAmBC,aAAnB,QAAwC,aAAxC;AACA,SAASC,qBAAT,QAAsC,SAAtC;AAKA,OAAO,IAAMC,mBAAuB,GAAG,MAAM;AAC3C,MAAM;AAAEC,IAAAA;AAAF,MAAeH,aAAa,EAAlC;AACA,MAAMI,mBAAmB,GAAGP,WAAW,CAACC,iBAAD,CAAvC;AACA,MAAM,CAACO,QAAD,EAAWC,WAAX,IAA0BX,QAAQ,CAACS,mBAAD,CAAxC;AACA,MAAMG,OAAO,GAAGN,qBAAqB,EAArC;;AAEA,MAAMO,YAAY,GAAIC,KAAD,IAAmB;AACtCN,IAAAA,QAAQ,CAACO,QAAQ,CAACC,QAAV,EAAoB;AAAEC,MAAAA,GAAG,EAAEH,KAAK,KAAKV,QAAV,GAAqB,IAArB,GAA4BU;AAAnC,KAApB,CAAR;AACD,GAFD;;AAIAf,EAAAA,SAAS,CAAC,MAAM;AACdY,IAAAA,WAAW,CAACF,mBAAD,CAAX;AACD,GAFQ,EAEN,CAACA,mBAAD,CAFM,CAAT;AAIA,SACE,oBAAC,MAAD;AACE,kBAAW,uBADb;AAEE,IAAA,KAAK,EAAEC,QAFT;AAGE,IAAA,QAAQ,EAAEG,YAHZ;AAIE,IAAA,OAAO,EAAED;AAJX,IADF;AAQD,CAtBM","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\nimport type { FC } from 'react'\nimport React, { useEffect, useState } from 'react'\nimport { Select } from '@looker/components'\nimport { useSelector } from 'react-redux'\nimport { selectSdkLanguage } from '../../state'\nimport { allAlias, useNavigation } from '../../utils'\nimport { allSdkLanguageOptions } from './utils'\n\n/**\n * Allows the user to select their preferred SDK language\n */\nexport const SdkLanguageSelector: FC = () => {\n const { navigate } = useNavigation()\n const selectedSdkLanguage = useSelector(selectSdkLanguage)\n const [language, setLanguage] = useState(selectedSdkLanguage)\n const options = allSdkLanguageOptions()\n\n const handleChange = (alias: string) => {\n navigate(location.pathname, { sdk: alias === allAlias ? null : alias })\n }\n\n useEffect(() => {\n setLanguage(selectedSdkLanguage)\n }, [selectedSdkLanguage])\n\n return (\n <Select\n aria-label=\"sdk language selector\"\n value={language}\n onChange={handleChange}\n options={options}\n />\n )\n}\n"],"file":"SdkLanguageSelector.js"}
|
|
@@ -8,7 +8,7 @@ import React from 'react';
|
|
|
8
8
|
import { Space, IconButton } from '@looker/components';
|
|
9
9
|
import { ChangeHistory } from '@styled-icons/material/ChangeHistory';
|
|
10
10
|
import { Link } from '../Link';
|
|
11
|
-
import { diffPath } from '../../utils';
|
|
11
|
+
import { diffPath, useNavigation } from '../../utils';
|
|
12
12
|
import { SdkLanguageSelector } from './SdkLanguageSelector';
|
|
13
13
|
import { ApiSpecSelector } from './ApiSpecSelector';
|
|
14
14
|
export var HEADER_REM = 4;
|
|
@@ -18,12 +18,15 @@ export var SelectorContainer = _ref => {
|
|
|
18
18
|
} = _ref,
|
|
19
19
|
spaceProps = _objectWithoutProperties(_ref, ["spec"]);
|
|
20
20
|
|
|
21
|
+
var {
|
|
22
|
+
buildPathWithGlobalParams
|
|
23
|
+
} = useNavigation();
|
|
21
24
|
return React.createElement(Space, _extends({
|
|
22
25
|
width: "auto"
|
|
23
26
|
}, spaceProps), React.createElement(SdkLanguageSelector, null), React.createElement(ApiSpecSelector, {
|
|
24
27
|
spec: spec
|
|
25
28
|
}), React.createElement(Link, {
|
|
26
|
-
to:
|
|
29
|
+
to: buildPathWithGlobalParams("/".concat(spec.key, "/").concat(diffPath))
|
|
27
30
|
}, React.createElement(IconButton, {
|
|
28
31
|
toggle: true,
|
|
29
32
|
label: "Compare Specifications",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/SelectorContainer/SelectorContainer.tsx"],"names":["React","Space","IconButton","ChangeHistory","Link","diffPath","SdkLanguageSelector","ApiSpecSelector","HEADER_REM","SelectorContainer","spec","spaceProps","key"],"mappings":";;;;;;AA2BA,OAAOA,KAAP,MAAkB,OAAlB;AAEA,SAASC,KAAT,EAAgBC,UAAhB,QAAkC,oBAAlC;AACA,SAASC,aAAT,QAA8B,sCAA9B;AAGA,SAASC,IAAT,QAAqB,SAArB;AACA,SAASC,QAAT,
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/SelectorContainer/SelectorContainer.tsx"],"names":["React","Space","IconButton","ChangeHistory","Link","diffPath","useNavigation","SdkLanguageSelector","ApiSpecSelector","HEADER_REM","SelectorContainer","spec","spaceProps","buildPathWithGlobalParams","key"],"mappings":";;;;;;AA2BA,OAAOA,KAAP,MAAkB,OAAlB;AAEA,SAASC,KAAT,EAAgBC,UAAhB,QAAkC,oBAAlC;AACA,SAASC,aAAT,QAA8B,sCAA9B;AAGA,SAASC,IAAT,QAAqB,SAArB;AACA,SAASC,QAAT,EAAmBC,aAAnB,QAAwC,aAAxC;AACA,SAASC,mBAAT,QAAoC,uBAApC;AACA,SAASC,eAAT,QAAgC,mBAAhC;AAOA,OAAO,IAAMC,UAAU,GAAG,CAAnB;AAKP,OAAO,IAAMC,iBAA6C,GAAG,QAGvD;AAAA,MAHwD;AAC5DC,IAAAA;AAD4D,GAGxD;AAAA,MADDC,UACC;;AACJ,MAAM;AAAEC,IAAAA;AAAF,MAAgCP,aAAa,EAAnD;AACA,SACE,oBAAC,KAAD;AAAO,IAAA,KAAK,EAAC;AAAb,KAAwBM,UAAxB,GACE,oBAAC,mBAAD,OADF,EAEE,oBAAC,eAAD;AAAiB,IAAA,IAAI,EAAED;AAAvB,IAFF,EAGE,oBAAC,IAAD;AAAM,IAAA,EAAE,EAAEE,yBAAyB,YAAKF,IAAI,CAACG,GAAV,cAAiBT,QAAjB;AAAnC,KACE,oBAAC,UAAD;AACE,IAAA,MAAM,MADR;AAEE,IAAA,KAAK,EAAC,wBAFR;AAGE,IAAA,IAAI,EAAE,oBAAC,aAAD,OAHR;AAIE,IAAA,IAAI,EAAC;AAJP,IADF,CAHF,CADF;AAcD,CAnBM","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type { FC } from 'react'\nimport React from 'react'\nimport type { SpaceHelperProps } from '@looker/components'\nimport { Space, IconButton } from '@looker/components'\nimport { ChangeHistory } from '@styled-icons/material/ChangeHistory'\nimport type { SpecItem } from '@looker/sdk-codegen'\n\nimport { Link } from '../Link'\nimport { diffPath, useNavigation } from '../../utils'\nimport { SdkLanguageSelector } from './SdkLanguageSelector'\nimport { ApiSpecSelector } from './ApiSpecSelector'\n\ninterface SelectorContainerProps extends SpaceHelperProps {\n /** Current selected spec */\n spec: SpecItem\n}\n\nexport const HEADER_REM = 4\n\n/**\n * Renders a container for selectors\n */\nexport const SelectorContainer: FC<SelectorContainerProps> = ({\n spec,\n ...spaceProps\n}) => {\n const { buildPathWithGlobalParams } = useNavigation()\n return (\n <Space width=\"auto\" {...spaceProps}>\n <SdkLanguageSelector />\n <ApiSpecSelector spec={spec} />\n <Link to={buildPathWithGlobalParams(`/${spec.key}/${diffPath}`)}>\n <IconButton\n toggle\n label=\"Compare Specifications\"\n icon={<ChangeHistory />}\n size=\"small\"\n />\n </Link>\n </Space>\n )\n}\n"],"file":"SelectorContainer.js"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { allSdkLanguages, allAlias } from '../../utils';
|
|
2
|
+
export var allSdkLanguageOptions = () => {
|
|
3
|
+
var options = [];
|
|
4
|
+
var languages = allSdkLanguages();
|
|
5
|
+
Object.entries(languages).forEach(_ref => {
|
|
6
|
+
var [alias, language] = _ref;
|
|
7
|
+
var option = {
|
|
8
|
+
value: alias,
|
|
9
|
+
label: language
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
if (alias === allAlias) {
|
|
13
|
+
options.push({
|
|
14
|
+
options: [option]
|
|
15
|
+
});
|
|
16
|
+
} else {
|
|
17
|
+
options.push(option);
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
return options;
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/SelectorContainer/utils.ts"],"names":["allSdkLanguages","allAlias","allSdkLanguageOptions","options","languages","Object","entries","forEach","alias","language","option","value","label","push"],"mappings":"AA0BA,SAASA,eAAT,EAA0BC,QAA1B,QAA0C,aAA1C;AAKA,OAAO,IAAMC,qBAAqB,GAAG,MAA2B;AAC9D,MAAMC,OAAO,GAAG,EAAhB;AACA,MAAMC,SAAS,GAAGJ,eAAe,EAAjC;AACAK,EAAAA,MAAM,CAACC,OAAP,CAAeF,SAAf,EAA0BG,OAA1B,CAAkC,QAAuB;AAAA,QAAtB,CAACC,KAAD,EAAQC,QAAR,CAAsB;AACvD,QAAMC,MAAM,GAAG;AAAEC,MAAAA,KAAK,EAAEH,KAAT;AAAgBI,MAAAA,KAAK,EAAEH;AAAvB,KAAf;;AACA,QAAID,KAAK,KAAKP,QAAd,EAAwB;AACtBE,MAAAA,OAAO,CAACU,IAAR,CAAa;AAAEV,QAAAA,OAAO,EAAE,CAACO,MAAD;AAAX,OAAb;AACD,KAFD,MAEO;AACLP,MAAAA,OAAO,CAACU,IAAR,CAAaH,MAAb;AACD;AACF,GAPD;AASA,SAAOP,OAAP;AACD,CAbM","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2022 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\nimport type { SelectOptionProps } from '@looker/components'\nimport { allSdkLanguages, allAlias } from '../../utils'\n\n/**\n * @returns sdk language options for render\n */\nexport const allSdkLanguageOptions = (): SelectOptionProps[] => {\n const options = [] as SelectOptionProps[]\n const languages = allSdkLanguages()\n Object.entries(languages).forEach(([alias, language]) => {\n const option = { value: alias, label: language }\n if (alias === allAlias) {\n options.push({ options: [option] })\n } else {\n options.push(option)\n }\n })\n\n return options\n}\n"],"file":"utils.js"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
2
|
|
|
3
3
|
import React, { useEffect, useState } from 'react';
|
|
4
|
-
import {
|
|
5
|
-
import { TabList, Tab, TabPanel, TabPanels, useTabs, InputSearch } from '@looker/components';
|
|
4
|
+
import { useLocation } from 'react-router-dom';
|
|
5
|
+
import { TabList, Tab, TabPanel, TabPanels, useTabs, InputSearch, Box2 } from '@looker/components';
|
|
6
6
|
import { criteriaToSet, tagTypes } from '@looker/sdk-codegen';
|
|
7
7
|
import { useSelector } from 'react-redux';
|
|
8
|
-
import {
|
|
8
|
+
import { CopyLinkWrapper } from '@looker/run-it';
|
|
9
|
+
import { useWindowSize, useNavigation } from '../../utils';
|
|
9
10
|
import { HEADER_REM } from '../Header';
|
|
10
|
-
import { selectSearchCriteria,
|
|
11
|
+
import { selectSearchCriteria, selectSearchPattern } from '../../state';
|
|
11
12
|
import { SideNavMethodTags } from './SideNavMethodTags';
|
|
12
13
|
import { SideNavTypeTags } from './SideNavTypeTags';
|
|
13
14
|
import { useDebounce, countMethods, countTypes } from './searchUtils';
|
|
@@ -17,8 +18,11 @@ export var SideNav = _ref => {
|
|
|
17
18
|
headless = false,
|
|
18
19
|
spec
|
|
19
20
|
} = _ref;
|
|
20
|
-
var history = useHistory();
|
|
21
21
|
var location = useLocation();
|
|
22
|
+
var {
|
|
23
|
+
navigate,
|
|
24
|
+
navigateWithGlobalParams
|
|
25
|
+
} = useNavigation();
|
|
22
26
|
var specKey = spec.key;
|
|
23
27
|
var tabNames = ['methods', 'types'];
|
|
24
28
|
var pathParts = location.pathname.split('/');
|
|
@@ -35,12 +39,12 @@ export var SideNav = _ref => {
|
|
|
35
39
|
if (parts[1] === 'diff') {
|
|
36
40
|
if (parts[3] !== tabNames[index]) {
|
|
37
41
|
parts[3] = tabNames[index];
|
|
38
|
-
|
|
42
|
+
navigateWithGlobalParams(parts.join('/'));
|
|
39
43
|
}
|
|
40
44
|
} else {
|
|
41
45
|
if (parts[2] !== tabNames[index]) {
|
|
42
46
|
parts[2] = tabNames[index];
|
|
43
|
-
|
|
47
|
+
navigateWithGlobalParams(parts.join('/'));
|
|
44
48
|
}
|
|
45
49
|
}
|
|
46
50
|
};
|
|
@@ -50,10 +54,8 @@ export var SideNav = _ref => {
|
|
|
50
54
|
onChange: onTabChange
|
|
51
55
|
});
|
|
52
56
|
var searchCriteria = useSelector(selectSearchCriteria);
|
|
53
|
-
var
|
|
54
|
-
|
|
55
|
-
} = useSettingActions();
|
|
56
|
-
var [pattern, setSearchPattern] = useState('');
|
|
57
|
+
var searchPattern = useSelector(selectSearchPattern);
|
|
58
|
+
var [pattern, setSearchPattern] = useState(searchPattern);
|
|
57
59
|
var debouncedPattern = useDebounce(pattern, 250);
|
|
58
60
|
var [sideNavState, setSideNavState] = useState(() => {
|
|
59
61
|
var _spec$api, _spec$api2, _spec$api3, _spec$api4;
|
|
@@ -78,15 +80,31 @@ export var SideNav = _ref => {
|
|
|
78
80
|
setSearchPattern(value);
|
|
79
81
|
};
|
|
80
82
|
|
|
83
|
+
useEffect(() => {
|
|
84
|
+
var searchParams = new URLSearchParams(location.search);
|
|
85
|
+
|
|
86
|
+
if (debouncedPattern && debouncedPattern !== searchParams.get('s')) {
|
|
87
|
+
searchParams.set('s', debouncedPattern);
|
|
88
|
+
navigate(location.pathname, {
|
|
89
|
+
s: searchParams.get('s')
|
|
90
|
+
});
|
|
91
|
+
} else if (!debouncedPattern && searchParams.get('s')) {
|
|
92
|
+
searchParams.delete('s');
|
|
93
|
+
navigate(location.pathname, {
|
|
94
|
+
s: null
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}, [debouncedPattern]);
|
|
81
98
|
useEffect(() => {
|
|
82
99
|
var results;
|
|
83
100
|
var newTags;
|
|
84
101
|
var newTypes;
|
|
85
102
|
var newTypeTags;
|
|
86
103
|
var api = spec.api || {};
|
|
104
|
+
setSearchPattern(searchPattern);
|
|
87
105
|
|
|
88
|
-
if (
|
|
89
|
-
results = api.search(
|
|
106
|
+
if (searchPattern && api.search) {
|
|
107
|
+
results = api.search(searchPattern, criteriaToSet(searchCriteria));
|
|
90
108
|
newTags = results.tags;
|
|
91
109
|
newTypes = results.types;
|
|
92
110
|
newTypeTags = tagTypes(api, results.types);
|
|
@@ -103,10 +121,7 @@ export var SideNav = _ref => {
|
|
|
103
121
|
methodCount: countMethods(newTags),
|
|
104
122
|
searchResults: results
|
|
105
123
|
});
|
|
106
|
-
|
|
107
|
-
searchPattern: debouncedPattern
|
|
108
|
-
});
|
|
109
|
-
}, [debouncedPattern, specKey, spec, setSearchPatternAction, pattern, searchCriteria]);
|
|
124
|
+
}, [searchPattern, specKey, spec, searchCriteria]);
|
|
110
125
|
useEffect(() => {
|
|
111
126
|
var {
|
|
112
127
|
selectedIndex,
|
|
@@ -120,19 +135,24 @@ export var SideNav = _ref => {
|
|
|
120
135
|
var size = useWindowSize();
|
|
121
136
|
var headlessOffset = headless ? 200 : 120;
|
|
122
137
|
var menuH = size.height - 16 * HEADER_REM - headlessOffset;
|
|
123
|
-
return React.createElement("nav", null, React.createElement(
|
|
138
|
+
return React.createElement("nav", null, React.createElement(Box2, {
|
|
124
139
|
pl: "large",
|
|
125
140
|
pr: "large",
|
|
126
141
|
pb: "large",
|
|
127
142
|
pt: headless ? 'u3' : 'large',
|
|
143
|
+
position: 'relative',
|
|
144
|
+
width: '100%'
|
|
145
|
+
}, React.createElement(CopyLinkWrapper, {
|
|
146
|
+
visible: !!pattern
|
|
147
|
+
}, React.createElement(InputSearch, {
|
|
128
148
|
"aria-label": "Search",
|
|
129
149
|
onChange: handleInputChange,
|
|
130
150
|
placeholder: "Search",
|
|
131
151
|
value: pattern,
|
|
132
152
|
isClearable: true
|
|
133
|
-
}), React.createElement(SearchMessage, {
|
|
153
|
+
})), React.createElement(SearchMessage, {
|
|
134
154
|
search: searchResults
|
|
135
|
-
}), React.createElement(TabList, _extends({}, tabs, {
|
|
155
|
+
})), React.createElement(TabList, _extends({}, tabs, {
|
|
136
156
|
distribute: true
|
|
137
157
|
}), React.createElement(Tab, null, "Methods (", methodCount, ")"), React.createElement(Tab, null, "Types (", typeCount, ")")), React.createElement(TabPanels, _extends({}, tabs, {
|
|
138
158
|
pt: "xsmall",
|