@looker/api-explorer 0.9.35 → 0.9.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. package/CHANGELOG.md +56 -1
  2. package/dist/bundle.js +1 -1
  3. package/dist/bundle.js.map +1 -1
  4. package/e2e/MethodScene.spec.ts +80 -0
  5. package/e2e/diffScene.spec.ts +28 -20
  6. package/e2e/e2e.spec.ts +45 -7
  7. package/lib/ApiExplorer.js +24 -5
  8. package/lib/ApiExplorer.js.map +1 -1
  9. package/lib/components/DocMarkdown/DocMarkdown.js +9 -7
  10. package/lib/components/DocMarkdown/DocMarkdown.js.map +1 -1
  11. package/lib/components/DocSDKs/DocDeclarations.js +10 -15
  12. package/lib/components/DocSDKs/DocDeclarations.js.map +1 -1
  13. package/lib/components/SelectorContainer/ApiSpecSelector.js +6 -2
  14. package/lib/components/SelectorContainer/ApiSpecSelector.js.map +1 -1
  15. package/lib/components/SelectorContainer/SdkLanguageSelector.js +20 -21
  16. package/lib/components/SelectorContainer/SdkLanguageSelector.js.map +1 -1
  17. package/lib/components/SelectorContainer/SelectorContainer.js +4 -1
  18. package/lib/components/SelectorContainer/SelectorContainer.js.map +1 -1
  19. package/lib/components/SelectorContainer/utils.d.ts +2 -0
  20. package/lib/components/SelectorContainer/utils.js +32 -0
  21. package/lib/components/SelectorContainer/utils.js.map +1 -0
  22. package/lib/components/SideNav/SideNav.js +37 -16
  23. package/lib/components/SideNav/SideNav.js.map +1 -1
  24. package/lib/components/SideNav/SideNavMethods.js +9 -6
  25. package/lib/components/SideNav/SideNavMethods.js.map +1 -1
  26. package/lib/components/SideNav/SideNavTypes.js +7 -4
  27. package/lib/components/SideNav/SideNavTypes.js.map +1 -1
  28. package/lib/components/index.d.ts +0 -1
  29. package/lib/components/index.js +0 -8
  30. package/lib/components/index.js.map +1 -1
  31. package/lib/esm/ApiExplorer.js +26 -7
  32. package/lib/esm/ApiExplorer.js.map +1 -1
  33. package/lib/esm/components/DocMarkdown/DocMarkdown.js +6 -4
  34. package/lib/esm/components/DocMarkdown/DocMarkdown.js.map +1 -1
  35. package/lib/esm/components/DocSDKs/DocDeclarations.js +9 -14
  36. package/lib/esm/components/DocSDKs/DocDeclarations.js.map +1 -1
  37. package/lib/esm/components/SelectorContainer/ApiSpecSelector.js +6 -3
  38. package/lib/esm/components/SelectorContainer/ApiSpecSelector.js.map +1 -1
  39. package/lib/esm/components/SelectorContainer/SdkLanguageSelector.js +16 -18
  40. package/lib/esm/components/SelectorContainer/SdkLanguageSelector.js.map +1 -1
  41. package/lib/esm/components/SelectorContainer/SelectorContainer.js +5 -2
  42. package/lib/esm/components/SelectorContainer/SelectorContainer.js.map +1 -1
  43. package/lib/esm/components/SelectorContainer/utils.js +22 -0
  44. package/lib/esm/components/SelectorContainer/utils.js.map +1 -0
  45. package/lib/esm/components/SideNav/SideNav.js +40 -20
  46. package/lib/esm/components/SideNav/SideNav.js.map +1 -1
  47. package/lib/esm/components/SideNav/SideNavMethods.js +9 -6
  48. package/lib/esm/components/SideNav/SideNavMethods.js.map +1 -1
  49. package/lib/esm/components/SideNav/SideNavTypes.js +9 -6
  50. package/lib/esm/components/SideNav/SideNavTypes.js.map +1 -1
  51. package/lib/esm/components/index.js +0 -1
  52. package/lib/esm/components/index.js.map +1 -1
  53. package/lib/esm/routes/AppRouter.js +6 -4
  54. package/lib/esm/routes/AppRouter.js.map +1 -1
  55. package/lib/esm/scenes/DiffScene/DiffScene.js +11 -9
  56. package/lib/esm/scenes/DiffScene/DiffScene.js.map +1 -1
  57. package/lib/esm/scenes/DiffScene/DocDiff/DiffItem.js +5 -4
  58. package/lib/esm/scenes/DiffScene/DocDiff/DiffItem.js.map +1 -1
  59. package/lib/esm/scenes/DiffScene/DocDiff/DocDiff.js +4 -4
  60. package/lib/esm/scenes/DiffScene/DocDiff/DocDiff.js.map +1 -1
  61. package/lib/esm/scenes/ErrorDetailScene/ErrorDetailScene.js +31 -0
  62. package/lib/esm/scenes/ErrorDetailScene/ErrorDetailScene.js.map +1 -0
  63. package/lib/esm/scenes/ErrorDetailScene/index.js +2 -0
  64. package/lib/esm/scenes/ErrorDetailScene/index.js.map +1 -0
  65. package/lib/esm/scenes/MethodScene/MethodScene.js +30 -10
  66. package/lib/esm/scenes/MethodScene/MethodScene.js.map +1 -1
  67. package/lib/esm/{components → scenes/MethodScene/components}/DocResponses/DocResponseTypes.js +1 -1
  68. package/lib/esm/scenes/MethodScene/components/DocResponses/DocResponseTypes.js.map +1 -0
  69. package/lib/esm/scenes/MethodScene/components/DocResponses/DocResponses.js +73 -0
  70. package/lib/esm/scenes/MethodScene/components/DocResponses/DocResponses.js.map +1 -0
  71. package/lib/esm/{components → scenes/MethodScene/components}/DocResponses/index.js +0 -0
  72. package/lib/esm/scenes/MethodScene/components/DocResponses/index.js.map +1 -0
  73. package/lib/esm/{components → scenes/MethodScene/components}/DocResponses/utils.js +0 -0
  74. package/lib/esm/scenes/MethodScene/components/DocResponses/utils.js.map +1 -0
  75. package/lib/esm/scenes/MethodScene/components/index.js +1 -0
  76. package/lib/esm/scenes/MethodScene/components/index.js.map +1 -1
  77. package/lib/esm/scenes/MethodTagScene/MethodTagScene.js +38 -10
  78. package/lib/esm/scenes/MethodTagScene/MethodTagScene.js.map +1 -1
  79. package/lib/esm/scenes/TypeScene/TypeScene.js +7 -1
  80. package/lib/esm/scenes/TypeScene/TypeScene.js.map +1 -1
  81. package/lib/esm/scenes/TypeTagScene/TypeTagScene.js +39 -12
  82. package/lib/esm/scenes/TypeTagScene/TypeTagScene.js.map +1 -1
  83. package/lib/esm/scenes/index.js +1 -0
  84. package/lib/esm/scenes/index.js.map +1 -1
  85. package/lib/esm/scenes/utils/hooks/index.js +2 -0
  86. package/lib/esm/scenes/utils/hooks/index.js.map +1 -0
  87. package/lib/esm/scenes/utils/hooks/tagStoreSync.js +37 -0
  88. package/lib/esm/scenes/utils/hooks/tagStoreSync.js.map +1 -0
  89. package/lib/esm/scenes/utils/index.js +2 -0
  90. package/lib/esm/scenes/utils/index.js.map +1 -0
  91. package/lib/esm/state/settings/selectors.js +1 -0
  92. package/lib/esm/state/settings/selectors.js.map +1 -1
  93. package/lib/esm/state/settings/slice.js +6 -1
  94. package/lib/esm/state/settings/slice.js.map +1 -1
  95. package/lib/esm/utils/hooks/globalStoreSync.js +53 -0
  96. package/lib/esm/utils/hooks/globalStoreSync.js.map +1 -0
  97. package/lib/esm/utils/hooks/index.js +4 -0
  98. package/lib/esm/utils/hooks/index.js.map +1 -0
  99. package/lib/esm/utils/hooks/navigation.js +72 -0
  100. package/lib/esm/utils/hooks/navigation.js.map +1 -0
  101. package/lib/esm/utils/hooks/useQuery.js +9 -0
  102. package/lib/esm/utils/hooks/useQuery.js.map +1 -0
  103. package/lib/esm/utils/index.js +2 -0
  104. package/lib/esm/utils/index.js.map +1 -1
  105. package/lib/esm/utils/path.js +23 -2
  106. package/lib/esm/utils/path.js.map +1 -1
  107. package/lib/esm/utils/sdkLanguage.js +42 -0
  108. package/lib/esm/utils/sdkLanguage.js.map +1 -0
  109. package/lib/routes/AppRouter.d.ts +1 -2
  110. package/lib/routes/AppRouter.js +5 -3
  111. package/lib/routes/AppRouter.js.map +1 -1
  112. package/lib/scenes/DiffScene/DiffScene.d.ts +0 -2
  113. package/lib/scenes/DiffScene/DiffScene.js +8 -6
  114. package/lib/scenes/DiffScene/DiffScene.js.map +1 -1
  115. package/lib/scenes/DiffScene/DocDiff/DiffItem.js +4 -4
  116. package/lib/scenes/DiffScene/DocDiff/DiffItem.js.map +1 -1
  117. package/lib/scenes/DiffScene/DocDiff/DocDiff.js +4 -4
  118. package/lib/scenes/DiffScene/DocDiff/DocDiff.js.map +1 -1
  119. package/lib/scenes/ErrorDetailScene/ErrorDetailScene.d.ts +7 -0
  120. package/lib/scenes/ErrorDetailScene/ErrorDetailScene.js +47 -0
  121. package/lib/scenes/ErrorDetailScene/ErrorDetailScene.js.map +1 -0
  122. package/lib/scenes/ErrorDetailScene/index.d.ts +1 -0
  123. package/lib/scenes/ErrorDetailScene/index.js +14 -0
  124. package/lib/{components/DocResponses → scenes/ErrorDetailScene}/index.js.map +1 -1
  125. package/lib/scenes/MethodScene/MethodScene.js +25 -5
  126. package/lib/scenes/MethodScene/MethodScene.js.map +1 -1
  127. package/lib/{components → scenes/MethodScene/components}/DocResponses/DocResponseTypes.d.ts +2 -2
  128. package/lib/{components → scenes/MethodScene/components}/DocResponses/DocResponseTypes.js +2 -2
  129. package/lib/scenes/MethodScene/components/DocResponses/DocResponseTypes.js.map +1 -0
  130. package/lib/scenes/MethodScene/components/DocResponses/DocResponses.d.ts +9 -0
  131. package/lib/scenes/MethodScene/components/DocResponses/DocResponses.js +93 -0
  132. package/lib/scenes/MethodScene/components/DocResponses/DocResponses.js.map +1 -0
  133. package/lib/{components → scenes/MethodScene/components}/DocResponses/index.d.ts +0 -0
  134. package/lib/{components → scenes/MethodScene/components}/DocResponses/index.js +0 -0
  135. package/lib/scenes/MethodScene/components/DocResponses/index.js.map +1 -0
  136. package/lib/{components → scenes/MethodScene/components}/DocResponses/utils.d.ts +0 -0
  137. package/lib/{components → scenes/MethodScene/components}/DocResponses/utils.js +0 -0
  138. package/lib/scenes/MethodScene/components/DocResponses/utils.js.map +1 -0
  139. package/lib/scenes/MethodScene/components/index.d.ts +1 -0
  140. package/lib/scenes/MethodScene/components/index.js +8 -0
  141. package/lib/scenes/MethodScene/components/index.js.map +1 -1
  142. package/lib/scenes/MethodTagScene/MethodTagScene.js +42 -11
  143. package/lib/scenes/MethodTagScene/MethodTagScene.js.map +1 -1
  144. package/lib/scenes/TypeScene/TypeScene.js +8 -1
  145. package/lib/scenes/TypeScene/TypeScene.js.map +1 -1
  146. package/lib/scenes/TypeTagScene/TypeTagScene.js +42 -12
  147. package/lib/scenes/TypeTagScene/TypeTagScene.js.map +1 -1
  148. package/lib/scenes/index.d.ts +1 -0
  149. package/lib/scenes/index.js +8 -0
  150. package/lib/scenes/index.js.map +1 -1
  151. package/lib/scenes/utils/hooks/index.d.ts +1 -0
  152. package/lib/scenes/utils/hooks/index.js +14 -0
  153. package/lib/scenes/utils/hooks/index.js.map +1 -0
  154. package/lib/scenes/utils/hooks/tagStoreSync.d.ts +1 -0
  155. package/lib/scenes/utils/hooks/tagStoreSync.js +51 -0
  156. package/lib/scenes/utils/hooks/tagStoreSync.js.map +1 -0
  157. package/lib/scenes/utils/index.d.ts +1 -0
  158. package/lib/scenes/utils/index.js +14 -0
  159. package/lib/scenes/utils/index.js.map +1 -0
  160. package/lib/state/settings/selectors.d.ts +2 -1
  161. package/lib/state/settings/selectors.js +5 -1
  162. package/lib/state/settings/selectors.js.map +1 -1
  163. package/lib/state/settings/slice.d.ts +7 -1
  164. package/lib/state/settings/slice.js +6 -1
  165. package/lib/state/settings/slice.js.map +1 -1
  166. package/lib/test-data/index.d.ts +1 -0
  167. package/lib/test-data/index.js +14 -0
  168. package/lib/test-data/index.js.map +1 -1
  169. package/lib/test-data/sdkLanguages.d.ts +10 -0
  170. package/lib/test-data/sdkLanguages.js +19 -0
  171. package/lib/test-data/sdkLanguages.js.map +1 -0
  172. package/lib/utils/hooks/globalStoreSync.d.ts +1 -0
  173. package/lib/utils/hooks/globalStoreSync.js +67 -0
  174. package/lib/utils/hooks/globalStoreSync.js.map +1 -0
  175. package/lib/utils/hooks/index.d.ts +3 -0
  176. package/lib/utils/hooks/index.js +30 -0
  177. package/lib/utils/hooks/index.js.map +1 -0
  178. package/lib/utils/hooks/navigation.d.ts +11 -0
  179. package/lib/utils/hooks/navigation.js +83 -0
  180. package/lib/utils/hooks/navigation.js.map +1 -0
  181. package/lib/utils/hooks/useQuery.d.ts +1 -0
  182. package/lib/utils/hooks/useQuery.js +20 -0
  183. package/lib/utils/hooks/useQuery.js.map +1 -0
  184. package/lib/utils/index.d.ts +2 -0
  185. package/lib/utils/index.js +38 -1
  186. package/lib/utils/index.js.map +1 -1
  187. package/lib/utils/path.d.ts +6 -2
  188. package/lib/utils/path.js +34 -3
  189. package/lib/utils/path.js.map +1 -1
  190. package/lib/utils/sdkLanguage.d.ts +6 -0
  191. package/lib/utils/sdkLanguage.js +59 -0
  192. package/lib/utils/sdkLanguage.js.map +1 -0
  193. package/package.json +14 -14
  194. package/src/ApiExplorer.tsx +18 -7
  195. package/src/components/DocMarkdown/DocMarkdown.tsx +4 -4
  196. package/src/components/DocSDKs/DocDeclarations.tsx +11 -22
  197. package/src/components/DocSDKs/DocSDKs.spec.tsx +4 -1
  198. package/src/components/Header/Header.spec.tsx +1 -1
  199. package/src/components/SelectorContainer/ApiSpecSelector.spec.tsx +5 -2
  200. package/src/components/SelectorContainer/ApiSpecSelector.tsx +4 -3
  201. package/src/components/SelectorContainer/SdkLanguageSelector.spec.tsx +60 -33
  202. package/src/components/SelectorContainer/SdkLanguageSelector.tsx +15 -22
  203. package/src/components/SelectorContainer/SelectorContainer.spec.tsx +1 -1
  204. package/src/components/SelectorContainer/SelectorContainer.tsx +18 -15
  205. package/src/components/SelectorContainer/utils.ts +45 -0
  206. package/src/components/SideNav/SideNav.spec.tsx +39 -5
  207. package/src/components/SideNav/SideNav.tsx +42 -29
  208. package/src/components/SideNav/SideNavMethods.spec.tsx +5 -0
  209. package/src/components/SideNav/SideNavMethods.tsx +11 -8
  210. package/src/components/SideNav/SideNavTypes.spec.tsx +9 -2
  211. package/src/components/SideNav/SideNavTypes.tsx +10 -8
  212. package/src/components/index.ts +0 -1
  213. package/src/routes/AppRouter.tsx +7 -5
  214. package/src/scenes/DiffScene/DiffScene.tsx +10 -10
  215. package/src/scenes/DiffScene/DocDiff/DiffItem.spec.tsx +4 -3
  216. package/src/scenes/DiffScene/DocDiff/DiffItem.tsx +3 -4
  217. package/src/scenes/DiffScene/DocDiff/DocDiff.spec.tsx +73 -2
  218. package/src/scenes/DiffScene/DocDiff/DocDiff.tsx +4 -4
  219. package/src/scenes/ErrorDetailScene/ErrorDetailScene.tsx +72 -0
  220. package/src/scenes/ErrorDetailScene/index.ts +26 -0
  221. package/src/scenes/MethodScene/MethodScene.tsx +23 -8
  222. package/src/{components → scenes/MethodScene/components}/DocResponses/DocResponseTypes.tsx +3 -6
  223. package/src/scenes/MethodScene/components/DocResponses/DocResponses.spec.tsx +153 -0
  224. package/src/scenes/MethodScene/components/DocResponses/DocResponses.tsx +103 -0
  225. package/src/{components → scenes/MethodScene/components}/DocResponses/index.ts +0 -0
  226. package/src/{components → scenes/MethodScene/components}/DocResponses/utils.spec.ts +1 -1
  227. package/src/{components → scenes/MethodScene/components}/DocResponses/utils.ts +0 -0
  228. package/src/scenes/MethodScene/components/index.ts +1 -0
  229. package/src/scenes/MethodTagScene/MethodTagScene.spec.tsx +25 -14
  230. package/src/scenes/MethodTagScene/MethodTagScene.tsx +42 -10
  231. package/src/scenes/TypeScene/TypeScene.tsx +8 -2
  232. package/src/scenes/TypeTagScene/TypeTagScene.spec.tsx +21 -11
  233. package/src/scenes/TypeTagScene/TypeTagScene.tsx +46 -13
  234. package/src/scenes/index.ts +1 -0
  235. package/src/scenes/utils/hooks/index.ts +27 -0
  236. package/src/scenes/utils/hooks/tagStoreSync.spec.ts +102 -0
  237. package/src/scenes/utils/hooks/tagStoreSync.ts +68 -0
  238. package/src/scenes/utils/index.ts +27 -0
  239. package/src/state/settings/selectors.spec.ts +5 -1
  240. package/src/state/settings/selectors.ts +3 -0
  241. package/src/state/settings/slice.ts +6 -0
  242. package/src/test-data/index.ts +1 -0
  243. package/src/test-data/sdkLanguages.ts +36 -0
  244. package/src/utils/hooks/globalStoreSync.spec.tsx +146 -0
  245. package/src/utils/hooks/globalStoreSync.ts +77 -0
  246. package/src/utils/hooks/index.ts +28 -0
  247. package/src/utils/hooks/navigation.spec.ts +118 -0
  248. package/src/utils/hooks/navigation.ts +121 -0
  249. package/src/utils/hooks/useQuery.ts +36 -0
  250. package/src/utils/index.ts +2 -0
  251. package/src/utils/path.spec.ts +92 -3
  252. package/src/utils/path.ts +46 -4
  253. package/src/utils/sdkLanguage.spec.ts +69 -0
  254. package/src/utils/sdkLanguage.ts +63 -0
  255. package/lib/components/DocResponses/DocResponseTypes.js.map +0 -1
  256. package/lib/components/DocResponses/DocResponses.d.ts +0 -8
  257. package/lib/components/DocResponses/DocResponses.js +0 -46
  258. package/lib/components/DocResponses/DocResponses.js.map +0 -1
  259. package/lib/components/DocResponses/utils.js.map +0 -1
  260. package/lib/esm/components/DocResponses/DocResponseTypes.js.map +0 -1
  261. package/lib/esm/components/DocResponses/DocResponses.js +0 -30
  262. package/lib/esm/components/DocResponses/DocResponses.js.map +0 -1
  263. package/lib/esm/components/DocResponses/index.js.map +0 -1
  264. package/lib/esm/components/DocResponses/utils.js.map +0 -1
  265. package/src/components/DocResponses/DocResponses.spec.tsx +0 -60
  266. package/src/components/DocResponses/DocResponses.tsx +0 -69
@@ -13,8 +13,8 @@ import { useLocation } from 'react-router-dom';
13
13
  import { Header, SideNav, ErrorBoundary, SelectorContainer, HEADER_TOGGLE_LABEL, Loader, Banner } from './components';
14
14
  import { AppRouter } from './routes';
15
15
  import { apixFilesHost } from './utils/lodeUtils';
16
- import { useSettingActions, useSettingStoreState, useLodeActions, useLodesStoreState, useSpecActions, useSpecStoreState, selectSpecs, selectCurrentSpec } from './state';
17
- import { getSpecKey, diffPath } from './utils';
16
+ import { useSettingActions, useLodeActions, useLodesStoreState, useSpecActions, useSpecStoreState, selectSpecs, selectCurrentSpec, useSettingStoreState } from './state';
17
+ import { getSpecKey, findSdk, useGlobalStoreSync } from './utils';
18
18
  var BodyOverride = createGlobalStyle(_templateObject || (_templateObject = _taggedTemplateLiteral([" html { height: 100%; overflow: hidden; } "])));
19
19
  export var ApiExplorer = _ref => {
20
20
  var _location$pathname2;
@@ -25,7 +25,6 @@ export var ApiExplorer = _ref => {
25
25
  declarationsLodeUrl = "".concat(apixFilesHost, "/declarationsIndex.json"),
26
26
  headless = false
27
27
  } = _ref;
28
- useSettingStoreState();
29
28
  useLodesStoreState();
30
29
  var {
31
30
  working,
@@ -37,13 +36,19 @@ export var ApiExplorer = _ref => {
37
36
  initLodesAction
38
37
  } = useLodeActions();
39
38
  var {
40
- initSettingsAction
39
+ initialized
40
+ } = useSettingStoreState();
41
+ var {
42
+ initSettingsAction,
43
+ setSearchPatternAction,
44
+ setSdkLanguageAction
41
45
  } = useSettingActions();
42
46
  var {
43
47
  initSpecsAction,
44
48
  setCurrentSpecAction
45
49
  } = useSpecActions();
46
50
  var location = useLocation();
51
+ useGlobalStoreSync();
47
52
  var [hasNavigation, setHasNavigation] = useState(true);
48
53
 
49
54
  var toggleNavigation = target => setHasNavigation(target || !hasNavigation);
@@ -71,12 +76,27 @@ export var ApiExplorer = _ref => {
71
76
 
72
77
  var maybeSpec = (_location$pathname = location.pathname) === null || _location$pathname === void 0 ? void 0 : _location$pathname.split('/')[1];
73
78
 
74
- if (spec && maybeSpec && maybeSpec !== diffPath && maybeSpec !== spec.key) {
79
+ if (spec && maybeSpec && maybeSpec !== spec.key) {
75
80
  setCurrentSpecAction({
76
81
  currentSpecKey: maybeSpec
77
82
  });
78
83
  }
79
84
  }, [location.pathname, spec]);
85
+ useEffect(() => {
86
+ if (!initialized) return;
87
+ var searchParams = new URLSearchParams(location.search);
88
+ var searchPattern = searchParams.get('s') || '';
89
+ var sdkParam = searchParams.get('sdk') || 'all';
90
+ var {
91
+ language: sdkLanguage
92
+ } = findSdk(sdkParam);
93
+ setSearchPatternAction({
94
+ searchPattern
95
+ });
96
+ setSdkLanguageAction({
97
+ sdkLanguage
98
+ });
99
+ }, [location.search]);
80
100
  useEffect(() => {
81
101
  if (headless) {
82
102
  window.addEventListener('message', hasNavigationToggle);
@@ -91,7 +111,7 @@ export var ApiExplorer = _ref => {
91
111
  var themeOverrides = adaptor.themeOverrides();
92
112
  var neededSpec = (_location$pathname2 = location.pathname) === null || _location$pathname2 === void 0 ? void 0 : _location$pathname2.split('/')[1];
93
113
 
94
- if (!neededSpec || neededSpec === diffPath) {
114
+ if (!neededSpec) {
95
115
  neededSpec = spec === null || spec === void 0 ? void 0 : spec.key;
96
116
  }
97
117
 
@@ -149,7 +169,6 @@ export var ApiExplorer = _ref => {
149
169
  })), React.createElement(AppRouter, {
150
170
  specKey: spec.key,
151
171
  api: spec.api,
152
- specs: specs,
153
172
  toggleNavigation: toggleNavigation
154
173
  }))))), !headless && React.createElement(BodyOverride, null));
155
174
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ApiExplorer.tsx"],"names":["React","useState","useEffect","useCallback","styled","createGlobalStyle","Aside","ComponentsProvider","Divider","Heading","IconButton","Layout","Page","Space","FirstPage","LastPage","registerEnvAdaptor","unregisterEnvAdaptor","useSelector","useLocation","Header","SideNav","ErrorBoundary","SelectorContainer","HEADER_TOGGLE_LABEL","Loader","Banner","AppRouter","apixFilesHost","useSettingActions","useSettingStoreState","useLodeActions","useLodesStoreState","useSpecActions","useSpecStoreState","selectSpecs","selectCurrentSpec","getSpecKey","diffPath","BodyOverride","ApiExplorer","adaptor","examplesLodeUrl","declarationsLodeUrl","headless","working","description","specs","spec","initLodesAction","initSettingsAction","initSpecsAction","setCurrentSpecAction","location","hasNavigation","setHasNavigation","toggleNavigation","target","hasNavigationToggle","e","origin","window","data","action","currentHasNavigation","specKey","maybeSpec","pathname","split","key","currentSpecKey","addEventListener","removeEventListener","themeOverrides","neededSpec","loadGoogleFonts","themeCustomizations","logError","bind","overflow","api","AsideBorder","isOpen"],"mappings":"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","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type { FC } from 'react'\nimport React, { useState, useEffect, useCallback } from 'react'\nimport styled, { createGlobalStyle } from 'styled-components'\nimport {\n Aside,\n ComponentsProvider,\n Divider,\n Heading,\n IconButton,\n Layout,\n Page,\n Space,\n} from '@looker/components'\nimport { FirstPage } from '@styled-icons/material/FirstPage'\nimport { LastPage } from '@styled-icons/material/LastPage'\nimport {\n registerEnvAdaptor,\n unregisterEnvAdaptor,\n} from '@looker/extension-utils'\nimport { useSelector } from 'react-redux'\nimport { useLocation } from 'react-router-dom'\n\nimport type { IApixAdaptor } from './utils'\nimport {\n Header,\n SideNav,\n ErrorBoundary,\n SelectorContainer,\n HEADER_TOGGLE_LABEL,\n Loader,\n Banner,\n} from './components'\nimport { AppRouter } from './routes'\nimport { apixFilesHost } from './utils/lodeUtils'\nimport {\n useSettingActions,\n useSettingStoreState,\n useLodeActions,\n useLodesStoreState,\n useSpecActions,\n useSpecStoreState,\n selectSpecs,\n selectCurrentSpec,\n} from './state'\nimport { getSpecKey, diffPath } from './utils'\n\nexport interface ApiExplorerProps {\n adaptor: IApixAdaptor\n examplesLodeUrl?: string\n declarationsLodeUrl?: string\n headless?: boolean\n}\n\nconst BodyOverride = createGlobalStyle` html { height: 100%; overflow: hidden; } `\n\nexport const ApiExplorer: FC<ApiExplorerProps> = ({\n adaptor,\n examplesLodeUrl = 'https://raw.githubusercontent.com/looker-open-source/sdk-codegen/main/examplesIndex.json',\n declarationsLodeUrl = `${apixFilesHost}/declarationsIndex.json`,\n headless = false,\n}) => {\n useSettingStoreState()\n useLodesStoreState()\n const { working, description } = useSpecStoreState()\n const specs = useSelector(selectSpecs)\n const spec = useSelector(selectCurrentSpec)\n const { initLodesAction } = useLodeActions()\n const { initSettingsAction } = useSettingActions()\n const { initSpecsAction, setCurrentSpecAction } = useSpecActions()\n\n const location = useLocation()\n const [hasNavigation, setHasNavigation] = useState(true)\n const toggleNavigation = (target?: boolean) =>\n setHasNavigation(target || !hasNavigation)\n\n const hasNavigationToggle = useCallback((e: MessageEvent<any>) => {\n if (e.origin === window.origin && e.data.action === 'toggle_sidebar') {\n setHasNavigation((currentHasNavigation) => !currentHasNavigation)\n }\n }, [])\n\n registerEnvAdaptor(adaptor)\n\n useEffect(() => {\n initSettingsAction()\n initLodesAction({ examplesLodeUrl, declarationsLodeUrl })\n\n const specKey = getSpecKey(location)\n initSpecsAction({ specKey })\n return () => unregisterEnvAdaptor()\n }, [])\n\n useEffect(() => {\n const maybeSpec = location.pathname?.split('/')[1]\n if (spec && maybeSpec && maybeSpec !== diffPath && maybeSpec !== spec.key) {\n setCurrentSpecAction({ currentSpecKey: maybeSpec })\n }\n }, [location.pathname, spec])\n\n useEffect(() => {\n if (headless) {\n window.addEventListener('message', hasNavigationToggle)\n }\n return () => {\n if (headless) {\n window.removeEventListener('message', hasNavigationToggle)\n }\n }\n }, [headless, hasNavigationToggle])\n\n const themeOverrides = adaptor.themeOverrides()\n\n let neededSpec = location.pathname?.split('/')[1]\n if (!neededSpec || neededSpec === diffPath) {\n neededSpec = spec?.key\n }\n\n return (\n <>\n <ComponentsProvider\n loadGoogleFonts={themeOverrides.loadGoogleFonts}\n themeCustomizations={themeOverrides.themeCustomizations}\n >\n {working || !neededSpec || neededSpec !== spec.key ? (\n <Loader message={description} themeOverrides={themeOverrides} />\n ) : (\n <ErrorBoundary logError={adaptor.logError.bind(adaptor)}>\n <Banner adaptor={adaptor} specs={specs} />\n <Page style={{ overflow: 'hidden' }}>\n {!headless && (\n <Header spec={spec} toggleNavigation={toggleNavigation} />\n )}\n <Layout hasAside height=\"100%\">\n <AsideBorder\n borderRight\n isOpen={hasNavigation}\n headless={headless}\n >\n {headless && (\n <>\n <Space\n alignItems=\"center\"\n py=\"u3\"\n px={hasNavigation ? 'u5' : '0'}\n justifyContent={\n hasNavigation ? 'space-between' : 'center'\n }\n >\n {hasNavigation && (\n <Heading\n as=\"h2\"\n fontSize=\"xsmall\"\n fontWeight=\"bold\"\n color=\"text2\"\n >\n API DOCUMENTATION\n </Heading>\n )}\n <IconButton\n size=\"xsmall\"\n shape=\"round\"\n icon={hasNavigation ? <FirstPage /> : <LastPage />}\n label={HEADER_TOGGLE_LABEL}\n onClick={() => toggleNavigation()}\n />\n </Space>\n {hasNavigation && (\n <>\n <Divider mb=\"u3\" appearance=\"light\" />\n <SelectorContainer\n spec={spec}\n ml=\"large\"\n mr=\"large\"\n />\n </>\n )}\n </>\n )}\n {hasNavigation && <SideNav headless={headless} spec={spec} />}\n </AsideBorder>\n <AppRouter\n specKey={spec.key}\n api={spec.api!}\n specs={specs}\n toggleNavigation={toggleNavigation}\n />\n </Layout>\n </Page>\n </ErrorBoundary>\n )}\n </ComponentsProvider>\n {!headless && <BodyOverride />}\n </>\n )\n}\n\nconst AsideBorder = styled(Aside)<{\n isOpen: boolean\n headless: boolean\n}>`\n width: ${({ isOpen, headless }) =>\n isOpen ? '20rem' : headless ? '2.75rem' : '0rem'};\n`\n"],"file":"ApiExplorer.js"}
1
+ {"version":3,"sources":["../../src/ApiExplorer.tsx"],"names":["React","useState","useEffect","useCallback","styled","createGlobalStyle","Aside","ComponentsProvider","Divider","Heading","IconButton","Layout","Page","Space","FirstPage","LastPage","registerEnvAdaptor","unregisterEnvAdaptor","useSelector","useLocation","Header","SideNav","ErrorBoundary","SelectorContainer","HEADER_TOGGLE_LABEL","Loader","Banner","AppRouter","apixFilesHost","useSettingActions","useLodeActions","useLodesStoreState","useSpecActions","useSpecStoreState","selectSpecs","selectCurrentSpec","useSettingStoreState","getSpecKey","findSdk","useGlobalStoreSync","BodyOverride","ApiExplorer","adaptor","examplesLodeUrl","declarationsLodeUrl","headless","working","description","specs","spec","initLodesAction","initialized","initSettingsAction","setSearchPatternAction","setSdkLanguageAction","initSpecsAction","setCurrentSpecAction","location","hasNavigation","setHasNavigation","toggleNavigation","target","hasNavigationToggle","e","origin","window","data","action","currentHasNavigation","specKey","maybeSpec","pathname","split","key","currentSpecKey","searchParams","URLSearchParams","search","searchPattern","get","sdkParam","language","sdkLanguage","addEventListener","removeEventListener","themeOverrides","neededSpec","loadGoogleFonts","themeCustomizations","logError","bind","overflow","api","AsideBorder","isOpen"],"mappings":"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","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type { FC } from 'react'\nimport React, { useState, useEffect, useCallback } from 'react'\nimport styled, { createGlobalStyle } from 'styled-components'\nimport {\n Aside,\n ComponentsProvider,\n Divider,\n Heading,\n IconButton,\n Layout,\n Page,\n Space,\n} from '@looker/components'\nimport { FirstPage } from '@styled-icons/material/FirstPage'\nimport { LastPage } from '@styled-icons/material/LastPage'\nimport {\n registerEnvAdaptor,\n unregisterEnvAdaptor,\n} from '@looker/extension-utils'\nimport { useSelector } from 'react-redux'\nimport { useLocation } from 'react-router-dom'\n\nimport type { IApixAdaptor } from './utils'\nimport {\n Header,\n SideNav,\n ErrorBoundary,\n SelectorContainer,\n HEADER_TOGGLE_LABEL,\n Loader,\n Banner,\n} from './components'\nimport { AppRouter } from './routes'\nimport { apixFilesHost } from './utils/lodeUtils'\nimport {\n useSettingActions,\n useLodeActions,\n useLodesStoreState,\n useSpecActions,\n useSpecStoreState,\n selectSpecs,\n selectCurrentSpec,\n useSettingStoreState,\n} from './state'\nimport { getSpecKey, findSdk, useGlobalStoreSync } from './utils'\n\nexport interface ApiExplorerProps {\n adaptor: IApixAdaptor\n examplesLodeUrl?: string\n declarationsLodeUrl?: string\n headless?: boolean\n}\n\nconst BodyOverride = createGlobalStyle` html { height: 100%; overflow: hidden; } `\n\nexport const ApiExplorer: FC<ApiExplorerProps> = ({\n adaptor,\n examplesLodeUrl = 'https://raw.githubusercontent.com/looker-open-source/sdk-codegen/main/examplesIndex.json',\n declarationsLodeUrl = `${apixFilesHost}/declarationsIndex.json`,\n headless = false,\n}) => {\n useLodesStoreState()\n const { working, description } = useSpecStoreState()\n const specs = useSelector(selectSpecs)\n const spec = useSelector(selectCurrentSpec)\n const { initLodesAction } = useLodeActions()\n const { initialized } = useSettingStoreState()\n const { initSettingsAction, setSearchPatternAction, setSdkLanguageAction } =\n useSettingActions()\n const { initSpecsAction, setCurrentSpecAction } = useSpecActions()\n\n const location = useLocation()\n useGlobalStoreSync()\n const [hasNavigation, setHasNavigation] = useState(true)\n const toggleNavigation = (target?: boolean) =>\n setHasNavigation(target || !hasNavigation)\n\n const hasNavigationToggle = useCallback((e: MessageEvent<any>) => {\n if (e.origin === window.origin && e.data.action === 'toggle_sidebar') {\n setHasNavigation((currentHasNavigation) => !currentHasNavigation)\n }\n }, [])\n\n registerEnvAdaptor(adaptor)\n\n useEffect(() => {\n initSettingsAction()\n initLodesAction({ examplesLodeUrl, declarationsLodeUrl })\n\n const specKey = getSpecKey(location)\n initSpecsAction({ specKey })\n return () => unregisterEnvAdaptor()\n }, [])\n\n useEffect(() => {\n const maybeSpec = location.pathname?.split('/')[1]\n if (spec && maybeSpec && maybeSpec !== spec.key) {\n setCurrentSpecAction({ currentSpecKey: maybeSpec })\n }\n }, [location.pathname, spec])\n\n useEffect(() => {\n if (!initialized) return\n const searchParams = new URLSearchParams(location.search)\n const searchPattern = searchParams.get('s') || ''\n const sdkParam = searchParams.get('sdk') || 'all'\n const { language: sdkLanguage } = findSdk(sdkParam)\n setSearchPatternAction({ searchPattern })\n setSdkLanguageAction({ sdkLanguage })\n }, [location.search])\n\n useEffect(() => {\n if (headless) {\n window.addEventListener('message', hasNavigationToggle)\n }\n return () => {\n if (headless) {\n window.removeEventListener('message', hasNavigationToggle)\n }\n }\n }, [headless, hasNavigationToggle])\n\n const themeOverrides = adaptor.themeOverrides()\n\n let neededSpec = location.pathname?.split('/')[1]\n if (!neededSpec) {\n neededSpec = spec?.key\n }\n\n return (\n <>\n <ComponentsProvider\n loadGoogleFonts={themeOverrides.loadGoogleFonts}\n themeCustomizations={themeOverrides.themeCustomizations}\n >\n {working || !neededSpec || neededSpec !== spec.key ? (\n <Loader message={description} themeOverrides={themeOverrides} />\n ) : (\n <ErrorBoundary logError={adaptor.logError.bind(adaptor)}>\n <Banner adaptor={adaptor} specs={specs} />\n <Page style={{ overflow: 'hidden' }}>\n {!headless && (\n <Header spec={spec} toggleNavigation={toggleNavigation} />\n )}\n <Layout hasAside height=\"100%\">\n <AsideBorder\n borderRight\n isOpen={hasNavigation}\n headless={headless}\n >\n {headless && (\n <>\n <Space\n alignItems=\"center\"\n py=\"u3\"\n px={hasNavigation ? 'u5' : '0'}\n justifyContent={\n hasNavigation ? 'space-between' : 'center'\n }\n >\n {hasNavigation && (\n <Heading\n as=\"h2\"\n fontSize=\"xsmall\"\n fontWeight=\"bold\"\n color=\"text2\"\n >\n API DOCUMENTATION\n </Heading>\n )}\n <IconButton\n size=\"xsmall\"\n shape=\"round\"\n icon={hasNavigation ? <FirstPage /> : <LastPage />}\n label={HEADER_TOGGLE_LABEL}\n onClick={() => toggleNavigation()}\n />\n </Space>\n {hasNavigation && (\n <>\n <Divider mb=\"u3\" appearance=\"light\" />\n <SelectorContainer\n spec={spec}\n ml=\"large\"\n mr=\"large\"\n />\n </>\n )}\n </>\n )}\n {hasNavigation && <SideNav headless={headless} spec={spec} />}\n </AsideBorder>\n <AppRouter\n specKey={spec.key}\n api={spec.api!}\n toggleNavigation={toggleNavigation}\n />\n </Layout>\n </Page>\n </ErrorBoundary>\n )}\n </ComponentsProvider>\n {!headless && <BodyOverride />}\n </>\n )\n}\n\nconst AsideBorder = styled(Aside)<{\n isOpen: boolean\n headless: boolean\n}>`\n width: ${({ isOpen, headless }) =>\n isOpen ? '20rem' : headless ? '2.75rem' : '0rem'};\n`\n"],"file":"ApiExplorer.js"}
@@ -1,9 +1,9 @@
1
1
  import React from 'react';
2
- import { useHistory } from 'react-router-dom';
3
2
  import { Markdown } from '@looker/code-editor';
4
3
  import { useSelector } from 'react-redux';
5
4
  import { getEnvAdaptor } from '@looker/extension-utils';
6
5
  import { selectSearchPattern } from '../../state';
6
+ import { useNavigation } from '../../utils';
7
7
  import { transformURL } from './utils';
8
8
  export var DocMarkdown = _ref => {
9
9
  var {
@@ -11,13 +11,15 @@ export var DocMarkdown = _ref => {
11
11
  specKey
12
12
  } = _ref;
13
13
  var searchPattern = useSelector(selectSearchPattern);
14
- var history = useHistory();
14
+ var {
15
+ navigate
16
+ } = useNavigation();
15
17
 
16
18
  var linkClickHandler = (pathname, url) => {
17
19
  if (pathname.startsWith("/".concat(specKey))) {
18
- history.push(pathname);
20
+ navigate(pathname);
19
21
  } else if (url.startsWith("/".concat(specKey))) {
20
- history.push(url);
22
+ navigate(url);
21
23
  } else if (url.startsWith('https://')) {
22
24
  var adaptor = getEnvAdaptor();
23
25
  adaptor.openBrowserWindow(url);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/DocMarkdown/DocMarkdown.tsx"],"names":["React","useHistory","Markdown","useSelector","getEnvAdaptor","selectSearchPattern","transformURL","DocMarkdown","source","specKey","searchPattern","history","linkClickHandler","pathname","url","startsWith","push","adaptor","openBrowserWindow","bind"],"mappings":"AA2BA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,UAAT,QAA2B,kBAA3B;AACA,SAASC,QAAT,QAAyB,qBAAzB;AACA,SAASC,WAAT,QAA4B,aAA5B;AACA,SAASC,aAAT,QAA8B,yBAA9B;AACA,SAASC,mBAAT,QAAoC,aAApC;AACA,SAASC,YAAT,QAA6B,SAA7B;AAOA,OAAO,IAAMC,WAAiC,GAAG,QAAyB;AAAA,MAAxB;AAAEC,IAAAA,MAAF;AAAUC,IAAAA;AAAV,GAAwB;AACxE,MAAMC,aAAa,GAAGP,WAAW,CAACE,mBAAD,CAAjC;AACA,MAAMM,OAAO,GAAGV,UAAU,EAA1B;;AAEA,MAAMW,gBAAgB,GAAG,CAACC,QAAD,EAAmBC,GAAnB,KAAmC;AAC1D,QAAID,QAAQ,CAACE,UAAT,YAAwBN,OAAxB,EAAJ,EAAwC;AACtCE,MAAAA,OAAO,CAACK,IAAR,CAAaH,QAAb;AACD,KAFD,MAEO,IAAIC,GAAG,CAACC,UAAJ,YAAmBN,OAAnB,EAAJ,EAAmC;AACxCE,MAAAA,OAAO,CAACK,IAAR,CAAaF,GAAb;AACD,KAFM,MAEA,IAAIA,GAAG,CAACC,UAAJ,CAAe,UAAf,CAAJ,EAAgC;AACrC,UAAME,OAAO,GAAGb,aAAa,EAA7B;AACAa,MAAAA,OAAO,CAACC,iBAAR,CAA0BJ,GAA1B;AACD;AACF,GATD;;AAUA,SACE,oBAAC,QAAD;AACE,IAAA,MAAM,EAAEN,MADV;AAEE,IAAA,OAAO,EAAEE,aAFX;AAGE,IAAA,gBAAgB,EAAEE,gBAHpB;AAIE,IAAA,gBAAgB,EAAEN,YAAY,CAACa,IAAb,CAAkB,IAAlB,EAAwBV,OAAxB;AAJpB,IADF;AAQD,CAtBM","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type { FC } from 'react'\nimport React from 'react'\nimport { useHistory } from 'react-router-dom'\nimport { Markdown } from '@looker/code-editor'\nimport { useSelector } from 'react-redux'\nimport { getEnvAdaptor } from '@looker/extension-utils'\nimport { selectSearchPattern } from '../../state'\nimport { transformURL } from './utils'\n\ninterface DocMarkdownProps {\n source: string\n specKey: string\n}\n\nexport const DocMarkdown: FC<DocMarkdownProps> = ({ source, specKey }) => {\n const searchPattern = useSelector(selectSearchPattern)\n const history = useHistory()\n\n const linkClickHandler = (pathname: string, url: string) => {\n if (pathname.startsWith(`/${specKey}`)) {\n history.push(pathname)\n } else if (url.startsWith(`/${specKey}`)) {\n history.push(url)\n } else if (url.startsWith('https://')) {\n const adaptor = getEnvAdaptor()\n adaptor.openBrowserWindow(url)\n }\n }\n return (\n <Markdown\n source={source}\n pattern={searchPattern}\n linkClickHandler={linkClickHandler}\n transformLinkUri={transformURL.bind(null, specKey)}\n />\n )\n}\n"],"file":"DocMarkdown.js"}
1
+ {"version":3,"sources":["../../../../src/components/DocMarkdown/DocMarkdown.tsx"],"names":["React","Markdown","useSelector","getEnvAdaptor","selectSearchPattern","useNavigation","transformURL","DocMarkdown","source","specKey","searchPattern","navigate","linkClickHandler","pathname","url","startsWith","adaptor","openBrowserWindow","bind"],"mappings":"AA2BA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,QAAT,QAAyB,qBAAzB;AACA,SAASC,WAAT,QAA4B,aAA5B;AACA,SAASC,aAAT,QAA8B,yBAA9B;AACA,SAASC,mBAAT,QAAoC,aAApC;AACA,SAASC,aAAT,QAA8B,aAA9B;AACA,SAASC,YAAT,QAA6B,SAA7B;AAOA,OAAO,IAAMC,WAAiC,GAAG,QAAyB;AAAA,MAAxB;AAAEC,IAAAA,MAAF;AAAUC,IAAAA;AAAV,GAAwB;AACxE,MAAMC,aAAa,GAAGR,WAAW,CAACE,mBAAD,CAAjC;AACA,MAAM;AAAEO,IAAAA;AAAF,MAAeN,aAAa,EAAlC;;AAEA,MAAMO,gBAAgB,GAAG,CAACC,QAAD,EAAmBC,GAAnB,KAAmC;AAC1D,QAAID,QAAQ,CAACE,UAAT,YAAwBN,OAAxB,EAAJ,EAAwC;AACtCE,MAAAA,QAAQ,CAACE,QAAD,CAAR;AACD,KAFD,MAEO,IAAIC,GAAG,CAACC,UAAJ,YAAmBN,OAAnB,EAAJ,EAAmC;AACxCE,MAAAA,QAAQ,CAACG,GAAD,CAAR;AACD,KAFM,MAEA,IAAIA,GAAG,CAACC,UAAJ,CAAe,UAAf,CAAJ,EAAgC;AACrC,UAAMC,OAAO,GAAGb,aAAa,EAA7B;AACAa,MAAAA,OAAO,CAACC,iBAAR,CAA0BH,GAA1B;AACD;AACF,GATD;;AAUA,SACE,oBAAC,QAAD;AACE,IAAA,MAAM,EAAEN,MADV;AAEE,IAAA,OAAO,EAAEE,aAFX;AAGE,IAAA,gBAAgB,EAAEE,gBAHpB;AAIE,IAAA,gBAAgB,EAAEN,YAAY,CAACY,IAAb,CAAkB,IAAlB,EAAwBT,OAAxB;AAJpB,IADF;AAQD,CAtBM","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type { FC } from 'react'\nimport React from 'react'\nimport { Markdown } from '@looker/code-editor'\nimport { useSelector } from 'react-redux'\nimport { getEnvAdaptor } from '@looker/extension-utils'\nimport { selectSearchPattern } from '../../state'\nimport { useNavigation } from '../../utils'\nimport { transformURL } from './utils'\n\ninterface DocMarkdownProps {\n source: string\n specKey: string\n}\n\nexport const DocMarkdown: FC<DocMarkdownProps> = ({ source, specKey }) => {\n const searchPattern = useSelector(selectSearchPattern)\n const { navigate } = useNavigation()\n\n const linkClickHandler = (pathname: string, url: string) => {\n if (pathname.startsWith(`/${specKey}`)) {\n navigate(pathname)\n } else if (url.startsWith(`/${specKey}`)) {\n navigate(url)\n } else if (url.startsWith('https://')) {\n const adaptor = getEnvAdaptor()\n adaptor.openBrowserWindow(url)\n }\n }\n return (\n <Markdown\n source={source}\n pattern={searchPattern}\n linkClickHandler={linkClickHandler}\n transformLinkUri={transformURL.bind(null, specKey)}\n />\n )\n}\n"],"file":"DocMarkdown.js"}
@@ -1,25 +1,20 @@
1
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
-
3
- import { Tab, TabList, TabPanel, TabPanels, useTabs } from '@looker/components';
4
1
  import React from 'react';
2
+ import { Tab2, Tabs2 } from '@looker/components';
5
3
  import { DocCode } from '../DocCode';
6
4
  export var DocDeclarations = _ref => {
7
5
  var {
8
6
  declarations
9
7
  } = _ref;
10
- var tabs = useTabs();
11
- return React.createElement(React.Fragment, null, React.createElement(TabList, tabs, Object.keys(declarations).map(language => React.createElement(Tab, {
12
- key: language
13
- }, language))), React.createElement(TabPanels, _extends({}, tabs, {
14
- pt: "0"
15
- }), Object.entries(declarations).map(_ref2 => {
8
+ return React.createElement(Tabs2, null, Object.entries(declarations).map(_ref2 => {
16
9
  var [language, code] = _ref2;
17
- return React.createElement(TabPanel, {
18
- key: language
10
+ return React.createElement(Tab2, {
11
+ key: language,
12
+ id: language,
13
+ label: language
19
14
  }, React.createElement(DocCode, {
20
- language: language,
21
- code: code
15
+ code: code,
16
+ language: language
22
17
  }));
23
- })));
18
+ }));
24
19
  };
25
20
  //# sourceMappingURL=DocDeclarations.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/DocSDKs/DocDeclarations.tsx"],"names":["Tab","TabList","TabPanel","TabPanels","useTabs","React","DocCode","DocDeclarations","declarations","tabs","Object","keys","map","language","entries","code"],"mappings":";;AAyBA,SAASA,GAAT,EAAcC,OAAd,EAAuBC,QAAvB,EAAiCC,SAAjC,EAA4CC,OAA5C,QAA2D,oBAA3D;AAGA,OAAOC,KAAP,MAAkB,OAAlB;AACA,SAASC,OAAT,QAAwB,YAAxB;AAUA,OAAO,IAAMC,eAAyC,GAAG,QAAsB;AAAA,MAArB;AAAEC,IAAAA;AAAF,GAAqB;AAC7E,MAAMC,IAAI,GAAGL,OAAO,EAApB;AAEA,SACE,0CACE,oBAAC,OAAD,EAAaK,IAAb,EACGC,MAAM,CAACC,IAAP,CAAYH,YAAZ,EAA0BI,GAA1B,CAA+BC,QAAD,IAC7B,oBAAC,GAAD;AAAK,IAAA,GAAG,EAAEA;AAAV,KAAqBA,QAArB,CADD,CADH,CADF,EAME,oBAAC,SAAD,eAAeJ,IAAf;AAAqB,IAAA,EAAE,EAAC;AAAxB,MACGC,MAAM,CAACI,OAAP,CAAeN,YAAf,EAA6BI,GAA7B,CAAiC;AAAA,QAAC,CAACC,QAAD,EAAWE,IAAX,CAAD;AAAA,WAChC,oBAAC,QAAD;AAAU,MAAA,GAAG,EAAEF;AAAf,OACE,oBAAC,OAAD;AAAS,MAAA,QAAQ,EAAEA,QAAnB;AAA6B,MAAA,IAAI,EAAEE;AAAnC,MADF,CADgC;AAAA,GAAjC,CADH,CANF,CADF;AAgBD,CAnBM","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\nimport { Tab, TabList, TabPanel, TabPanels, useTabs } from '@looker/components'\nimport type { KeyedCollection } from '@looker/sdk-codegen'\nimport type { FC } from 'react'\nimport React from 'react'\nimport { DocCode } from '../DocCode'\n\ninterface DocDeclarationsProps {\n declarations: KeyedCollection<string>\n}\n\n/**\n * Renders all provided declarations\n * @param declarations A collection of SDK declarations in various languages\n */\nexport const DocDeclarations: FC<DocDeclarationsProps> = ({ declarations }) => {\n const tabs = useTabs()\n\n return (\n <>\n <TabList {...tabs}>\n {Object.keys(declarations).map((language) => (\n <Tab key={language}>{language}</Tab>\n ))}\n </TabList>\n <TabPanels {...tabs} pt=\"0\">\n {Object.entries(declarations).map(([language, code]) => (\n <TabPanel key={language}>\n <DocCode language={language} code={code} />\n </TabPanel>\n ))}\n </TabPanels>\n </>\n )\n}\n"],"file":"DocDeclarations.js"}
1
+ {"version":3,"sources":["../../../../src/components/DocSDKs/DocDeclarations.tsx"],"names":["React","Tab2","Tabs2","DocCode","DocDeclarations","declarations","Object","entries","map","language","code"],"mappings":"AAyBA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,IAAT,EAAeC,KAAf,QAA4B,oBAA5B;AAGA,SAASC,OAAT,QAAwB,YAAxB;AAUA,OAAO,IAAMC,eAAyC,GAAG;AAAA,MAAC;AAAEC,IAAAA;AAAF,GAAD;AAAA,SACvD,oBAAC,KAAD,QACGC,MAAM,CAACC,OAAP,CAAeF,YAAf,EAA6BG,GAA7B,CAAiC;AAAA,QAAC,CAACC,QAAD,EAAWC,IAAX,CAAD;AAAA,WAChC,oBAAC,IAAD;AAAM,MAAA,GAAG,EAAED,QAAX;AAAqB,MAAA,EAAE,EAAEA,QAAzB;AAAmC,MAAA,KAAK,EAAEA;AAA1C,OACE,oBAAC,OAAD;AAAS,MAAA,IAAI,EAAEC,IAAf;AAAqB,MAAA,QAAQ,EAAED;AAA/B,MADF,CADgC;AAAA,GAAjC,CADH,CADuD;AAAA,CAAlD","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\nimport React from 'react'\nimport { Tab2, Tabs2 } from '@looker/components'\nimport type { KeyedCollection } from '@looker/sdk-codegen'\nimport type { FC } from 'react'\nimport { DocCode } from '../DocCode'\n\ninterface DocDeclarationsProps {\n declarations: KeyedCollection<string>\n}\n\n/**\n * Renders all provided declarations\n * @param declarations A collection of SDK declarations in various languages\n */\nexport const DocDeclarations: FC<DocDeclarationsProps> = ({ declarations }) => (\n <Tabs2>\n {Object.entries(declarations).map(([language, code]) => (\n <Tab2 key={language} id={language} label={language}>\n <DocCode code={code} language={language} />\n </Tab2>\n ))}\n </Tabs2>\n)\n"],"file":"DocDeclarations.js"}
@@ -1,14 +1,17 @@
1
1
  import React from 'react';
2
2
  import { Select } from '@looker/components';
3
- import { useHistory, useLocation } from 'react-router-dom';
3
+ import { useLocation } from 'react-router-dom';
4
4
  import { useSelector } from 'react-redux';
5
+ import { useNavigation } from '../../utils';
5
6
  import { selectSpecs } from '../../state';
6
7
  export var ApiSpecSelector = _ref => {
7
8
  var {
8
9
  spec
9
10
  } = _ref;
10
- var history = useHistory();
11
11
  var location = useLocation();
12
+ var {
13
+ navigate
14
+ } = useNavigation();
12
15
  var specs = useSelector(selectSpecs);
13
16
  var options = Object.entries(specs).map(_ref2 => {
14
17
  var [key, spec] = _ref2;
@@ -21,7 +24,7 @@ export var ApiSpecSelector = _ref => {
21
24
 
22
25
  var handleChange = specKey => {
23
26
  var matchPath = location.pathname.replace("/".concat(spec.key), "/".concat(specKey));
24
- history.push(matchPath);
27
+ navigate(matchPath);
25
28
  };
26
29
 
27
30
  return React.createElement(Select, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/SelectorContainer/ApiSpecSelector.tsx"],"names":["React","Select","useHistory","useLocation","useSelector","selectSpecs","ApiSpecSelector","spec","history","location","specs","options","Object","entries","map","key","value","label","description","status","handleChange","specKey","matchPath","pathname","replace","push"],"mappings":"AA2BA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,MAAT,QAAuB,oBAAvB;AACA,SAASC,UAAT,EAAqBC,WAArB,QAAwC,kBAAxC;AAEA,SAASC,WAAT,QAA4B,aAA5B;AAEA,SAASC,WAAT,QAA4B,aAA5B;AAMA,OAAO,IAAMC,eAAyC,GAAG,QAAc;AAAA,MAAb;AAAEC,IAAAA;AAAF,GAAa;AACrE,MAAMC,OAAO,GAAGN,UAAU,EAA1B;AACA,MAAMO,QAAQ,GAAGN,WAAW,EAA5B;AACA,MAAMO,KAAK,GAAGN,WAAW,CAACC,WAAD,CAAzB;AACA,MAAMM,OAAO,GAAGC,MAAM,CAACC,OAAP,CAAeH,KAAf,EAAsBI,GAAtB,CAA0B;AAAA,QAAC,CAACC,GAAD,EAAMR,IAAN,CAAD;AAAA,WAAkB;AAC1DS,MAAAA,KAAK,EAAED,GADmD;AAE1DE,MAAAA,KAAK,EAAEF,GAFmD;AAG1DG,MAAAA,WAAW,EAAEX,IAAI,CAACY;AAHwC,KAAlB;AAAA,GAA1B,CAAhB;;AAMA,MAAMC,YAAY,GAAIC,OAAD,IAAqB;AACxC,QAAMC,SAAS,GAAGb,QAAQ,CAACc,QAAT,CAAkBC,OAAlB,YAA8BjB,IAAI,CAACQ,GAAnC,cAA8CM,OAA9C,EAAlB;AACAb,IAAAA,OAAO,CAACiB,IAAR,CAAaH,SAAb;AACD,GAHD;;AAKA,SACE,oBAAC,MAAD;AACE,IAAA,KAAK,EAAC,OADR;AAEE,kBAAW,eAFb;AAGE,IAAA,YAAY,EAAEf,IAAI,CAACQ,GAHrB;AAIE,IAAA,OAAO,EAAEJ,OAJX;AAKE,IAAA,QAAQ,EAAES;AALZ,IADF;AASD,CAxBM","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type { FC } from 'react'\nimport React from 'react'\nimport { Select } from '@looker/components'\nimport { useHistory, useLocation } from 'react-router-dom'\nimport type { SpecItem } from '@looker/sdk-codegen'\nimport { useSelector } from 'react-redux'\n\nimport { selectSpecs } from '../../state'\n\ninterface ApiSpecSelectorProps {\n spec: SpecItem\n}\n\nexport const ApiSpecSelector: FC<ApiSpecSelectorProps> = ({ spec }) => {\n const history = useHistory()\n const location = useLocation()\n const specs = useSelector(selectSpecs)\n const options = Object.entries(specs).map(([key, spec]) => ({\n value: key,\n label: key,\n description: spec.status,\n }))\n\n const handleChange = (specKey: string) => {\n const matchPath = location.pathname.replace(`/${spec.key}`, `/${specKey}`)\n history.push(matchPath)\n }\n\n return (\n <Select\n width=\"10rem\"\n aria-label=\"spec selector\"\n defaultValue={spec.key}\n options={options}\n onChange={handleChange}\n />\n )\n}\n"],"file":"ApiSpecSelector.js"}
1
+ {"version":3,"sources":["../../../../src/components/SelectorContainer/ApiSpecSelector.tsx"],"names":["React","Select","useLocation","useSelector","useNavigation","selectSpecs","ApiSpecSelector","spec","location","navigate","specs","options","Object","entries","map","key","value","label","description","status","handleChange","specKey","matchPath","pathname","replace"],"mappings":"AA2BA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,MAAT,QAAuB,oBAAvB;AACA,SAASC,WAAT,QAA4B,kBAA5B;AAEA,SAASC,WAAT,QAA4B,aAA5B;AACA,SAASC,aAAT,QAA8B,aAA9B;AAEA,SAASC,WAAT,QAA4B,aAA5B;AAMA,OAAO,IAAMC,eAAyC,GAAG,QAAc;AAAA,MAAb;AAAEC,IAAAA;AAAF,GAAa;AACrE,MAAMC,QAAQ,GAAGN,WAAW,EAA5B;AACA,MAAM;AAAEO,IAAAA;AAAF,MAAeL,aAAa,EAAlC;AACA,MAAMM,KAAK,GAAGP,WAAW,CAACE,WAAD,CAAzB;AACA,MAAMM,OAAO,GAAGC,MAAM,CAACC,OAAP,CAAeH,KAAf,EAAsBI,GAAtB,CAA0B;AAAA,QAAC,CAACC,GAAD,EAAMR,IAAN,CAAD;AAAA,WAAkB;AAC1DS,MAAAA,KAAK,EAAED,GADmD;AAE1DE,MAAAA,KAAK,EAAEF,GAFmD;AAG1DG,MAAAA,WAAW,EAAEX,IAAI,CAACY;AAHwC,KAAlB;AAAA,GAA1B,CAAhB;;AAMA,MAAMC,YAAY,GAAIC,OAAD,IAAqB;AACxC,QAAMC,SAAS,GAAGd,QAAQ,CAACe,QAAT,CAAkBC,OAAlB,YAA8BjB,IAAI,CAACQ,GAAnC,cAA8CM,OAA9C,EAAlB;AACAZ,IAAAA,QAAQ,CAACa,SAAD,CAAR;AACD,GAHD;;AAKA,SACE,oBAAC,MAAD;AACE,IAAA,KAAK,EAAC,OADR;AAEE,kBAAW,eAFb;AAGE,IAAA,YAAY,EAAEf,IAAI,CAACQ,GAHrB;AAIE,IAAA,OAAO,EAAEJ,OAJX;AAKE,IAAA,QAAQ,EAAES;AALZ,IADF;AASD,CAxBM","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type { FC } from 'react'\nimport React from 'react'\nimport { Select } from '@looker/components'\nimport { useLocation } from 'react-router-dom'\nimport type { SpecItem } from '@looker/sdk-codegen'\nimport { useSelector } from 'react-redux'\nimport { useNavigation } from '../../utils'\n\nimport { selectSpecs } from '../../state'\n\ninterface ApiSpecSelectorProps {\n spec: SpecItem\n}\n\nexport const ApiSpecSelector: FC<ApiSpecSelectorProps> = ({ spec }) => {\n const location = useLocation()\n const { navigate } = useNavigation()\n const specs = useSelector(selectSpecs)\n const options = Object.entries(specs).map(([key, spec]) => ({\n value: key,\n label: key,\n description: spec.status,\n }))\n\n const handleChange = (specKey: string) => {\n const matchPath = location.pathname.replace(`/${spec.key}`, `/${specKey}`)\n navigate(matchPath)\n }\n\n return (\n <Select\n width=\"10rem\"\n aria-label=\"spec selector\"\n defaultValue={spec.key}\n options={options}\n onChange={handleChange}\n />\n )\n}\n"],"file":"ApiSpecSelector.js"}
@@ -1,33 +1,31 @@
1
- import React from 'react';
2
- import { codeGenerators } from '@looker/sdk-codegen';
1
+ import React, { useEffect, useState } from 'react';
3
2
  import { Select } from '@looker/components';
4
3
  import { useSelector } from 'react-redux';
5
- import { useSettingActions, selectSdkLanguage } from '../../state';
4
+ import { selectSdkLanguage } from '../../state';
5
+ import { allAlias, useNavigation } from '../../utils';
6
+ import { allSdkLanguageOptions } from './utils';
6
7
  export var SdkLanguageSelector = () => {
7
8
  var {
8
- setSdkLanguageAction
9
- } = useSettingActions();
9
+ navigate
10
+ } = useNavigation();
10
11
  var selectedSdkLanguage = useSelector(selectSdkLanguage);
11
- var allSdkLanguages = codeGenerators.map(gen => ({
12
- value: gen.language
13
- }));
14
- allSdkLanguages.push({
15
- options: [{
16
- value: 'All'
17
- }]
18
- });
12
+ var [language, setLanguage] = useState(selectedSdkLanguage);
13
+ var options = allSdkLanguageOptions();
19
14
 
20
- var handleChange = language => {
21
- setSdkLanguageAction({
22
- sdkLanguage: language
15
+ var handleChange = alias => {
16
+ navigate(location.pathname, {
17
+ sdk: alias === allAlias ? null : alias
23
18
  });
24
19
  };
25
20
 
21
+ useEffect(() => {
22
+ setLanguage(selectedSdkLanguage);
23
+ }, [selectedSdkLanguage]);
26
24
  return React.createElement(Select, {
27
25
  "aria-label": "sdk language selector",
28
- value: selectedSdkLanguage,
26
+ value: language,
29
27
  onChange: handleChange,
30
- options: allSdkLanguages
28
+ options: options
31
29
  });
32
30
  };
33
31
  //# sourceMappingURL=SdkLanguageSelector.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/SelectorContainer/SdkLanguageSelector.tsx"],"names":["React","codeGenerators","Select","useSelector","useSettingActions","selectSdkLanguage","SdkLanguageSelector","setSdkLanguageAction","selectedSdkLanguage","allSdkLanguages","map","gen","value","language","push","options","handleChange","sdkLanguage"],"mappings":"AA0BA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,cAAT,QAA+B,qBAA/B;AACA,SAASC,MAAT,QAAuB,oBAAvB;AACA,SAASC,WAAT,QAA4B,aAA5B;AAGA,SAASC,iBAAT,EAA4BC,iBAA5B,QAAqD,aAArD;AAKA,OAAO,IAAMC,mBAAuB,GAAG,MAAM;AAC3C,MAAM;AAAEC,IAAAA;AAAF,MAA2BH,iBAAiB,EAAlD;AACA,MAAMI,mBAAmB,GAAGL,WAAW,CAACE,iBAAD,CAAvC;AAEA,MAAMI,eAAoC,GAAGR,cAAc,CAACS,GAAf,CAAoBC,GAAD,KAAU;AACxEC,IAAAA,KAAK,EAAED,GAAG,CAACE;AAD6D,GAAV,CAAnB,CAA7C;AAIAJ,EAAAA,eAAe,CAACK,IAAhB,CAAqB;AACnBC,IAAAA,OAAO,EAAE,CACP;AACEH,MAAAA,KAAK,EAAE;AADT,KADO;AADU,GAArB;;AAQA,MAAMI,YAAY,GAAIH,QAAD,IAAsB;AACzCN,IAAAA,oBAAoB,CAAC;AAAEU,MAAAA,WAAW,EAAEJ;AAAf,KAAD,CAApB;AACD,GAFD;;AAIA,SACE,oBAAC,MAAD;AACE,kBAAW,uBADb;AAEE,IAAA,KAAK,EAAEL,mBAFT;AAGE,IAAA,QAAQ,EAAEQ,YAHZ;AAIE,IAAA,OAAO,EAAEP;AAJX,IADF;AAQD,CA5BM","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\nimport type { FC } from 'react'\nimport React from 'react'\nimport { codeGenerators } from '@looker/sdk-codegen'\nimport { Select } from '@looker/components'\nimport { useSelector } from 'react-redux'\nimport type { SelectOptionProps } from '@looker/components'\n\nimport { useSettingActions, selectSdkLanguage } from '../../state'\n\n/**\n * Allows the user to select their preferred SDK language\n */\nexport const SdkLanguageSelector: FC = () => {\n const { setSdkLanguageAction } = useSettingActions()\n const selectedSdkLanguage = useSelector(selectSdkLanguage)\n\n const allSdkLanguages: SelectOptionProps[] = codeGenerators.map((gen) => ({\n value: gen.language,\n }))\n\n allSdkLanguages.push({\n options: [\n {\n value: 'All',\n },\n ],\n })\n\n const handleChange = (language: string) => {\n setSdkLanguageAction({ sdkLanguage: language })\n }\n\n return (\n <Select\n aria-label=\"sdk language selector\"\n value={selectedSdkLanguage}\n onChange={handleChange}\n options={allSdkLanguages}\n />\n )\n}\n"],"file":"SdkLanguageSelector.js"}
1
+ {"version":3,"sources":["../../../../src/components/SelectorContainer/SdkLanguageSelector.tsx"],"names":["React","useEffect","useState","Select","useSelector","selectSdkLanguage","allAlias","useNavigation","allSdkLanguageOptions","SdkLanguageSelector","navigate","selectedSdkLanguage","language","setLanguage","options","handleChange","alias","location","pathname","sdk"],"mappings":"AA0BA,OAAOA,KAAP,IAAgBC,SAAhB,EAA2BC,QAA3B,QAA2C,OAA3C;AACA,SAASC,MAAT,QAAuB,oBAAvB;AACA,SAASC,WAAT,QAA4B,aAA5B;AACA,SAASC,iBAAT,QAAkC,aAAlC;AACA,SAASC,QAAT,EAAmBC,aAAnB,QAAwC,aAAxC;AACA,SAASC,qBAAT,QAAsC,SAAtC;AAKA,OAAO,IAAMC,mBAAuB,GAAG,MAAM;AAC3C,MAAM;AAAEC,IAAAA;AAAF,MAAeH,aAAa,EAAlC;AACA,MAAMI,mBAAmB,GAAGP,WAAW,CAACC,iBAAD,CAAvC;AACA,MAAM,CAACO,QAAD,EAAWC,WAAX,IAA0BX,QAAQ,CAACS,mBAAD,CAAxC;AACA,MAAMG,OAAO,GAAGN,qBAAqB,EAArC;;AAEA,MAAMO,YAAY,GAAIC,KAAD,IAAmB;AACtCN,IAAAA,QAAQ,CAACO,QAAQ,CAACC,QAAV,EAAoB;AAAEC,MAAAA,GAAG,EAAEH,KAAK,KAAKV,QAAV,GAAqB,IAArB,GAA4BU;AAAnC,KAApB,CAAR;AACD,GAFD;;AAIAf,EAAAA,SAAS,CAAC,MAAM;AACdY,IAAAA,WAAW,CAACF,mBAAD,CAAX;AACD,GAFQ,EAEN,CAACA,mBAAD,CAFM,CAAT;AAIA,SACE,oBAAC,MAAD;AACE,kBAAW,uBADb;AAEE,IAAA,KAAK,EAAEC,QAFT;AAGE,IAAA,QAAQ,EAAEG,YAHZ;AAIE,IAAA,OAAO,EAAED;AAJX,IADF;AAQD,CAtBM","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\nimport type { FC } from 'react'\nimport React, { useEffect, useState } from 'react'\nimport { Select } from '@looker/components'\nimport { useSelector } from 'react-redux'\nimport { selectSdkLanguage } from '../../state'\nimport { allAlias, useNavigation } from '../../utils'\nimport { allSdkLanguageOptions } from './utils'\n\n/**\n * Allows the user to select their preferred SDK language\n */\nexport const SdkLanguageSelector: FC = () => {\n const { navigate } = useNavigation()\n const selectedSdkLanguage = useSelector(selectSdkLanguage)\n const [language, setLanguage] = useState(selectedSdkLanguage)\n const options = allSdkLanguageOptions()\n\n const handleChange = (alias: string) => {\n navigate(location.pathname, { sdk: alias === allAlias ? null : alias })\n }\n\n useEffect(() => {\n setLanguage(selectedSdkLanguage)\n }, [selectedSdkLanguage])\n\n return (\n <Select\n aria-label=\"sdk language selector\"\n value={language}\n onChange={handleChange}\n options={options}\n />\n )\n}\n"],"file":"SdkLanguageSelector.js"}
@@ -8,7 +8,7 @@ import React from 'react';
8
8
  import { Space, IconButton } from '@looker/components';
9
9
  import { ChangeHistory } from '@styled-icons/material/ChangeHistory';
10
10
  import { Link } from '../Link';
11
- import { diffPath } from '../../utils';
11
+ import { diffPath, useNavigation } from '../../utils';
12
12
  import { SdkLanguageSelector } from './SdkLanguageSelector';
13
13
  import { ApiSpecSelector } from './ApiSpecSelector';
14
14
  export var HEADER_REM = 4;
@@ -18,12 +18,15 @@ export var SelectorContainer = _ref => {
18
18
  } = _ref,
19
19
  spaceProps = _objectWithoutProperties(_ref, ["spec"]);
20
20
 
21
+ var {
22
+ buildPathWithGlobalParams
23
+ } = useNavigation();
21
24
  return React.createElement(Space, _extends({
22
25
  width: "auto"
23
26
  }, spaceProps), React.createElement(SdkLanguageSelector, null), React.createElement(ApiSpecSelector, {
24
27
  spec: spec
25
28
  }), React.createElement(Link, {
26
- to: "/".concat(diffPath, "/").concat(spec.key, "/")
29
+ to: buildPathWithGlobalParams("/".concat(spec.key, "/").concat(diffPath))
27
30
  }, React.createElement(IconButton, {
28
31
  toggle: true,
29
32
  label: "Compare Specifications",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/SelectorContainer/SelectorContainer.tsx"],"names":["React","Space","IconButton","ChangeHistory","Link","diffPath","SdkLanguageSelector","ApiSpecSelector","HEADER_REM","SelectorContainer","spec","spaceProps","key"],"mappings":";;;;;;AA2BA,OAAOA,KAAP,MAAkB,OAAlB;AAEA,SAASC,KAAT,EAAgBC,UAAhB,QAAkC,oBAAlC;AACA,SAASC,aAAT,QAA8B,sCAA9B;AAGA,SAASC,IAAT,QAAqB,SAArB;AACA,SAASC,QAAT,QAAyB,aAAzB;AACA,SAASC,mBAAT,QAAoC,uBAApC;AACA,SAASC,eAAT,QAAgC,mBAAhC;AAOA,OAAO,IAAMC,UAAU,GAAG,CAAnB;AAKP,OAAO,IAAMC,iBAA6C,GAAG;AAAA,MAAC;AAC5DC,IAAAA;AAD4D,GAAD;AAAA,MAExDC,UAFwD;;AAAA,SAI3D,oBAAC,KAAD;AAAO,IAAA,KAAK,EAAC;AAAb,KAAwBA,UAAxB,GACE,oBAAC,mBAAD,OADF,EAEE,oBAAC,eAAD;AAAiB,IAAA,IAAI,EAAED;AAAvB,IAFF,EAGE,oBAAC,IAAD;AAAM,IAAA,EAAE,aAAML,QAAN,cAAkBK,IAAI,CAACE,GAAvB;AAAR,KACE,oBAAC,UAAD;AACE,IAAA,MAAM,MADR;AAEE,IAAA,KAAK,EAAC,wBAFR;AAGE,IAAA,IAAI,EAAE,oBAAC,aAAD,OAHR;AAIE,IAAA,IAAI,EAAC;AAJP,IADF,CAHF,CAJ2D;AAAA,CAAtD","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type { FC } from 'react'\nimport React from 'react'\nimport type { SpaceHelperProps } from '@looker/components'\nimport { Space, IconButton } from '@looker/components'\nimport { ChangeHistory } from '@styled-icons/material/ChangeHistory'\nimport type { SpecItem } from '@looker/sdk-codegen'\n\nimport { Link } from '../Link'\nimport { diffPath } from '../../utils'\nimport { SdkLanguageSelector } from './SdkLanguageSelector'\nimport { ApiSpecSelector } from './ApiSpecSelector'\n\ninterface SelectorContainerProps extends SpaceHelperProps {\n /** Current selected spec */\n spec: SpecItem\n}\n\nexport const HEADER_REM = 4\n\n/**\n * Renders a container for selectors\n */\nexport const SelectorContainer: FC<SelectorContainerProps> = ({\n spec,\n ...spaceProps\n}) => (\n <Space width=\"auto\" {...spaceProps}>\n <SdkLanguageSelector />\n <ApiSpecSelector spec={spec} />\n <Link to={`/${diffPath}/${spec.key}/`}>\n <IconButton\n toggle\n label=\"Compare Specifications\"\n icon={<ChangeHistory />}\n size=\"small\"\n />\n </Link>\n </Space>\n)\n"],"file":"SelectorContainer.js"}
1
+ {"version":3,"sources":["../../../../src/components/SelectorContainer/SelectorContainer.tsx"],"names":["React","Space","IconButton","ChangeHistory","Link","diffPath","useNavigation","SdkLanguageSelector","ApiSpecSelector","HEADER_REM","SelectorContainer","spec","spaceProps","buildPathWithGlobalParams","key"],"mappings":";;;;;;AA2BA,OAAOA,KAAP,MAAkB,OAAlB;AAEA,SAASC,KAAT,EAAgBC,UAAhB,QAAkC,oBAAlC;AACA,SAASC,aAAT,QAA8B,sCAA9B;AAGA,SAASC,IAAT,QAAqB,SAArB;AACA,SAASC,QAAT,EAAmBC,aAAnB,QAAwC,aAAxC;AACA,SAASC,mBAAT,QAAoC,uBAApC;AACA,SAASC,eAAT,QAAgC,mBAAhC;AAOA,OAAO,IAAMC,UAAU,GAAG,CAAnB;AAKP,OAAO,IAAMC,iBAA6C,GAAG,QAGvD;AAAA,MAHwD;AAC5DC,IAAAA;AAD4D,GAGxD;AAAA,MADDC,UACC;;AACJ,MAAM;AAAEC,IAAAA;AAAF,MAAgCP,aAAa,EAAnD;AACA,SACE,oBAAC,KAAD;AAAO,IAAA,KAAK,EAAC;AAAb,KAAwBM,UAAxB,GACE,oBAAC,mBAAD,OADF,EAEE,oBAAC,eAAD;AAAiB,IAAA,IAAI,EAAED;AAAvB,IAFF,EAGE,oBAAC,IAAD;AAAM,IAAA,EAAE,EAAEE,yBAAyB,YAAKF,IAAI,CAACG,GAAV,cAAiBT,QAAjB;AAAnC,KACE,oBAAC,UAAD;AACE,IAAA,MAAM,MADR;AAEE,IAAA,KAAK,EAAC,wBAFR;AAGE,IAAA,IAAI,EAAE,oBAAC,aAAD,OAHR;AAIE,IAAA,IAAI,EAAC;AAJP,IADF,CAHF,CADF;AAcD,CAnBM","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type { FC } from 'react'\nimport React from 'react'\nimport type { SpaceHelperProps } from '@looker/components'\nimport { Space, IconButton } from '@looker/components'\nimport { ChangeHistory } from '@styled-icons/material/ChangeHistory'\nimport type { SpecItem } from '@looker/sdk-codegen'\n\nimport { Link } from '../Link'\nimport { diffPath, useNavigation } from '../../utils'\nimport { SdkLanguageSelector } from './SdkLanguageSelector'\nimport { ApiSpecSelector } from './ApiSpecSelector'\n\ninterface SelectorContainerProps extends SpaceHelperProps {\n /** Current selected spec */\n spec: SpecItem\n}\n\nexport const HEADER_REM = 4\n\n/**\n * Renders a container for selectors\n */\nexport const SelectorContainer: FC<SelectorContainerProps> = ({\n spec,\n ...spaceProps\n}) => {\n const { buildPathWithGlobalParams } = useNavigation()\n return (\n <Space width=\"auto\" {...spaceProps}>\n <SdkLanguageSelector />\n <ApiSpecSelector spec={spec} />\n <Link to={buildPathWithGlobalParams(`/${spec.key}/${diffPath}`)}>\n <IconButton\n toggle\n label=\"Compare Specifications\"\n icon={<ChangeHistory />}\n size=\"small\"\n />\n </Link>\n </Space>\n )\n}\n"],"file":"SelectorContainer.js"}
@@ -0,0 +1,22 @@
1
+ import { allSdkLanguages, allAlias } from '../../utils';
2
+ export var allSdkLanguageOptions = () => {
3
+ var options = [];
4
+ var languages = allSdkLanguages();
5
+ Object.entries(languages).forEach(_ref => {
6
+ var [alias, language] = _ref;
7
+ var option = {
8
+ value: alias,
9
+ label: language
10
+ };
11
+
12
+ if (alias === allAlias) {
13
+ options.push({
14
+ options: [option]
15
+ });
16
+ } else {
17
+ options.push(option);
18
+ }
19
+ });
20
+ return options;
21
+ };
22
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/SelectorContainer/utils.ts"],"names":["allSdkLanguages","allAlias","allSdkLanguageOptions","options","languages","Object","entries","forEach","alias","language","option","value","label","push"],"mappings":"AA0BA,SAASA,eAAT,EAA0BC,QAA1B,QAA0C,aAA1C;AAKA,OAAO,IAAMC,qBAAqB,GAAG,MAA2B;AAC9D,MAAMC,OAAO,GAAG,EAAhB;AACA,MAAMC,SAAS,GAAGJ,eAAe,EAAjC;AACAK,EAAAA,MAAM,CAACC,OAAP,CAAeF,SAAf,EAA0BG,OAA1B,CAAkC,QAAuB;AAAA,QAAtB,CAACC,KAAD,EAAQC,QAAR,CAAsB;AACvD,QAAMC,MAAM,GAAG;AAAEC,MAAAA,KAAK,EAAEH,KAAT;AAAgBI,MAAAA,KAAK,EAAEH;AAAvB,KAAf;;AACA,QAAID,KAAK,KAAKP,QAAd,EAAwB;AACtBE,MAAAA,OAAO,CAACU,IAAR,CAAa;AAAEV,QAAAA,OAAO,EAAE,CAACO,MAAD;AAAX,OAAb;AACD,KAFD,MAEO;AACLP,MAAAA,OAAO,CAACU,IAAR,CAAaH,MAAb;AACD;AACF,GAPD;AASA,SAAOP,OAAP;AACD,CAbM","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2022 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\nimport type { SelectOptionProps } from '@looker/components'\nimport { allSdkLanguages, allAlias } from '../../utils'\n\n/**\n * @returns sdk language options for render\n */\nexport const allSdkLanguageOptions = (): SelectOptionProps[] => {\n const options = [] as SelectOptionProps[]\n const languages = allSdkLanguages()\n Object.entries(languages).forEach(([alias, language]) => {\n const option = { value: alias, label: language }\n if (alias === allAlias) {\n options.push({ options: [option] })\n } else {\n options.push(option)\n }\n })\n\n return options\n}\n"],"file":"utils.js"}
@@ -1,13 +1,14 @@
1
1
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
2
 
3
3
  import React, { useEffect, useState } from 'react';
4
- import { useHistory, useLocation } from 'react-router-dom';
5
- import { TabList, Tab, TabPanel, TabPanels, useTabs, InputSearch } from '@looker/components';
4
+ import { useLocation } from 'react-router-dom';
5
+ import { TabList, Tab, TabPanel, TabPanels, useTabs, InputSearch, Box2 } from '@looker/components';
6
6
  import { criteriaToSet, tagTypes } from '@looker/sdk-codegen';
7
7
  import { useSelector } from 'react-redux';
8
- import { useWindowSize } from '../../utils';
8
+ import { CopyLinkWrapper } from '@looker/run-it';
9
+ import { useWindowSize, useNavigation } from '../../utils';
9
10
  import { HEADER_REM } from '../Header';
10
- import { selectSearchCriteria, useSettingActions } from '../../state';
11
+ import { selectSearchCriteria, selectSearchPattern } from '../../state';
11
12
  import { SideNavMethodTags } from './SideNavMethodTags';
12
13
  import { SideNavTypeTags } from './SideNavTypeTags';
13
14
  import { useDebounce, countMethods, countTypes } from './searchUtils';
@@ -17,8 +18,11 @@ export var SideNav = _ref => {
17
18
  headless = false,
18
19
  spec
19
20
  } = _ref;
20
- var history = useHistory();
21
21
  var location = useLocation();
22
+ var {
23
+ navigate,
24
+ navigateWithGlobalParams
25
+ } = useNavigation();
22
26
  var specKey = spec.key;
23
27
  var tabNames = ['methods', 'types'];
24
28
  var pathParts = location.pathname.split('/');
@@ -35,12 +39,12 @@ export var SideNav = _ref => {
35
39
  if (parts[1] === 'diff') {
36
40
  if (parts[3] !== tabNames[index]) {
37
41
  parts[3] = tabNames[index];
38
- history.push(parts.join('/'));
42
+ navigateWithGlobalParams(parts.join('/'));
39
43
  }
40
44
  } else {
41
45
  if (parts[2] !== tabNames[index]) {
42
46
  parts[2] = tabNames[index];
43
- history.push(parts.join('/'));
47
+ navigateWithGlobalParams(parts.join('/'));
44
48
  }
45
49
  }
46
50
  };
@@ -50,10 +54,8 @@ export var SideNav = _ref => {
50
54
  onChange: onTabChange
51
55
  });
52
56
  var searchCriteria = useSelector(selectSearchCriteria);
53
- var {
54
- setSearchPatternAction
55
- } = useSettingActions();
56
- var [pattern, setSearchPattern] = useState('');
57
+ var searchPattern = useSelector(selectSearchPattern);
58
+ var [pattern, setSearchPattern] = useState(searchPattern);
57
59
  var debouncedPattern = useDebounce(pattern, 250);
58
60
  var [sideNavState, setSideNavState] = useState(() => {
59
61
  var _spec$api, _spec$api2, _spec$api3, _spec$api4;
@@ -78,15 +80,31 @@ export var SideNav = _ref => {
78
80
  setSearchPattern(value);
79
81
  };
80
82
 
83
+ useEffect(() => {
84
+ var searchParams = new URLSearchParams(location.search);
85
+
86
+ if (debouncedPattern && debouncedPattern !== searchParams.get('s')) {
87
+ searchParams.set('s', debouncedPattern);
88
+ navigate(location.pathname, {
89
+ s: searchParams.get('s')
90
+ });
91
+ } else if (!debouncedPattern && searchParams.get('s')) {
92
+ searchParams.delete('s');
93
+ navigate(location.pathname, {
94
+ s: null
95
+ });
96
+ }
97
+ }, [debouncedPattern]);
81
98
  useEffect(() => {
82
99
  var results;
83
100
  var newTags;
84
101
  var newTypes;
85
102
  var newTypeTags;
86
103
  var api = spec.api || {};
104
+ setSearchPattern(searchPattern);
87
105
 
88
- if (debouncedPattern && api.search) {
89
- results = api.search(pattern, criteriaToSet(searchCriteria));
106
+ if (searchPattern && api.search) {
107
+ results = api.search(searchPattern, criteriaToSet(searchCriteria));
90
108
  newTags = results.tags;
91
109
  newTypes = results.types;
92
110
  newTypeTags = tagTypes(api, results.types);
@@ -103,10 +121,7 @@ export var SideNav = _ref => {
103
121
  methodCount: countMethods(newTags),
104
122
  searchResults: results
105
123
  });
106
- setSearchPatternAction({
107
- searchPattern: debouncedPattern
108
- });
109
- }, [debouncedPattern, specKey, spec, setSearchPatternAction, pattern, searchCriteria]);
124
+ }, [searchPattern, specKey, spec, searchCriteria]);
110
125
  useEffect(() => {
111
126
  var {
112
127
  selectedIndex,
@@ -120,19 +135,24 @@ export var SideNav = _ref => {
120
135
  var size = useWindowSize();
121
136
  var headlessOffset = headless ? 200 : 120;
122
137
  var menuH = size.height - 16 * HEADER_REM - headlessOffset;
123
- return React.createElement("nav", null, React.createElement(InputSearch, {
138
+ return React.createElement("nav", null, React.createElement(Box2, {
124
139
  pl: "large",
125
140
  pr: "large",
126
141
  pb: "large",
127
142
  pt: headless ? 'u3' : 'large',
143
+ position: 'relative',
144
+ width: '100%'
145
+ }, React.createElement(CopyLinkWrapper, {
146
+ visible: !!pattern
147
+ }, React.createElement(InputSearch, {
128
148
  "aria-label": "Search",
129
149
  onChange: handleInputChange,
130
150
  placeholder: "Search",
131
151
  value: pattern,
132
152
  isClearable: true
133
- }), React.createElement(SearchMessage, {
153
+ })), React.createElement(SearchMessage, {
134
154
  search: searchResults
135
- }), React.createElement(TabList, _extends({}, tabs, {
155
+ })), React.createElement(TabList, _extends({}, tabs, {
136
156
  distribute: true
137
157
  }), React.createElement(Tab, null, "Methods (", methodCount, ")"), React.createElement(Tab, null, "Types (", typeCount, ")")), React.createElement(TabPanels, _extends({}, tabs, {
138
158
  pt: "xsmall",