@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
@@ -13,14 +13,14 @@ var _components = require("@looker/components");
13
13
 
14
14
  var _sdkCodegen = require("@looker/sdk-codegen");
15
15
 
16
- var _context = require("../../context");
17
-
18
- var _reducers = require("../../reducers");
16
+ var _reactRedux = require("react-redux");
19
17
 
20
18
  var _utils = require("../../utils");
21
19
 
22
20
  var _Header = require("../Header");
23
21
 
22
+ var _state = require("../../state");
23
+
24
24
  var _SideNavMethodTags = require("./SideNavMethodTags");
25
25
 
26
26
  var _SideNavTypeTags = require("./SideNavTypeTags");
@@ -42,7 +42,6 @@ var SideNav = _ref => {
42
42
  } = _ref;
43
43
  var history = (0, _reactRouterDom.useHistory)();
44
44
  var location = (0, _reactRouterDom.useLocation)();
45
- var api = spec.api || {};
46
45
  var specKey = spec.key;
47
46
  var tabNames = ['methods', 'types'];
48
47
  var pathParts = location.pathname.split('/');
@@ -73,19 +72,30 @@ var SideNav = _ref => {
73
72
  defaultIndex,
74
73
  onChange: onTabChange
75
74
  });
75
+ var searchCriteria = (0, _reactRedux.useSelector)(_state.selectSearchCriteria);
76
76
  var {
77
- searchSettings,
78
- setSearchSettings
79
- } = (0, _react.useContext)(_context.SearchContext);
80
- var [pattern, setSearchPattern] = (0, _react.useState)(searchSettings.pattern);
77
+ setSearchPatternAction
78
+ } = (0, _state.useSettingActions)();
79
+ var [pattern, setSearchPattern] = (0, _react.useState)('');
81
80
  var debouncedPattern = (0, _searchUtils.useDebounce)(pattern, 250);
82
- var [searchResults, setSearchResults] = (0, _react.useState)();
83
- var searchCriteria = (0, _sdkCodegen.CriteriaToSet)(searchSettings.criteria);
84
- var [tags, setTags] = (0, _react.useState)(api.tags || {});
85
- var [typeTags, setTypeTags] = (0, _react.useState)(api.typeTags || {});
86
- var [types, setTypes] = (0, _react.useState)(api.types || {});
87
- var [methodCount, setMethodCount] = (0, _react.useState)((0, _searchUtils.countMethods)(tags));
88
- var [typeCount, setTypeCount] = (0, _react.useState)((0, _searchUtils.countTypes)(types));
81
+ var [sideNavState, setSideNavState] = (0, _react.useState)(() => {
82
+ var _spec$api, _spec$api2, _spec$api3, _spec$api4;
83
+
84
+ return {
85
+ tags: (spec === null || spec === void 0 ? void 0 : (_spec$api = spec.api) === null || _spec$api === void 0 ? void 0 : _spec$api.tags) || {},
86
+ typeTags: (spec === null || spec === void 0 ? void 0 : (_spec$api2 = spec.api) === null || _spec$api2 === void 0 ? void 0 : _spec$api2.typeTags) || {},
87
+ methodCount: (0, _searchUtils.countMethods)((spec === null || spec === void 0 ? void 0 : (_spec$api3 = spec.api) === null || _spec$api3 === void 0 ? void 0 : _spec$api3.tags) || {}),
88
+ typeCount: (0, _searchUtils.countTypes)((spec === null || spec === void 0 ? void 0 : (_spec$api4 = spec.api) === null || _spec$api4 === void 0 ? void 0 : _spec$api4.types) || {}),
89
+ searchResults: undefined
90
+ };
91
+ });
92
+ var {
93
+ tags,
94
+ typeTags,
95
+ methodCount,
96
+ typeCount,
97
+ searchResults
98
+ } = sideNavState;
89
99
 
90
100
  var handleInputChange = value => {
91
101
  setSearchPattern(value);
@@ -96,9 +106,10 @@ var SideNav = _ref => {
96
106
  var newTags;
97
107
  var newTypes;
98
108
  var newTypeTags;
109
+ var api = spec.api || {};
99
110
 
100
111
  if (debouncedPattern && api.search) {
101
- results = api.search(pattern, searchCriteria);
112
+ results = api.search(pattern, (0, _sdkCodegen.criteriaToSet)(searchCriteria));
102
113
  newTags = results.tags;
103
114
  newTypes = results.types;
104
115
  newTypeTags = (0, _sdkCodegen.tagTypes)(api, results.types);
@@ -108,14 +119,17 @@ var SideNav = _ref => {
108
119
  newTypeTags = api.typeTags || {};
109
120
  }
110
121
 
111
- setTags(newTags);
112
- setTypes(newTypes);
113
- setTypeTags(newTypeTags);
114
- setMethodCount((0, _searchUtils.countMethods)(newTags));
115
- setTypeCount((0, _searchUtils.countTypes)(newTypes));
116
- setSearchResults(results);
117
- setSearchSettings((0, _reducers.setPattern)(debouncedPattern));
118
- }, [debouncedPattern, specKey, spec]);
122
+ setSideNavState({
123
+ tags: newTags,
124
+ typeTags: newTypeTags,
125
+ typeCount: (0, _searchUtils.countTypes)(newTypes),
126
+ methodCount: (0, _searchUtils.countMethods)(newTags),
127
+ searchResults: results
128
+ });
129
+ setSearchPatternAction({
130
+ searchPattern: debouncedPattern
131
+ });
132
+ }, [debouncedPattern, specKey, spec, setSearchPatternAction, pattern, searchCriteria]);
119
133
  (0, _react.useEffect)(() => {
120
134
  var {
121
135
  selectedIndex,
@@ -138,8 +152,7 @@ var SideNav = _ref => {
138
152
  onChange: handleInputChange,
139
153
  placeholder: "Search",
140
154
  value: pattern,
141
- isClearable: true,
142
- changeOnSelect: true
155
+ isClearable: true
143
156
  }), _react.default.createElement(_SearchMessage.SearchMessage, {
144
157
  search: searchResults
145
158
  }), _react.default.createElement(_components.TabList, _extends({}, tabs, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/SideNav/SideNav.tsx"],"names":["SideNav","headless","spec","history","location","api","specKey","key","tabNames","pathParts","pathname","split","sideNavTab","defaultIndex","indexOf","onTabChange","index","parts","push","join","tabs","onChange","searchSettings","setSearchSettings","SearchContext","pattern","setSearchPattern","debouncedPattern","searchResults","setSearchResults","searchCriteria","criteria","tags","setTags","typeTags","setTypeTags","types","setTypes","methodCount","setMethodCount","typeCount","setTypeCount","handleInputChange","value","results","newTags","newTypes","newTypeTags","search","selectedIndex","onSelectTab","size","headlessOffset","menuH","height","HEADER_REM"],"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, Dispatch } from 'react'\nimport React, { useContext, useEffect, useState } from 'react'\nimport { useHistory, 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 SpecList,\n ISearchResult,\n ApiModel,\n} from '@looker/sdk-codegen'\nimport { CriteriaToSet, tagTypes } from '@looker/sdk-codegen'\n\nimport { SearchContext } from '../../context'\nimport type { SpecAction } from '../../reducers'\nimport { setPattern } from '../../reducers'\nimport { useWindowSize } from '../../utils'\nimport { HEADER_REM } from '../Header'\nimport { SideNavMethodTags } from './SideNavMethodTags'\nimport { SideNavTypeTags } from './SideNavTypeTags'\nimport { useDebounce, countMethods, countTypes } from './searchUtils'\nimport { SearchMessage } from './SearchMessage'\n\ninterface SideNavProps {\n headless?: boolean\n /** Specs to choose from */\n specs: SpecList\n /** Current selected spec */\n spec: SpecItem\n /** Spec state setter */\n specDispatch: Dispatch<SpecAction>\n}\n\nexport const SideNav: FC<SideNavProps> = ({ headless = false, spec }) => {\n const history = useHistory()\n const location = useLocation()\n const api = spec.api || ({} as ApiModel)\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 history.push(parts.join('/'))\n }\n } else {\n if (parts[2] !== tabNames[index]) {\n parts[2] = tabNames[index]\n history.push(parts.join('/'))\n }\n }\n }\n const tabs = useTabs({ defaultIndex, onChange: onTabChange })\n const { searchSettings, setSearchSettings } = useContext(SearchContext)\n const [pattern, setSearchPattern] = useState(searchSettings.pattern)\n const debouncedPattern = useDebounce(pattern, 250)\n const [searchResults, setSearchResults] = useState<ISearchResult>()\n const searchCriteria = CriteriaToSet(searchSettings.criteria)\n const [tags, setTags] = useState(api.tags || {})\n const [typeTags, setTypeTags] = useState(api.typeTags || {})\n const [types, setTypes] = useState(api.types || {})\n const [methodCount, setMethodCount] = useState(countMethods(tags))\n const [typeCount, setTypeCount] = useState(countTypes(types))\n\n const handleInputChange = (value: string) => {\n setSearchPattern(value)\n }\n\n useEffect(() => {\n let results\n let newTags\n let newTypes\n let newTypeTags\n if (debouncedPattern && api.search) {\n results = api.search(pattern, 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 setTags(newTags)\n setTypes(newTypes)\n setTypeTags(newTypeTags)\n setMethodCount(countMethods(newTags))\n setTypeCount(countTypes(newTypes))\n setSearchResults(results)\n setSearchSettings(setPattern(debouncedPattern!))\n }, [debouncedPattern, specKey, spec])\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 changeOnSelect\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":["SideNav","headless","spec","history","location","specKey","key","tabNames","pathParts","pathname","split","sideNavTab","defaultIndex","indexOf","onTabChange","index","parts","push","join","tabs","onChange","searchCriteria","selectSearchCriteria","setSearchPatternAction","pattern","setSearchPattern","debouncedPattern","sideNavState","setSideNavState","tags","api","typeTags","methodCount","typeCount","types","searchResults","undefined","handleInputChange","value","results","newTags","newTypes","newTypeTags","search","searchPattern","selectedIndex","onSelectTab","size","headlessOffset","menuH","height","HEADER_REM"],"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, Dispatch } from 'react'\nimport React, { useEffect, useState } from 'react'\nimport { useHistory, 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 SpecList,\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'\n\nimport type { SpecAction } from '../../reducers'\nimport { useWindowSize } from '../../utils'\nimport { HEADER_REM } from '../Header'\nimport { selectSearchCriteria, useSettingActions } 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 /** Specs to choose from */\n specs: SpecList\n /** Current selected spec */\n spec: SpecItem\n /** Spec state setter */\n specDispatch: Dispatch<SpecAction>\n}\n\nexport const SideNav: FC<SideNavProps> = ({ headless = false, spec }) => {\n const history = useHistory()\n const location = useLocation()\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 history.push(parts.join('/'))\n }\n } else {\n if (parts[2] !== tabNames[index]) {\n parts[2] = tabNames[index]\n history.push(parts.join('/'))\n }\n }\n }\n const tabs = useTabs({ defaultIndex, onChange: onTabChange })\n const searchCriteria = useSelector(selectSearchCriteria)\n const { setSearchPatternAction } = useSettingActions()\n\n const [pattern, setSearchPattern] = useState('')\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 let results\n let newTags\n let newTypes\n let newTypeTags\n const api = spec.api || ({} as ApiModel)\n\n if (debouncedPattern && api.search) {\n results = api.search(pattern, 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 setSearchPatternAction({ searchPattern: debouncedPattern })\n }, [\n debouncedPattern,\n specKey,\n spec,\n setSearchPatternAction,\n pattern,\n searchCriteria,\n ])\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"}
@@ -11,13 +11,15 @@ var _styledComponents = _interopRequireDefault(require("styled-components"));
11
11
 
12
12
  var _components = require("@looker/components");
13
13
 
14
+ var _reactRedux = require("react-redux");
15
+
14
16
  var _reactRouterDom = require("react-router-dom");
15
17
 
16
18
  var _Link = require("../Link");
17
19
 
18
20
  var _utils = require("../../utils");
19
21
 
20
- var _context = require("../../context");
22
+ var _state = require("../../state");
21
23
 
22
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
25
 
@@ -33,11 +35,7 @@ var SideNavMethods = (0, _styledComponents.default)(_ref => {
33
35
  specKey,
34
36
  defaultOpen = false
35
37
  } = _ref;
36
- var {
37
- searchSettings: {
38
- pattern
39
- }
40
- } = (0, _react.useContext)(_context.SearchContext);
38
+ var searchPattern = (0, _reactRedux.useSelector)(_state.selectSearchPattern);
41
39
  var match = (0, _reactRouterDom.useRouteMatch)("/:specKey/methods/:methodTag/:methodName?");
42
40
  var [isOpen, setIsOpen] = (0, _react.useState)(defaultOpen);
43
41
  var history = (0, _reactRouterDom.useHistory)();
@@ -52,7 +50,7 @@ var SideNavMethods = (0, _styledComponents.default)(_ref => {
52
50
  (0, _react.useEffect)(() => {
53
51
  var status = match ? defaultOpen || match.params.methodTag === tag : defaultOpen;
54
52
  setIsOpen(status);
55
- }, [defaultOpen, match]);
53
+ }, [defaultOpen, match, tag]);
56
54
  return _react.default.createElement(_components.Accordion2, {
57
55
  isOpen: isOpen,
58
56
  toggleOpen: handleOpen,
@@ -61,12 +59,12 @@ var SideNavMethods = (0, _styledComponents.default)(_ref => {
61
59
  as: "h4",
62
60
  fontSize: "small",
63
61
  py: "xsmall"
64
- }, (0, _utils.highlightHTML)(pattern, tag))
62
+ }, (0, _utils.highlightHTML)(searchPattern, tag))
65
63
  }, _react.default.createElement("ul", null, Object.values(methods).map(method => _react.default.createElement("li", {
66
64
  key: method.name
67
65
  }, _react.default.createElement(_Link.Link, {
68
66
  to: "".concat((0, _utils.buildMethodPath)(specKey, tag, method.name))
69
- }, (0, _utils.highlightHTML)(pattern, method.summary))))));
67
+ }, (0, _utils.highlightHTML)(searchPattern, method.summary))))));
70
68
  }).withConfig({
71
69
  displayName: "SideNavMethods",
72
70
  componentId: "sc-1qqmwk8-0"
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/SideNav/SideNavMethods.tsx"],"names":["SideNavMethods","className","methods","tag","specKey","defaultOpen","searchSettings","pattern","SearchContext","match","isOpen","setIsOpen","history","handleOpen","_isOpen","push","status","params","methodTag","Object","values","map","method","name","summary","theme","fonts","brand","colors","key","fontWeights","semiBold","ui2","space","xxsmall","ui1","Link","radii","medium","xsmall"],"mappings":";;;;;;;AA0BA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;;;;;;;AAUO,IAAMA,cAAc,GAAG,+BAC5B,QAA6E;AAAA,MAA5E;AAAEC,IAAAA,SAAF;AAAaC,IAAAA,OAAb;AAAsBC,IAAAA,GAAtB;AAA2BC,IAAAA,OAA3B;AAAoCC,IAAAA,WAAW,GAAG;AAAlD,GAA4E;AAC3E,MAAM;AACJC,IAAAA,cAAc,EAAE;AAAEC,MAAAA;AAAF;AADZ,MAEF,uBAAWC,sBAAX,CAFJ;AAGA,MAAMC,KAAK,GAAG,+EAAd;AAGA,MAAM,CAACC,MAAD,EAASC,SAAT,IAAsB,qBAASN,WAAT,CAA5B;AACA,MAAMO,OAAO,GAAG,iCAAhB;;AAEA,MAAMC,UAAU,GAAG,MAAM;AACvB,QAAMC,OAAO,GAAG,CAACJ,MAAjB;;AACAC,IAAAA,SAAS,CAACG,OAAD,CAAT;AACA,QAAIA,OAAJ,EAAaF,OAAO,CAACG,IAAR,YAAiBX,OAAjB,sBAAoCD,GAApC;AACd,GAJD;;AAMA,wBAAU,MAAM;AACd,QAAMa,MAAM,GAAGP,KAAK,GAChBJ,WAAW,IAAII,KAAK,CAACQ,MAAN,CAAaC,SAAb,KAA2Bf,GAD1B,GAEhBE,WAFJ;AAGAM,IAAAA,SAAS,CAACK,MAAD,CAAT;AACD,GALD,EAKG,CAACX,WAAD,EAAcI,KAAd,CALH;AAQA,SACE,6BAAC,sBAAD;AACE,IAAA,MAAM,EAAEC,MADV;AAEE,IAAA,UAAU,EAAEG,UAFd;AAGE,IAAA,SAAS,EAAEZ,SAHb;AAIE,IAAA,KAAK,EACH,6BAAC,mBAAD;AAAS,MAAA,EAAE,EAAC,IAAZ;AAAiB,MAAA,QAAQ,EAAC,OAA1B;AAAkC,MAAA,EAAE,EAAC;AAArC,OACG,0BAAcM,OAAd,EAAuBJ,GAAvB,CADH;AALJ,KAUE,yCACGgB,MAAM,CAACC,MAAP,CAAclB,OAAd,EAAuBmB,GAAvB,CAA4BC,MAAD,IAC1B;AAAI,IAAA,GAAG,EAAEA,MAAM,CAACC;AAAhB,KACE,6BAAC,UAAD;AAAM,IAAA,EAAE,YAAK,4BAAgBnB,OAAhB,EAAyBD,GAAzB,EAA8BmB,MAAM,CAACC,IAArC,CAAL;AAAR,KACG,0BAAchB,OAAd,EAAuBe,MAAM,CAACE,OAA9B,CADH,CADF,CADD,CADH,CAVF,CADF;AAsBD,CA/C2B,CAAH;AAAA;AAAA;AAAA,sbAiDV;AAAA,MAAC;AAAEC,IAAAA;AAAF,GAAD;AAAA,SAAeA,KAAK,CAACC,KAAN,CAAYC,KAA3B;AAAA,CAjDU,EAuDZ;AAAA,MAAC;AAAEF,IAAAA;AAAF,GAAD;AAAA,SAAeA,KAAK,CAACG,MAAN,CAAaC,GAA5B;AAAA,CAvDY,EA4DR;AAAA,MAAC;AAAEJ,IAAAA;AAAF,GAAD;AAAA,SAAeA,KAAK,CAACK,WAAN,CAAkBC,QAAjC;AAAA,CA5DQ,EAgEG;AAAA,MAAC;AAAEN,IAAAA;AAAF,GAAD;AAAA,SAAeA,KAAK,CAACG,MAAN,CAAaI,GAA5B;AAAA,CAhEH,EAoEP;AAAA,MAAC;AAAEP,IAAAA;AAAF,GAAD;AAAA,SAAeA,KAAK,CAACQ,KAAN,CAAYC,OAA3B;AAAA,CApEO,EAqER;AAAA,MAAC;AAAET,IAAAA;AAAF,GAAD;AAAA,SAAeA,KAAK,CAACQ,KAAN,CAAYC,OAA3B;AAAA,CArEQ,EAyET;AAAA,MAAC;AAAET,IAAAA;AAAF,GAAD;AAAA,SAAeA,KAAK,CAACG,MAAN,CAAaO,GAA5B;AAAA,CAzES,EA0ER;AAAA,MAAC;AAAEV,IAAAA;AAAF,GAAD;AAAA,SAAeA,KAAK,CAACK,WAAN,CAAkBC,QAAjC;AAAA,CA1EQ,EA6EvBK,UA7EuB,EA8EN;AAAA,MAAC;AAAEX,IAAAA;AAAF,GAAD;AAAA,SAAeA,KAAK,CAACY,KAAN,CAAYC,MAA3B;AAAA,CA9EM,EAiFZ;AAAA,MAAC;AAAEb,IAAAA;AAAF,GAAD;AAAA,SAAeA,KAAK,CAACQ,KAAN,CAAYM,MAA3B;AAAA,CAjFY,EAwFP;AAAA,MAAC;AAAEd,IAAAA;AAAF,GAAD;AAAA,SAAeA,KAAK,CAACG,MAAN,CAAaO,GAA5B;AAAA,CAxFO,CAApB","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 React, { useContext, useEffect, useState } from 'react'\nimport styled from 'styled-components'\nimport { Accordion2, Heading } from '@looker/components'\nimport type { MethodList } from '@looker/sdk-codegen'\nimport { useHistory, useRouteMatch } from 'react-router-dom'\nimport { Link } from '../Link'\nimport { buildMethodPath, highlightHTML } from '../../utils'\nimport { SearchContext } from '../../context'\n\ninterface MethodsProps {\n methods: MethodList\n tag: string\n specKey: string\n className?: string\n defaultOpen?: boolean\n}\n\nexport const SideNavMethods = styled(\n ({ className, methods, tag, specKey, defaultOpen = false }: MethodsProps) => {\n const {\n searchSettings: { pattern },\n } = useContext(SearchContext)\n const match = useRouteMatch<{ methodTag: string }>(\n `/:specKey/methods/:methodTag/:methodName?`\n )\n const [isOpen, setIsOpen] = useState(defaultOpen)\n const history = useHistory()\n\n const handleOpen = () => {\n const _isOpen = !isOpen\n setIsOpen(_isOpen)\n if (_isOpen) history.push(`/${specKey}/methods/${tag}`)\n }\n\n useEffect(() => {\n const status = match\n ? defaultOpen || match.params.methodTag === tag\n : defaultOpen\n setIsOpen(status)\n }, [defaultOpen, match])\n\n /* TODO: Fix highlighting. It is applied but it is somehow being overridden */\n return (\n <Accordion2\n isOpen={isOpen}\n toggleOpen={handleOpen}\n className={className}\n label={\n <Heading as=\"h4\" fontSize=\"small\" py=\"xsmall\">\n {highlightHTML(pattern, tag)}\n </Heading>\n }\n >\n <ul>\n {Object.values(methods).map((method) => (\n <li key={method.name}>\n <Link to={`${buildMethodPath(specKey, tag, method.name)}`}>\n {highlightHTML(pattern, method.summary)}\n </Link>\n </li>\n ))}\n </ul>\n </Accordion2>\n )\n }\n)`\n font-family: ${({ theme }) => theme.fonts.brand};\n\n [aria-controls]:hover,\n [aria-expanded='true'] {\n h4,\n svg {\n color: ${({ theme }) => theme.colors.key};\n }\n }\n\n [aria-expanded='true'] h4 {\n font-weight: ${({ theme }) => theme.fontWeights.semiBold};\n }\n\n ul {\n border-left: dashed 1px ${({ theme }) => theme.colors.ui2};\n list-style: none;\n margin: 0;\n padding: 0;\n padding-left: ${({ theme }) => theme.space.xxsmall};\n padding-top: ${({ theme }) => theme.space.xxsmall};\n }\n\n [aria-current] {\n background: ${({ theme }) => theme.colors.ui1};\n font-weight: ${({ theme }) => theme.fontWeights.semiBold};\n }\n\n ${Link} {\n border-radius: ${({ theme }) => theme.radii.medium};\n display: block;\n overflow: hidden;\n padding: ${({ theme }) => theme.space.xsmall};\n text-overflow: ellipsis;\n white-space: nowrap;\n\n &:hover,\n &:focus,\n &.active {\n background: ${({ theme }) => theme.colors.ui1};\n }\n }\n`\n"],"file":"SideNavMethods.js"}
1
+ {"version":3,"sources":["../../../src/components/SideNav/SideNavMethods.tsx"],"names":["SideNavMethods","className","methods","tag","specKey","defaultOpen","searchPattern","selectSearchPattern","match","isOpen","setIsOpen","history","handleOpen","_isOpen","push","status","params","methodTag","Object","values","map","method","name","summary","theme","fonts","brand","colors","key","fontWeights","semiBold","ui2","space","xxsmall","ui1","Link","radii","medium","xsmall"],"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 React, { useEffect, useState } from 'react'\nimport styled from 'styled-components'\nimport { Accordion2, Heading } from '@looker/components'\nimport type { MethodList } from '@looker/sdk-codegen'\nimport { useSelector } from 'react-redux'\nimport { useHistory, useRouteMatch } from 'react-router-dom'\n\nimport { Link } from '../Link'\nimport { buildMethodPath, highlightHTML } from '../../utils'\nimport { selectSearchPattern } from '../../state'\n\ninterface MethodsProps {\n methods: MethodList\n tag: string\n specKey: string\n className?: string\n defaultOpen?: boolean\n}\n\nexport const SideNavMethods = styled(\n ({ className, methods, tag, specKey, defaultOpen = false }: MethodsProps) => {\n const searchPattern = useSelector(selectSearchPattern)\n const match = useRouteMatch<{ methodTag: string }>(\n `/:specKey/methods/:methodTag/:methodName?`\n )\n const [isOpen, setIsOpen] = useState(defaultOpen)\n const history = useHistory()\n\n const handleOpen = () => {\n const _isOpen = !isOpen\n setIsOpen(_isOpen)\n if (_isOpen) history.push(`/${specKey}/methods/${tag}`)\n }\n\n useEffect(() => {\n const status = match\n ? defaultOpen || match.params.methodTag === tag\n : defaultOpen\n setIsOpen(status)\n }, [defaultOpen, match, tag])\n\n /* TODO: Fix highlighting. It is applied but it is somehow being overridden */\n return (\n <Accordion2\n isOpen={isOpen}\n toggleOpen={handleOpen}\n className={className}\n label={\n <Heading as=\"h4\" fontSize=\"small\" py=\"xsmall\">\n {highlightHTML(searchPattern, tag)}\n </Heading>\n }\n >\n <ul>\n {Object.values(methods).map((method) => (\n <li key={method.name}>\n <Link to={`${buildMethodPath(specKey, tag, method.name)}`}>\n {highlightHTML(searchPattern, method.summary)}\n </Link>\n </li>\n ))}\n </ul>\n </Accordion2>\n )\n }\n)`\n font-family: ${({ theme }) => theme.fonts.brand};\n\n [aria-controls]:hover,\n [aria-expanded='true'] {\n h4,\n svg {\n color: ${({ theme }) => theme.colors.key};\n }\n }\n\n [aria-expanded='true'] h4 {\n font-weight: ${({ theme }) => theme.fontWeights.semiBold};\n }\n\n ul {\n border-left: dashed 1px ${({ theme }) => theme.colors.ui2};\n list-style: none;\n margin: 0;\n padding: 0;\n padding-left: ${({ theme }) => theme.space.xxsmall};\n padding-top: ${({ theme }) => theme.space.xxsmall};\n }\n\n [aria-current] {\n background: ${({ theme }) => theme.colors.ui1};\n font-weight: ${({ theme }) => theme.fontWeights.semiBold};\n }\n\n ${Link} {\n border-radius: ${({ theme }) => theme.radii.medium};\n display: block;\n overflow: hidden;\n padding: ${({ theme }) => theme.space.xsmall};\n text-overflow: ellipsis;\n white-space: nowrap;\n\n &:hover,\n &:focus,\n &.active {\n background: ${({ theme }) => theme.colors.ui1};\n }\n }\n`\n"],"file":"SideNavMethods.js"}
@@ -13,11 +13,13 @@ var _components = require("@looker/components");
13
13
 
14
14
  var _reactRouterDom = require("react-router-dom");
15
15
 
16
+ var _reactRedux = require("react-redux");
17
+
16
18
  var _Link = require("../Link");
17
19
 
18
20
  var _utils = require("../../utils");
19
21
 
20
- var _context = require("../../context");
22
+ var _state = require("../../state");
21
23
 
22
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
25
 
@@ -33,11 +35,7 @@ var SideNavTypes = (0, _styledComponents.default)(_ref => {
33
35
  specKey,
34
36
  defaultOpen = false
35
37
  } = _ref;
36
- var {
37
- searchSettings: {
38
- pattern
39
- }
40
- } = (0, _react.useContext)(_context.SearchContext);
38
+ var searchPattern = (0, _reactRedux.useSelector)(_state.selectSearchPattern);
41
39
  var match = (0, _reactRouterDom.useRouteMatch)("/:specKey/types/:typeTag/:typeName?");
42
40
  var [isOpen, setIsOpen] = (0, _react.useState)(defaultOpen);
43
41
  var history = (0, _reactRouterDom.useHistory)();
@@ -61,12 +59,12 @@ var SideNavTypes = (0, _styledComponents.default)(_ref => {
61
59
  as: "h4",
62
60
  fontSize: "small",
63
61
  py: "xsmall"
64
- }, (0, _utils.highlightHTML)(pattern, tag))
62
+ }, (0, _utils.highlightHTML)(searchPattern, tag))
65
63
  }, _react.default.createElement("ul", null, Object.values(types).map(type => _react.default.createElement("li", {
66
64
  key: type.name
67
65
  }, _react.default.createElement(_Link.Link, {
68
66
  to: "".concat((0, _utils.buildTypePath)(specKey, tag, type.name))
69
- }, (0, _utils.highlightHTML)(pattern, type.name))))));
67
+ }, (0, _utils.highlightHTML)(searchPattern, type.name))))));
70
68
  }).withConfig({
71
69
  displayName: "SideNavTypes",
72
70
  componentId: "vqik31-0"
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/SideNav/SideNavTypes.tsx"],"names":["SideNavTypes","className","types","tag","specKey","defaultOpen","searchSettings","pattern","SearchContext","match","isOpen","setIsOpen","history","handleOpen","_isOpen","push","status","params","typeTag","Object","values","map","type","name","theme","fonts","brand","colors","key","fontWeights","semiBold","ui2","space","xxsmall","ui1","Link","radii","medium","xsmall"],"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 React, { useContext, useEffect, useState } from 'react'\nimport styled from 'styled-components'\nimport { Accordion2, Heading } from '@looker/components'\nimport type { TypeList } from '@looker/sdk-codegen'\nimport { useHistory, useRouteMatch } from 'react-router-dom'\nimport { Link } from '../Link'\nimport { buildTypePath, highlightHTML } from '../../utils'\nimport { SearchContext } from '../../context'\n\ninterface TypesProps {\n types: TypeList\n tag: string\n specKey: string\n className?: string\n defaultOpen?: boolean\n}\n\nexport const SideNavTypes = styled(\n ({ className, types, tag, specKey, defaultOpen = false }: TypesProps) => {\n const {\n searchSettings: { pattern },\n } = useContext(SearchContext)\n const match = useRouteMatch<{ typeTag: string }>(\n `/:specKey/types/:typeTag/:typeName?`\n )\n const [isOpen, setIsOpen] = useState(defaultOpen)\n const history = useHistory()\n\n const handleOpen = () => {\n const _isOpen = !isOpen\n setIsOpen(_isOpen)\n if (_isOpen) history.push(`/${specKey}/types/${tag}`)\n }\n\n useEffect(() => {\n const status = match\n ? defaultOpen || match.params.typeTag === tag\n : defaultOpen\n setIsOpen(status)\n }, [defaultOpen])\n\n /* TODO: Fix highlighting. It is applied but it is somehow being overridden */\n return (\n <Accordion2\n isOpen={isOpen}\n toggleOpen={handleOpen}\n className={className}\n label={\n <Heading as=\"h4\" fontSize=\"small\" py=\"xsmall\">\n {highlightHTML(pattern, tag)}\n </Heading>\n }\n >\n <ul>\n {Object.values(types).map((type) => (\n <li key={type.name}>\n <Link to={`${buildTypePath(specKey, tag, type.name)}`}>\n {highlightHTML(pattern, type.name)}\n </Link>\n </li>\n ))}\n </ul>\n </Accordion2>\n )\n }\n)`\n font-family: ${({ theme }) => theme.fonts.brand};\n\n [aria-controls]:hover,\n [aria-expanded='true'] {\n h4,\n svg {\n color: ${({ theme }) => theme.colors.key};\n }\n }\n\n [aria-expanded='true'] h4 {\n font-weight: ${({ theme }) => theme.fontWeights.semiBold};\n }\n\n ul {\n border-left: dashed 1px ${({ theme }) => theme.colors.ui2};\n list-style: none;\n margin: 0;\n padding: 0;\n padding-left: ${({ theme }) => theme.space.xxsmall};\n padding-top: ${({ theme }) => theme.space.xxsmall};\n }\n\n [aria-current] {\n background: ${({ theme }) => theme.colors.ui1};\n font-weight: ${({ theme }) => theme.fontWeights.semiBold};\n }\n\n ${Link} {\n border-radius: ${({ theme }) => theme.radii.medium};\n display: block;\n overflow: hidden;\n padding: ${({ theme }) => theme.space.xsmall};\n text-overflow: ellipsis;\n white-space: nowrap;\n\n &:hover,\n &:focus,\n &.active {\n background: ${({ theme }) => theme.colors.ui1};\n }\n }\n`\n"],"file":"SideNavTypes.js"}
1
+ {"version":3,"sources":["../../../src/components/SideNav/SideNavTypes.tsx"],"names":["SideNavTypes","className","types","tag","specKey","defaultOpen","searchPattern","selectSearchPattern","match","isOpen","setIsOpen","history","handleOpen","_isOpen","push","status","params","typeTag","Object","values","map","type","name","theme","fonts","brand","colors","key","fontWeights","semiBold","ui2","space","xxsmall","ui1","Link","radii","medium","xsmall"],"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 React, { useEffect, useState } from 'react'\nimport styled from 'styled-components'\nimport { Accordion2, Heading } from '@looker/components'\nimport type { TypeList } from '@looker/sdk-codegen'\nimport { useHistory, useRouteMatch } from 'react-router-dom'\nimport { useSelector } from 'react-redux'\n\nimport { Link } from '../Link'\nimport { buildTypePath, highlightHTML } from '../../utils'\nimport { selectSearchPattern } from '../../state'\n\ninterface TypesProps {\n types: TypeList\n tag: string\n specKey: string\n className?: string\n defaultOpen?: boolean\n}\n\nexport const SideNavTypes = styled(\n ({ className, types, tag, specKey, defaultOpen = false }: TypesProps) => {\n const searchPattern = useSelector(selectSearchPattern)\n const match = useRouteMatch<{ typeTag: string }>(\n `/:specKey/types/:typeTag/:typeName?`\n )\n const [isOpen, setIsOpen] = useState(defaultOpen)\n const history = useHistory()\n\n const handleOpen = () => {\n const _isOpen = !isOpen\n setIsOpen(_isOpen)\n if (_isOpen) history.push(`/${specKey}/types/${tag}`)\n }\n\n useEffect(() => {\n const status = match\n ? defaultOpen || match.params.typeTag === tag\n : defaultOpen\n setIsOpen(status)\n }, [defaultOpen])\n\n /* TODO: Fix highlighting. It is applied but it is somehow being overridden */\n return (\n <Accordion2\n isOpen={isOpen}\n toggleOpen={handleOpen}\n className={className}\n label={\n <Heading as=\"h4\" fontSize=\"small\" py=\"xsmall\">\n {highlightHTML(searchPattern, tag)}\n </Heading>\n }\n >\n <ul>\n {Object.values(types).map((type) => (\n <li key={type.name}>\n <Link to={`${buildTypePath(specKey, tag, type.name)}`}>\n {highlightHTML(searchPattern, type.name)}\n </Link>\n </li>\n ))}\n </ul>\n </Accordion2>\n )\n }\n)`\n font-family: ${({ theme }) => theme.fonts.brand};\n\n [aria-controls]:hover,\n [aria-expanded='true'] {\n h4,\n svg {\n color: ${({ theme }) => theme.colors.key};\n }\n }\n\n [aria-expanded='true'] h4 {\n font-weight: ${({ theme }) => theme.fontWeights.semiBold};\n }\n\n ul {\n border-left: dashed 1px ${({ theme }) => theme.colors.ui2};\n list-style: none;\n margin: 0;\n padding: 0;\n padding-left: ${({ theme }) => theme.space.xxsmall};\n padding-top: ${({ theme }) => theme.space.xxsmall};\n }\n\n [aria-current] {\n background: ${({ theme }) => theme.colors.ui1};\n font-weight: ${({ theme }) => theme.fontWeights.semiBold};\n }\n\n ${Link} {\n border-radius: ${({ theme }) => theme.radii.medium};\n display: block;\n overflow: hidden;\n padding: ${({ theme }) => theme.space.xsmall};\n text-overflow: ellipsis;\n white-space: nowrap;\n\n &:hover,\n &:focus,\n &.active {\n background: ${({ theme }) => theme.colors.ui1};\n }\n }\n`\n"],"file":"SideNavTypes.js"}
@@ -1,4 +1,4 @@
1
1
  import type { TagList, TypeList } from '@looker/sdk-codegen';
2
- export declare const useDebounce: (value: any, delay: number) => undefined;
2
+ export declare const useDebounce: <T>(value: T, delay: number) => T;
3
3
  export declare const countMethods: (tags: TagList) => number;
4
4
  export declare const countTypes: (types: TypeList) => number;
@@ -8,7 +8,7 @@ exports.countTypes = exports.countMethods = exports.useDebounce = void 0;
8
8
  var _react = require("react");
9
9
 
10
10
  var useDebounce = (value, delay) => {
11
- var [debouncedValue, setDebouncedValue] = (0, _react.useState)();
11
+ var [debouncedValue, setDebouncedValue] = (0, _react.useState)(value);
12
12
  (0, _react.useEffect)(() => {
13
13
  var handler = setTimeout(() => {
14
14
  setDebouncedValue(value);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/SideNav/searchUtils.tsx"],"names":["useDebounce","value","delay","debouncedValue","setDebouncedValue","handler","setTimeout","clearTimeout","countMethods","tags","result","Object","values","forEach","methods","entries","length","countTypes","types"],"mappings":";;;;;;;AA0BA;;AAGO,IAAMA,WAAW,GAAG,CAACC,KAAD,EAAaC,KAAb,KAA+B;AACxD,MAAM,CAACC,cAAD,EAAiBC,iBAAjB,IAAsC,sBAA5C;AACA,wBAAU,MAAM;AAEd,QAAMC,OAAO,GAAGC,UAAU,CAAC,MAAM;AAC/BF,MAAAA,iBAAiB,CAACH,KAAD,CAAjB;AACD,KAFyB,EAEvBC,KAFuB,CAA1B;AAIA,WAAO,MAAM;AACXK,MAAAA,YAAY,CAACF,OAAD,CAAZ;AACD,KAFD;AAGD,GATD,EASG,CAACJ,KAAD,CATH;AAUA,SAAOE,cAAP;AACD,CAbM;;;;AAeA,IAAMK,YAAY,GAAIC,IAAD,IAAmB;AAC7C,MAAIC,MAAM,GAAG,CAAb;AACAC,EAAAA,MAAM,CAACC,MAAP,CAAcH,IAAd,EAAoBI,OAApB,CAA6BC,OAAD,IAAa;AACvCJ,IAAAA,MAAM,IAAIC,MAAM,CAACI,OAAP,CAAeD,OAAf,EAAwBE,MAAlC;AACD,GAFD;AAGA,SAAON,MAAP;AACD,CANM;;;;AAQA,IAAMO,UAAU,GAAIC,KAAD,IAAqBP,MAAM,CAACI,OAAP,CAAeG,KAAf,EAAsBF,MAA9D","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 { useState, useEffect } from 'react'\nimport type { TagList, TypeList } from '@looker/sdk-codegen'\n\nexport const useDebounce = (value: any, delay: number) => {\n const [debouncedValue, setDebouncedValue] = useState()\n useEffect(() => {\n // Update debounced value only once delay has been elapsed\n const handler = setTimeout(() => {\n setDebouncedValue(value)\n }, delay)\n // Reset the timeout on receiving a new keyword\n return () => {\n clearTimeout(handler)\n }\n }, [value])\n return debouncedValue\n}\n\nexport const countMethods = (tags: TagList) => {\n let result = 0\n Object.values(tags).forEach((methods) => {\n result += Object.entries(methods).length\n })\n return result\n}\n\nexport const countTypes = (types: TypeList) => Object.entries(types).length\n"],"file":"searchUtils.js"}
1
+ {"version":3,"sources":["../../../src/components/SideNav/searchUtils.ts"],"names":["useDebounce","value","delay","debouncedValue","setDebouncedValue","handler","setTimeout","clearTimeout","countMethods","tags","result","Object","values","forEach","methods","entries","length","countTypes","types"],"mappings":";;;;;;;AA0BA;;AAGO,IAAMA,WAAW,GAAG,CAAIC,KAAJ,EAAcC,KAAd,KAAmC;AAC5D,MAAM,CAACC,cAAD,EAAiBC,iBAAjB,IAAsC,qBAASH,KAAT,CAA5C;AACA,wBAAU,MAAM;AAEd,QAAMI,OAAO,GAAGC,UAAU,CAAC,MAAM;AAC/BF,MAAAA,iBAAiB,CAACH,KAAD,CAAjB;AACD,KAFyB,EAEvBC,KAFuB,CAA1B;AAIA,WAAO,MAAM;AACXK,MAAAA,YAAY,CAACF,OAAD,CAAZ;AACD,KAFD;AAGD,GATD,EASG,CAACJ,KAAD,CATH;AAUA,SAAOE,cAAP;AACD,CAbM;;;;AAeA,IAAMK,YAAY,GAAIC,IAAD,IAAmB;AAC7C,MAAIC,MAAM,GAAG,CAAb;AACAC,EAAAA,MAAM,CAACC,MAAP,CAAcH,IAAd,EAAoBI,OAApB,CAA6BC,OAAD,IAAa;AACvCJ,IAAAA,MAAM,IAAIC,MAAM,CAACI,OAAP,CAAeD,OAAf,EAAwBE,MAAlC;AACD,GAFD;AAGA,SAAON,MAAP;AACD,CANM;;;;AAQA,IAAMO,UAAU,GAAIC,KAAD,IAAqBP,MAAM,CAACI,OAAP,CAAeG,KAAf,EAAsBF,MAA9D","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 { useState, useEffect } from 'react'\nimport type { TagList, TypeList } from '@looker/sdk-codegen'\n\nexport const useDebounce = <T>(value: T, delay: number): T => {\n const [debouncedValue, setDebouncedValue] = useState(value)\n useEffect(() => {\n // Update debounced value only once delay has been elapsed\n const handler = setTimeout(() => {\n setDebouncedValue(value)\n }, delay)\n // Reset the timeout on receiving a new keyword\n return () => {\n clearTimeout(handler)\n }\n }, [value])\n return debouncedValue\n}\n\nexport const countMethods = (tags: TagList) => {\n let result = 0\n Object.values(tags).forEach((methods) => {\n result += Object.entries(methods).length\n })\n return result\n}\n\nexport const countTypes = (types: TypeList) => Object.entries(types).length\n"],"file":"searchUtils.js"}
@@ -1,5 +1,5 @@
1
1
  import type { FC } from 'react';
2
- import type { ThemeOverrides } from '../../utils';
2
+ import type { ThemeOverrides } from '@looker/extension-utils';
3
3
  export interface LoaderProps {
4
4
  themeOverrides: ThemeOverrides;
5
5
  message?: string;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/common/Loader.tsx"],"names":["Loader","themeOverrides","message"],"mappings":";;;;;;;AA0BA;;AACA;;;;AAcO,IAAMA,MAAuB,GAAG;AAAA,MAAC;AACtCC,IAAAA,cADsC;AAEtCC,IAAAA,OAAO,GAAG;AAF4B,GAAD;AAAA,SAIrC,6BAAC,8BAAD,EAAwBD,cAAxB,EACE,6BAAC,gBAAD;AAAM,IAAA,aAAa,EAAC,QAApB;AAA6B,IAAA,cAAc,EAAC,QAA5C;AAAqD,IAAA,EAAE,EAAC;AAAxD,KACE,6BAAC,oBAAD;AAAU,IAAA,SAAS,EAAC;AAApB,KACE,6BAAC,4BAAD;AAAkB,IAAA,IAAI,EAAC;AAAvB,IADF,CADF,EAIE,6BAAC,oBAAD;AAAU,IAAA,EAAE,EAAC,OAAb;AAAqB,IAAA,SAAS,EAAC;AAA/B,KACE,6BAAC,mBAAD;AAAS,IAAA,KAAK,EAAC,KAAf;AAAqB,IAAA,EAAE,EAAC;AAAxB,KACGC,OADH,CADF,CAJF,CADF,CAJqC;AAAA,CAAhC","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 {\n ComponentsProvider,\n Flex,\n FlexItem,\n Heading,\n ProgressCircular,\n} from '@looker/components'\nimport type { ThemeOverrides } from '../../utils'\n\nexport interface LoaderProps {\n themeOverrides: ThemeOverrides\n message?: string\n}\n\nexport const Loader: FC<LoaderProps> = ({\n themeOverrides,\n message = 'Loading API Specifications',\n}) => (\n <ComponentsProvider {...themeOverrides}>\n <Flex flexDirection=\"column\" justifyContent=\"center\" mt=\"25%\">\n <FlexItem alignSelf=\"center\">\n <ProgressCircular size=\"large\" />\n </FlexItem>\n <FlexItem mt=\"large\" alignSelf=\"center\">\n <Heading color=\"key\" as=\"h2\">\n {message}\n </Heading>\n </FlexItem>\n </Flex>\n </ComponentsProvider>\n)\n"],"file":"Loader.js"}
1
+ {"version":3,"sources":["../../../src/components/common/Loader.tsx"],"names":["Loader","themeOverrides","message"],"mappings":";;;;;;;AA0BA;;AACA;;;;AAcO,IAAMA,MAAuB,GAAG;AAAA,MAAC;AACtCC,IAAAA,cADsC;AAEtCC,IAAAA,OAAO,GAAG;AAF4B,GAAD;AAAA,SAIrC,6BAAC,8BAAD,EAAwBD,cAAxB,EACE,6BAAC,gBAAD;AAAM,IAAA,aAAa,EAAC,QAApB;AAA6B,IAAA,cAAc,EAAC,QAA5C;AAAqD,IAAA,EAAE,EAAC;AAAxD,KACE,6BAAC,oBAAD;AAAU,IAAA,SAAS,EAAC;AAApB,KACE,6BAAC,4BAAD;AAAkB,IAAA,IAAI,EAAC;AAAvB,IADF,CADF,EAIE,6BAAC,oBAAD;AAAU,IAAA,EAAE,EAAC,OAAb;AAAqB,IAAA,SAAS,EAAC;AAA/B,KACE,6BAAC,mBAAD;AAAS,IAAA,KAAK,EAAC,KAAf;AAAqB,IAAA,EAAE,EAAC;AAAxB,KACGC,OADH,CADF,CAJF,CADF,CAJqC;AAAA,CAAhC","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 {\n ComponentsProvider,\n Flex,\n FlexItem,\n Heading,\n ProgressCircular,\n} from '@looker/components'\nimport type { ThemeOverrides } from '@looker/extension-utils'\n\nexport interface LoaderProps {\n themeOverrides: ThemeOverrides\n message?: string\n}\n\nexport const Loader: FC<LoaderProps> = ({\n themeOverrides,\n message = 'Loading API Specifications',\n}) => (\n <ComponentsProvider {...themeOverrides}>\n <Flex flexDirection=\"column\" justifyContent=\"center\" mt=\"25%\">\n <FlexItem alignSelf=\"center\">\n <ProgressCircular size=\"large\" />\n </FlexItem>\n <FlexItem mt=\"large\" alignSelf=\"center\">\n <Heading color=\"key\" as=\"h2\">\n {message}\n </Heading>\n </FlexItem>\n </Flex>\n </ComponentsProvider>\n)\n"],"file":"Loader.js"}
@@ -19,38 +19,39 @@ import { Aside, ComponentsProvider, Divider, Heading, IconButton, Layout, Page,
19
19
  import { funFetch, fallbackFetch, OAuthScene } from '@looker/run-it';
20
20
  import { FirstPage } from '@styled-icons/material/FirstPage';
21
21
  import { LastPage } from '@styled-icons/material/LastPage';
22
- import { SearchContext, LodeContext, defaultLodeContextValue } from './context';
23
- import { getLoded, oAuthPath, registerEnvAdaptor, unregisterEnvAdaptor } from './utils';
22
+ import { registerEnvAdaptor, unregisterEnvAdaptor } from '@looker/extension-utils';
23
+ import { oAuthPath } from './utils';
24
24
  import { Header, SideNav, ErrorBoundary, Loader, SelectorContainer, HEADER_TOGGLE_LABEL } from './components';
25
- import { specReducer, initDefaultSpecState, searchReducer, defaultSearchState, updateSpecApi } from './reducers';
25
+ import { specReducer, initDefaultSpecState, updateSpecApi } from './reducers';
26
26
  import { AppRouter } from './routes';
27
27
  import { apixFilesHost } from './utils/lodeUtils';
28
- import { useActions, useSettingsStoreState } from './state';
29
- export var BodyOverride = createGlobalStyle(_templateObject || (_templateObject = _taggedTemplateLiteral([" html { height: 100%; overflow: hidden; } "])));
30
-
31
- var ApiExplorer = _ref => {
28
+ import { useSettingActions, useSettingStoreState, useLodeActions, useLodesStoreState } from './state';
29
+ var BodyOverride = createGlobalStyle(_templateObject || (_templateObject = _taggedTemplateLiteral([" html { height: 100%; overflow: hidden; } "])));
30
+ export var ApiExplorer = _ref => {
32
31
  var {
33
32
  specs,
34
- envAdaptor,
33
+ adaptor,
35
34
  setVersionsUrl,
36
- exampleLodeUrl = 'https://raw.githubusercontent.com/looker-open-source/sdk-codegen/main/examplesIndex.json',
35
+ examplesLodeUrl = 'https://raw.githubusercontent.com/looker-open-source/sdk-codegen/main/examplesIndex.json',
37
36
  declarationsLodeUrl = "".concat(apixFilesHost, "/declarationsIndex.json"),
38
37
  headless = false
39
38
  } = _ref;
40
39
  var {
41
40
  initialized
42
- } = useSettingsStoreState();
41
+ } = useSettingStoreState();
42
+ useLodesStoreState();
43
+ var {
44
+ initLodesAction
45
+ } = useLodeActions();
43
46
  var {
44
- initAction
45
- } = useActions();
47
+ initSettingsAction
48
+ } = useSettingActions();
46
49
  var location = useLocation();
47
50
  var oauthReturn = location.pathname === "/".concat(oAuthPath);
48
51
  var [specState, specDispatch] = useReducer(specReducer, initDefaultSpecState(specs, location));
49
52
  var {
50
53
  spec
51
54
  } = specState;
52
- var [searchSettings, setSearchSettings] = useReducer(searchReducer, defaultSearchState);
53
- var [lode, setLode] = useState(defaultLodeContextValue);
54
55
  var [hasNavigation, setHasNavigation] = useState(true);
55
56
 
56
57
  var toggleNavigation = target => setHasNavigation(target || !hasNavigation);
@@ -61,8 +62,12 @@ var ApiExplorer = _ref => {
61
62
  }
62
63
  }, []);
63
64
  useEffect(() => {
64
- registerEnvAdaptor(envAdaptor);
65
- initAction();
65
+ registerEnvAdaptor(adaptor);
66
+ initSettingsAction();
67
+ initLodesAction({
68
+ examplesLodeUrl,
69
+ declarationsLodeUrl
70
+ });
66
71
  return () => unregisterEnvAdaptor();
67
72
  }, []);
68
73
  useEffect(() => {
@@ -104,10 +109,7 @@ var ApiExplorer = _ref => {
104
109
  loadSpec();
105
110
  }
106
111
  }, [spec, location]);
107
- useEffect(() => {
108
- getLoded(exampleLodeUrl, declarationsLodeUrl).then(resp => setLode(resp));
109
- }, [exampleLodeUrl, declarationsLodeUrl]);
110
- var themeOverrides = envAdaptor.themeOverrides();
112
+ var themeOverrides = adaptor.themeOverrides();
111
113
  return React.createElement(React.Fragment, null, React.createElement(ComponentsProvider, {
112
114
  loadGoogleFonts: themeOverrides.loadGoogleFonts,
113
115
  themeCustomizations: themeOverrides.themeCustomizations
@@ -115,14 +117,7 @@ var ApiExplorer = _ref => {
115
117
  message: "Initializing",
116
118
  themeOverrides: themeOverrides
117
119
  }) : React.createElement(ErrorBoundary, {
118
- logError: envAdaptor.logError.bind(envAdaptor)
119
- }, React.createElement(LodeContext.Provider, {
120
- value: _objectSpread({}, lode)
121
- }, React.createElement(SearchContext.Provider, {
122
- value: {
123
- searchSettings,
124
- setSearchSettings
125
- }
120
+ logError: adaptor.logError.bind(adaptor)
126
121
  }, React.createElement(Page, {
127
122
  style: {
128
123
  overflow: 'hidden'
@@ -174,12 +169,11 @@ var ApiExplorer = _ref => {
174
169
  specKey: spec.key,
175
170
  specs: specs,
176
171
  toggleNavigation: toggleNavigation,
177
- envAdaptor: envAdaptor,
172
+ adaptor: adaptor,
178
173
  setVersionsUrl: setVersionsUrl
179
- }))))))), !headless && React.createElement(BodyOverride, null));
174
+ }))))), !headless && React.createElement(BodyOverride, null));
180
175
  };
181
-
182
- export var AsideBorder = styled(Aside).withConfig({
176
+ var AsideBorder = styled(Aside).withConfig({
183
177
  displayName: "ApiExplorer__AsideBorder",
184
178
  componentId: "sc-1ynh530-0"
185
179
  })(["width:", ";"], _ref3 => {
@@ -189,5 +183,4 @@ export var AsideBorder = styled(Aside).withConfig({
189
183
  } = _ref3;
190
184
  return isOpen ? '20rem' : headless ? '2.75rem' : '0rem';
191
185
  });
192
- export default ApiExplorer;
193
186
  //# sourceMappingURL=ApiExplorer.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ApiExplorer.tsx"],"names":["React","useReducer","useState","useEffect","useCallback","useLocation","styled","createGlobalStyle","Aside","ComponentsProvider","Divider","Heading","IconButton","Layout","Page","Space","funFetch","fallbackFetch","OAuthScene","FirstPage","LastPage","SearchContext","LodeContext","defaultLodeContextValue","getLoded","oAuthPath","registerEnvAdaptor","unregisterEnvAdaptor","Header","SideNav","ErrorBoundary","Loader","SelectorContainer","HEADER_TOGGLE_LABEL","specReducer","initDefaultSpecState","searchReducer","defaultSearchState","updateSpecApi","AppRouter","apixFilesHost","useActions","useSettingsStoreState","BodyOverride","ApiExplorer","specs","envAdaptor","setVersionsUrl","exampleLodeUrl","declarationsLodeUrl","headless","initialized","initAction","location","oauthReturn","pathname","specState","specDispatch","spec","searchSettings","setSearchSettings","lode","setLode","hasNavigation","setHasNavigation","toggleNavigation","target","hasNavigationToggle","e","origin","window","data","action","currentHasNavigation","addEventListener","removeEventListener","loadSpec","api","newSpec","key","error","console","then","resp","themeOverrides","loadGoogleFonts","themeCustomizations","logError","bind","overflow","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, { useReducer, useState, useEffect, useCallback } from 'react'\nimport { useLocation } from 'react-router'\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 type { SpecList } from '@looker/sdk-codegen'\nimport type { RunItSetter } from '@looker/run-it'\nimport { funFetch, fallbackFetch, OAuthScene } from '@looker/run-it'\nimport { FirstPage } from '@styled-icons/material/FirstPage'\nimport { LastPage } from '@styled-icons/material/LastPage'\n\nimport { SearchContext, LodeContext, defaultLodeContextValue } from './context'\nimport type { IApixEnvAdaptor } from './utils'\nimport {\n getLoded,\n oAuthPath,\n registerEnvAdaptor,\n unregisterEnvAdaptor,\n} from './utils'\nimport {\n Header,\n SideNav,\n ErrorBoundary,\n Loader,\n SelectorContainer,\n HEADER_TOGGLE_LABEL,\n} from './components'\nimport {\n specReducer,\n initDefaultSpecState,\n searchReducer,\n defaultSearchState,\n updateSpecApi,\n} from './reducers'\nimport { AppRouter } from './routes'\nimport { apixFilesHost } from './utils/lodeUtils'\nimport { useActions, useSettingsStoreState } from './state'\n\nexport interface ApiExplorerProps {\n specs: SpecList\n envAdaptor: IApixEnvAdaptor\n setVersionsUrl: RunItSetter\n exampleLodeUrl?: string\n declarationsLodeUrl?: string\n headless?: boolean\n}\n\nexport const BodyOverride = createGlobalStyle` html { height: 100%; overflow: hidden; } `\n\nconst ApiExplorer: FC<ApiExplorerProps> = ({\n specs,\n envAdaptor,\n setVersionsUrl,\n exampleLodeUrl = 'https://raw.githubusercontent.com/looker-open-source/sdk-codegen/main/examplesIndex.json',\n declarationsLodeUrl = `${apixFilesHost}/declarationsIndex.json`,\n headless = false,\n}) => {\n const { initialized } = useSettingsStoreState()\n const { initAction } = useActions()\n const location = useLocation()\n const oauthReturn = location.pathname === `/${oAuthPath}`\n const [specState, specDispatch] = useReducer(\n specReducer,\n initDefaultSpecState(specs, location)\n )\n const { spec } = specState\n const [searchSettings, setSearchSettings] = useReducer(\n searchReducer,\n defaultSearchState\n )\n\n const [lode, setLode] = useState(defaultLodeContextValue)\n\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 useEffect(() => {\n registerEnvAdaptor(envAdaptor)\n initAction()\n\n return () => unregisterEnvAdaptor()\n }, [])\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 useEffect(() => {\n const loadSpec = async () => {\n if (!spec.api) {\n try {\n const newSpec = { ...spec }\n const api = await fallbackFetch(newSpec, funFetch)\n if (api) {\n spec.api = api\n specDispatch(updateSpecApi(spec.key, api))\n }\n } catch (error) {\n console.error(error)\n }\n }\n }\n if (!oauthReturn) {\n loadSpec()\n }\n }, [spec, location])\n\n useEffect(() => {\n getLoded(exampleLodeUrl, declarationsLodeUrl).then((resp) => setLode(resp))\n }, [exampleLodeUrl, declarationsLodeUrl])\n\n const themeOverrides = envAdaptor.themeOverrides()\n\n return (\n <>\n <ComponentsProvider\n loadGoogleFonts={themeOverrides.loadGoogleFonts}\n themeCustomizations={themeOverrides.themeCustomizations}\n >\n {!initialized ? (\n <Loader message=\"Initializing\" themeOverrides={themeOverrides} />\n ) : (\n <ErrorBoundary logError={envAdaptor.logError.bind(envAdaptor)}>\n <LodeContext.Provider value={{ ...lode }}>\n <SearchContext.Provider\n value={{ searchSettings, setSearchSettings }}\n >\n <Page style={{ overflow: 'hidden' }}>\n {!headless && (\n <Header\n specs={specs}\n spec={spec}\n specDispatch={specDispatch}\n toggleNavigation={toggleNavigation}\n />\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={\n hasNavigation ? <FirstPage /> : <LastPage />\n }\n label={HEADER_TOGGLE_LABEL}\n onClick={() => toggleNavigation()}\n />\n </Space>\n {hasNavigation && (\n <>\n <Divider mb=\"u3\" appearance=\"light\" />\n <SelectorContainer\n ml=\"large\"\n mr=\"large\"\n specs={specs}\n spec={spec}\n specDispatch={specDispatch}\n />\n </>\n )}\n </>\n )}\n {hasNavigation && (\n <SideNav\n headless={headless}\n specs={specs}\n spec={spec}\n specDispatch={specDispatch}\n />\n )}\n </AsideBorder>\n {oauthReturn && <OAuthScene />}\n {!oauthReturn && spec.api && (\n <AppRouter\n api={spec.api}\n specKey={spec.key}\n specs={specs}\n toggleNavigation={toggleNavigation}\n envAdaptor={envAdaptor}\n setVersionsUrl={setVersionsUrl}\n />\n )}\n </Layout>\n </Page>\n </SearchContext.Provider>\n </LodeContext.Provider>\n </ErrorBoundary>\n )}\n </ComponentsProvider>\n {!headless && <BodyOverride />}\n </>\n )\n}\n\nexport const AsideBorder = styled(Aside)<{\n isOpen: boolean\n headless: boolean\n}>`\n width: ${({ isOpen, headless }) =>\n isOpen ? '20rem' : headless ? '2.75rem' : '0rem'};\n`\nexport default ApiExplorer\n"],"file":"ApiExplorer.js"}
1
+ {"version":3,"sources":["../../src/ApiExplorer.tsx"],"names":["React","useReducer","useState","useEffect","useCallback","useLocation","styled","createGlobalStyle","Aside","ComponentsProvider","Divider","Heading","IconButton","Layout","Page","Space","funFetch","fallbackFetch","OAuthScene","FirstPage","LastPage","registerEnvAdaptor","unregisterEnvAdaptor","oAuthPath","Header","SideNav","ErrorBoundary","Loader","SelectorContainer","HEADER_TOGGLE_LABEL","specReducer","initDefaultSpecState","updateSpecApi","AppRouter","apixFilesHost","useSettingActions","useSettingStoreState","useLodeActions","useLodesStoreState","BodyOverride","ApiExplorer","specs","adaptor","setVersionsUrl","examplesLodeUrl","declarationsLodeUrl","headless","initialized","initLodesAction","initSettingsAction","location","oauthReturn","pathname","specState","specDispatch","spec","hasNavigation","setHasNavigation","toggleNavigation","target","hasNavigationToggle","e","origin","window","data","action","currentHasNavigation","addEventListener","removeEventListener","loadSpec","api","newSpec","key","error","console","themeOverrides","loadGoogleFonts","themeCustomizations","logError","bind","overflow","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, { useReducer, useState, useEffect, useCallback } from 'react'\nimport { useLocation } from 'react-router'\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 type { SpecList } from '@looker/sdk-codegen'\nimport type { RunItSetter } from '@looker/run-it'\nimport { funFetch, fallbackFetch, OAuthScene } from '@looker/run-it'\nimport { FirstPage } from '@styled-icons/material/FirstPage'\nimport { LastPage } from '@styled-icons/material/LastPage'\n\nimport type { IEnvironmentAdaptor } from '@looker/extension-utils'\nimport {\n registerEnvAdaptor,\n unregisterEnvAdaptor,\n} from '@looker/extension-utils'\nimport { oAuthPath } from './utils'\nimport {\n Header,\n SideNav,\n ErrorBoundary,\n Loader,\n SelectorContainer,\n HEADER_TOGGLE_LABEL,\n} from './components'\nimport { specReducer, initDefaultSpecState, updateSpecApi } from './reducers'\nimport { AppRouter } from './routes'\nimport { apixFilesHost } from './utils/lodeUtils'\nimport {\n useSettingActions,\n useSettingStoreState,\n useLodeActions,\n useLodesStoreState,\n} from './state'\n\nexport interface ApiExplorerProps {\n specs: SpecList\n adaptor: IEnvironmentAdaptor\n setVersionsUrl: RunItSetter\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 specs,\n adaptor,\n setVersionsUrl,\n examplesLodeUrl = 'https://raw.githubusercontent.com/looker-open-source/sdk-codegen/main/examplesIndex.json',\n declarationsLodeUrl = `${apixFilesHost}/declarationsIndex.json`,\n headless = false,\n}) => {\n const { initialized } = useSettingStoreState()\n useLodesStoreState()\n const { initLodesAction } = useLodeActions()\n const { initSettingsAction } = useSettingActions()\n const location = useLocation()\n const oauthReturn = location.pathname === `/${oAuthPath}`\n const [specState, specDispatch] = useReducer(\n specReducer,\n initDefaultSpecState(specs, location)\n )\n const { spec } = specState\n\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 useEffect(() => {\n registerEnvAdaptor(adaptor)\n initSettingsAction()\n initLodesAction({ examplesLodeUrl, declarationsLodeUrl })\n\n return () => unregisterEnvAdaptor()\n }, [])\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 useEffect(() => {\n const loadSpec = async () => {\n if (!spec.api) {\n try {\n const newSpec = { ...spec }\n const api = await fallbackFetch(newSpec, funFetch)\n if (api) {\n spec.api = api\n specDispatch(updateSpecApi(spec.key, api))\n }\n } catch (error) {\n console.error(error)\n }\n }\n }\n if (!oauthReturn) {\n loadSpec()\n }\n }, [spec, location])\n\n const themeOverrides = adaptor.themeOverrides()\n\n return (\n <>\n <ComponentsProvider\n loadGoogleFonts={themeOverrides.loadGoogleFonts}\n themeCustomizations={themeOverrides.themeCustomizations}\n >\n {!initialized ? (\n <Loader message=\"Initializing\" themeOverrides={themeOverrides} />\n ) : (\n <ErrorBoundary logError={adaptor.logError.bind(adaptor)}>\n <Page style={{ overflow: 'hidden' }}>\n {!headless && (\n <Header\n specs={specs}\n spec={spec}\n specDispatch={specDispatch}\n toggleNavigation={toggleNavigation}\n />\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 ml=\"large\"\n mr=\"large\"\n specs={specs}\n spec={spec}\n specDispatch={specDispatch}\n />\n </>\n )}\n </>\n )}\n {hasNavigation && (\n <SideNav\n headless={headless}\n specs={specs}\n spec={spec}\n specDispatch={specDispatch}\n />\n )}\n </AsideBorder>\n {oauthReturn && <OAuthScene />}\n {!oauthReturn && spec.api && (\n <AppRouter\n api={spec.api}\n specKey={spec.key}\n specs={specs}\n toggleNavigation={toggleNavigation}\n adaptor={adaptor}\n setVersionsUrl={setVersionsUrl}\n />\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"}