@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.
Files changed (268) hide show
  1. package/CHANGELOG.md +49 -1
  2. package/dist/bundle.js +1 -1
  3. package/dist/bundle.js.map +1 -1
  4. package/e2e/MethodScene.spec.ts +80 -0
  5. package/e2e/diffScene.spec.ts +28 -20
  6. package/e2e/e2e.spec.ts +45 -7
  7. package/lib/ApiExplorer.js +17 -6
  8. package/lib/ApiExplorer.js.map +1 -1
  9. package/lib/components/DocMarkdown/DocMarkdown.js +3 -1
  10. package/lib/components/DocMarkdown/DocMarkdown.js.map +1 -1
  11. package/lib/components/DocSDKs/DocDeclarations.js +10 -15
  12. package/lib/components/DocSDKs/DocDeclarations.js.map +1 -1
  13. package/lib/components/SelectorContainer/ApiSpecSelector.js +3 -1
  14. package/lib/components/SelectorContainer/ApiSpecSelector.js.map +1 -1
  15. package/lib/components/SelectorContainer/SdkLanguageSelector.js +20 -21
  16. package/lib/components/SelectorContainer/SdkLanguageSelector.js.map +1 -1
  17. package/lib/components/SelectorContainer/SelectorContainer.js +4 -1
  18. package/lib/components/SelectorContainer/SelectorContainer.js.map +1 -1
  19. package/lib/components/SelectorContainer/utils.d.ts +2 -0
  20. package/lib/components/SelectorContainer/utils.js +32 -0
  21. package/lib/components/SelectorContainer/utils.js.map +1 -0
  22. package/lib/components/SideNav/SideNav.js +20 -9
  23. package/lib/components/SideNav/SideNav.js.map +1 -1
  24. package/lib/components/SideNav/SideNavMethods.js +7 -6
  25. package/lib/components/SideNav/SideNavMethods.js.map +1 -1
  26. package/lib/components/SideNav/SideNavTypes.js +5 -4
  27. package/lib/components/SideNav/SideNavTypes.js.map +1 -1
  28. package/lib/components/index.d.ts +0 -1
  29. package/lib/components/index.js +0 -8
  30. package/lib/components/index.js.map +1 -1
  31. package/lib/esm/ApiExplorer.js +19 -8
  32. package/lib/esm/ApiExplorer.js.map +1 -1
  33. package/lib/esm/components/DocMarkdown/DocMarkdown.js +3 -1
  34. package/lib/esm/components/DocMarkdown/DocMarkdown.js.map +1 -1
  35. package/lib/esm/components/DocSDKs/DocDeclarations.js +9 -14
  36. package/lib/esm/components/DocSDKs/DocDeclarations.js.map +1 -1
  37. package/lib/esm/components/SelectorContainer/ApiSpecSelector.js +3 -1
  38. package/lib/esm/components/SelectorContainer/ApiSpecSelector.js.map +1 -1
  39. package/lib/esm/components/SelectorContainer/SdkLanguageSelector.js +16 -18
  40. package/lib/esm/components/SelectorContainer/SdkLanguageSelector.js.map +1 -1
  41. package/lib/esm/components/SelectorContainer/SelectorContainer.js +5 -2
  42. package/lib/esm/components/SelectorContainer/SelectorContainer.js.map +1 -1
  43. package/lib/esm/components/SelectorContainer/utils.js +22 -0
  44. package/lib/esm/components/SelectorContainer/utils.js.map +1 -0
  45. package/lib/esm/components/SideNav/SideNav.js +20 -10
  46. package/lib/esm/components/SideNav/SideNav.js.map +1 -1
  47. package/lib/esm/components/SideNav/SideNavMethods.js +8 -7
  48. package/lib/esm/components/SideNav/SideNavMethods.js.map +1 -1
  49. package/lib/esm/components/SideNav/SideNavTypes.js +6 -5
  50. package/lib/esm/components/SideNav/SideNavTypes.js.map +1 -1
  51. package/lib/esm/components/index.js +0 -1
  52. package/lib/esm/components/index.js.map +1 -1
  53. package/lib/esm/routes/AppRouter.js +6 -4
  54. package/lib/esm/routes/AppRouter.js.map +1 -1
  55. package/lib/esm/scenes/DiffScene/DiffScene.js +9 -7
  56. package/lib/esm/scenes/DiffScene/DiffScene.js.map +1 -1
  57. package/lib/esm/scenes/DiffScene/DocDiff/DiffItem.js +3 -1
  58. package/lib/esm/scenes/DiffScene/DocDiff/DiffItem.js.map +1 -1
  59. package/lib/esm/scenes/DiffScene/DocDiff/DocDiff.js +4 -4
  60. package/lib/esm/scenes/DiffScene/DocDiff/DocDiff.js.map +1 -1
  61. package/lib/esm/scenes/ErrorDetailScene/ErrorDetailScene.js +31 -0
  62. package/lib/esm/scenes/ErrorDetailScene/ErrorDetailScene.js.map +1 -0
  63. package/lib/esm/scenes/ErrorDetailScene/index.js +2 -0
  64. package/lib/esm/scenes/ErrorDetailScene/index.js.map +1 -0
  65. package/lib/esm/scenes/MethodScene/MethodScene.js +28 -9
  66. package/lib/esm/scenes/MethodScene/MethodScene.js.map +1 -1
  67. package/lib/esm/{components → scenes/MethodScene/components}/DocResponses/DocResponseTypes.js +1 -1
  68. package/lib/esm/scenes/MethodScene/components/DocResponses/DocResponseTypes.js.map +1 -0
  69. package/lib/esm/scenes/MethodScene/components/DocResponses/DocResponses.js +73 -0
  70. package/lib/esm/scenes/MethodScene/components/DocResponses/DocResponses.js.map +1 -0
  71. package/lib/esm/{components → scenes/MethodScene/components}/DocResponses/index.js +0 -0
  72. package/lib/esm/scenes/MethodScene/components/DocResponses/index.js.map +1 -0
  73. package/lib/esm/{components → scenes/MethodScene/components}/DocResponses/utils.js +0 -0
  74. package/lib/esm/scenes/MethodScene/components/DocResponses/utils.js.map +1 -0
  75. package/lib/esm/scenes/MethodScene/components/index.js +1 -0
  76. package/lib/esm/scenes/MethodScene/components/index.js.map +1 -1
  77. package/lib/esm/scenes/MethodTagScene/MethodTagScene.js +38 -11
  78. package/lib/esm/scenes/MethodTagScene/MethodTagScene.js.map +1 -1
  79. package/lib/esm/scenes/TypeScene/TypeScene.js +3 -1
  80. package/lib/esm/scenes/TypeScene/TypeScene.js.map +1 -1
  81. package/lib/esm/scenes/TypeTagScene/TypeTagScene.js +37 -10
  82. package/lib/esm/scenes/TypeTagScene/TypeTagScene.js.map +1 -1
  83. package/lib/esm/scenes/index.js +1 -0
  84. package/lib/esm/scenes/index.js.map +1 -1
  85. package/lib/esm/scenes/utils/hooks/index.js +2 -0
  86. package/lib/esm/scenes/utils/hooks/index.js.map +1 -0
  87. package/lib/esm/scenes/utils/hooks/tagStoreSync.js +37 -0
  88. package/lib/esm/scenes/utils/hooks/tagStoreSync.js.map +1 -0
  89. package/lib/esm/scenes/utils/index.js +2 -0
  90. package/lib/esm/scenes/utils/index.js.map +1 -0
  91. package/lib/esm/state/settings/selectors.js +1 -0
  92. package/lib/esm/state/settings/selectors.js.map +1 -1
  93. package/lib/esm/state/settings/slice.js +6 -1
  94. package/lib/esm/state/settings/slice.js.map +1 -1
  95. package/lib/esm/utils/hooks/globalStoreSync.js +53 -0
  96. package/lib/esm/utils/hooks/globalStoreSync.js.map +1 -0
  97. package/lib/esm/utils/hooks/index.js +4 -0
  98. package/lib/esm/utils/hooks/index.js.map +1 -0
  99. package/lib/esm/utils/hooks/navigation.js +72 -0
  100. package/lib/esm/utils/hooks/navigation.js.map +1 -0
  101. package/lib/esm/utils/hooks/useQuery.js +9 -0
  102. package/lib/esm/utils/hooks/useQuery.js.map +1 -0
  103. package/lib/esm/utils/index.js +2 -1
  104. package/lib/esm/utils/index.js.map +1 -1
  105. package/lib/esm/utils/path.js +21 -0
  106. package/lib/esm/utils/path.js.map +1 -1
  107. package/lib/esm/utils/sdkLanguage.js +42 -0
  108. package/lib/esm/utils/sdkLanguage.js.map +1 -0
  109. package/lib/routes/AppRouter.d.ts +1 -2
  110. package/lib/routes/AppRouter.js +5 -3
  111. package/lib/routes/AppRouter.js.map +1 -1
  112. package/lib/scenes/DiffScene/DiffScene.d.ts +0 -2
  113. package/lib/scenes/DiffScene/DiffScene.js +8 -6
  114. package/lib/scenes/DiffScene/DiffScene.js.map +1 -1
  115. package/lib/scenes/DiffScene/DocDiff/DiffItem.js +3 -1
  116. package/lib/scenes/DiffScene/DocDiff/DiffItem.js.map +1 -1
  117. package/lib/scenes/DiffScene/DocDiff/DocDiff.js +4 -4
  118. package/lib/scenes/DiffScene/DocDiff/DocDiff.js.map +1 -1
  119. package/lib/scenes/ErrorDetailScene/ErrorDetailScene.d.ts +7 -0
  120. package/lib/scenes/ErrorDetailScene/ErrorDetailScene.js +47 -0
  121. package/lib/scenes/ErrorDetailScene/ErrorDetailScene.js.map +1 -0
  122. package/lib/scenes/ErrorDetailScene/index.d.ts +1 -0
  123. package/lib/scenes/ErrorDetailScene/index.js +14 -0
  124. package/lib/{components/DocResponses → scenes/ErrorDetailScene}/index.js.map +1 -1
  125. package/lib/scenes/MethodScene/MethodScene.js +23 -4
  126. package/lib/scenes/MethodScene/MethodScene.js.map +1 -1
  127. package/lib/{components → scenes/MethodScene/components}/DocResponses/DocResponseTypes.d.ts +2 -2
  128. package/lib/{components → scenes/MethodScene/components}/DocResponses/DocResponseTypes.js +2 -2
  129. package/lib/scenes/MethodScene/components/DocResponses/DocResponseTypes.js.map +1 -0
  130. package/lib/scenes/MethodScene/components/DocResponses/DocResponses.d.ts +9 -0
  131. package/lib/scenes/MethodScene/components/DocResponses/DocResponses.js +93 -0
  132. package/lib/scenes/MethodScene/components/DocResponses/DocResponses.js.map +1 -0
  133. package/lib/{components → scenes/MethodScene/components}/DocResponses/index.d.ts +0 -0
  134. package/lib/{components → scenes/MethodScene/components}/DocResponses/index.js +0 -0
  135. package/lib/scenes/MethodScene/components/DocResponses/index.js.map +1 -0
  136. package/lib/{components → scenes/MethodScene/components}/DocResponses/utils.d.ts +0 -0
  137. package/lib/{components → scenes/MethodScene/components}/DocResponses/utils.js +0 -0
  138. package/lib/scenes/MethodScene/components/DocResponses/utils.js.map +1 -0
  139. package/lib/scenes/MethodScene/components/index.d.ts +1 -0
  140. package/lib/scenes/MethodScene/components/index.js +8 -0
  141. package/lib/scenes/MethodScene/components/index.js.map +1 -1
  142. package/lib/scenes/MethodTagScene/MethodTagScene.js +42 -12
  143. package/lib/scenes/MethodTagScene/MethodTagScene.js.map +1 -1
  144. package/lib/scenes/TypeScene/TypeScene.js +3 -1
  145. package/lib/scenes/TypeScene/TypeScene.js.map +1 -1
  146. package/lib/scenes/TypeTagScene/TypeTagScene.js +41 -11
  147. package/lib/scenes/TypeTagScene/TypeTagScene.js.map +1 -1
  148. package/lib/scenes/index.d.ts +1 -0
  149. package/lib/scenes/index.js +8 -0
  150. package/lib/scenes/index.js.map +1 -1
  151. package/lib/scenes/utils/hooks/index.d.ts +1 -0
  152. package/lib/scenes/utils/hooks/index.js +14 -0
  153. package/lib/scenes/utils/hooks/index.js.map +1 -0
  154. package/lib/scenes/utils/hooks/tagStoreSync.d.ts +1 -0
  155. package/lib/scenes/utils/hooks/tagStoreSync.js +51 -0
  156. package/lib/scenes/utils/hooks/tagStoreSync.js.map +1 -0
  157. package/lib/scenes/utils/index.d.ts +1 -0
  158. package/lib/scenes/utils/index.js +14 -0
  159. package/lib/scenes/utils/index.js.map +1 -0
  160. package/lib/state/settings/selectors.d.ts +2 -1
  161. package/lib/state/settings/selectors.js +5 -1
  162. package/lib/state/settings/selectors.js.map +1 -1
  163. package/lib/state/settings/slice.d.ts +7 -1
  164. package/lib/state/settings/slice.js +6 -1
  165. package/lib/state/settings/slice.js.map +1 -1
  166. package/lib/test-data/index.d.ts +1 -0
  167. package/lib/test-data/index.js +14 -0
  168. package/lib/test-data/index.js.map +1 -1
  169. package/lib/test-data/sdkLanguages.d.ts +10 -0
  170. package/lib/test-data/sdkLanguages.js +19 -0
  171. package/lib/test-data/sdkLanguages.js.map +1 -0
  172. package/lib/utils/hooks/globalStoreSync.d.ts +1 -0
  173. package/lib/utils/hooks/globalStoreSync.js +67 -0
  174. package/lib/utils/hooks/globalStoreSync.js.map +1 -0
  175. package/lib/utils/hooks/index.d.ts +3 -0
  176. package/lib/utils/hooks/index.js +30 -0
  177. package/lib/utils/hooks/index.js.map +1 -0
  178. package/lib/utils/hooks/navigation.d.ts +11 -0
  179. package/lib/utils/hooks/navigation.js +83 -0
  180. package/lib/utils/hooks/navigation.js.map +1 -0
  181. package/lib/utils/hooks/useQuery.d.ts +1 -0
  182. package/lib/utils/hooks/useQuery.js +20 -0
  183. package/lib/utils/hooks/useQuery.js.map +1 -0
  184. package/lib/utils/index.d.ts +2 -1
  185. package/lib/utils/index.js +29 -1
  186. package/lib/utils/index.js.map +1 -1
  187. package/lib/utils/path.d.ts +4 -0
  188. package/lib/utils/path.js +32 -1
  189. package/lib/utils/path.js.map +1 -1
  190. package/lib/utils/sdkLanguage.d.ts +6 -0
  191. package/lib/utils/sdkLanguage.js +59 -0
  192. package/lib/utils/sdkLanguage.js.map +1 -0
  193. package/package.json +14 -14
  194. package/src/ApiExplorer.tsx +13 -8
  195. package/src/components/DocMarkdown/DocMarkdown.tsx +1 -1
  196. package/src/components/DocSDKs/DocDeclarations.tsx +11 -22
  197. package/src/components/DocSDKs/DocSDKs.spec.tsx +4 -1
  198. package/src/components/Header/Header.spec.tsx +1 -1
  199. package/src/components/SelectorContainer/ApiSpecSelector.tsx +1 -1
  200. package/src/components/SelectorContainer/SdkLanguageSelector.spec.tsx +60 -33
  201. package/src/components/SelectorContainer/SdkLanguageSelector.tsx +15 -22
  202. package/src/components/SelectorContainer/SelectorContainer.spec.tsx +1 -1
  203. package/src/components/SelectorContainer/SelectorContainer.tsx +18 -15
  204. package/src/{utils/hooks.ts → components/SelectorContainer/utils.ts} +13 -21
  205. package/src/components/SideNav/SideNav.tsx +26 -14
  206. package/src/components/SideNav/SideNavMethods.spec.tsx +6 -8
  207. package/src/components/SideNav/SideNavMethods.tsx +8 -12
  208. package/src/components/SideNav/SideNavTypes.tsx +5 -10
  209. package/src/components/index.ts +0 -1
  210. package/src/routes/AppRouter.tsx +7 -5
  211. package/src/scenes/DiffScene/DiffScene.tsx +8 -8
  212. package/src/scenes/DiffScene/DocDiff/DiffItem.tsx +1 -1
  213. package/src/scenes/DiffScene/DocDiff/DocDiff.spec.tsx +73 -2
  214. package/src/scenes/DiffScene/DocDiff/DocDiff.tsx +4 -4
  215. package/src/scenes/ErrorDetailScene/ErrorDetailScene.tsx +72 -0
  216. package/src/scenes/ErrorDetailScene/index.ts +26 -0
  217. package/src/scenes/MethodScene/MethodScene.tsx +21 -7
  218. package/src/{components → scenes/MethodScene/components}/DocResponses/DocResponseTypes.tsx +3 -6
  219. package/src/scenes/MethodScene/components/DocResponses/DocResponses.spec.tsx +153 -0
  220. package/src/scenes/MethodScene/components/DocResponses/DocResponses.tsx +103 -0
  221. package/src/{components → scenes/MethodScene/components}/DocResponses/index.ts +0 -0
  222. package/src/{components → scenes/MethodScene/components}/DocResponses/utils.spec.ts +1 -1
  223. package/src/{components → scenes/MethodScene/components}/DocResponses/utils.ts +0 -0
  224. package/src/scenes/MethodScene/components/index.ts +1 -0
  225. package/src/scenes/MethodTagScene/MethodTagScene.spec.tsx +25 -14
  226. package/src/scenes/MethodTagScene/MethodTagScene.tsx +42 -11
  227. package/src/scenes/TypeScene/TypeScene.tsx +1 -1
  228. package/src/scenes/TypeTagScene/TypeTagScene.spec.tsx +21 -11
  229. package/src/scenes/TypeTagScene/TypeTagScene.tsx +44 -11
  230. package/src/scenes/index.ts +1 -0
  231. package/src/scenes/utils/hooks/index.ts +27 -0
  232. package/src/scenes/utils/hooks/tagStoreSync.spec.ts +102 -0
  233. package/src/scenes/utils/hooks/tagStoreSync.ts +68 -0
  234. package/src/scenes/utils/index.ts +27 -0
  235. package/src/state/settings/selectors.spec.ts +5 -1
  236. package/src/state/settings/selectors.ts +3 -0
  237. package/src/state/settings/slice.ts +6 -0
  238. package/src/test-data/index.ts +1 -0
  239. package/src/test-data/sdkLanguages.ts +36 -0
  240. package/src/utils/hooks/globalStoreSync.spec.tsx +146 -0
  241. package/src/utils/hooks/globalStoreSync.ts +77 -0
  242. package/src/utils/hooks/index.ts +28 -0
  243. package/src/utils/hooks/navigation.spec.ts +118 -0
  244. package/src/utils/hooks/navigation.ts +121 -0
  245. package/src/utils/hooks/useQuery.ts +36 -0
  246. package/src/utils/index.ts +2 -1
  247. package/src/utils/path.spec.ts +67 -1
  248. package/src/utils/path.ts +35 -0
  249. package/src/utils/sdkLanguage.spec.ts +69 -0
  250. package/src/utils/sdkLanguage.ts +63 -0
  251. package/lib/components/DocResponses/DocResponseTypes.js.map +0 -1
  252. package/lib/components/DocResponses/DocResponses.d.ts +0 -8
  253. package/lib/components/DocResponses/DocResponses.js +0 -46
  254. package/lib/components/DocResponses/DocResponses.js.map +0 -1
  255. package/lib/components/DocResponses/utils.js.map +0 -1
  256. package/lib/esm/components/DocResponses/DocResponseTypes.js.map +0 -1
  257. package/lib/esm/components/DocResponses/DocResponses.js +0 -30
  258. package/lib/esm/components/DocResponses/DocResponses.js.map +0 -1
  259. package/lib/esm/components/DocResponses/index.js.map +0 -1
  260. package/lib/esm/components/DocResponses/utils.js.map +0 -1
  261. package/lib/esm/utils/hooks.js +0 -26
  262. package/lib/esm/utils/hooks.js.map +0 -1
  263. package/lib/utils/hooks.d.ts +0 -3
  264. package/lib/utils/hooks.js +0 -36
  265. package/lib/utils/hooks.js.map +0 -1
  266. package/src/components/DocResponses/DocResponses.spec.tsx +0 -60
  267. package/src/components/DocResponses/DocResponses.tsx +0 -69
  268. package/src/utils/hooks.spec.ts +0 -78
@@ -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","setSearchPatternAction","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","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, setSearchPatternAction } = 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 const searchParams = new URLSearchParams(location.search)\n const searchPattern = searchParams.get('s') || ''\n setSearchPatternAction({ searchPattern: searchPattern! })\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 || 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":"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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 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"}
@@ -11,7 +11,9 @@ export var DocMarkdown = _ref => {
11
11
  specKey
12
12
  } = _ref;
13
13
  var searchPattern = useSelector(selectSearchPattern);
14
- var navigate = useNavigation();
14
+ var {
15
+ navigate
16
+ } = useNavigation();
15
17
 
16
18
  var linkClickHandler = (pathname, url) => {
17
19
  if (pathname.startsWith("/".concat(specKey))) {
@@ -1 +1 @@
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,MAAMO,QAAQ,GAAGN,aAAa,EAA9B;;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
+ {"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
- var tabs = useTabs();
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(TabPanel, {
18
- key: language
10
+ return React.createElement(Tab2, {
11
+ key: language,
12
+ id: language,
13
+ label: language
19
14
  }, React.createElement(DocCode, {
20
- language: language,
21
- code: code
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":["Tab","TabList","TabPanel","TabPanels","useTabs","React","DocCode","DocDeclarations","declarations","tabs","Object","keys","map","language","entries","code"],"mappings":";;AAyBA,SAASA,GAAT,EAAcC,OAAd,EAAuBC,QAAvB,EAAiCC,SAAjC,EAA4CC,OAA5C,QAA2D,oBAA3D;AAGA,OAAOC,KAAP,MAAkB,OAAlB;AACA,SAASC,OAAT,QAAwB,YAAxB;AAUA,OAAO,IAAMC,eAAyC,GAAG,QAAsB;AAAA,MAArB;AAAEC,IAAAA;AAAF,GAAqB;AAC7E,MAAMC,IAAI,GAAGL,OAAO,EAApB;AAEA,SACE,0CACE,oBAAC,OAAD,EAAaK,IAAb,EACGC,MAAM,CAACC,IAAP,CAAYH,YAAZ,EAA0BI,GAA1B,CAA+BC,QAAD,IAC7B,oBAAC,GAAD;AAAK,IAAA,GAAG,EAAEA;AAAV,KAAqBA,QAArB,CADD,CADH,CADF,EAME,oBAAC,SAAD,eAAeJ,IAAf;AAAqB,IAAA,EAAE,EAAC;AAAxB,MACGC,MAAM,CAACI,OAAP,CAAeN,YAAf,EAA6BI,GAA7B,CAAiC;AAAA,QAAC,CAACC,QAAD,EAAWE,IAAX,CAAD;AAAA,WAChC,oBAAC,QAAD;AAAU,MAAA,GAAG,EAAEF;AAAf,OACE,oBAAC,OAAD;AAAS,MAAA,QAAQ,EAAEA,QAAnB;AAA6B,MAAA,IAAI,EAAEE;AAAnC,MADF,CADgC;AAAA,GAAjC,CADH,CANF,CADF;AAgBD,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 */\nimport { Tab, TabList, TabPanel, TabPanels, useTabs } from '@looker/components'\nimport type { KeyedCollection } from '@looker/sdk-codegen'\nimport type { FC } from 'react'\nimport React 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 const tabs = useTabs()\n\n return (\n <>\n <TabList {...tabs}>\n {Object.keys(declarations).map((language) => (\n <Tab key={language}>{language}</Tab>\n ))}\n </TabList>\n <TabPanels {...tabs} pt=\"0\">\n {Object.entries(declarations).map(([language, code]) => (\n <TabPanel key={language}>\n <DocCode language={language} code={code} />\n </TabPanel>\n ))}\n </TabPanels>\n </>\n )\n}\n"],"file":"DocDeclarations.js"}
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"}
@@ -9,7 +9,9 @@ export var ApiSpecSelector = _ref => {
9
9
  spec
10
10
  } = _ref;
11
11
  var location = useLocation();
12
- var navigate = useNavigation();
12
+ var {
13
+ navigate
14
+ } = useNavigation();
13
15
  var specs = useSelector(selectSpecs);
14
16
  var options = Object.entries(specs).map(_ref2 => {
15
17
  var [key, spec] = _ref2;
@@ -1 +1 @@
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,MAAMO,QAAQ,GAAGL,aAAa,EAA9B;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
+ {"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 { useSettingActions, selectSdkLanguage } from '../../state';
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
- setSdkLanguageAction
9
- } = useSettingActions();
9
+ navigate
10
+ } = useNavigation();
10
11
  var selectedSdkLanguage = useSelector(selectSdkLanguage);
11
- var allSdkLanguages = codeGenerators.map(gen => ({
12
- value: gen.language
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 = language => {
21
- setSdkLanguageAction({
22
- sdkLanguage: language
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: selectedSdkLanguage,
26
+ value: language,
29
27
  onChange: handleChange,
30
- options: allSdkLanguages
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","codeGenerators","Select","useSelector","useSettingActions","selectSdkLanguage","SdkLanguageSelector","setSdkLanguageAction","selectedSdkLanguage","allSdkLanguages","map","gen","value","language","push","options","handleChange","sdkLanguage"],"mappings":"AA0BA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,cAAT,QAA+B,qBAA/B;AACA,SAASC,MAAT,QAAuB,oBAAvB;AACA,SAASC,WAAT,QAA4B,aAA5B;AAGA,SAASC,iBAAT,EAA4BC,iBAA5B,QAAqD,aAArD;AAKA,OAAO,IAAMC,mBAAuB,GAAG,MAAM;AAC3C,MAAM;AAAEC,IAAAA;AAAF,MAA2BH,iBAAiB,EAAlD;AACA,MAAMI,mBAAmB,GAAGL,WAAW,CAACE,iBAAD,CAAvC;AAEA,MAAMI,eAAoC,GAAGR,cAAc,CAACS,GAAf,CAAoBC,GAAD,KAAU;AACxEC,IAAAA,KAAK,EAAED,GAAG,CAACE;AAD6D,GAAV,CAAnB,CAA7C;AAIAJ,EAAAA,eAAe,CAACK,IAAhB,CAAqB;AACnBC,IAAAA,OAAO,EAAE,CACP;AACEH,MAAAA,KAAK,EAAE;AADT,KADO;AADU,GAArB;;AAQA,MAAMI,YAAY,GAAIH,QAAD,IAAsB;AACzCN,IAAAA,oBAAoB,CAAC;AAAEU,MAAAA,WAAW,EAAEJ;AAAf,KAAD,CAApB;AACD,GAFD;;AAIA,SACE,oBAAC,MAAD;AACE,kBAAW,uBADb;AAEE,IAAA,KAAK,EAAEL,mBAFT;AAGE,IAAA,QAAQ,EAAEQ,YAHZ;AAIE,IAAA,OAAO,EAAEP;AAJX,IADF;AAQD,CA5BM","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 from 'react'\nimport { codeGenerators } from '@looker/sdk-codegen'\nimport { Select } from '@looker/components'\nimport { useSelector } from 'react-redux'\nimport type { SelectOptionProps } from '@looker/components'\n\nimport { useSettingActions, selectSdkLanguage } from '../../state'\n\n/**\n * Allows the user to select their preferred SDK language\n */\nexport const SdkLanguageSelector: FC = () => {\n const { setSdkLanguageAction } = useSettingActions()\n const selectedSdkLanguage = useSelector(selectSdkLanguage)\n\n const allSdkLanguages: SelectOptionProps[] = codeGenerators.map((gen) => ({\n value: gen.language,\n }))\n\n allSdkLanguages.push({\n options: [\n {\n value: 'All',\n },\n ],\n })\n\n const handleChange = (language: string) => {\n setSdkLanguageAction({ sdkLanguage: language })\n }\n\n return (\n <Select\n aria-label=\"sdk language selector\"\n value={selectedSdkLanguage}\n onChange={handleChange}\n options={allSdkLanguages}\n />\n )\n}\n"],"file":"SdkLanguageSelector.js"}
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: "/".concat(diffPath, "/").concat(spec.key, "/")
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,QAAyB,aAAzB;AACA,SAASC,mBAAT,QAAoC,uBAApC;AACA,SAASC,eAAT,QAAgC,mBAAhC;AAOA,OAAO,IAAMC,UAAU,GAAG,CAAnB;AAKP,OAAO,IAAMC,iBAA6C,GAAG;AAAA,MAAC;AAC5DC,IAAAA;AAD4D,GAAD;AAAA,MAExDC,UAFwD;;AAAA,SAI3D,oBAAC,KAAD;AAAO,IAAA,KAAK,EAAC;AAAb,KAAwBA,UAAxB,GACE,oBAAC,mBAAD,OADF,EAEE,oBAAC,eAAD;AAAiB,IAAA,IAAI,EAAED;AAAvB,IAFF,EAGE,oBAAC,IAAD;AAAM,IAAA,EAAE,aAAML,QAAN,cAAkBK,IAAI,CAACE,GAAvB;AAAR,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,CAJ2D;AAAA,CAAtD","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 } 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 <Space width=\"auto\" {...spaceProps}>\n <SdkLanguageSelector />\n <ApiSpecSelector spec={spec} />\n <Link to={`/${diffPath}/${spec.key}/`}>\n <IconButton\n toggle\n label=\"Compare Specifications\"\n icon={<ChangeHistory />}\n size=\"small\"\n />\n </Link>\n </Space>\n)\n"],"file":"SelectorContainer.js"}
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"}
@@ -2,9 +2,10 @@ function _extends() { _extends = Object.assign || function (target) { for (var i
2
2
 
3
3
  import React, { useEffect, useState } from 'react';
4
4
  import { useLocation } from 'react-router-dom';
5
- import { TabList, Tab, TabPanel, TabPanels, useTabs, InputSearch } from '@looker/components';
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 { CopyLinkWrapper } from '@looker/run-it';
8
9
  import { useWindowSize, useNavigation } from '../../utils';
9
10
  import { HEADER_REM } from '../Header';
10
11
  import { selectSearchCriteria, selectSearchPattern } from '../../state';
@@ -18,7 +19,10 @@ export var SideNav = _ref => {
18
19
  spec
19
20
  } = _ref;
20
21
  var location = useLocation();
21
- var navigate = useNavigation();
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
- navigate(parts.join('/'));
42
+ navigateWithGlobalParams(parts.join('/'));
39
43
  }
40
44
  } else {
41
45
  if (parts[2] !== tabNames[index]) {
42
46
  parts[2] = tabNames[index];
43
- navigate(parts.join('/'));
47
+ navigateWithGlobalParams(parts.join('/'));
44
48
  }
45
49
  }
46
50
  };
@@ -82,21 +86,22 @@ export var SideNav = _ref => {
82
86
  if (debouncedPattern && debouncedPattern !== searchParams.get('s')) {
83
87
  searchParams.set('s', debouncedPattern);
84
88
  navigate(location.pathname, {
85
- search: searchParams.toString()
89
+ s: searchParams.get('s')
86
90
  });
87
91
  } else if (!debouncedPattern && searchParams.get('s')) {
88
92
  searchParams.delete('s');
89
93
  navigate(location.pathname, {
90
- search: searchParams.toString()
94
+ s: null
91
95
  });
92
96
  }
93
- }, [location.search, debouncedPattern]);
97
+ }, [debouncedPattern]);
94
98
  useEffect(() => {
95
99
  var results;
96
100
  var newTags;
97
101
  var newTypes;
98
102
  var newTypeTags;
99
103
  var api = spec.api || {};
104
+ setSearchPattern(searchPattern);
100
105
 
101
106
  if (searchPattern && api.search) {
102
107
  results = api.search(searchPattern, criteriaToSet(searchCriteria));
@@ -130,19 +135,24 @@ export var SideNav = _ref => {
130
135
  var size = useWindowSize();
131
136
  var headlessOffset = headless ? 200 : 120;
132
137
  var menuH = size.height - 16 * HEADER_REM - headlessOffset;
133
- return React.createElement("nav", null, React.createElement(InputSearch, {
138
+ return React.createElement("nav", null, React.createElement(Box2, {
134
139
  pl: "large",
135
140
  pr: "large",
136
141
  pb: "large",
137
142
  pt: headless ? 'u3' : 'large',
143
+ position: 'relative',
144
+ width: '100%'
145
+ }, React.createElement(CopyLinkWrapper, {
146
+ visible: !!pattern
147
+ }, React.createElement(InputSearch, {
138
148
  "aria-label": "Search",
139
149
  onChange: handleInputChange,
140
150
  placeholder: "Search",
141
151
  value: pattern,
142
152
  isClearable: true
143
- }), React.createElement(SearchMessage, {
153
+ })), React.createElement(SearchMessage, {
144
154
  search: searchResults
145
- }), React.createElement(TabList, _extends({}, tabs, {
155
+ })), React.createElement(TabList, _extends({}, tabs, {
146
156
  distribute: true
147
157
  }), React.createElement(Tab, null, "Methods (", methodCount, ")"), React.createElement(Tab, null, "Types (", typeCount, ")")), React.createElement(TabPanels, _extends({}, tabs, {
148
158
  pt: "xsmall",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/SideNav/SideNav.tsx"],"names":["React","useEffect","useState","useLocation","TabList","Tab","TabPanel","TabPanels","useTabs","InputSearch","criteriaToSet","tagTypes","useSelector","useWindowSize","useNavigation","HEADER_REM","selectSearchCriteria","selectSearchPattern","SideNavMethodTags","SideNavTypeTags","useDebounce","countMethods","countTypes","SearchMessage","SideNav","headless","spec","location","navigate","specKey","key","tabNames","pathParts","pathname","split","sideNavTab","defaultIndex","indexOf","onTabChange","index","parts","join","tabs","onChange","searchCriteria","searchPattern","pattern","setSearchPattern","debouncedPattern","sideNavState","setSideNavState","tags","api","typeTags","methodCount","typeCount","types","searchResults","undefined","handleInputChange","value","searchParams","URLSearchParams","search","get","set","toString","delete","results","newTags","newTypes","newTypeTags","selectedIndex","onSelectTab","size","headlessOffset","menuH","height"],"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, { useEffect, useState } from 'react'\nimport { useLocation } from 'react-router-dom'\nimport {\n TabList,\n Tab,\n TabPanel,\n TabPanels,\n useTabs,\n InputSearch,\n} from '@looker/components'\nimport type {\n SpecItem,\n ISearchResult,\n ApiModel,\n TagList,\n TypeTagList,\n} from '@looker/sdk-codegen'\nimport { criteriaToSet, tagTypes } from '@looker/sdk-codegen'\nimport { useSelector } from 'react-redux'\nimport { useWindowSize, useNavigation } from '../../utils'\nimport { HEADER_REM } from '../Header'\nimport { selectSearchCriteria, selectSearchPattern } from '../../state'\nimport { SideNavMethodTags } from './SideNavMethodTags'\nimport { SideNavTypeTags } from './SideNavTypeTags'\nimport { useDebounce, countMethods, countTypes } from './searchUtils'\nimport { SearchMessage } from './SearchMessage'\n\ninterface SideNavState {\n tags: TagList\n typeTags: TypeTagList\n methodCount: number\n typeCount: number\n searchResults?: ISearchResult\n}\n\ninterface SideNavProps {\n headless?: boolean\n /** Current selected spec */\n spec: SpecItem\n}\n\nexport const SideNav: FC<SideNavProps> = ({ headless = false, spec }) => {\n const location = useLocation()\n const navigate = useNavigation()\n const specKey = spec.key\n const tabNames = ['methods', 'types']\n const pathParts = location.pathname.split('/')\n const sideNavTab = pathParts[1] === 'diff' ? pathParts[3] : pathParts[2]\n let defaultIndex = tabNames.indexOf(sideNavTab)\n if (defaultIndex < 0) {\n defaultIndex = tabNames.indexOf('methods')\n }\n const onTabChange = (index: number) => {\n const parts = location.pathname.split('/')\n if (parts[1] === 'diff') {\n if (parts[3] !== tabNames[index]) {\n parts[3] = tabNames[index]\n navigate(parts.join('/'))\n }\n } else {\n if (parts[2] !== tabNames[index]) {\n parts[2] = tabNames[index]\n navigate(parts.join('/'))\n }\n }\n }\n const tabs = useTabs({ defaultIndex, onChange: onTabChange })\n const searchCriteria = useSelector(selectSearchCriteria)\n const searchPattern = useSelector(selectSearchPattern)\n const [pattern, setSearchPattern] = useState(searchPattern)\n const debouncedPattern = useDebounce(pattern, 250)\n const [sideNavState, setSideNavState] = useState<SideNavState>(() => ({\n tags: spec?.api?.tags || {},\n typeTags: spec?.api?.typeTags || {},\n methodCount: countMethods(spec?.api?.tags || {}),\n typeCount: countTypes(spec?.api?.types || {}),\n searchResults: undefined,\n }))\n const { tags, typeTags, methodCount, typeCount, searchResults } = sideNavState\n\n const handleInputChange = (value: string) => {\n setSearchPattern(value)\n }\n\n useEffect(() => {\n const searchParams = new URLSearchParams(location.search)\n if (debouncedPattern && debouncedPattern !== searchParams.get('s')) {\n searchParams.set('s', debouncedPattern)\n navigate(location.pathname, { search: searchParams.toString() })\n } else if (!debouncedPattern && searchParams.get('s')) {\n searchParams.delete('s')\n navigate(location.pathname, { search: searchParams.toString() })\n }\n }, [location.search, debouncedPattern])\n\n useEffect(() => {\n let results\n let newTags\n let newTypes\n let newTypeTags\n const api = spec.api || ({} as ApiModel)\n\n if (searchPattern && api.search) {\n results = api.search(searchPattern, criteriaToSet(searchCriteria))\n newTags = results.tags\n newTypes = results.types\n newTypeTags = tagTypes(api, results.types)\n } else {\n newTags = api.tags || {}\n newTypes = api.types || {}\n newTypeTags = api.typeTags || {}\n }\n\n setSideNavState({\n tags: newTags,\n typeTags: newTypeTags,\n typeCount: countTypes(newTypes),\n methodCount: countMethods(newTags),\n searchResults: results,\n })\n }, [searchPattern, specKey, spec, searchCriteria])\n\n useEffect(() => {\n const { selectedIndex, onSelectTab } = tabs\n if (defaultIndex !== selectedIndex) {\n onSelectTab(defaultIndex)\n }\n }, [defaultIndex, tabs])\n\n const size = useWindowSize()\n const headlessOffset = headless ? 200 : 120\n const menuH = size.height - 16 * HEADER_REM - headlessOffset\n\n return (\n <nav>\n <InputSearch\n pl=\"large\"\n pr=\"large\"\n pb=\"large\"\n pt={headless ? 'u3' : 'large'}\n aria-label=\"Search\"\n onChange={handleInputChange}\n placeholder=\"Search\"\n value={pattern}\n isClearable\n />\n <SearchMessage search={searchResults} />\n <TabList {...tabs} distribute>\n <Tab>Methods ({methodCount})</Tab>\n <Tab>Types ({typeCount})</Tab>\n </TabList>\n <TabPanels {...tabs} pt=\"xsmall\" height={`${menuH}px`} overflow=\"auto\">\n <TabPanel>\n <SideNavMethodTags\n tags={tags}\n specKey={specKey}\n defaultOpen={!!searchResults}\n />\n </TabPanel>\n <TabPanel>\n <SideNavTypeTags\n tags={typeTags}\n specKey={specKey}\n defaultOpen={!!searchResults}\n />\n </TabPanel>\n </TabPanels>\n </nav>\n )\n}\n"],"file":"SideNav.js"}
1
+ {"version":3,"sources":["../../../../src/components/SideNav/SideNav.tsx"],"names":["React","useEffect","useState","useLocation","TabList","Tab","TabPanel","TabPanels","useTabs","InputSearch","Box2","criteriaToSet","tagTypes","useSelector","CopyLinkWrapper","useWindowSize","useNavigation","HEADER_REM","selectSearchCriteria","selectSearchPattern","SideNavMethodTags","SideNavTypeTags","useDebounce","countMethods","countTypes","SearchMessage","SideNav","headless","spec","location","navigate","navigateWithGlobalParams","specKey","key","tabNames","pathParts","pathname","split","sideNavTab","defaultIndex","indexOf","onTabChange","index","parts","join","tabs","onChange","searchCriteria","searchPattern","pattern","setSearchPattern","debouncedPattern","sideNavState","setSideNavState","tags","api","typeTags","methodCount","typeCount","types","searchResults","undefined","handleInputChange","value","searchParams","URLSearchParams","search","get","set","s","delete","results","newTags","newTypes","newTypeTags","selectedIndex","onSelectTab","size","headlessOffset","menuH","height"],"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, { useEffect, useState } from 'react'\nimport { useLocation } from 'react-router-dom'\nimport {\n TabList,\n Tab,\n TabPanel,\n TabPanels,\n useTabs,\n InputSearch,\n Box2,\n} from '@looker/components'\nimport type {\n SpecItem,\n ISearchResult,\n ApiModel,\n TagList,\n TypeTagList,\n} from '@looker/sdk-codegen'\nimport { criteriaToSet, tagTypes } from '@looker/sdk-codegen'\nimport { useSelector } from 'react-redux'\nimport { CopyLinkWrapper } from '@looker/run-it'\nimport { useWindowSize, useNavigation } from '../../utils'\nimport { HEADER_REM } from '../Header'\nimport { selectSearchCriteria, selectSearchPattern } from '../../state'\nimport { SideNavMethodTags } from './SideNavMethodTags'\nimport { SideNavTypeTags } from './SideNavTypeTags'\nimport { useDebounce, countMethods, countTypes } from './searchUtils'\nimport { SearchMessage } from './SearchMessage'\n\ninterface SideNavState {\n tags: TagList\n typeTags: TypeTagList\n methodCount: number\n typeCount: number\n searchResults?: ISearchResult\n}\n\ninterface SideNavProps {\n headless?: boolean\n /** Current selected spec */\n spec: SpecItem\n}\n\nexport const SideNav: FC<SideNavProps> = ({ headless = false, spec }) => {\n const location = useLocation()\n const { navigate, navigateWithGlobalParams } = useNavigation()\n const specKey = spec.key\n const tabNames = ['methods', 'types']\n const pathParts = location.pathname.split('/')\n const sideNavTab = pathParts[1] === 'diff' ? pathParts[3] : pathParts[2]\n let defaultIndex = tabNames.indexOf(sideNavTab)\n if (defaultIndex < 0) {\n defaultIndex = tabNames.indexOf('methods')\n }\n const onTabChange = (index: number) => {\n const parts = location.pathname.split('/')\n if (parts[1] === 'diff') {\n if (parts[3] !== tabNames[index]) {\n parts[3] = tabNames[index]\n navigateWithGlobalParams(parts.join('/'))\n }\n } else {\n if (parts[2] !== tabNames[index]) {\n parts[2] = tabNames[index]\n navigateWithGlobalParams(parts.join('/'))\n }\n }\n }\n const tabs = useTabs({ defaultIndex, onChange: onTabChange })\n const searchCriteria = useSelector(selectSearchCriteria)\n const searchPattern = useSelector(selectSearchPattern)\n const [pattern, setSearchPattern] = useState(searchPattern)\n const debouncedPattern = useDebounce(pattern, 250)\n const [sideNavState, setSideNavState] = useState<SideNavState>(() => ({\n tags: spec?.api?.tags || {},\n typeTags: spec?.api?.typeTags || {},\n methodCount: countMethods(spec?.api?.tags || {}),\n typeCount: countTypes(spec?.api?.types || {}),\n searchResults: undefined,\n }))\n const { tags, typeTags, methodCount, typeCount, searchResults } = sideNavState\n\n const handleInputChange = (value: string) => {\n setSearchPattern(value)\n }\n\n useEffect(() => {\n const searchParams = new URLSearchParams(location.search)\n if (debouncedPattern && debouncedPattern !== searchParams.get('s')) {\n searchParams.set('s', debouncedPattern)\n navigate(location.pathname, { s: searchParams.get('s') })\n } else if (!debouncedPattern && searchParams.get('s')) {\n searchParams.delete('s')\n navigate(location.pathname, { s: null })\n }\n }, [debouncedPattern])\n // Removed location.search as dep to fix bug related to\n // browser forward / backward navigation\n\n useEffect(() => {\n let results\n let newTags\n let newTypes\n let newTypeTags\n const api = spec.api || ({} as ApiModel)\n setSearchPattern(searchPattern)\n\n if (searchPattern && api.search) {\n results = api.search(searchPattern, criteriaToSet(searchCriteria))\n newTags = results.tags\n newTypes = results.types\n newTypeTags = tagTypes(api, results.types)\n } else {\n newTags = api.tags || {}\n newTypes = api.types || {}\n newTypeTags = api.typeTags || {}\n }\n\n setSideNavState({\n tags: newTags,\n typeTags: newTypeTags,\n typeCount: countTypes(newTypes),\n methodCount: countMethods(newTags),\n searchResults: results,\n })\n }, [searchPattern, specKey, spec, searchCriteria])\n\n useEffect(() => {\n const { selectedIndex, onSelectTab } = tabs\n if (defaultIndex !== selectedIndex) {\n onSelectTab(defaultIndex)\n }\n }, [defaultIndex, tabs])\n\n const size = useWindowSize()\n const headlessOffset = headless ? 200 : 120\n const menuH = size.height - 16 * HEADER_REM - headlessOffset\n\n return (\n <nav>\n <Box2\n pl=\"large\"\n pr=\"large\"\n pb=\"large\"\n pt={headless ? 'u3' : 'large'}\n position={'relative'}\n width={'100%'}\n >\n <CopyLinkWrapper visible={!!pattern}>\n <InputSearch\n aria-label=\"Search\"\n onChange={handleInputChange}\n placeholder=\"Search\"\n value={pattern}\n isClearable\n />\n </CopyLinkWrapper>\n <SearchMessage search={searchResults} />\n </Box2>\n <TabList {...tabs} distribute>\n <Tab>Methods ({methodCount})</Tab>\n <Tab>Types ({typeCount})</Tab>\n </TabList>\n <TabPanels {...tabs} pt=\"xsmall\" height={`${menuH}px`} overflow=\"auto\">\n <TabPanel>\n <SideNavMethodTags\n tags={tags}\n specKey={specKey}\n defaultOpen={!!searchResults}\n />\n </TabPanel>\n <TabPanel>\n <SideNavTypeTags\n tags={typeTags}\n specKey={specKey}\n defaultOpen={!!searchResults}\n />\n </TabPanel>\n </TabPanels>\n </nav>\n )\n}\n"],"file":"SideNav.js"}
@@ -2,7 +2,7 @@ import React, { useEffect, useState } from 'react';
2
2
  import styled from 'styled-components';
3
3
  import { Accordion2, Heading } from '@looker/components';
4
4
  import { useSelector } from 'react-redux';
5
- import { useLocation, useRouteMatch } from 'react-router-dom';
5
+ import { useRouteMatch } from 'react-router-dom';
6
6
  import { useNavigation, highlightHTML, buildMethodPath } from '../../utils';
7
7
  import { Link } from '../Link';
8
8
  import { selectSearchPattern } from '../../state';
@@ -14,9 +14,10 @@ export var SideNavMethods = styled(_ref => {
14
14
  specKey,
15
15
  defaultOpen = false
16
16
  } = _ref;
17
- var location = useLocation();
18
- var navigate = useNavigation();
19
- var searchParams = new URLSearchParams(location.search);
17
+ var {
18
+ buildPathWithGlobalParams,
19
+ navigateWithGlobalParams
20
+ } = useNavigation();
20
21
  var searchPattern = useSelector(selectSearchPattern);
21
22
  var match = useRouteMatch("/:specKey/methods/:methodTag/:methodName?");
22
23
  var [isOpen, setIsOpen] = useState(defaultOpen);
@@ -27,9 +28,9 @@ export var SideNavMethods = styled(_ref => {
27
28
  setIsOpen(_isOpen);
28
29
 
29
30
  if (_isOpen) {
30
- navigate("/".concat(specKey, "/methods/").concat(tag));
31
+ navigateWithGlobalParams("/".concat(specKey, "/methods/").concat(tag));
31
32
  } else {
32
- navigate("/".concat(specKey, "/methods"));
33
+ navigateWithGlobalParams("/".concat(specKey, "/methods"));
33
34
  }
34
35
  };
35
36
 
@@ -49,7 +50,7 @@ export var SideNavMethods = styled(_ref => {
49
50
  }, React.createElement("ul", null, Object.values(methods).map(method => React.createElement("li", {
50
51
  key: method.name
51
52
  }, React.createElement(Link, {
52
- to: "".concat(buildMethodPath(specKey, tag, method.name, searchParams.toString()))
53
+ to: buildPathWithGlobalParams(buildMethodPath(specKey, tag, method.name))
53
54
  }, highlightHTML(searchPattern, method.summary))))));
54
55
  }).withConfig({
55
56
  displayName: "SideNavMethods",