@looker/api-explorer 0.9.21 → 0.9.26

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 (290) hide show
  1. package/CHANGELOG.md +101 -0
  2. package/lib/ApiExplorer.d.ts +4 -39
  3. package/lib/ApiExplorer.js +23 -30
  4. package/lib/ApiExplorer.js.map +1 -1
  5. package/lib/App.d.ts +1 -0
  6. package/lib/App.js +29 -0
  7. package/lib/App.js.map +1 -0
  8. package/lib/StandaloneApiExplorer.js +8 -13
  9. package/lib/StandaloneApiExplorer.js.map +1 -1
  10. package/lib/components/DocCode/DocCode.js +6 -10
  11. package/lib/components/DocCode/DocCode.js.map +1 -1
  12. package/lib/components/DocMarkdown/DocMarkdown.js +11 -15
  13. package/lib/components/DocMarkdown/DocMarkdown.js.map +1 -1
  14. package/lib/components/DocReferences/DocReferences.js +7 -11
  15. package/lib/components/DocReferences/DocReferences.js.map +1 -1
  16. package/lib/components/DocSdkUsage/DocSdkUsage.js +3 -6
  17. package/lib/components/DocSdkUsage/DocSdkUsage.js.map +1 -1
  18. package/lib/components/DocSource/DocSource.js +5 -7
  19. package/lib/components/DocSource/DocSource.js.map +1 -1
  20. package/lib/components/ErrorBoundary/components/SomethingWentWrong/components/SomethingWentWrongGraphic/SomethingWentWrongGraphic.d.ts +1 -1
  21. package/lib/components/ErrorBoundary/components/SomethingWentWrong/components/SomethingWentWrongGraphic/SomethingWentWrongGraphic.js +152 -8
  22. package/lib/components/ErrorBoundary/components/SomethingWentWrong/components/SomethingWentWrongGraphic/SomethingWentWrongGraphic.js.map +1 -1
  23. package/lib/components/SelectorContainer/SdkLanguageSelector.js +1 -1
  24. package/lib/components/SelectorContainer/SdkLanguageSelector.js.map +1 -1
  25. package/lib/components/SideNav/SideNav.js +39 -26
  26. package/lib/components/SideNav/SideNav.js.map +1 -1
  27. package/lib/components/SideNav/SideNavMethods.js +7 -9
  28. package/lib/components/SideNav/SideNavMethods.js.map +1 -1
  29. package/lib/components/SideNav/SideNavTypes.js +6 -8
  30. package/lib/components/SideNav/SideNavTypes.js.map +1 -1
  31. package/lib/components/SideNav/searchUtils.d.ts +1 -1
  32. package/lib/components/SideNav/searchUtils.js +1 -1
  33. package/lib/components/SideNav/searchUtils.js.map +1 -1
  34. package/lib/components/common/Loader.d.ts +1 -1
  35. package/lib/components/common/Loader.js.map +1 -1
  36. package/lib/esm/ApiExplorer.js +26 -33
  37. package/lib/esm/ApiExplorer.js.map +1 -1
  38. package/lib/esm/App.js +19 -0
  39. package/lib/esm/App.js.map +1 -0
  40. package/lib/esm/StandaloneApiExplorer.js +7 -10
  41. package/lib/esm/StandaloneApiExplorer.js.map +1 -1
  42. package/lib/esm/components/DocCode/DocCode.js +5 -8
  43. package/lib/esm/components/DocCode/DocCode.js.map +1 -1
  44. package/lib/esm/components/DocMarkdown/DocMarkdown.js +8 -11
  45. package/lib/esm/components/DocMarkdown/DocMarkdown.js.map +1 -1
  46. package/lib/esm/components/DocReferences/DocReferences.js +5 -8
  47. package/lib/esm/components/DocReferences/DocReferences.js.map +1 -1
  48. package/lib/esm/components/DocSdkUsage/DocSdkUsage.js +5 -7
  49. package/lib/esm/components/DocSdkUsage/DocSdkUsage.js.map +1 -1
  50. package/lib/esm/components/DocSource/DocSource.js +4 -5
  51. package/lib/esm/components/DocSource/DocSource.js.map +1 -1
  52. package/lib/esm/components/ErrorBoundary/components/SomethingWentWrong/components/SomethingWentWrongGraphic/SomethingWentWrongGraphic.js +153 -6
  53. package/lib/esm/components/ErrorBoundary/components/SomethingWentWrong/components/SomethingWentWrongGraphic/SomethingWentWrongGraphic.js.map +1 -1
  54. package/lib/esm/components/SelectorContainer/SdkLanguageSelector.js +2 -2
  55. package/lib/esm/components/SelectorContainer/SdkLanguageSelector.js.map +1 -1
  56. package/lib/esm/components/SideNav/SideNav.js +40 -27
  57. package/lib/esm/components/SideNav/SideNav.js.map +1 -1
  58. package/lib/esm/components/SideNav/SideNavMethods.js +7 -10
  59. package/lib/esm/components/SideNav/SideNavMethods.js.map +1 -1
  60. package/lib/esm/components/SideNav/SideNavTypes.js +6 -9
  61. package/lib/esm/components/SideNav/SideNavTypes.js.map +1 -1
  62. package/lib/esm/components/SideNav/searchUtils.js +1 -1
  63. package/lib/esm/components/SideNav/searchUtils.js.map +1 -1
  64. package/lib/esm/components/common/Loader.js.map +1 -1
  65. package/lib/esm/index.js +4 -18
  66. package/lib/esm/index.js.map +1 -1
  67. package/lib/esm/reducers/index.js +0 -1
  68. package/lib/esm/reducers/index.js.map +1 -1
  69. package/lib/esm/routes/AppRouter.js +2 -2
  70. package/lib/esm/routes/AppRouter.js.map +1 -1
  71. package/lib/esm/scenes/MethodScene/MethodScene.js +9 -11
  72. package/lib/esm/scenes/MethodScene/MethodScene.js.map +1 -1
  73. package/lib/esm/state/index.js +1 -0
  74. package/lib/esm/state/index.js.map +1 -1
  75. package/lib/esm/state/lodes/index.js +3 -0
  76. package/lib/{test-utils/envAdaptor.js.map → esm/state/lodes/index.js.map} +1 -1
  77. package/lib/esm/state/lodes/sagas.js +25 -0
  78. package/lib/esm/state/lodes/sagas.js.map +1 -0
  79. package/lib/esm/state/lodes/selectors.js +5 -0
  80. package/lib/esm/state/lodes/selectors.js.map +1 -0
  81. package/lib/esm/state/lodes/slice.js +30 -0
  82. package/lib/esm/state/lodes/slice.js.map +1 -0
  83. package/lib/esm/state/settings/sagas.js +28 -16
  84. package/lib/esm/state/settings/sagas.js.map +1 -1
  85. package/lib/esm/state/settings/selectors.js +5 -3
  86. package/lib/esm/state/settings/selectors.js.map +1 -1
  87. package/lib/esm/state/settings/slice.js +16 -9
  88. package/lib/esm/state/settings/slice.js.map +1 -1
  89. package/lib/esm/state/store.js +6 -3
  90. package/lib/esm/state/store.js.map +1 -1
  91. package/lib/esm/test-utils/index.js +2 -4
  92. package/lib/esm/test-utils/index.js.map +1 -1
  93. package/lib/esm/test-utils/lodes.js +12 -0
  94. package/lib/esm/test-utils/lodes.js.map +1 -0
  95. package/lib/esm/test-utils/redux.js +12 -9
  96. package/lib/esm/test-utils/redux.js.map +1 -1
  97. package/lib/esm/utils/index.js +0 -1
  98. package/lib/esm/utils/index.js.map +1 -1
  99. package/lib/esm/utils/lodeUtils.js +3 -7
  100. package/lib/esm/utils/lodeUtils.js.map +1 -1
  101. package/lib/index.d.ts +4 -1
  102. package/lib/index.js +52 -23
  103. package/lib/index.js.map +1 -1
  104. package/lib/reducers/index.d.ts +0 -1
  105. package/lib/reducers/index.js +0 -13
  106. package/lib/reducers/index.js.map +1 -1
  107. package/lib/routes/AppRouter.d.ts +2 -2
  108. package/lib/routes/AppRouter.js +2 -2
  109. package/lib/routes/AppRouter.js.map +1 -1
  110. package/lib/scenes/MethodScene/MethodScene.d.ts +2 -2
  111. package/lib/scenes/MethodScene/MethodScene.js +7 -9
  112. package/lib/scenes/MethodScene/MethodScene.js.map +1 -1
  113. package/lib/state/index.d.ts +1 -0
  114. package/lib/state/index.js +13 -0
  115. package/lib/state/index.js.map +1 -1
  116. package/lib/state/lodes/index.d.ts +2 -0
  117. package/lib/{reducers/search → state/lodes}/index.js +8 -8
  118. package/lib/state/lodes/index.js.map +1 -0
  119. package/lib/state/lodes/sagas.d.ts +1 -0
  120. package/lib/state/lodes/sagas.js +34 -0
  121. package/lib/state/lodes/sagas.js.map +1 -0
  122. package/lib/state/lodes/selectors.d.ts +3 -0
  123. package/lib/state/lodes/selectors.js +17 -0
  124. package/lib/state/lodes/selectors.js.map +1 -0
  125. package/lib/state/lodes/slice.d.ts +29 -0
  126. package/lib/state/lodes/slice.js +45 -0
  127. package/lib/state/lodes/slice.js.map +1 -0
  128. package/lib/state/settings/sagas.js +28 -15
  129. package/lib/state/settings/sagas.js.map +1 -1
  130. package/lib/state/settings/selectors.d.ts +2 -0
  131. package/lib/state/settings/selectors.js +12 -4
  132. package/lib/state/settings/selectors.js.map +1 -1
  133. package/lib/state/settings/slice.d.ts +24 -16
  134. package/lib/state/settings/slice.js +22 -14
  135. package/lib/state/settings/slice.js.map +1 -1
  136. package/lib/state/store.d.ts +3 -0
  137. package/lib/state/store.js +6 -2
  138. package/lib/state/store.js.map +1 -1
  139. package/lib/test-data/declarations.js +24 -0
  140. package/lib/test-data/declarations.js.map +1 -0
  141. package/lib/test-data/index.js +23 -0
  142. package/lib/test-data/index.js.map +1 -1
  143. package/lib/test-utils/index.d.ts +2 -4
  144. package/lib/test-utils/index.js +22 -56
  145. package/lib/test-utils/index.js.map +1 -1
  146. package/lib/test-utils/lodes.d.ts +4 -0
  147. package/lib/test-utils/lodes.js +23 -0
  148. package/lib/test-utils/lodes.js.map +1 -0
  149. package/lib/test-utils/redux.d.ts +9 -3
  150. package/lib/test-utils/redux.js +14 -10
  151. package/lib/test-utils/redux.js.map +1 -1
  152. package/lib/utils/index.d.ts +0 -1
  153. package/lib/utils/index.js +0 -24
  154. package/lib/utils/index.js.map +1 -1
  155. package/lib/utils/lodeUtils.d.ts +2 -2
  156. package/lib/utils/lodeUtils.js +3 -7
  157. package/lib/utils/lodeUtils.js.map +1 -1
  158. package/package.json +11 -10
  159. package/public/Looker.3.1.json +1343 -412
  160. package/public/Looker.4.0.json +3305 -661
  161. package/src/ApiExplorer.tsx +100 -119
  162. package/src/{index.tsx → App.tsx} +0 -0
  163. package/src/StandaloneApiExplorer.tsx +8 -16
  164. package/src/components/DocCode/DocCode.tsx +6 -6
  165. package/src/components/DocMarkdown/DocMarkdown.spec.tsx +16 -11
  166. package/src/components/DocMarkdown/DocMarkdown.tsx +8 -10
  167. package/src/components/DocReferences/DocReferences.spec.tsx +11 -4
  168. package/src/components/DocReferences/DocReferences.tsx +8 -9
  169. package/src/components/DocSdkUsage/DocSdkUsage.spec.tsx +2 -2
  170. package/src/components/DocSdkUsage/DocSdkUsage.tsx +5 -5
  171. package/src/components/DocSource/DocSource.tsx +4 -3
  172. package/src/components/ErrorBoundary/components/SomethingWentWrong/SomethingWentWrong.spec.tsx +1 -1
  173. package/src/components/ErrorBoundary/components/SomethingWentWrong/components/SomethingWentWrongGraphic/SomethingWentWrongGraphic.tsx +170 -6
  174. package/src/components/ExploreType/ExploreProperty.spec.tsx +7 -12
  175. package/src/components/ExploreType/ExploreType.spec.tsx +9 -27
  176. package/src/components/Header/Header.spec.tsx +30 -38
  177. package/src/components/SelectorContainer/ApiSpecSelector.spec.tsx +2 -2
  178. package/src/components/SelectorContainer/SdkLanguageSelector.spec.tsx +3 -5
  179. package/src/components/SelectorContainer/SdkLanguageSelector.tsx +2 -2
  180. package/src/components/SelectorContainer/SelectorContainer.spec.tsx +20 -26
  181. package/src/components/SideNav/SideNav.spec.tsx +24 -29
  182. package/src/components/SideNav/SideNav.tsx +45 -24
  183. package/src/components/SideNav/SideNavMethodTags.spec.tsx +8 -6
  184. package/src/components/SideNav/SideNavMethods.spec.tsx +9 -5
  185. package/src/components/SideNav/SideNavMethods.tsx +8 -8
  186. package/src/components/SideNav/SideNavTypeTags.spec.tsx +8 -6
  187. package/src/components/SideNav/SideNavTypes.spec.tsx +9 -4
  188. package/src/components/SideNav/SideNavTypes.tsx +7 -7
  189. package/src/components/SideNav/{searchUtils.tsx → searchUtils.ts} +2 -2
  190. package/src/components/common/Loader.tsx +1 -1
  191. package/src/{context/lode/index.ts → index.ts} +4 -1
  192. package/src/reducers/index.ts +0 -1
  193. package/src/routes/AppRouter.tsx +5 -4
  194. package/src/scenes/MethodScene/MethodScene.tsx +11 -11
  195. package/src/scenes/TypeTagScene/TypeTagScene.spec.tsx +4 -4
  196. package/src/state/index.ts +1 -0
  197. package/src/{reducers/search → state/lodes}/index.ts +2 -2
  198. package/src/state/lodes/sagas.spec.ts +92 -0
  199. package/src/state/lodes/sagas.ts +51 -0
  200. package/src/{context/search/SearchContext.ts → state/lodes/selectors.spec.ts} +13 -15
  201. package/src/{test-utils/envAdaptor.ts → state/lodes/selectors.ts} +8 -5
  202. package/src/{test-utils/render_with_lode.tsx → state/lodes/slice.ts} +37 -37
  203. package/src/state/settings/sagas.spec.ts +29 -24
  204. package/src/state/settings/sagas.ts +16 -16
  205. package/src/state/settings/selectors.spec.ts +1 -5
  206. package/src/state/settings/selectors.ts +9 -3
  207. package/src/state/settings/slice.ts +27 -10
  208. package/src/state/store.ts +7 -2
  209. package/src/{reducers/search/actions.ts → test-data/declarations.ts} +16 -15
  210. package/src/test-data/index.ts +1 -0
  211. package/src/test-utils/index.ts +2 -10
  212. package/src/{context/lode/LodeContext.ts → test-utils/lodes.tsx} +14 -13
  213. package/src/test-utils/redux.tsx +29 -10
  214. package/src/utils/index.ts +0 -1
  215. package/src/utils/lodeUtils.ts +4 -6
  216. package/webpack.dev.config.js +3 -0
  217. package/webpack.prod.config.js +4 -0
  218. package/lib/components/SideNav/SearchCriteriaSelector.d.ts +0 -2
  219. package/lib/components/SideNav/SearchCriteriaSelector.js +0 -57
  220. package/lib/components/SideNav/SearchCriteriaSelector.js.map +0 -1
  221. package/lib/context/index.d.ts +0 -2
  222. package/lib/context/index.js +0 -34
  223. package/lib/context/index.js.map +0 -1
  224. package/lib/context/lode/LodeContext.d.ts +0 -9
  225. package/lib/context/lode/LodeContext.js +0 -21
  226. package/lib/context/lode/LodeContext.js.map +0 -1
  227. package/lib/context/lode/index.d.ts +0 -1
  228. package/lib/context/lode/index.js +0 -20
  229. package/lib/context/lode/index.js.map +0 -1
  230. package/lib/context/search/SearchContext.d.ts +0 -9
  231. package/lib/context/search/SearchContext.js +0 -19
  232. package/lib/context/search/SearchContext.js.map +0 -1
  233. package/lib/context/search/index.d.ts +0 -1
  234. package/lib/context/search/index.js +0 -20
  235. package/lib/context/search/index.js.map +0 -1
  236. package/lib/esm/components/SideNav/SearchCriteriaSelector.js +0 -38
  237. package/lib/esm/components/SideNav/SearchCriteriaSelector.js.map +0 -1
  238. package/lib/esm/context/index.js +0 -3
  239. package/lib/esm/context/index.js.map +0 -1
  240. package/lib/esm/context/lode/LodeContext.js +0 -11
  241. package/lib/esm/context/lode/LodeContext.js.map +0 -1
  242. package/lib/esm/context/lode/index.js +0 -2
  243. package/lib/esm/context/lode/index.js.map +0 -1
  244. package/lib/esm/context/search/SearchContext.js +0 -8
  245. package/lib/esm/context/search/SearchContext.js.map +0 -1
  246. package/lib/esm/context/search/index.js +0 -2
  247. package/lib/esm/context/search/index.js.map +0 -1
  248. package/lib/esm/reducers/search/actions.js +0 -13
  249. package/lib/esm/reducers/search/actions.js.map +0 -1
  250. package/lib/esm/reducers/search/index.js +0 -3
  251. package/lib/esm/reducers/search/index.js.map +0 -1
  252. package/lib/esm/reducers/search/reducer.js +0 -31
  253. package/lib/esm/reducers/search/reducer.js.map +0 -1
  254. package/lib/esm/test-utils/envAdaptor.js +0 -5
  255. package/lib/esm/test-utils/envAdaptor.js.map +0 -1
  256. package/lib/esm/test-utils/render_with_lode.js +0 -19
  257. package/lib/esm/test-utils/render_with_lode.js.map +0 -1
  258. package/lib/esm/test-utils/render_with_search.js +0 -34
  259. package/lib/esm/test-utils/render_with_search.js.map +0 -1
  260. package/lib/esm/utils/envAdaptor.js +0 -84
  261. package/lib/esm/utils/envAdaptor.js.map +0 -1
  262. package/lib/reducers/search/actions.d.ts +0 -4
  263. package/lib/reducers/search/actions.js +0 -25
  264. package/lib/reducers/search/actions.js.map +0 -1
  265. package/lib/reducers/search/index.d.ts +0 -2
  266. package/lib/reducers/search/index.js.map +0 -1
  267. package/lib/reducers/search/reducer.d.ts +0 -11
  268. package/lib/reducers/search/reducer.js +0 -43
  269. package/lib/reducers/search/reducer.js.map +0 -1
  270. package/lib/test-utils/envAdaptor.d.ts +0 -2
  271. package/lib/test-utils/envAdaptor.js +0 -15
  272. package/lib/test-utils/render_with_lode.d.ts +0 -7
  273. package/lib/test-utils/render_with_lode.js +0 -36
  274. package/lib/test-utils/render_with_lode.js.map +0 -1
  275. package/lib/test-utils/render_with_search.d.ts +0 -4
  276. package/lib/test-utils/render_with_search.js +0 -52
  277. package/lib/test-utils/render_with_search.js.map +0 -1
  278. package/lib/utils/envAdaptor.d.ts +0 -31
  279. package/lib/utils/envAdaptor.js +0 -106
  280. package/lib/utils/envAdaptor.js.map +0 -1
  281. package/src/components/ErrorBoundary/components/SomethingWentWrong/components/SomethingWentWrongGraphic/somethingWentWrong.svg +0 -45
  282. package/src/components/SideNav/SearchCriteriaSelector.tsx +0 -76
  283. package/src/context/index.ts +0 -27
  284. package/src/context/search/index.ts +0 -26
  285. package/src/reducers/search/actions.spec.ts +0 -50
  286. package/src/reducers/search/reducer.spec.ts +0 -69
  287. package/src/reducers/search/reducer.ts +0 -63
  288. package/src/test-utils/render_with_search.tsx +0 -71
  289. package/src/utils/envAdaptor.spec.ts +0 -50
  290. package/src/utils/envAdaptor.ts +0 -147
@@ -44,14 +44,12 @@ import { funFetch, fallbackFetch, OAuthScene } from '@looker/run-it'
44
44
  import { FirstPage } from '@styled-icons/material/FirstPage'
45
45
  import { LastPage } from '@styled-icons/material/LastPage'
46
46
 
47
- import { SearchContext, LodeContext, defaultLodeContextValue } from './context'
48
- import type { IApixEnvAdaptor } from './utils'
47
+ import type { IEnvironmentAdaptor } from '@looker/extension-utils'
49
48
  import {
50
- getLoded,
51
- oAuthPath,
52
49
  registerEnvAdaptor,
53
50
  unregisterEnvAdaptor,
54
- } from './utils'
51
+ } from '@looker/extension-utils'
52
+ import { oAuthPath } from './utils'
55
53
  import {
56
54
  Header,
57
55
  SideNav,
@@ -60,38 +58,39 @@ import {
60
58
  SelectorContainer,
61
59
  HEADER_TOGGLE_LABEL,
62
60
  } from './components'
63
- import {
64
- specReducer,
65
- initDefaultSpecState,
66
- searchReducer,
67
- defaultSearchState,
68
- updateSpecApi,
69
- } from './reducers'
61
+ import { specReducer, initDefaultSpecState, updateSpecApi } from './reducers'
70
62
  import { AppRouter } from './routes'
71
63
  import { apixFilesHost } from './utils/lodeUtils'
72
- import { useActions, useSettingsStoreState } from './state'
64
+ import {
65
+ useSettingActions,
66
+ useSettingStoreState,
67
+ useLodeActions,
68
+ useLodesStoreState,
69
+ } from './state'
73
70
 
74
71
  export interface ApiExplorerProps {
75
72
  specs: SpecList
76
- envAdaptor: IApixEnvAdaptor
73
+ adaptor: IEnvironmentAdaptor
77
74
  setVersionsUrl: RunItSetter
78
- exampleLodeUrl?: string
75
+ examplesLodeUrl?: string
79
76
  declarationsLodeUrl?: string
80
77
  headless?: boolean
81
78
  }
82
79
 
83
- export const BodyOverride = createGlobalStyle` html { height: 100%; overflow: hidden; } `
80
+ const BodyOverride = createGlobalStyle` html { height: 100%; overflow: hidden; } `
84
81
 
85
- const ApiExplorer: FC<ApiExplorerProps> = ({
82
+ export const ApiExplorer: FC<ApiExplorerProps> = ({
86
83
  specs,
87
- envAdaptor,
84
+ adaptor,
88
85
  setVersionsUrl,
89
- exampleLodeUrl = 'https://raw.githubusercontent.com/looker-open-source/sdk-codegen/main/examplesIndex.json',
86
+ examplesLodeUrl = 'https://raw.githubusercontent.com/looker-open-source/sdk-codegen/main/examplesIndex.json',
90
87
  declarationsLodeUrl = `${apixFilesHost}/declarationsIndex.json`,
91
88
  headless = false,
92
89
  }) => {
93
- const { initialized } = useSettingsStoreState()
94
- const { initAction } = useActions()
90
+ const { initialized } = useSettingStoreState()
91
+ useLodesStoreState()
92
+ const { initLodesAction } = useLodeActions()
93
+ const { initSettingsAction } = useSettingActions()
95
94
  const location = useLocation()
96
95
  const oauthReturn = location.pathname === `/${oAuthPath}`
97
96
  const [specState, specDispatch] = useReducer(
@@ -99,12 +98,6 @@ const ApiExplorer: FC<ApiExplorerProps> = ({
99
98
  initDefaultSpecState(specs, location)
100
99
  )
101
100
  const { spec } = specState
102
- const [searchSettings, setSearchSettings] = useReducer(
103
- searchReducer,
104
- defaultSearchState
105
- )
106
-
107
- const [lode, setLode] = useState(defaultLodeContextValue)
108
101
 
109
102
  const [hasNavigation, setHasNavigation] = useState(true)
110
103
  const toggleNavigation = (target?: boolean) =>
@@ -117,8 +110,9 @@ const ApiExplorer: FC<ApiExplorerProps> = ({
117
110
  }, [])
118
111
 
119
112
  useEffect(() => {
120
- registerEnvAdaptor(envAdaptor)
121
- initAction()
113
+ registerEnvAdaptor(adaptor)
114
+ initSettingsAction()
115
+ initLodesAction({ examplesLodeUrl, declarationsLodeUrl })
122
116
 
123
117
  return () => unregisterEnvAdaptor()
124
118
  }, [])
@@ -154,11 +148,7 @@ const ApiExplorer: FC<ApiExplorerProps> = ({
154
148
  }
155
149
  }, [spec, location])
156
150
 
157
- useEffect(() => {
158
- getLoded(exampleLodeUrl, declarationsLodeUrl).then((resp) => setLode(resp))
159
- }, [exampleLodeUrl, declarationsLodeUrl])
160
-
161
- const themeOverrides = envAdaptor.themeOverrides()
151
+ const themeOverrides = adaptor.themeOverrides()
162
152
 
163
153
  return (
164
154
  <>
@@ -169,94 +159,86 @@ const ApiExplorer: FC<ApiExplorerProps> = ({
169
159
  {!initialized ? (
170
160
  <Loader message="Initializing" themeOverrides={themeOverrides} />
171
161
  ) : (
172
- <ErrorBoundary logError={envAdaptor.logError.bind(envAdaptor)}>
173
- <LodeContext.Provider value={{ ...lode }}>
174
- <SearchContext.Provider
175
- value={{ searchSettings, setSearchSettings }}
176
- >
177
- <Page style={{ overflow: 'hidden' }}>
178
- {!headless && (
179
- <Header
162
+ <ErrorBoundary logError={adaptor.logError.bind(adaptor)}>
163
+ <Page style={{ overflow: 'hidden' }}>
164
+ {!headless && (
165
+ <Header
166
+ specs={specs}
167
+ spec={spec}
168
+ specDispatch={specDispatch}
169
+ toggleNavigation={toggleNavigation}
170
+ />
171
+ )}
172
+ <Layout hasAside height="100%">
173
+ <AsideBorder
174
+ borderRight
175
+ isOpen={hasNavigation}
176
+ headless={headless}
177
+ >
178
+ {headless && (
179
+ <>
180
+ <Space
181
+ alignItems="center"
182
+ py="u3"
183
+ px={hasNavigation ? 'u5' : '0'}
184
+ justifyContent={
185
+ hasNavigation ? 'space-between' : 'center'
186
+ }
187
+ >
188
+ {hasNavigation && (
189
+ <Heading
190
+ as="h2"
191
+ fontSize="xsmall"
192
+ fontWeight="bold"
193
+ color="text2"
194
+ >
195
+ API DOCUMENTATION
196
+ </Heading>
197
+ )}
198
+ <IconButton
199
+ size="xsmall"
200
+ shape="round"
201
+ icon={hasNavigation ? <FirstPage /> : <LastPage />}
202
+ label={HEADER_TOGGLE_LABEL}
203
+ onClick={() => toggleNavigation()}
204
+ />
205
+ </Space>
206
+ {hasNavigation && (
207
+ <>
208
+ <Divider mb="u3" appearance="light" />
209
+ <SelectorContainer
210
+ ml="large"
211
+ mr="large"
212
+ specs={specs}
213
+ spec={spec}
214
+ specDispatch={specDispatch}
215
+ />
216
+ </>
217
+ )}
218
+ </>
219
+ )}
220
+ {hasNavigation && (
221
+ <SideNav
222
+ headless={headless}
180
223
  specs={specs}
181
224
  spec={spec}
182
225
  specDispatch={specDispatch}
183
- toggleNavigation={toggleNavigation}
184
226
  />
185
227
  )}
186
- <Layout hasAside height="100%">
187
- <AsideBorder
188
- borderRight
189
- isOpen={hasNavigation}
190
- headless={headless}
191
- >
192
- {headless && (
193
- <>
194
- <Space
195
- alignItems="center"
196
- py="u3"
197
- px={hasNavigation ? 'u5' : '0'}
198
- justifyContent={
199
- hasNavigation ? 'space-between' : 'center'
200
- }
201
- >
202
- {hasNavigation && (
203
- <Heading
204
- as="h2"
205
- fontSize="xsmall"
206
- fontWeight="bold"
207
- color="text2"
208
- >
209
- API DOCUMENTATION
210
- </Heading>
211
- )}
212
- <IconButton
213
- size="xsmall"
214
- shape="round"
215
- icon={
216
- hasNavigation ? <FirstPage /> : <LastPage />
217
- }
218
- label={HEADER_TOGGLE_LABEL}
219
- onClick={() => toggleNavigation()}
220
- />
221
- </Space>
222
- {hasNavigation && (
223
- <>
224
- <Divider mb="u3" appearance="light" />
225
- <SelectorContainer
226
- ml="large"
227
- mr="large"
228
- specs={specs}
229
- spec={spec}
230
- specDispatch={specDispatch}
231
- />
232
- </>
233
- )}
234
- </>
235
- )}
236
- {hasNavigation && (
237
- <SideNav
238
- headless={headless}
239
- specs={specs}
240
- spec={spec}
241
- specDispatch={specDispatch}
242
- />
243
- )}
244
- </AsideBorder>
245
- {oauthReturn && <OAuthScene />}
246
- {!oauthReturn && spec.api && (
247
- <AppRouter
248
- api={spec.api}
249
- specKey={spec.key}
250
- specs={specs}
251
- toggleNavigation={toggleNavigation}
252
- envAdaptor={envAdaptor}
253
- setVersionsUrl={setVersionsUrl}
254
- />
255
- )}
256
- </Layout>
257
- </Page>
258
- </SearchContext.Provider>
259
- </LodeContext.Provider>
228
+ </AsideBorder>
229
+ {oauthReturn && <OAuthScene />}
230
+ {!oauthReturn && spec.api && (
231
+ <AppRouter
232
+ api={spec.api}
233
+ specKey={spec.key}
234
+ specs={specs}
235
+ toggleNavigation={toggleNavigation}
236
+ adaptor={adaptor}
237
+ setVersionsUrl={setVersionsUrl}
238
+ />
239
+ )}
240
+ </Layout>
241
+ </Page>
260
242
  </ErrorBoundary>
261
243
  )}
262
244
  </ComponentsProvider>
@@ -265,11 +247,10 @@ const ApiExplorer: FC<ApiExplorerProps> = ({
265
247
  )
266
248
  }
267
249
 
268
- export const AsideBorder = styled(Aside)<{
250
+ const AsideBorder = styled(Aside)<{
269
251
  isOpen: boolean
270
252
  headless: boolean
271
253
  }>`
272
254
  width: ${({ isOpen, headless }) =>
273
255
  isOpen ? '20rem' : headless ? '2.75rem' : '0rem'};
274
256
  `
275
- export default ApiExplorer
File without changes
@@ -28,19 +28,17 @@ import type { FC } from 'react'
28
28
  import React, { useEffect, useState } from 'react'
29
29
  import {
30
30
  RunItProvider,
31
- defaultConfigurator,
32
- initRunItSdk,
33
31
  loadSpecsFromVersions,
34
32
  RunItConfigKey,
35
33
  RunItNoConfig,
34
+ initRunItSdk,
36
35
  } from '@looker/run-it'
37
- import type { IAPIMethods } from '@looker/sdk-rtl'
38
36
  import type { SpecList } from '@looker/sdk-codegen'
39
37
  import { Provider } from 'react-redux'
38
+ import { BrowserAdaptor } from '@looker/extension-utils'
40
39
 
41
- import ApiExplorer from './ApiExplorer'
40
+ import { ApiExplorer } from './ApiExplorer'
42
41
  import { store } from './state'
43
- import { StandaloneEnvAdaptor } from './utils'
44
42
  import { Loader } from './components'
45
43
 
46
44
  export interface StandaloneApiExplorerProps {
@@ -48,10 +46,10 @@ export interface StandaloneApiExplorerProps {
48
46
  versionsUrl: string
49
47
  }
50
48
 
51
- const standaloneEnvAdaptor = new StandaloneEnvAdaptor()
49
+ const browserAdaptor = new BrowserAdaptor(initRunItSdk())
52
50
 
53
51
  const loadVersions = async (current: string) => {
54
- const data = await standaloneEnvAdaptor.localStorageGetItem(RunItConfigKey)
52
+ const data = await browserAdaptor.localStorageGetItem(RunItConfigKey)
55
53
  const config = data ? JSON.parse(data) : RunItNoConfig
56
54
  let url = config.base_url ? `${config.base_url}/versions` : current
57
55
  let response = await loadSpecsFromVersions(url)
@@ -86,25 +84,19 @@ export const StandaloneApiExplorer: FC<StandaloneApiExplorerProps> = ({
86
84
  }
87
85
  }, [versionsUrl, currentVersionsUrl])
88
86
 
89
- const chosenSdk: IAPIMethods = initRunItSdk(defaultConfigurator)
90
-
91
87
  return (
92
88
  <Provider store={store}>
93
- <RunItProvider
94
- sdk={chosenSdk}
95
- configurator={defaultConfigurator}
96
- basePath="/api/4.0"
97
- >
89
+ <RunItProvider basePath="/api/4.0">
98
90
  <>
99
91
  {specs ? (
100
92
  <ApiExplorer
101
93
  specs={specs}
102
- envAdaptor={standaloneEnvAdaptor}
94
+ adaptor={browserAdaptor}
103
95
  headless={headless}
104
96
  setVersionsUrl={setCurrentVersionsUrl}
105
97
  />
106
98
  ) : (
107
- <Loader themeOverrides={standaloneEnvAdaptor.themeOverrides()} />
99
+ <Loader themeOverrides={browserAdaptor.themeOverrides()} />
108
100
  )}
109
101
  </>
110
102
  </RunItProvider>
@@ -25,10 +25,12 @@
25
25
  */
26
26
 
27
27
  import type { FC } from 'react'
28
- import React, { useContext } from 'react'
28
+ import React from 'react'
29
29
  import { findGenerator } from '@looker/sdk-codegen'
30
30
  import { CodeDisplay } from '@looker/code-editor'
31
- import { SearchContext } from '../../context/search'
31
+ import { useSelector } from 'react-redux'
32
+
33
+ import { selectSearchPattern } from '../../state'
32
34
 
33
35
  interface DocCodeProps {
34
36
  code: string
@@ -36,11 +38,9 @@ interface DocCodeProps {
36
38
  }
37
39
 
38
40
  export const DocCode: FC<DocCodeProps> = ({ code, language = 'json' }) => {
41
+ const searchPattern = useSelector(selectSearchPattern)
39
42
  const gen = findGenerator(language)
40
43
  if (gen) language = gen.language.toLocaleLowerCase()
41
- const {
42
- searchSettings: { pattern },
43
- } = useContext(SearchContext)
44
44
 
45
- return <CodeDisplay language={language} code={code} pattern={pattern} />
45
+ return <CodeDisplay language={language} code={code} pattern={searchPattern} />
46
46
  }
@@ -26,14 +26,13 @@
26
26
 
27
27
  import React from 'react'
28
28
  import { screen } from '@testing-library/react'
29
- import { renderWithTheme } from '@looker/components-test-utils'
29
+ import { createTestStore, renderWithReduxProvider } from '../../test-utils'
30
30
 
31
- import { renderWithSearch } from '../../test-utils'
32
31
  import { DocMarkdown } from './DocMarkdown'
33
32
 
34
33
  describe('DocMarkdown', () => {
35
34
  test('it renders markdown', () => {
36
- renderWithSearch(
35
+ renderWithReduxProvider(
37
36
  <DocMarkdown
38
37
  source={
39
38
  '# Markdown Component \n Renders markdown using [ReactMarkdown](https://github.com/rexxars/react-markdown)'
@@ -54,7 +53,7 @@ describe('DocMarkdown', () => {
54
53
  test('it remaps hashbang urls found in markdown input', () => {
55
54
  const input =
56
55
  'A link to the [create_dashboard](#!/Dashboard/create_dashboard) endpoint'
57
- renderWithTheme(<DocMarkdown source={input} specKey={'3.1'} />)
56
+ renderWithReduxProvider(<DocMarkdown source={input} specKey={'3.1'} />)
58
57
  expect(screen.getByText(/A link to the/)).toBeInTheDocument()
59
58
  expect(screen.getByText('create_dashboard')).toHaveAttribute(
60
59
  'href',
@@ -63,7 +62,7 @@ describe('DocMarkdown', () => {
63
62
  })
64
63
 
65
64
  test('it leaves external urls untouched', () => {
66
- renderWithSearch(
65
+ renderWithReduxProvider(
67
66
  <DocMarkdown
68
67
  source={'[external_link](https://www.foo.com)'}
69
68
  specKey={'3.1'}
@@ -77,12 +76,15 @@ describe('DocMarkdown', () => {
77
76
 
78
77
  test('it highlights text matching search pattern', () => {
79
78
  const highlightPattern = 'spec'
80
- renderWithSearch(
79
+ const store = createTestStore({
80
+ settings: { searchPattern: highlightPattern },
81
+ })
82
+ renderWithReduxProvider(
81
83
  <DocMarkdown
82
84
  source={'An API Explorer to explore your OpenAPI spec'}
83
85
  specKey={'3.1'}
84
86
  />,
85
- highlightPattern
87
+ store
86
88
  )
87
89
  const mark = screen.getByText(highlightPattern)
88
90
  expect(mark.tagName).toEqual('MARK')
@@ -90,14 +92,17 @@ describe('DocMarkdown', () => {
90
92
 
91
93
  test('it only highlights search matches in the display text of link', () => {
92
94
  const highlightPattern = 'dashboard'
93
- renderWithSearch(
95
+ const store = createTestStore({
96
+ settings: { searchPattern: highlightPattern },
97
+ })
98
+ renderWithReduxProvider(
94
99
  <DocMarkdown
95
100
  source={
96
101
  'An inline styled link with matching text in both the link text and the href: [create_dashboard](/3.1/methods/Dashboard/create_dashboard)'
97
102
  }
98
103
  specKey={'3.1'}
99
104
  />,
100
- highlightPattern
105
+ store
101
106
  )
102
107
  const link = screen.getByRole('link')
103
108
  expect(link).toHaveAttribute(
@@ -110,7 +115,7 @@ describe('DocMarkdown', () => {
110
115
  test('it renders code blocks', () => {
111
116
  const code =
112
117
  '```\nAuthorization: token 4QDkCyCtZzYgj4C2p2cj3csJH7zqS5RzKs2kTnG4\n```'
113
- renderWithTheme(<DocMarkdown source={code} specKey={'3.1'} />)
118
+ renderWithReduxProvider(<DocMarkdown source={code} specKey={'3.1'} />)
114
119
  expect(
115
120
  screen.getByText(
116
121
  'Authorization: token 4QDkCyCtZzYgj4C2p2cj3csJH7zqS5RzKs2kTnG4'
@@ -120,7 +125,7 @@ describe('DocMarkdown', () => {
120
125
 
121
126
  test('it renders inline code', () => {
122
127
  const markdown = 'Some text with code: `const noop = () => null`'
123
- renderWithTheme(<DocMarkdown source={markdown} specKey={'3.1'} />)
128
+ renderWithReduxProvider(<DocMarkdown source={markdown} specKey={'3.1'} />)
124
129
  expect(screen.getByText('const noop = () => null')).toBeInTheDocument()
125
130
  })
126
131
  })
@@ -25,11 +25,12 @@
25
25
  */
26
26
 
27
27
  import type { FC } from 'react'
28
- import React, { useContext } from 'react'
28
+ import React from 'react'
29
29
  import { useHistory } from 'react-router-dom'
30
30
  import { Markdown } from '@looker/code-editor'
31
- import { SearchContext } from '../../context'
32
- import { getEnvAdaptor } from '../../utils'
31
+ import { useSelector } from 'react-redux'
32
+ import { getEnvAdaptor } from '@looker/extension-utils'
33
+ import { selectSearchPattern } from '../../state'
33
34
  import { transformURL } from './utils'
34
35
 
35
36
  interface DocMarkdownProps {
@@ -38,10 +39,7 @@ interface DocMarkdownProps {
38
39
  }
39
40
 
40
41
  export const DocMarkdown: FC<DocMarkdownProps> = ({ source, specKey }) => {
41
- const {
42
- searchSettings: { pattern },
43
- } = useContext(SearchContext)
44
-
42
+ const searchPattern = useSelector(selectSearchPattern)
45
43
  const history = useHistory()
46
44
 
47
45
  const linkClickHandler = (pathname: string, url: string) => {
@@ -50,14 +48,14 @@ export const DocMarkdown: FC<DocMarkdownProps> = ({ source, specKey }) => {
50
48
  } else if (url.startsWith(`/${specKey}`)) {
51
49
  history.push(url)
52
50
  } else if (url.startsWith('https://')) {
53
- const envAdaptor = getEnvAdaptor()
54
- envAdaptor.openBrowserWindow(url)
51
+ const adaptor = getEnvAdaptor()
52
+ adaptor.openBrowserWindow(url)
55
53
  }
56
54
  }
57
55
  return (
58
56
  <Markdown
59
57
  source={source}
60
- pattern={pattern}
58
+ pattern={searchPattern}
61
59
  linkClickHandler={linkClickHandler}
62
60
  transformLinkUri={transformURL.bind(null, specKey)}
63
61
  />
@@ -27,7 +27,10 @@ import React from 'react'
27
27
  import { methodRefs, typeRefs } from '@looker/sdk-codegen'
28
28
  import { screen } from '@testing-library/react'
29
29
 
30
- import { renderWithSearchAndRouter } from '../../test-utils'
30
+ import {
31
+ createTestStore,
32
+ renderWithRouterAndReduxProvider,
33
+ } from '../../test-utils'
31
34
  import { api } from '../../test-data'
32
35
  import { buildPath } from '../../utils'
33
36
  import { DocReferences } from './DocReferences'
@@ -37,7 +40,7 @@ describe('DocReferences', () => {
37
40
  const typesUsed = typeRefs(api, api.types.DashboardElement.customTypes)
38
41
  const typesUsedBy = typeRefs(api, api.types.DashboardElement.parentTypes)
39
42
  const methodsUsedBy = methodRefs(api, api.types.DashboardElement.methodRefs)
40
- renderWithSearchAndRouter(
43
+ renderWithRouterAndReduxProvider(
41
44
  <DocReferences
42
45
  typesUsed={typesUsed}
43
46
  typesUsedBy={typesUsedBy}
@@ -67,13 +70,17 @@ describe('DocReferences', () => {
67
70
 
68
71
  test('it highlights text matching search pattern', () => {
69
72
  const highlightPattern = 'dash'
70
- renderWithSearchAndRouter(
73
+ const store = createTestStore({
74
+ settings: { searchPattern: highlightPattern },
75
+ })
76
+ renderWithRouterAndReduxProvider(
71
77
  <DocReferences
72
78
  typesUsed={[api.types.Dashboard]}
73
79
  specKey={'3.1'}
74
80
  api={api}
75
81
  />,
76
- highlightPattern
82
+ undefined,
83
+ store
77
84
  )
78
85
  const foundRef = screen.getByRole('link')
79
86
  expect(foundRef).toContainHTML('<span class="hi">Dash</span>board')
@@ -25,11 +25,12 @@
25
25
  */
26
26
 
27
27
  import type { FC } from 'react'
28
- import React, { useContext } from 'react'
28
+ import React from 'react'
29
29
  import type { ApiModel, IMethod, IType } from '@looker/sdk-codegen'
30
-
31
30
  import { CollapserCard } from '@looker/run-it'
32
- import { SearchContext } from '../../context'
31
+
32
+ import { useSelector } from 'react-redux'
33
+ import { selectSearchPattern } from '../../state'
33
34
  import { DocReferenceItems } from './utils'
34
35
 
35
36
  interface DocReferencesProps {
@@ -50,9 +51,7 @@ export const DocReferences: FC<DocReferencesProps> = ({
50
51
  methodsUsedBy = [],
51
52
  typesUsedBy = [],
52
53
  }) => {
53
- const {
54
- searchSettings: { pattern },
55
- } = useContext(SearchContext)
54
+ const searchPattern = useSelector(selectSearchPattern)
56
55
 
57
56
  if (
58
57
  typesUsed.length === 0 &&
@@ -69,21 +68,21 @@ export const DocReferences: FC<DocReferencesProps> = ({
69
68
  typesUsed,
70
69
  api,
71
70
  specKey,
72
- pattern
71
+ searchPattern
73
72
  )}
74
73
  {DocReferenceItems(
75
74
  'Used by types:',
76
75
  typesUsedBy,
77
76
  api,
78
77
  specKey,
79
- pattern
78
+ searchPattern
80
79
  )}
81
80
  {DocReferenceItems(
82
81
  'Used by methods:',
83
82
  methodsUsedBy,
84
83
  api,
85
84
  specKey,
86
- pattern
85
+ searchPattern
87
86
  )}
88
87
  </>
89
88
  </CollapserCard>
@@ -27,7 +27,7 @@ import React from 'react'
27
27
  import { screen } from '@testing-library/react'
28
28
  import { findExampleLanguages } from '@looker/sdk-codegen'
29
29
 
30
- import { renderWithReduxProviderAndLode } from '../../test-utils'
30
+ import { renderWithLode } from '../../test-utils'
31
31
  import { api, examples } from '../../test-data'
32
32
  import { DocSdkUsage } from './DocSdkUsage'
33
33
  import {
@@ -47,7 +47,7 @@ describe('DocSdkUsage', () => {
47
47
  method.operationId,
48
48
  1
49
49
  )
50
- renderWithReduxProviderAndLode(<DocSdkUsage method={method} />, examples)
50
+ renderWithLode(<DocSdkUsage method={method} />, examples)
51
51
  expect(screen.getAllByRole('link')).toHaveLength(PER_PAGE_COUNT)
52
52
 
53
53
  expect(
@@ -24,7 +24,7 @@
24
24
 
25
25
  */
26
26
  import type { FC } from 'react'
27
- import React, { useContext, useState, useEffect } from 'react'
27
+ import React, { useState, useEffect } from 'react'
28
28
  import {
29
29
  Box,
30
30
  Card,
@@ -41,8 +41,7 @@ import { CollapserCard } from '@looker/run-it'
41
41
  import { InsertDriveFile } from '@styled-icons/material-outlined/InsertDriveFile'
42
42
  import { useSelector } from 'react-redux'
43
43
 
44
- import { selectSdkLanguage } from '../../state'
45
- import { LodeContext } from '../../context'
44
+ import { selectSdkLanguage, selectExamplesLode } from '../../state'
46
45
  import {
47
46
  exampleColumns,
48
47
  EMPTY_STRING,
@@ -61,15 +60,16 @@ interface DocSdkUsageProps {
61
60
  * links to the source files
62
61
  */
63
62
  export const DocSdkUsage: FC<DocSdkUsageProps> = ({ method }) => {
64
- const { examples } = useContext(LodeContext)
63
+ const examples = useSelector(selectExamplesLode)
65
64
  const sdkLanguage = useSelector(selectSdkLanguage)
66
- let languages = findExampleLanguages(examples, method.name)
67
65
  const [page, setPage] = useState(1)
68
66
 
69
67
  useEffect(() => {
70
68
  setPage(1)
71
69
  }, [method])
72
70
 
71
+ if (!examples) return <></>
72
+ let languages = findExampleLanguages(examples, method.name)
73
73
  if (languages.length === 0) return <></>
74
74
 
75
75
  languages = sortLanguagesByPreference(languages, sdkLanguage)