@looker/api-explorer 0.9.36 → 0.9.38
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 +49 -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 +17 -6
- package/lib/ApiExplorer.js.map +1 -1
- package/lib/components/DocMarkdown/DocMarkdown.js +3 -1
- 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 +3 -1
- 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 +20 -9
- package/lib/components/SideNav/SideNav.js.map +1 -1
- package/lib/components/SideNav/SideNavMethods.js +7 -6
- package/lib/components/SideNav/SideNavMethods.js.map +1 -1
- package/lib/components/SideNav/SideNavTypes.js +5 -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 +19 -8
- package/lib/esm/ApiExplorer.js.map +1 -1
- package/lib/esm/components/DocMarkdown/DocMarkdown.js +3 -1
- 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 +3 -1
- 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 +20 -10
- package/lib/esm/components/SideNav/SideNav.js.map +1 -1
- package/lib/esm/components/SideNav/SideNavMethods.js +8 -7
- package/lib/esm/components/SideNav/SideNavMethods.js.map +1 -1
- package/lib/esm/components/SideNav/SideNavTypes.js +6 -5
- 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 +9 -7
- package/lib/esm/scenes/DiffScene/DiffScene.js.map +1 -1
- package/lib/esm/scenes/DiffScene/DocDiff/DiffItem.js +3 -1
- 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 +28 -9
- 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 -11
- package/lib/esm/scenes/MethodTagScene/MethodTagScene.js.map +1 -1
- package/lib/esm/scenes/TypeScene/TypeScene.js +3 -1
- package/lib/esm/scenes/TypeScene/TypeScene.js.map +1 -1
- package/lib/esm/scenes/TypeTagScene/TypeTagScene.js +37 -10
- 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 -1
- package/lib/esm/utils/index.js.map +1 -1
- package/lib/esm/utils/path.js +21 -0
- 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 +3 -1
- 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 +23 -4
- 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 -12
- package/lib/scenes/MethodTagScene/MethodTagScene.js.map +1 -1
- package/lib/scenes/TypeScene/TypeScene.js +3 -1
- package/lib/scenes/TypeScene/TypeScene.js.map +1 -1
- package/lib/scenes/TypeTagScene/TypeTagScene.js +41 -11
- 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 -1
- package/lib/utils/index.js +29 -1
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/path.d.ts +4 -0
- package/lib/utils/path.js +32 -1
- 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 +13 -8
- package/src/components/DocMarkdown/DocMarkdown.tsx +1 -1
- 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.tsx +1 -1
- 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/{utils/hooks.ts → components/SelectorContainer/utils.ts} +13 -21
- package/src/components/SideNav/SideNav.tsx +26 -14
- package/src/components/SideNav/SideNavMethods.spec.tsx +6 -8
- package/src/components/SideNav/SideNavMethods.tsx +8 -12
- package/src/components/SideNav/SideNavTypes.tsx +5 -10
- package/src/components/index.ts +0 -1
- package/src/routes/AppRouter.tsx +7 -5
- package/src/scenes/DiffScene/DiffScene.tsx +8 -8
- package/src/scenes/DiffScene/DocDiff/DiffItem.tsx +1 -1
- 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 +21 -7
- 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 -11
- package/src/scenes/TypeScene/TypeScene.tsx +1 -1
- package/src/scenes/TypeTagScene/TypeTagScene.spec.tsx +21 -11
- package/src/scenes/TypeTagScene/TypeTagScene.tsx +44 -11
- 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 -1
- package/src/utils/path.spec.ts +67 -1
- package/src/utils/path.ts +35 -0
- 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/lib/esm/utils/hooks.js +0 -26
- package/lib/esm/utils/hooks.js.map +0 -1
- package/lib/utils/hooks.d.ts +0 -3
- package/lib/utils/hooks.js +0 -36
- package/lib/utils/hooks.js.map +0 -1
- package/src/components/DocResponses/DocResponses.spec.tsx +0 -60
- package/src/components/DocResponses/DocResponses.tsx +0 -69
- package/src/utils/hooks.spec.ts +0 -78
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/state/settings/selectors.ts"],"names":["selectSettingsState","state","settings","selectSdkLanguage","sdkLanguage","selectSearchPattern","searchPattern","selectSearchCriteria","searchCriteria","isInitialized","initialized"],"mappings":"AA2BA,IAAMA,mBAAmB,GAAIC,KAAD,IAAsBA,KAAK,CAACC,QAAxD;;AAEA,OAAO,IAAMC,iBAAiB,GAAIF,KAAD,IAC/BD,mBAAmB,CAACC,KAAD,CAAnB,CAA2BG,WADtB;AAGP,OAAO,IAAMC,mBAAmB,GAAIJ,KAAD,IACjCD,mBAAmB,CAACC,KAAD,CAAnB,CAA2BK,aADtB;AAGP,OAAO,IAAMC,oBAAoB,GAAIN,KAAD,IAClCD,mBAAmB,CAACC,KAAD,CAAnB,CAA2BO,cADtB;AAGP,OAAO,IAAMC,
|
|
1
|
+
{"version":3,"sources":["../../../../src/state/settings/selectors.ts"],"names":["selectSettingsState","state","settings","selectSdkLanguage","sdkLanguage","selectSearchPattern","searchPattern","selectSearchCriteria","searchCriteria","selectTagFilter","tagFilter","isInitialized","initialized"],"mappings":"AA2BA,IAAMA,mBAAmB,GAAIC,KAAD,IAAsBA,KAAK,CAACC,QAAxD;;AAEA,OAAO,IAAMC,iBAAiB,GAAIF,KAAD,IAC/BD,mBAAmB,CAACC,KAAD,CAAnB,CAA2BG,WADtB;AAGP,OAAO,IAAMC,mBAAmB,GAAIJ,KAAD,IACjCD,mBAAmB,CAACC,KAAD,CAAnB,CAA2BK,aADtB;AAGP,OAAO,IAAMC,oBAAoB,GAAIN,KAAD,IAClCD,mBAAmB,CAACC,KAAD,CAAnB,CAA2BO,cADtB;AAGP,OAAO,IAAMC,eAAe,GAAIR,KAAD,IAC7BD,mBAAmB,CAACC,KAAD,CAAnB,CAA2BS,SADtB;AAGP,OAAO,IAAMC,aAAa,GAAIV,KAAD,IAC3BD,mBAAmB,CAACC,KAAD,CAAnB,CAA2BW,WADtB","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 { RootState } from '../store'\n\nconst selectSettingsState = (state: RootState) => state.settings\n\nexport const selectSdkLanguage = (state: RootState) =>\n selectSettingsState(state).sdkLanguage\n\nexport const selectSearchPattern = (state: RootState) =>\n selectSettingsState(state).searchPattern\n\nexport const selectSearchCriteria = (state: RootState) =>\n selectSettingsState(state).searchCriteria\n\nexport const selectTagFilter = (state: RootState) =>\n selectSettingsState(state).tagFilter\n\nexport const isInitialized = (state: RootState) =>\n selectSettingsState(state).initialized\n"],"file":"selectors.js"}
|
|
@@ -11,7 +11,8 @@ import { saga } from './sagas';
|
|
|
11
11
|
export var defaultSettings = {
|
|
12
12
|
sdkLanguage: 'Python',
|
|
13
13
|
searchPattern: '',
|
|
14
|
-
searchCriteria: setToCriteria(SearchAll)
|
|
14
|
+
searchCriteria: setToCriteria(SearchAll),
|
|
15
|
+
tagFilter: 'ALL'
|
|
15
16
|
};
|
|
16
17
|
export var defaultSettingsState = _objectSpread(_objectSpread({}, defaultSettings), {}, {
|
|
17
18
|
initialized: false
|
|
@@ -38,6 +39,10 @@ export var settingsSlice = createSlice({
|
|
|
38
39
|
|
|
39
40
|
setSearchPatternAction(state, action) {
|
|
40
41
|
state.searchPattern = action.payload.searchPattern;
|
|
42
|
+
},
|
|
43
|
+
|
|
44
|
+
setTagFilterAction(state, action) {
|
|
45
|
+
state.tagFilter = action.payload.tagFilter;
|
|
41
46
|
}
|
|
42
47
|
|
|
43
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/state/settings/slice.ts"],"names":["createSlice","createSliceHooks","SearchAll","setToCriteria","saga","defaultSettings","sdkLanguage","searchPattern","searchCriteria","defaultSettingsState","initialized","settingsSlice","name","initialState","reducers","initSettingsAction","initSettingsSuccessAction","state","action","payload","initSettingsFailureAction","error","setSdkLanguageAction","setSearchPatternAction","settingActions","actions","useActions","useSettingActions","useStoreState","useSettingStoreState"],"mappings":";;;;;;AAyBA,SAASA,WAAT,QAA4B,kBAA5B;AAEA,SAASC,gBAAT,QAAiC,eAAjC;AAEA,SAASC,SAAT,EAAoBC,aAApB,QAAyC,qBAAzC;AAEA,SAASC,IAAT,QAAqB,SAArB;
|
|
1
|
+
{"version":3,"sources":["../../../../src/state/settings/slice.ts"],"names":["createSlice","createSliceHooks","SearchAll","setToCriteria","saga","defaultSettings","sdkLanguage","searchPattern","searchCriteria","tagFilter","defaultSettingsState","initialized","settingsSlice","name","initialState","reducers","initSettingsAction","initSettingsSuccessAction","state","action","payload","initSettingsFailureAction","error","setSdkLanguageAction","setSearchPatternAction","setTagFilterAction","settingActions","actions","useActions","useSettingActions","useStoreState","useSettingStoreState"],"mappings":";;;;;;AAyBA,SAASA,WAAT,QAA4B,kBAA5B;AAEA,SAASC,gBAAT,QAAiC,eAAjC;AAEA,SAASC,SAAT,EAAoBC,aAApB,QAAyC,qBAAzC;AAEA,SAASC,IAAT,QAAqB,SAArB;AAcA,OAAO,IAAMC,eAAe,GAAG;AAC7BC,EAAAA,WAAW,EAAE,QADgB;AAE7BC,EAAAA,aAAa,EAAE,EAFc;AAG7BC,EAAAA,cAAc,EAAEL,aAAa,CAACD,SAAD,CAHA;AAI7BO,EAAAA,SAAS,EAAE;AAJkB,CAAxB;AAOP,OAAO,IAAMC,oBAAkC,mCAC1CL,eAD0C;AAE7CM,EAAAA,WAAW,EAAE;AAFgC,EAAxC;AAWP,OAAO,IAAMC,aAAa,GAAGZ,WAAW,CAAC;AACvCa,EAAAA,IAAI,EAAE,UADiC;AAEvCC,EAAAA,YAAY,EAAEJ,oBAFyB;AAGvCK,EAAAA,QAAQ,EAAE;AAERC,IAAAA,kBAAkB,GAAG,CAAE,CAFf;;AAGRC,IAAAA,yBAAyB,CACvBC,KADuB,EAEvBC,MAFuB,EAGvB;AACAD,MAAAA,KAAK,CAACZ,WAAN,GAAoBa,MAAM,CAACC,OAAP,CAAed,WAAnC;AACAY,MAAAA,KAAK,CAACP,WAAN,GAAoB,IAApB;AACD,KATO;;AAURU,IAAAA,yBAAyB,CAACH,KAAD,EAAQC,MAAR,EAAsC;AAC7DD,MAAAA,KAAK,CAACI,KAAN,GAAcH,MAAM,CAACC,OAArB;AACAF,MAAAA,KAAK,CAACP,WAAN,GAAoB,KAApB;AACD,KAbO;;AAcRY,IAAAA,oBAAoB,CAACL,KAAD,EAAQC,MAAR,EAAqD;AACvED,MAAAA,KAAK,CAACZ,WAAN,GAAoBa,MAAM,CAACC,OAAP,CAAed,WAAnC;AACD,KAhBO;;AAiBRkB,IAAAA,sBAAsB,CACpBN,KADoB,EAEpBC,MAFoB,EAGpB;AACAD,MAAAA,KAAK,CAACX,aAAN,GAAsBY,MAAM,CAACC,OAAP,CAAeb,aAArC;AACD,KAtBO;;AAuBRkB,IAAAA,kBAAkB,CAACP,KAAD,EAAQC,MAAR,EAAmD;AACnED,MAAAA,KAAK,CAACT,SAAN,GAAkBU,MAAM,CAACC,OAAP,CAAeX,SAAjC;AACD;;AAzBO;AAH6B,CAAD,CAAjC;AAgCP,OAAO,IAAMiB,cAAc,GAAGd,aAAa,CAACe,OAArC;AACP,OAAO,IAAM;AACXC,EAAAA,UAAU,EAAEC,iBADD;AAEXC,EAAAA,aAAa,EAAEC;AAFJ,IAGT9B,gBAAgB,CAACW,aAAD,EAAgBR,IAAhB,CAHb","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 { createSlice } from '@reduxjs/toolkit'\nimport type { PayloadAction } from '@reduxjs/toolkit'\nimport { createSliceHooks } from '@looker/redux'\nimport type { SearchCriterionTerm } from '@looker/sdk-codegen'\nimport { SearchAll, setToCriteria } from '@looker/sdk-codegen'\n\nimport { saga } from './sagas'\n\nexport interface UserDefinedSettings {\n sdkLanguage: string\n}\n\nexport interface SettingState extends UserDefinedSettings {\n searchPattern: string\n searchCriteria: SearchCriterionTerm[]\n tagFilter: string\n initialized: boolean\n error?: Error\n}\n\nexport const defaultSettings = {\n sdkLanguage: 'Python',\n searchPattern: '',\n searchCriteria: setToCriteria(SearchAll) as SearchCriterionTerm[],\n tagFilter: 'ALL',\n}\n\nexport const defaultSettingsState: SettingState = {\n ...defaultSettings,\n initialized: false,\n}\n\ntype SetSearchPatternAction = Pick<SettingState, 'searchPattern'>\ntype SetSdkLanguageAction = Pick<SettingState, 'sdkLanguage'>\ntype SetTagFilterAction = Pick<SettingState, 'tagFilter'>\n\nexport type InitSuccessPayload = UserDefinedSettings\n\nexport const settingsSlice = createSlice({\n name: 'settings',\n initialState: defaultSettingsState,\n reducers: {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n initSettingsAction() {},\n initSettingsSuccessAction(\n state,\n action: PayloadAction<InitSuccessPayload>\n ) {\n state.sdkLanguage = action.payload.sdkLanguage\n state.initialized = true\n },\n initSettingsFailureAction(state, action: PayloadAction<Error>) {\n state.error = action.payload\n state.initialized = false\n },\n setSdkLanguageAction(state, action: PayloadAction<SetSdkLanguageAction>) {\n state.sdkLanguage = action.payload.sdkLanguage\n },\n setSearchPatternAction(\n state,\n action: PayloadAction<SetSearchPatternAction>\n ) {\n state.searchPattern = action.payload.searchPattern\n },\n setTagFilterAction(state, action: PayloadAction<SetTagFilterAction>) {\n state.tagFilter = action.payload.tagFilter\n },\n },\n})\n\nexport const settingActions = settingsSlice.actions\nexport const {\n useActions: useSettingActions,\n useStoreState: useSettingStoreState,\n} = createSliceHooks(settingsSlice, saga)\n"],"file":"slice.js"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { useLocation } from 'react-router-dom';
|
|
2
|
+
import { useEffect } from 'react';
|
|
3
|
+
import { useSelector } from 'react-redux';
|
|
4
|
+
import { allAlias, findSdk, useNavigation } from '../index';
|
|
5
|
+
import { selectSdkLanguage, useSettingActions, useSettingStoreState } from '../../state';
|
|
6
|
+
export var useGlobalStoreSync = () => {
|
|
7
|
+
var location = useLocation();
|
|
8
|
+
var {
|
|
9
|
+
navigate
|
|
10
|
+
} = useNavigation();
|
|
11
|
+
var {
|
|
12
|
+
setSdkLanguageAction,
|
|
13
|
+
setSearchPatternAction
|
|
14
|
+
} = useSettingActions();
|
|
15
|
+
var {
|
|
16
|
+
initialized
|
|
17
|
+
} = useSettingStoreState();
|
|
18
|
+
var selectedSdkLanguage = useSelector(selectSdkLanguage);
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
if (initialized) {
|
|
21
|
+
var params = new URLSearchParams(location.search);
|
|
22
|
+
var searchParam = params.get('s');
|
|
23
|
+
|
|
24
|
+
if (searchParam) {
|
|
25
|
+
setSearchPatternAction({
|
|
26
|
+
searchPattern: searchParam
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
var sdkParam = params.get('sdk') || '';
|
|
31
|
+
var sdk = findSdk(sdkParam);
|
|
32
|
+
var validSdkParam = !sdkParam.localeCompare(sdk.alias, 'en', {
|
|
33
|
+
sensitivity: 'base'
|
|
34
|
+
}) || !sdkParam.localeCompare(sdk.language, 'en', {
|
|
35
|
+
sensitivity: 'base'
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
if (validSdkParam) {
|
|
39
|
+
setSdkLanguageAction({
|
|
40
|
+
sdkLanguage: sdk.language
|
|
41
|
+
});
|
|
42
|
+
} else {
|
|
43
|
+
var {
|
|
44
|
+
alias
|
|
45
|
+
} = findSdk(selectedSdkLanguage);
|
|
46
|
+
navigate(location.pathname, {
|
|
47
|
+
sdk: alias === allAlias ? null : alias
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}, [initialized]);
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=globalStoreSync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/utils/hooks/globalStoreSync.ts"],"names":["useLocation","useEffect","useSelector","allAlias","findSdk","useNavigation","selectSdkLanguage","useSettingActions","useSettingStoreState","useGlobalStoreSync","location","navigate","setSdkLanguageAction","setSearchPatternAction","initialized","selectedSdkLanguage","params","URLSearchParams","search","searchParam","get","searchPattern","sdkParam","sdk","validSdkParam","localeCompare","alias","sensitivity","language","sdkLanguage","pathname"],"mappings":"AAyBA,SAASA,WAAT,QAA4B,kBAA5B;AACA,SAASC,SAAT,QAA0B,OAA1B;AACA,SAASC,WAAT,QAA4B,aAA5B;AACA,SAASC,QAAT,EAAmBC,OAAnB,EAA4BC,aAA5B,QAAiD,UAAjD;AACA,SACEC,iBADF,EAEEC,iBAFF,EAGEC,oBAHF,QAIO,aAJP;AAUA,OAAO,IAAMC,kBAAkB,GAAG,MAAM;AACtC,MAAMC,QAAQ,GAAGV,WAAW,EAA5B;AACA,MAAM;AAAEW,IAAAA;AAAF,MAAeN,aAAa,EAAlC;AACA,MAAM;AAAEO,IAAAA,oBAAF;AAAwBC,IAAAA;AAAxB,MAAmDN,iBAAiB,EAA1E;AACA,MAAM;AAAEO,IAAAA;AAAF,MAAkBN,oBAAoB,EAA5C;AACA,MAAMO,mBAAmB,GAAGb,WAAW,CAACI,iBAAD,CAAvC;AAEAL,EAAAA,SAAS,CAAC,MAAM;AACd,QAAIa,WAAJ,EAAiB;AACf,UAAME,MAAM,GAAG,IAAIC,eAAJ,CAAoBP,QAAQ,CAACQ,MAA7B,CAAf;AAGA,UAAMC,WAAW,GAAGH,MAAM,CAACI,GAAP,CAAW,GAAX,CAApB;;AACA,UAAID,WAAJ,EAAiB;AACfN,QAAAA,sBAAsB,CAAC;AACrBQ,UAAAA,aAAa,EAAEF;AADM,SAAD,CAAtB;AAGD;;AAGD,UAAMG,QAAQ,GAAGN,MAAM,CAACI,GAAP,CAAW,KAAX,KAAqB,EAAtC;AACA,UAAMG,GAAG,GAAGnB,OAAO,CAACkB,QAAD,CAAnB;AACA,UAAME,aAAa,GACjB,CAACF,QAAQ,CAACG,aAAT,CAAuBF,GAAG,CAACG,KAA3B,EAAkC,IAAlC,EAAwC;AAAEC,QAAAA,WAAW,EAAE;AAAf,OAAxC,CAAD,IACA,CAACL,QAAQ,CAACG,aAAT,CAAuBF,GAAG,CAACK,QAA3B,EAAqC,IAArC,EAA2C;AAAED,QAAAA,WAAW,EAAE;AAAf,OAA3C,CAFH;;AAGA,UAAIH,aAAJ,EAAmB;AACjBZ,QAAAA,oBAAoB,CAAC;AACnBiB,UAAAA,WAAW,EAAEN,GAAG,CAACK;AADE,SAAD,CAApB;AAGD,OAJD,MAIO;AACL,YAAM;AAAEF,UAAAA;AAAF,YAAYtB,OAAO,CAACW,mBAAD,CAAzB;AACAJ,QAAAA,QAAQ,CAACD,QAAQ,CAACoB,QAAV,EAAoB;AAC1BP,UAAAA,GAAG,EAAEG,KAAK,KAAKvB,QAAV,GAAqB,IAArB,GAA4BuB;AADP,SAApB,CAAR;AAGD;AACF;AACF,GA7BQ,EA6BN,CAACZ,WAAD,CA7BM,CAAT;AA8BD,CArCM","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 { useLocation } from 'react-router-dom'\nimport { useEffect } from 'react'\nimport { useSelector } from 'react-redux'\nimport { allAlias, findSdk, useNavigation } from '../index'\nimport {\n selectSdkLanguage,\n useSettingActions,\n useSettingStoreState,\n} from '../../state'\n\n/**\n * Hook for syncing global URL params with the Redux store\n * Global search parameters: 's', 'sdk'\n */\nexport const useGlobalStoreSync = () => {\n const location = useLocation()\n const { navigate } = useNavigation()\n const { setSdkLanguageAction, setSearchPatternAction } = useSettingActions()\n const { initialized } = useSettingStoreState()\n const selectedSdkLanguage = useSelector(selectSdkLanguage)\n\n useEffect(() => {\n if (initialized) {\n const params = new URLSearchParams(location.search)\n\n // syncing search query\n const searchParam = params.get('s')\n if (searchParam) {\n setSearchPatternAction({\n searchPattern: searchParam,\n })\n }\n\n // syncing SDK language selection\n const sdkParam = params.get('sdk') || ''\n const sdk = findSdk(sdkParam)\n const validSdkParam =\n !sdkParam.localeCompare(sdk.alias, 'en', { sensitivity: 'base' }) ||\n !sdkParam.localeCompare(sdk.language, 'en', { sensitivity: 'base' })\n if (validSdkParam) {\n setSdkLanguageAction({\n sdkLanguage: sdk.language,\n })\n } else {\n const { alias } = findSdk(selectedSdkLanguage)\n navigate(location.pathname, {\n sdk: alias === allAlias ? null : alias,\n })\n }\n }\n }, [initialized])\n}\n"],"file":"globalStoreSync.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/utils/hooks/index.ts"],"names":["useNavigation","useGlobalStoreSync","useQuery"],"mappings":"AAyBA,SAASA,aAAT,QAA8B,cAA9B;AACA,SAASC,kBAAT,QAAmC,mBAAnC;AACA,SAASC,QAAT,QAAyB,YAAzB","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 */\nexport { useNavigation } from './navigation'\nexport { useGlobalStoreSync } from './globalStoreSync'\nexport { useQuery } from './useQuery'\n"],"file":"index.js"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { useHistory } from 'react-router-dom';
|
|
2
|
+
var GLOBAL_PARAMS = ['s', 'sdk'];
|
|
3
|
+
export var useNavigation = () => {
|
|
4
|
+
var history = useHistory();
|
|
5
|
+
|
|
6
|
+
var navigate = (path, queryParams) => {
|
|
7
|
+
var urlParams = new URLSearchParams(history.location.search);
|
|
8
|
+
|
|
9
|
+
if (queryParams === undefined) {
|
|
10
|
+
history.push({
|
|
11
|
+
pathname: path,
|
|
12
|
+
search: urlParams.toString()
|
|
13
|
+
});
|
|
14
|
+
} else if (queryParams === null) {
|
|
15
|
+
history.push({
|
|
16
|
+
pathname: path
|
|
17
|
+
});
|
|
18
|
+
} else {
|
|
19
|
+
Object.keys(queryParams).forEach(key => {
|
|
20
|
+
if (queryParams[key] === null || queryParams[key] === '') {
|
|
21
|
+
urlParams.delete(key);
|
|
22
|
+
} else {
|
|
23
|
+
urlParams.set(key, queryParams[key]);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
history.push({
|
|
27
|
+
pathname: path,
|
|
28
|
+
search: urlParams.toString()
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
var buildPathWithGlobalParams = function buildPathWithGlobalParams(path) {
|
|
34
|
+
var otherParams = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
35
|
+
var params = new URLSearchParams(history.location.search);
|
|
36
|
+
|
|
37
|
+
for (var key of params.keys()) {
|
|
38
|
+
if (!GLOBAL_PARAMS.includes(key)) {
|
|
39
|
+
params.delete(key);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
var globalParams = params.toString();
|
|
44
|
+
var additionalParams = '';
|
|
45
|
+
Object.entries(otherParams).forEach(_ref => {
|
|
46
|
+
var [key, value] = _ref;
|
|
47
|
+
additionalParams += "".concat(key, "=").concat(value);
|
|
48
|
+
});
|
|
49
|
+
var queryString = '';
|
|
50
|
+
|
|
51
|
+
if (globalParams) {
|
|
52
|
+
queryString = globalParams;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
if (additionalParams) {
|
|
56
|
+
queryString += globalParams ? "&".concat(additionalParams) : additionalParams;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return "".concat(path).concat(queryString ? "?".concat(queryString) : '');
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
var navigateWithGlobalParams = path => {
|
|
63
|
+
history.push(buildPathWithGlobalParams(path));
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
return {
|
|
67
|
+
navigate,
|
|
68
|
+
navigateWithGlobalParams,
|
|
69
|
+
buildPathWithGlobalParams
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=navigation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/utils/hooks/navigation.ts"],"names":["useHistory","GLOBAL_PARAMS","useNavigation","history","navigate","path","queryParams","urlParams","URLSearchParams","location","search","undefined","push","pathname","toString","Object","keys","forEach","key","delete","set","buildPathWithGlobalParams","otherParams","params","includes","globalParams","additionalParams","entries","value","queryString","navigateWithGlobalParams"],"mappings":"AAyBA,SAASA,UAAT,QAA2B,kBAA3B;AAEA,IAAMC,aAAa,GAAG,CAAC,GAAD,EAAM,KAAN,CAAtB;AAcA,OAAO,IAAMC,aAAa,GAAG,MAAM;AACjC,MAAMC,OAAO,GAAGH,UAAU,EAA1B;;AAQA,MAAMI,QAAQ,GAAG,CAACC,IAAD,EAAeC,WAAf,KAAwD;AACvE,QAAMC,SAAS,GAAG,IAAIC,eAAJ,CAAoBL,OAAO,CAACM,QAAR,CAAiBC,MAArC,CAAlB;;AAEA,QAAIJ,WAAW,KAAKK,SAApB,EAA+B;AAE7BR,MAAAA,OAAO,CAACS,IAAR,CAAa;AAAEC,QAAAA,QAAQ,EAAER,IAAZ;AAAkBK,QAAAA,MAAM,EAAEH,SAAS,CAACO,QAAV;AAA1B,OAAb;AACD,KAHD,MAGO,IAAIR,WAAW,KAAK,IAApB,EAA0B;AAE/BH,MAAAA,OAAO,CAACS,IAAR,CAAa;AAAEC,QAAAA,QAAQ,EAAER;AAAZ,OAAb;AACD,KAHM,MAGA;AAELU,MAAAA,MAAM,CAACC,IAAP,CAAYV,WAAZ,EAAyBW,OAAzB,CAAkCC,GAAD,IAAS;AACxC,YAAIZ,WAAW,CAACY,GAAD,CAAX,KAAqB,IAArB,IAA6BZ,WAAW,CAACY,GAAD,CAAX,KAAqB,EAAtD,EAA0D;AACxDX,UAAAA,SAAS,CAACY,MAAV,CAAiBD,GAAjB;AACD,SAFD,MAEO;AACLX,UAAAA,SAAS,CAACa,GAAV,CAAcF,GAAd,EAAmBZ,WAAW,CAACY,GAAD,CAA9B;AACD;AACF,OAND;AAOAf,MAAAA,OAAO,CAACS,IAAR,CAAa;AAAEC,QAAAA,QAAQ,EAAER,IAAZ;AAAkBK,QAAAA,MAAM,EAAEH,SAAS,CAACO,QAAV;AAA1B,OAAb;AACD;AACF,GApBD;;AA6BA,MAAMO,yBAAyB,GAAG,SAA5BA,yBAA4B,CAAChB,IAAD,EAAoC;AAAA,QAArBiB,WAAqB,uEAAP,EAAO;AACpE,QAAMC,MAAM,GAAG,IAAIf,eAAJ,CAAoBL,OAAO,CAACM,QAAR,CAAiBC,MAArC,CAAf;;AAEA,SAAK,IAAMQ,GAAX,IAAkBK,MAAM,CAACP,IAAP,EAAlB,EAAiC;AAC/B,UAAI,CAACf,aAAa,CAACuB,QAAd,CAAuBN,GAAvB,CAAL,EAAkC;AAChCK,QAAAA,MAAM,CAACJ,MAAP,CAAcD,GAAd;AACD;AACF;;AACD,QAAMO,YAAY,GAAGF,MAAM,CAACT,QAAP,EAArB;AAEA,QAAIY,gBAAgB,GAAG,EAAvB;AACAX,IAAAA,MAAM,CAACY,OAAP,CAAeL,WAAf,EAA4BL,OAA5B,CAAoC,QAAkB;AAAA,UAAjB,CAACC,GAAD,EAAMU,KAAN,CAAiB;AACpDF,MAAAA,gBAAgB,cAAOR,GAAP,cAAcU,KAAd,CAAhB;AACD,KAFD;AAIA,QAAIC,WAAW,GAAG,EAAlB;;AACA,QAAIJ,YAAJ,EAAkB;AAChBI,MAAAA,WAAW,GAAGJ,YAAd;AACD;;AAED,QAAIC,gBAAJ,EAAsB;AACpBG,MAAAA,WAAW,IAAIJ,YAAY,cAAOC,gBAAP,IAA4BA,gBAAvD;AACD;;AAED,qBAAUrB,IAAV,SAAiBwB,WAAW,cAAOA,WAAP,IAAuB,EAAnD;AACD,GAzBD;;AAgCA,MAAMC,wBAAwB,GAAIzB,IAAD,IAAkB;AACjDF,IAAAA,OAAO,CAACS,IAAR,CAAaS,yBAAyB,CAAChB,IAAD,CAAtC;AACD,GAFD;;AAIA,SAAO;AACLD,IAAAA,QADK;AAEL0B,IAAAA,wBAFK;AAGLT,IAAAA;AAHK,GAAP;AAKD,CA/EM","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 { useHistory } from 'react-router-dom'\n\nconst GLOBAL_PARAMS = ['s', 'sdk']\n\ninterface QueryParamProps {\n /** Search Query **/\n s?: string | null\n /** Chosen SDK Language **/\n sdk?: string | null\n /** Tag Scene Filter **/\n t?: string | null\n}\n\n/**\n * Hook for navigating to given route with query params\n */\nexport const useNavigation = () => {\n const history = useHistory()\n\n /**\n * Navigates to path including provided search parameters\n *\n * @param path Pathname to navigate to\n * @param queryParams Hash of query param name/value pairs to include in the destination url\n */\n const navigate = (path: string, queryParams?: QueryParamProps | null) => {\n const urlParams = new URLSearchParams(history.location.search)\n\n if (queryParams === undefined) {\n // if params passed in is undefined, maintain existing parameters in the URL\n history.push({ pathname: path, search: urlParams.toString() })\n } else if (queryParams === null) {\n // if params passed in is null, remove all parameters from the URL\n history.push({ pathname: path })\n } else {\n // push each key as new param to URL, excluding entries with value null\n Object.keys(queryParams).forEach((key) => {\n if (queryParams[key] === null || queryParams[key] === '') {\n urlParams.delete(key)\n } else {\n urlParams.set(key, queryParams[key])\n }\n })\n history.push({ pathname: path, search: urlParams.toString() })\n }\n }\n\n /**\n * Builds path to a scene and removes any scene-specific URL parameters\n *\n * @param path the destination path\n * @param otherParams other query parameters to append to url\n * @returns a path excluding scene-specific search parameters\n */\n const buildPathWithGlobalParams = (path: string, otherParams = {}) => {\n const params = new URLSearchParams(history.location.search)\n\n for (const key of params.keys()) {\n if (!GLOBAL_PARAMS.includes(key)) {\n params.delete(key)\n }\n }\n const globalParams = params.toString()\n\n let additionalParams = ''\n Object.entries(otherParams).forEach(([key, value]) => {\n additionalParams += `${key}=${value}`\n })\n\n let queryString = ''\n if (globalParams) {\n queryString = globalParams\n }\n\n if (additionalParams) {\n queryString += globalParams ? `&${additionalParams}` : additionalParams\n }\n\n return `${path}${queryString ? `?${queryString}` : ''}`\n }\n\n /**\n * Navigates to a scene removing any scene-specific URL parameters\n *\n * @param path Pathname to navigate to\n */\n const navigateWithGlobalParams = (path: string) => {\n history.push(buildPathWithGlobalParams(path))\n }\n\n return {\n navigate,\n navigateWithGlobalParams,\n buildPathWithGlobalParams,\n }\n}\n"],"file":"navigation.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/utils/hooks/useQuery.ts"],"names":["useMemo","useLocation","useQuery","search","URLSearchParams"],"mappings":"AAyBA,SAASA,OAAT,QAAwB,OAAxB;AACA,SAASC,WAAT,QAA4B,kBAA5B;AAKA,OAAO,IAAMC,QAAQ,GAAG,MAAM;AAC5B,MAAM;AAAEC,IAAAA;AAAF,MAAaF,WAAW,EAA9B;AAEA,SAAOD,OAAO,CAAC,MAAM,IAAII,eAAJ,CAAoBD,MAApB,CAAP,EAAoC,CAACA,MAAD,CAApC,CAAd;AACD,CAJM","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 { useMemo } from 'react'\nimport { useLocation } from 'react-router-dom'\n\n/**\n * Hook for retrieving query params\n */\nexport const useQuery = () => {\n const { search } = useLocation()\n\n return useMemo(() => new URLSearchParams(search), [search])\n}\n"],"file":"useQuery.js"}
|
package/lib/esm/utils/index.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
export { highlightHTML } from './highlight';
|
|
2
2
|
export * from './path';
|
|
3
|
+
export * from './sdkLanguage';
|
|
3
4
|
export { getLoded } from './lodeUtils';
|
|
4
5
|
export { useWindowSize } from './useWindowSize';
|
|
5
6
|
export * from './apixAdaptor';
|
|
6
7
|
export * from './adaptorUtils';
|
|
7
|
-
export { useNavigation } from './hooks';
|
|
8
|
+
export { useNavigation, useGlobalStoreSync, useQuery } from './hooks';
|
|
8
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/index.ts"],"names":["highlightHTML","getLoded","useWindowSize","useNavigation"],"mappings":"AAyBA,SAASA,aAAT,QAA8B,aAA9B;AACA,cAAc,QAAd;AACA,SAASC,QAAT,QAAyB,aAAzB;AACA,SAASC,aAAT,QAA8B,iBAA9B;AACA,cAAc,eAAd;AACA,cAAc,gBAAd;AACA,SAASC,aAAT,
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/index.ts"],"names":["highlightHTML","getLoded","useWindowSize","useNavigation","useGlobalStoreSync","useQuery"],"mappings":"AAyBA,SAASA,aAAT,QAA8B,aAA9B;AACA,cAAc,QAAd;AACA,cAAc,eAAd;AACA,SAASC,QAAT,QAAyB,aAAzB;AACA,SAASC,aAAT,QAA8B,iBAA9B;AACA,cAAc,eAAd;AACA,cAAc,gBAAd;AACA,SAASC,aAAT,EAAwBC,kBAAxB,EAA4CC,QAA5C,QAA4D,SAA5D","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 */\nexport { highlightHTML } from './highlight'\nexport * from './path'\nexport * from './sdkLanguage'\nexport { getLoded } from './lodeUtils'\nexport { useWindowSize } from './useWindowSize'\nexport * from './apixAdaptor'\nexport * from './adaptorUtils'\nexport { useNavigation, useGlobalStoreSync, useQuery } from './hooks'\n"],"file":"index.js"}
|
package/lib/esm/utils/path.js
CHANGED
|
@@ -5,6 +5,9 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function"
|
|
|
5
5
|
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
6
6
|
|
|
7
7
|
import { firstMethodRef } from '@looker/sdk-codegen';
|
|
8
|
+
import { matchPath } from 'react-router';
|
|
9
|
+
export var methodFilterOptions = /GET$|POST$|PUT$|PATCH$|DELETE$/i;
|
|
10
|
+
export var typeFilterOptions = /SPECIFICATION$|WRITE$|REQUEST$|ENUMERATED$/i;
|
|
8
11
|
export var buildMethodPath = (specKey, tag, methodName, params) => "/".concat(specKey, "/methods/").concat(tag, "/").concat(methodName).concat(params ? "?".concat(params) : '');
|
|
9
12
|
export var buildTypePath = (specKey, tag, typeName, params) => "/".concat(specKey, "/types/").concat(tag, "/").concat(typeName).concat(params ? "?".concat(params) : '');
|
|
10
13
|
export var diffPath = 'diff';
|
|
@@ -58,4 +61,22 @@ export var getSpecKey = location => {
|
|
|
58
61
|
|
|
59
62
|
return ((_match = match) === null || _match === void 0 ? void 0 : (_match$groups = _match.groups) === null || _match$groups === void 0 ? void 0 : _match$groups.specKey) || null;
|
|
60
63
|
};
|
|
64
|
+
export var getSceneType = path => {
|
|
65
|
+
var match = matchPath(path, {
|
|
66
|
+
path: '/:specKey/:tagType'
|
|
67
|
+
});
|
|
68
|
+
return match ? match.params.tagType : '';
|
|
69
|
+
};
|
|
70
|
+
export var isValidFilter = (path, filter) => {
|
|
71
|
+
var isValid;
|
|
72
|
+
var sceneType = getSceneType(path);
|
|
73
|
+
if (!sceneType) isValid = false;else if (!filter.localeCompare('all', 'en', {
|
|
74
|
+
sensitivity: 'base'
|
|
75
|
+
})) isValid = true;else if (sceneType === 'methods') {
|
|
76
|
+
isValid = methodFilterOptions.test(filter);
|
|
77
|
+
} else {
|
|
78
|
+
isValid = typeFilterOptions.test(filter);
|
|
79
|
+
}
|
|
80
|
+
return isValid;
|
|
81
|
+
};
|
|
61
82
|
//# sourceMappingURL=path.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/path.ts"],"names":["firstMethodRef","buildMethodPath","specKey","tag","methodName","params","buildTypePath","typeName","diffPath","oAuthPath","getMethodTag","api","Object","entries","tags","filter","methods","map","methodTag","isMethod","item","getTypeTag","type","method","name","buildPath","path","getSpecKey","location","pathname","match","startsWith","pattern","RegExp","groups"],"mappings":";;;;;;AA2BA,SAASA,cAAT,QAA+B,qBAA/B;
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/path.ts"],"names":["firstMethodRef","matchPath","methodFilterOptions","typeFilterOptions","buildMethodPath","specKey","tag","methodName","params","buildTypePath","typeName","diffPath","oAuthPath","getMethodTag","api","Object","entries","tags","filter","methods","map","methodTag","isMethod","item","getTypeTag","type","method","name","buildPath","path","getSpecKey","location","pathname","match","startsWith","pattern","RegExp","groups","getSceneType","tagType","isValidFilter","isValid","sceneType","localeCompare","sensitivity","test"],"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 { ApiModel, IMethod, IType } from '@looker/sdk-codegen'\nimport { firstMethodRef } from '@looker/sdk-codegen'\nimport type { Location as HLocation } from 'history'\nimport { matchPath } from 'react-router'\n\nexport const methodFilterOptions = /GET$|POST$|PUT$|PATCH$|DELETE$/i\nexport const typeFilterOptions = /SPECIFICATION$|WRITE$|REQUEST$|ENUMERATED$/i\n\n/**\n * Builds a path matching the route used by MethodScene\n * @param specKey A string to identify the spec in the URL\n * @param tag Corresponding method tag\n * @param methodName A method name\n * @param params Hash of query param name/value pairs to include in the destination url\n * @returns a Method path\n */\nexport const buildMethodPath = (\n specKey: string,\n tag: string,\n methodName: string,\n params?: string\n) => `/${specKey}/methods/${tag}/${methodName}${params ? `?${params}` : ''}`\n\n/**\n * Builds a path matching the route used by TypeScene\n * @param specKey A string to identify the spec in the URL\n * @param tag Corresponding type tag\n * @param typeName A type name\n * @param params Hash of query param name/value pairs to include in the destination url\n * @returns a Type path\n */\nexport const buildTypePath = (\n specKey: string,\n tag: string,\n typeName: string,\n params?: string\n) => `/${specKey}/types/${tag}/${typeName}${params ? `?${params}` : ''}`\n\nexport const diffPath = 'diff'\nexport const oAuthPath = 'oauth'\n\n/**\n * Returns the tag for a given method name\n * @param api Parsed api\n * @param methodName SDK method name\n * @returns Corresponding tag\n */\nconst getMethodTag = (api: ApiModel, methodName: string) => {\n // Find tag containing methodName\n return Object.entries(api.tags)\n .filter(([, methods]) => methodName in methods)\n .map(([methodTag]) => methodTag)[0]\n}\n\n/**\n * Is this item a method? Check without requiring `instanceof Method`\n * @param item to check for method or type\n */\nexport const isMethod = (item: IMethod | IType) => 'params' in item\n\n/**\n * Return the tag for a give type\n * @param api Parsed api\n * @param type to tag\n */\nconst getTypeTag = (api: ApiModel, type: IType) => {\n const method = firstMethodRef(api, type)\n return getMethodTag(api, method.name)\n}\n\n/**\n * Builds a path matching MethodScene or TypeScene route\n * @param api parsed api\n * @param item A method or type item\n * @param specKey A string to identify the spec in the url\n * @returns a method or type path\n */\nexport const buildPath = (\n api: ApiModel,\n item: IMethod | IType,\n specKey: string\n) => {\n let path\n if (isMethod(item)) {\n const tag = getMethodTag(api, item.name)\n path = buildMethodPath(specKey, tag, item.name)\n } else {\n const tag = getTypeTag(api, item as IType)\n path = buildTypePath(specKey, tag, item.name)\n }\n return path\n}\n\n/**\n * Determine API specification keys from URL pattern\n * @param location service to examine\n */\nexport const getSpecKey = (location: HLocation | Location): string | null => {\n const pathname = location.pathname\n let match\n if (pathname.startsWith(`/${diffPath}`)) {\n const pattern = new RegExp(`(?:/${diffPath})/(?<specKey>\\\\w+.\\\\w+)`)\n match = pathname.match(pattern)\n } else {\n match = pathname.match(/\\/(?<specKey>\\w+\\.\\w+).*/)\n }\n return match?.groups?.specKey || null\n}\n\n/**\n * Gets the scene type of the current page\n * @param path path of browser location\n * @returns string representing the scene type\n */\nexport const getSceneType = (path: string) => {\n const match = matchPath<{ tagType: string }>(path, {\n path: '/:specKey/:tagType',\n })\n return match ? match!.params.tagType : ''\n}\n\n/**\n * Confirms if filter is valid for a given method/type tag\n * @param path browser location pathname\n * @param filter filter tag for page\n */\nexport const isValidFilter = (path: string, filter: string) => {\n let isValid\n const sceneType = getSceneType(path)\n if (!sceneType) isValid = false\n else if (!filter.localeCompare('all', 'en', { sensitivity: 'base' }))\n isValid = true\n else if (sceneType === 'methods') {\n isValid = methodFilterOptions.test(filter)\n } else {\n isValid = typeFilterOptions.test(filter)\n }\n return isValid\n}\n"],"file":"path.js"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
2
|
+
|
|
3
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
4
|
+
|
|
5
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
|
+
|
|
7
|
+
import { codeGenerators } from '@looker/sdk-codegen';
|
|
8
|
+
export var allAlias = 'all';
|
|
9
|
+
export var allSdkLanguages = () => {
|
|
10
|
+
var languages = {};
|
|
11
|
+
codeGenerators.forEach(gen => {
|
|
12
|
+
var alias = gen.extension.toString().match(/\.(\w+)\b/)[1];
|
|
13
|
+
languages[alias] = gen.language;
|
|
14
|
+
});
|
|
15
|
+
return _objectSpread(_objectSpread({}, languages), {}, {
|
|
16
|
+
[allAlias]: 'All'
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
export var findSdk = label => {
|
|
20
|
+
var languages = allSdkLanguages();
|
|
21
|
+
var match = {
|
|
22
|
+
alias: allAlias,
|
|
23
|
+
language: languages[allAlias]
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
for (var [alias, language] of Object.entries(languages)) {
|
|
27
|
+
if (!label.localeCompare(alias, 'en', {
|
|
28
|
+
sensitivity: 'base'
|
|
29
|
+
}) || !label.localeCompare(language, 'en', {
|
|
30
|
+
sensitivity: 'base'
|
|
31
|
+
})) {
|
|
32
|
+
match = {
|
|
33
|
+
alias,
|
|
34
|
+
language
|
|
35
|
+
};
|
|
36
|
+
break;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return match;
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=sdkLanguage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/sdkLanguage.ts"],"names":["codeGenerators","allAlias","allSdkLanguages","languages","forEach","gen","alias","extension","toString","match","language","findSdk","label","Object","entries","localeCompare","sensitivity"],"mappings":";;;;;;AA0BA,SAASA,cAAT,QAA+B,qBAA/B;AAEA,OAAO,IAAMC,QAAQ,GAAG,KAAjB;AAMP,OAAO,IAAMC,eAAe,GAAG,MAA8B;AAC3D,MAAMC,SAAS,GAAG,EAAlB;AACAH,EAAAA,cAAc,CAACI,OAAf,CAAwBC,GAAD,IAAS;AAC9B,QAAMC,KAAK,GAAGD,GAAG,CAACE,SAAJ,CAAcC,QAAd,GAAyBC,KAAzB,CAA+B,WAA/B,EAA6C,CAA7C,CAAd;AACAN,IAAAA,SAAS,CAACG,KAAD,CAAT,GAAmBD,GAAG,CAACK,QAAvB;AACD,GAHD;AAKA,yCAAYP,SAAZ;AAAuB,KAACF,QAAD,GAAY;AAAnC;AACD,CARM;AAeP,OAAO,IAAMU,OAAO,GAAIC,KAAD,IAAmB;AACxC,MAAMT,SAAS,GAAGD,eAAe,EAAjC;AACA,MAAIO,KAAK,GAAG;AAAEH,IAAAA,KAAK,EAAEL,QAAT;AAAmBS,IAAAA,QAAQ,EAAEP,SAAS,CAACF,QAAD;AAAtC,GAAZ;;AACA,OAAK,IAAM,CAACK,KAAD,EAAQI,QAAR,CAAX,IAAgCG,MAAM,CAACC,OAAP,CAAeX,SAAf,CAAhC,EAA2D;AACzD,QACE,CAACS,KAAK,CAACG,aAAN,CAAoBT,KAApB,EAA2B,IAA3B,EAAiC;AAAEU,MAAAA,WAAW,EAAE;AAAf,KAAjC,CAAD,IACA,CAACJ,KAAK,CAACG,aAAN,CAAoBL,QAApB,EAA8B,IAA9B,EAAoC;AAAEM,MAAAA,WAAW,EAAE;AAAf,KAApC,CAFH,EAGE;AACAP,MAAAA,KAAK,GAAG;AAAEH,QAAAA,KAAF;AAASI,QAAAA;AAAT,OAAR;AACA;AACD;AACF;;AACD,SAAOD,KAAP;AACD,CAbM","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 { codeGenerators } from '@looker/sdk-codegen'\n\nexport const allAlias = 'all'\n\n/**\n * Gets all supported sdk languages\n * @returns mapping of sdk language aliases to name\n */\nexport const allSdkLanguages = (): Record<string, string> => {\n const languages = {}\n codeGenerators.forEach((gen) => {\n const alias = gen.extension.toString().match(/\\.(\\w+)\\b/)![1]\n languages[alias] = gen.language\n })\n\n return { ...languages, [allAlias]: 'All' }\n}\n\n/**\n * Searches for sdk language details given label\n * @param label label to search by\n * @returns language name and alias\n */\nexport const findSdk = (label: string) => {\n const languages = allSdkLanguages()\n let match = { alias: allAlias, language: languages[allAlias] }\n for (const [alias, language] of Object.entries(languages)) {\n if (\n !label.localeCompare(alias, 'en', { sensitivity: 'base' }) ||\n !label.localeCompare(language, 'en', { sensitivity: 'base' })\n ) {\n match = { alias, language }\n break\n }\n }\n return match\n}\n"],"file":"sdkLanguage.js"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import type { FC } from 'react';
|
|
2
|
-
import type { ApiModel
|
|
2
|
+
import type { ApiModel } from '@looker/sdk-codegen';
|
|
3
3
|
interface AppRouterProps {
|
|
4
4
|
specKey: string;
|
|
5
|
-
specs: SpecList;
|
|
6
5
|
api: ApiModel;
|
|
7
6
|
toggleNavigation: (target?: boolean) => void;
|
|
8
7
|
}
|
package/lib/routes/AppRouter.js
CHANGED
|
@@ -21,7 +21,6 @@ var AppRouter = _ref => {
|
|
|
21
21
|
var {
|
|
22
22
|
api,
|
|
23
23
|
specKey,
|
|
24
|
-
specs,
|
|
25
24
|
toggleNavigation
|
|
26
25
|
} = _ref;
|
|
27
26
|
return _react.default.createElement(_reactRouterDom.Switch, null, _react.default.createElement(_reactRouterDom.Redirect, {
|
|
@@ -29,9 +28,12 @@ var AppRouter = _ref => {
|
|
|
29
28
|
to: "/".concat(specKey, "/"),
|
|
30
29
|
exact: true
|
|
31
30
|
}), _react.default.createElement(_reactRouterDom.Route, {
|
|
32
|
-
path: "/
|
|
31
|
+
path: "/:specKey/err/:statusCode/:verb/*"
|
|
32
|
+
}, _react.default.createElement(_scenes.ErrorDetailScene, {
|
|
33
|
+
api: api
|
|
34
|
+
})), _react.default.createElement(_reactRouterDom.Route, {
|
|
35
|
+
path: "/:specKey/".concat(_utils.diffPath, "/:compareSpecKey?")
|
|
33
36
|
}, _react.default.createElement(_DiffScene.DiffScene, {
|
|
34
|
-
specs: specs,
|
|
35
37
|
toggleNavigation: toggleNavigation
|
|
36
38
|
})), _react.default.createElement(_reactRouterDom.Route, {
|
|
37
39
|
path: "/:specKey/(methods|types)?",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/routes/AppRouter.tsx"],"names":["AppRouter","api","specKey","
|
|
1
|
+
{"version":3,"sources":["../../src/routes/AppRouter.tsx"],"names":["AppRouter","api","specKey","toggleNavigation","diffPath"],"mappings":";;;;;;;AA2BA;;AACA;;AAGA;;AAQA;;AACA;;;;AAQO,IAAMA,SAA6B,GAAG;AAAA,MAAC;AAC5CC,IAAAA,GAD4C;AAE5CC,IAAAA,OAF4C;AAG5CC,IAAAA;AAH4C,GAAD;AAAA,SAK3C,6BAAC,sBAAD,QACE,6BAAC,wBAAD;AAAU,IAAA,IAAI,EAAC,GAAf;AAAmB,IAAA,EAAE,aAAMD,OAAN,MAArB;AAAuC,IAAA,KAAK;AAA5C,IADF,EAEE,6BAAC,qBAAD;AAAO,IAAA,IAAI,EAAC;AAAZ,KACE,6BAAC,wBAAD;AAAkB,IAAA,GAAG,EAAED;AAAvB,IADF,CAFF,EAKE,6BAAC,qBAAD;AAAO,IAAA,IAAI,sBAAeG,eAAf;AAAX,KACE,6BAAC,oBAAD;AAAW,IAAA,gBAAgB,EAAED;AAA7B,IADF,CALF,EAQE,6BAAC,qBAAD;AAAO,IAAA,IAAI,EAAC,4BAAZ;AAAyC,IAAA,KAAK;AAA9C,KACE,6BAAC,iBAAD;AAAW,IAAA,GAAG,EAAEF;AAAhB,IADF,CARF,EAWE,6BAAC,qBAAD;AAAO,IAAA,IAAI,EAAC,8BAAZ;AAA2C,IAAA,KAAK;AAAhD,KACE,6BAAC,sBAAD;AAAgB,IAAA,GAAG,EAAEA;AAArB,IADF,CAXF,EAcE,6BAAC,qBAAD;AAAO,IAAA,IAAI,EAAC;AAAZ,KACE,6BAAC,mBAAD;AAAa,IAAA,GAAG,EAAEA;AAAlB,IADF,CAdF,EAiBE,6BAAC,qBAAD;AAAO,IAAA,IAAI,EAAC,0BAAZ;AAAuC,IAAA,KAAK;AAA5C,KACE,6BAAC,oBAAD;AAAc,IAAA,GAAG,EAAEA;AAAnB,IADF,CAjBF,EAoBE,6BAAC,qBAAD;AAAO,IAAA,IAAI,EAAC;AAAZ,KACE,6BAAC,iBAAD;AAAW,IAAA,GAAG,EAAEA;AAAhB,IADF,CApBF,CAL2C;AAAA,CAAtC","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 { Redirect, Route, Switch } from 'react-router-dom'\nimport type { ApiModel } from '@looker/sdk-codegen'\n\nimport {\n ErrorDetailScene,\n HomeScene,\n MethodScene,\n MethodTagScene,\n TypeScene,\n TypeTagScene,\n} from '../scenes'\nimport { DiffScene } from '../scenes/DiffScene'\nimport { diffPath } from '../utils'\n\ninterface AppRouterProps {\n specKey: string\n api: ApiModel\n toggleNavigation: (target?: boolean) => void\n}\n\nexport const AppRouter: FC<AppRouterProps> = ({\n api,\n specKey,\n toggleNavigation,\n}) => (\n <Switch>\n <Redirect from=\"/\" to={`/${specKey}/`} exact />\n <Route path=\"/:specKey/err/:statusCode/:verb/*\">\n <ErrorDetailScene api={api} />\n </Route>\n <Route path={`/:specKey/${diffPath}/:compareSpecKey?`}>\n <DiffScene toggleNavigation={toggleNavigation} />\n </Route>\n <Route path=\"/:specKey/(methods|types)?\" exact>\n <HomeScene api={api} />\n </Route>\n <Route path=\"/:specKey/methods/:methodTag\" exact>\n <MethodTagScene api={api} />\n </Route>\n <Route path=\"/:specKey/methods/:methodTag/:methodName\">\n <MethodScene api={api} />\n </Route>\n <Route path=\"/:specKey/types/:typeTag\" exact>\n <TypeTagScene api={api} />\n </Route>\n <Route path=\"/:specKey/types/:typeTag/:typeName\">\n <TypeScene api={api} />\n </Route>\n </Switch>\n)\n"],"file":"AppRouter.js"}
|
|
@@ -56,14 +56,16 @@ var validateParam = function validateParam(specs) {
|
|
|
56
56
|
|
|
57
57
|
var DiffScene = _ref => {
|
|
58
58
|
var {
|
|
59
|
-
specs,
|
|
60
59
|
toggleNavigation
|
|
61
60
|
} = _ref;
|
|
62
61
|
var adaptor = (0, _utils.getApixAdaptor)();
|
|
63
|
-
var
|
|
62
|
+
var {
|
|
63
|
+
navigate
|
|
64
|
+
} = (0, _utils.useNavigation)();
|
|
64
65
|
var spec = (0, _reactRedux.useSelector)(_state.selectCurrentSpec);
|
|
66
|
+
var specs = (0, _reactRedux.useSelector)(_state.selectSpecs);
|
|
65
67
|
var currentSpecKey = spec.key;
|
|
66
|
-
var match = (0, _reactRouterDom.useRouteMatch)("/".concat(_utils.diffPath, "/:
|
|
68
|
+
var match = (0, _reactRouterDom.useRouteMatch)("/:l/".concat(_utils.diffPath, "/:r?"));
|
|
67
69
|
var l = validateParam(specs, match === null || match === void 0 ? void 0 : match.params.l);
|
|
68
70
|
var r = validateParam(specs, match === null || match === void 0 ? void 0 : match.params.r);
|
|
69
71
|
var options = Object.entries(specs).map(_ref2 => {
|
|
@@ -94,15 +96,15 @@ var DiffScene = _ref => {
|
|
|
94
96
|
var [delta, setDelta] = (0, _react.useState)([]);
|
|
95
97
|
|
|
96
98
|
var handleLeftChange = newLeft => {
|
|
97
|
-
navigate("/".concat(
|
|
99
|
+
navigate("/".concat(newLeft, "/").concat(_utils.diffPath, "/").concat(rightKey));
|
|
98
100
|
};
|
|
99
101
|
|
|
100
102
|
var handleRightChange = newRight => {
|
|
101
|
-
navigate("/".concat(
|
|
103
|
+
navigate("/".concat(leftKey, "/").concat(_utils.diffPath, "/").concat(newRight));
|
|
102
104
|
};
|
|
103
105
|
|
|
104
106
|
var handleSwitch = () => {
|
|
105
|
-
navigate("/".concat(
|
|
107
|
+
navigate("/".concat(rightKey, "/").concat(_utils.diffPath, "/").concat(leftKey));
|
|
106
108
|
};
|
|
107
109
|
|
|
108
110
|
(0, _react.useEffect)(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/scenes/DiffScene/DiffScene.tsx"],"names":["diffToggles","label","value","validateParam","specs","specKey","DiffScene","toggleNavigation","adaptor","navigate","spec","selectCurrentSpec","currentSpecKey","key","match","diffPath","l","params","r","options","Object","entries","map","status","leftKey","setLeftKey","rightKey","setRightKey","leftApi","setLeftApi","api","rightApi","setRightApi","toggles","setToggles","standardDiffToggles","delta","setDelta","handleLeftChange","newLeft","handleRightChange","newRight","handleSwitch","fetchSpec","then","handleTogglesChange","values","newToggles"],"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 } from 'react'\nimport type { ApiModel, DiffRow, SpecList } from '@looker/sdk-codegen'\nimport { useRouteMatch } from 'react-router-dom'\nimport {\n Box,\n Flex,\n FlexItem,\n IconButton,\n Label,\n Select,\n SelectMulti,\n} from '@looker/components'\nimport { SyncAlt } from '@styled-icons/material/SyncAlt'\nimport { useSelector } from 'react-redux'\n\nimport { ApixSection } from '../../components'\nimport { selectCurrentSpec } from '../../state'\nimport { diffPath, getApixAdaptor, useNavigation } from '../../utils'\nimport { diffSpecs, standardDiffToggles } from './diffUtils'\nimport { DocDiff } from './DocDiff'\n\nconst diffToggles = [\n {\n label: 'Missing',\n value: 'missing',\n },\n {\n label: 'Status',\n value: 'status',\n },\n {\n label: 'Parameters',\n value: 'params',\n },\n {\n label: 'Type',\n value: 'type',\n },\n {\n label: 'Body',\n value: 'body',\n },\n {\n label: 'Response',\n value: 'response',\n },\n]\n\nexport interface DiffSceneProps {\n specs: SpecList\n toggleNavigation: (target?: boolean) => void\n}\n\nconst validateParam = (specs: SpecList, specKey = '') => {\n return specs[specKey] ? specKey : ''\n}\n\nexport const DiffScene: FC<DiffSceneProps> = ({ specs, toggleNavigation }) => {\n const adaptor = getApixAdaptor()\n const navigate = useNavigation()\n const spec = useSelector(selectCurrentSpec)\n const currentSpecKey = spec.key\n const match = useRouteMatch<{ l: string; r: string }>(`/${diffPath}/:l?/:r?`)\n const l = validateParam(specs, match?.params.l)\n const r = validateParam(specs, match?.params.r)\n\n const options = Object.entries(specs).map(([key, spec]) => ({\n value: key,\n label: `${key} (${spec.status})`,\n }))\n\n const [leftKey, setLeftKey] = useState<string>(l || currentSpecKey)\n const [rightKey, setRightKey] = useState<string>(r || '')\n const [leftApi, setLeftApi] = useState<ApiModel>(specs[leftKey].api!)\n const [rightApi, setRightApi] = useState<ApiModel>(() =>\n rightKey ? specs[rightKey].api! : specs[leftKey].api!\n )\n const [toggles, setToggles] = useState<string[]>(standardDiffToggles)\n\n useEffect(() => {\n if (r !== rightKey) {\n setRightKey(r)\n }\n }, [r, rightKey])\n\n useEffect(() => {\n if (l !== leftKey) {\n setLeftKey(l)\n }\n }, [l, leftKey])\n\n useEffect(() => {\n toggleNavigation(false)\n }, [])\n\n const [delta, setDelta] = useState<DiffRow[]>([])\n\n const handleLeftChange = (newLeft: string) => {\n navigate(`/${diffPath}/${newLeft}/${rightKey}`)\n }\n const handleRightChange = (newRight: string) => {\n navigate(`/${diffPath}/${leftKey}/${newRight}`)\n }\n\n const handleSwitch = () => {\n navigate(`/${diffPath}/${rightKey}/${leftKey}`)\n }\n\n useEffect(() => {\n adaptor.fetchSpec(specs[leftKey]).then((spec) => setLeftApi(spec.api!))\n }, [leftKey])\n\n useEffect(() => {\n if (rightKey in specs) {\n adaptor.fetchSpec(specs[rightKey]).then((spec) => setRightApi(spec.api!))\n }\n }, [rightKey])\n\n useEffect(() => {\n if (leftApi && rightApi) {\n setDelta([...diffSpecs(leftApi, rightApi, toggles)])\n }\n }, [leftApi, rightApi, toggles])\n\n const handleTogglesChange = (values?: string[]) => {\n const newToggles = values || []\n setToggles(newToggles)\n }\n\n return (\n <ApixSection>\n <Box>\n <Flex bg=\"AliceBlue\" padding=\"large\" mb=\"large\" alignItems=\"center\">\n <FlexItem>\n <Label htmlFor=\"base\">Base</Label>\n <Select\n mt=\"xxsmall\"\n id=\"base\"\n name=\"Left Version\"\n value={leftKey}\n options={options}\n onChange={handleLeftChange}\n />\n </FlexItem>\n <IconButton\n className=\"switch-button\"\n label=\"switch\"\n size=\"small\"\n disabled={!leftKey || !rightKey}\n icon={<SyncAlt />}\n mt=\"medium\"\n onClick={handleSwitch}\n />\n <FlexItem>\n <Label htmlFor=\"compare\">Compare</Label>\n <Select\n mt=\"xxsmall\"\n id=\"compare\"\n name=\"Right Version\"\n placeholder=\"Select a comparison...\"\n value={rightKey}\n options={options}\n onChange={handleRightChange}\n />\n </FlexItem>\n <FlexItem flex=\"2\" ml=\"large\">\n <Label htmlFor=\"options\">Comparison Options</Label>\n <SelectMulti\n mt=\"xxsmall\"\n id=\"options\"\n name=\"toggles\"\n placeholder=\"Comparison options\"\n defaultValues={toggles}\n onChange={handleTogglesChange}\n options={diffToggles}\n />\n </FlexItem>\n </Flex>\n </Box>\n <DocDiff\n delta={delta}\n leftKey={leftKey}\n leftSpec={leftApi}\n rightKey={rightKey}\n rightSpec={rightApi}\n />\n </ApixSection>\n )\n}\n"],"file":"DiffScene.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/scenes/DiffScene/DiffScene.tsx"],"names":["diffToggles","label","value","validateParam","specs","specKey","DiffScene","toggleNavigation","adaptor","navigate","spec","selectCurrentSpec","selectSpecs","currentSpecKey","key","match","diffPath","l","params","r","options","Object","entries","map","status","leftKey","setLeftKey","rightKey","setRightKey","leftApi","setLeftApi","api","rightApi","setRightApi","toggles","setToggles","standardDiffToggles","delta","setDelta","handleLeftChange","newLeft","handleRightChange","newRight","handleSwitch","fetchSpec","then","handleTogglesChange","values","newToggles"],"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 } from 'react'\nimport type { ApiModel, DiffRow, SpecList } from '@looker/sdk-codegen'\nimport { useRouteMatch } from 'react-router-dom'\nimport {\n Box,\n Flex,\n FlexItem,\n IconButton,\n Label,\n Select,\n SelectMulti,\n} from '@looker/components'\nimport { SyncAlt } from '@styled-icons/material/SyncAlt'\nimport { useSelector } from 'react-redux'\n\nimport { ApixSection } from '../../components'\nimport { selectCurrentSpec, selectSpecs } from '../../state'\nimport { diffPath, getApixAdaptor, useNavigation } from '../../utils'\nimport { diffSpecs, standardDiffToggles } from './diffUtils'\nimport { DocDiff } from './DocDiff'\n\nconst diffToggles = [\n {\n label: 'Missing',\n value: 'missing',\n },\n {\n label: 'Status',\n value: 'status',\n },\n {\n label: 'Parameters',\n value: 'params',\n },\n {\n label: 'Type',\n value: 'type',\n },\n {\n label: 'Body',\n value: 'body',\n },\n {\n label: 'Response',\n value: 'response',\n },\n]\n\nexport interface DiffSceneProps {\n toggleNavigation: (target?: boolean) => void\n}\n\nconst validateParam = (specs: SpecList, specKey = '') => {\n return specs[specKey] ? specKey : ''\n}\n\nexport const DiffScene: FC<DiffSceneProps> = ({ toggleNavigation }) => {\n const adaptor = getApixAdaptor()\n const { navigate } = useNavigation()\n const spec = useSelector(selectCurrentSpec)\n const specs = useSelector(selectSpecs)\n const currentSpecKey = spec.key\n const match = useRouteMatch<{ l: string; r: string }>(`/:l/${diffPath}/:r?`)\n const l = validateParam(specs, match?.params.l)\n const r = validateParam(specs, match?.params.r)\n\n const options = Object.entries(specs).map(([key, spec]) => ({\n value: key,\n label: `${key} (${spec.status})`,\n }))\n\n const [leftKey, setLeftKey] = useState<string>(l || currentSpecKey)\n const [rightKey, setRightKey] = useState<string>(r || '')\n const [leftApi, setLeftApi] = useState<ApiModel>(specs[leftKey].api!)\n const [rightApi, setRightApi] = useState<ApiModel>(() =>\n rightKey ? specs[rightKey].api! : specs[leftKey].api!\n )\n const [toggles, setToggles] = useState<string[]>(standardDiffToggles)\n\n useEffect(() => {\n if (r !== rightKey) {\n setRightKey(r)\n }\n }, [r, rightKey])\n\n useEffect(() => {\n if (l !== leftKey) {\n setLeftKey(l)\n }\n }, [l, leftKey])\n\n useEffect(() => {\n toggleNavigation(false)\n }, [])\n\n const [delta, setDelta] = useState<DiffRow[]>([])\n\n const handleLeftChange = (newLeft: string) => {\n navigate(`/${newLeft}/${diffPath}/${rightKey}`)\n }\n const handleRightChange = (newRight: string) => {\n navigate(`/${leftKey}/${diffPath}/${newRight}`)\n }\n\n const handleSwitch = () => {\n navigate(`/${rightKey}/${diffPath}/${leftKey}`)\n }\n\n useEffect(() => {\n adaptor.fetchSpec(specs[leftKey]).then((spec) => setLeftApi(spec.api!))\n }, [leftKey])\n\n useEffect(() => {\n if (rightKey in specs) {\n adaptor.fetchSpec(specs[rightKey]).then((spec) => setRightApi(spec.api!))\n }\n }, [rightKey])\n\n useEffect(() => {\n if (leftApi && rightApi) {\n setDelta([...diffSpecs(leftApi, rightApi, toggles)])\n }\n }, [leftApi, rightApi, toggles])\n\n const handleTogglesChange = (values?: string[]) => {\n const newToggles = values || []\n setToggles(newToggles)\n }\n\n return (\n <ApixSection>\n <Box>\n <Flex bg=\"AliceBlue\" padding=\"large\" mb=\"large\" alignItems=\"center\">\n <FlexItem>\n <Label htmlFor=\"base\">Base</Label>\n <Select\n mt=\"xxsmall\"\n id=\"base\"\n name=\"Left Version\"\n value={leftKey}\n options={options}\n onChange={handleLeftChange}\n />\n </FlexItem>\n <IconButton\n className=\"switch-button\"\n label=\"switch\"\n size=\"small\"\n disabled={!leftKey || !rightKey}\n icon={<SyncAlt />}\n mt=\"medium\"\n onClick={handleSwitch}\n />\n <FlexItem>\n <Label htmlFor=\"compare\">Compare</Label>\n <Select\n mt=\"xxsmall\"\n id=\"compare\"\n name=\"Right Version\"\n placeholder=\"Select a comparison...\"\n value={rightKey}\n options={options}\n onChange={handleRightChange}\n />\n </FlexItem>\n <FlexItem flex=\"2\" ml=\"large\">\n <Label htmlFor=\"options\">Comparison Options</Label>\n <SelectMulti\n mt=\"xxsmall\"\n id=\"options\"\n name=\"toggles\"\n placeholder=\"Comparison options\"\n defaultValues={toggles}\n onChange={handleTogglesChange}\n options={diffToggles}\n />\n </FlexItem>\n </Flex>\n </Box>\n <DocDiff\n delta={delta}\n leftKey={leftKey}\n leftSpec={leftApi}\n rightKey={rightKey}\n rightSpec={rightApi}\n />\n </ApixSection>\n )\n}\n"],"file":"DiffScene.js"}
|
|
@@ -54,7 +54,9 @@ var DiffMethodLink = _ref4 => {
|
|
|
54
54
|
method,
|
|
55
55
|
specKey
|
|
56
56
|
} = _ref4;
|
|
57
|
-
var
|
|
57
|
+
var {
|
|
58
|
+
navigate
|
|
59
|
+
} = (0, _utils.useNavigation)();
|
|
58
60
|
if (!method) return _react.default.createElement(_components.Heading, {
|
|
59
61
|
as: "h4"
|
|
60
62
|
}, "Missing in ".concat(specKey));
|