@looker/api-explorer 0.9.33-alpha.1523 → 0.9.34

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 (39) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/dist/bundle.js +1 -1
  3. package/dist/bundle.js.LICENSE.txt +0 -9
  4. package/dist/bundle.js.map +1 -1
  5. package/e2e/diffScene.spec.ts +260 -0
  6. package/e2e/e2e.spec.ts +60 -29
  7. package/e2e/helpers.ts +9 -1
  8. package/jest-puppeteer.config.js +10 -0
  9. package/jest.config.js +25 -23
  10. package/lib/components/DocSource/DocSource.js +1 -1
  11. package/lib/components/DocSource/DocSource.js.map +1 -1
  12. package/lib/components/SideNav/SideNavMethods.js +7 -2
  13. package/lib/components/SideNav/SideNavMethods.js.map +1 -1
  14. package/lib/components/SideNav/SideNavTypes.js +6 -1
  15. package/lib/components/SideNav/SideNavTypes.js.map +1 -1
  16. package/lib/esm/components/DocSource/DocSource.js +2 -2
  17. package/lib/esm/components/DocSource/DocSource.js.map +1 -1
  18. package/lib/esm/components/SideNav/SideNavMethods.js +7 -2
  19. package/lib/esm/components/SideNav/SideNavMethods.js.map +1 -1
  20. package/lib/esm/components/SideNav/SideNavTypes.js +6 -1
  21. package/lib/esm/components/SideNav/SideNavTypes.js.map +1 -1
  22. package/lib/esm/scenes/DiffScene/DiffScene.js +1 -0
  23. package/lib/esm/scenes/DiffScene/DiffScene.js.map +1 -1
  24. package/lib/esm/scenes/DiffScene/DocDiff/DocDiff.js +2 -2
  25. package/lib/esm/scenes/DiffScene/DocDiff/DocDiff.js.map +1 -1
  26. package/lib/scenes/DiffScene/DiffScene.js +1 -0
  27. package/lib/scenes/DiffScene/DiffScene.js.map +1 -1
  28. package/lib/scenes/DiffScene/DocDiff/DocDiff.js +2 -2
  29. package/lib/scenes/DiffScene/DocDiff/DocDiff.js.map +1 -1
  30. package/package.json +12 -12
  31. package/src/components/DocSource/DocSource.spec.tsx +3 -3
  32. package/src/components/DocSource/DocSource.tsx +3 -2
  33. package/src/components/SideNav/SideNavMethods.spec.tsx +49 -3
  34. package/src/components/SideNav/SideNavMethods.tsx +6 -2
  35. package/src/components/SideNav/SideNavTypes.spec.tsx +46 -10
  36. package/src/components/SideNav/SideNavTypes.tsx +5 -1
  37. package/src/scenes/DiffScene/DiffScene.tsx +1 -0
  38. package/src/scenes/DiffScene/DocDiff/DocDiff.spec.tsx +112 -0
  39. package/src/scenes/DiffScene/DocDiff/DocDiff.tsx +2 -6
@@ -1 +1 @@
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
+ {"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) {\n history.push(`/${specKey}/types/${tag}`)\n } else {\n history.push(`/${specKey}/types`)\n }\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,5 +1,5 @@
1
1
  import React from 'react';
2
- import { findDeclaration } from '@looker/sdk-codegen';
2
+ import { codeSearchLink, findDeclaration } from '@looker/sdk-codegen';
3
3
  import { Icon, Link, Tooltip } from '@looker/components';
4
4
  import { IdeFileDocument } from '@looker/icons';
5
5
  import { useSelector } from 'react-redux';
@@ -18,7 +18,7 @@ export var DocSource = _ref => {
18
18
  ({
19
19
  declaration,
20
20
  link: sourceLink
21
- } = findDeclaration(declarations, method === null || method === void 0 ? void 0 : method.id, type === null || type === void 0 ? void 0 : type.name));
21
+ } = findDeclaration(declarations, method === null || method === void 0 ? void 0 : method.id, type === null || type === void 0 ? void 0 : type.name, codeSearchLink));
22
22
  }
23
23
 
24
24
  return React.createElement(React.Fragment, null, sourceLink && declaration && React.createElement(Tooltip, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/DocSource/DocSource.tsx"],"names":["React","findDeclaration","Icon","Link","Tooltip","IdeFileDocument","useSelector","selectDeclarationsLode","DocSource","method","type","declarations","sourceLink","declaration","link","id","name","sourceFile","line"],"mappings":"AA0BA,OAAOA,KAAP,MAAkB,OAAlB;AAEA,SAASC,eAAT,QAAgC,qBAAhC;AACA,SAASC,IAAT,EAAeC,IAAf,EAAqBC,OAArB,QAAoC,oBAApC;AACA,SAASC,eAAT,QAAgC,eAAhC;AACA,SAASC,WAAT,QAA4B,aAA5B;AAEA,SAASC,sBAAT,QAAuC,aAAvC;AAOA,OAAO,IAAMC,SAA6B,GAAG,QAAsB;AAAA,MAArB;AAAEC,IAAAA,MAAF;AAAUC,IAAAA;AAAV,GAAqB;AACjE,MAAMC,YAAY,GAAGL,WAAW,CAACC,sBAAD,CAAhC;AACA,MAAIK,UAAJ;AACA,MAAIC,WAAJ;;AACA,MAAIF,YAAJ,EAAkB;AAChB;AAAC,KAAC;AAAEE,MAAAA,WAAF;AAAeC,MAAAA,IAAI,EAAEF;AAArB,QAAoCX,eAAe,CACnDU,YADmD,EAEnDF,MAFmD,aAEnDA,MAFmD,uBAEnDA,MAAM,CAAEM,EAF2C,EAGnDL,IAHmD,aAGnDA,IAHmD,uBAGnDA,IAAI,CAAEM,IAH6C,CAApD;AAKF;;AAED,SACE,0CACGJ,UAAU,IAAIC,WAAd,IACC,oBAAC,OAAD;AACE,IAAA,OAAO,YAAKA,WAAW,CAACI,UAAjB,eAAgCJ,WAAW,CAACK,IAA5C,CADT;AAEE,IAAA,KAAK,EAAC;AAFR,KAIE,oBAAC,IAAD;AAAM,IAAA,IAAI,EAAEN,UAAZ;AAAwB,IAAA,MAAM,EAAC;AAA/B,KACE,oBAAC,IAAD;AAAM,IAAA,IAAI,EAAE,oBAAC,eAAD;AAAZ,IADF,CAJF,CAFJ,CADF;AAcD,CA1BM","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 type { IMethod, IType } from '@looker/sdk-codegen'\nimport { findDeclaration } from '@looker/sdk-codegen'\nimport { Icon, Link, Tooltip } from '@looker/components'\nimport { IdeFileDocument } from '@looker/icons'\nimport { useSelector } from 'react-redux'\n\nimport { selectDeclarationsLode } from '../../state'\n\ninterface DocSourceProps {\n method?: IMethod\n type?: IType\n}\n\nexport const DocSource: FC<DocSourceProps> = ({ method, type }) => {\n const declarations = useSelector(selectDeclarationsLode)\n let sourceLink\n let declaration\n if (declarations) {\n ;({ declaration, link: sourceLink } = findDeclaration(\n declarations,\n method?.id,\n type?.name\n ))\n }\n\n return (\n <>\n {sourceLink && declaration && (\n <Tooltip\n content={`${declaration.sourceFile}#L${declaration.line}`}\n width=\"none\"\n >\n <Link href={sourceLink} target=\"_blank\">\n <Icon icon={<IdeFileDocument />} />\n </Link>\n </Tooltip>\n )}\n </>\n )\n}\n"],"file":"DocSource.js"}
1
+ {"version":3,"sources":["../../../../src/components/DocSource/DocSource.tsx"],"names":["React","codeSearchLink","findDeclaration","Icon","Link","Tooltip","IdeFileDocument","useSelector","selectDeclarationsLode","DocSource","method","type","declarations","sourceLink","declaration","link","id","name","sourceFile","line"],"mappings":"AA0BA,OAAOA,KAAP,MAAkB,OAAlB;AAEA,SAASC,cAAT,EAAyBC,eAAzB,QAAgD,qBAAhD;AACA,SAASC,IAAT,EAAeC,IAAf,EAAqBC,OAArB,QAAoC,oBAApC;AACA,SAASC,eAAT,QAAgC,eAAhC;AACA,SAASC,WAAT,QAA4B,aAA5B;AAEA,SAASC,sBAAT,QAAuC,aAAvC;AAOA,OAAO,IAAMC,SAA6B,GAAG,QAAsB;AAAA,MAArB;AAAEC,IAAAA,MAAF;AAAUC,IAAAA;AAAV,GAAqB;AACjE,MAAMC,YAAY,GAAGL,WAAW,CAACC,sBAAD,CAAhC;AACA,MAAIK,UAAJ;AACA,MAAIC,WAAJ;;AACA,MAAIF,YAAJ,EAAkB;AAChB;AAAC,KAAC;AAAEE,MAAAA,WAAF;AAAeC,MAAAA,IAAI,EAAEF;AAArB,QAAoCX,eAAe,CACnDU,YADmD,EAEnDF,MAFmD,aAEnDA,MAFmD,uBAEnDA,MAAM,CAAEM,EAF2C,EAGnDL,IAHmD,aAGnDA,IAHmD,uBAGnDA,IAAI,CAAEM,IAH6C,EAInDhB,cAJmD,CAApD;AAMF;;AAED,SACE,0CACGY,UAAU,IAAIC,WAAd,IACC,oBAAC,OAAD;AACE,IAAA,OAAO,YAAKA,WAAW,CAACI,UAAjB,eAAgCJ,WAAW,CAACK,IAA5C,CADT;AAEE,IAAA,KAAK,EAAC;AAFR,KAIE,oBAAC,IAAD;AAAM,IAAA,IAAI,EAAEN,UAAZ;AAAwB,IAAA,MAAM,EAAC;AAA/B,KACE,oBAAC,IAAD;AAAM,IAAA,IAAI,EAAE,oBAAC,eAAD;AAAZ,IADF,CAJF,CAFJ,CADF;AAcD,CA3BM","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 type { IMethod, IType } from '@looker/sdk-codegen'\nimport { codeSearchLink, findDeclaration } from '@looker/sdk-codegen'\nimport { Icon, Link, Tooltip } from '@looker/components'\nimport { IdeFileDocument } from '@looker/icons'\nimport { useSelector } from 'react-redux'\n\nimport { selectDeclarationsLode } from '../../state'\n\ninterface DocSourceProps {\n method?: IMethod\n type?: IType\n}\n\nexport const DocSource: FC<DocSourceProps> = ({ method, type }) => {\n const declarations = useSelector(selectDeclarationsLode)\n let sourceLink\n let declaration\n if (declarations) {\n ;({ declaration, link: sourceLink } = findDeclaration(\n declarations,\n method?.id,\n type?.name,\n codeSearchLink\n ))\n }\n\n return (\n <>\n {sourceLink && declaration && (\n <Tooltip\n content={`${declaration.sourceFile}#L${declaration.line}`}\n width=\"none\"\n >\n <Link href={sourceLink} target=\"_blank\">\n <Icon icon={<IdeFileDocument />} />\n </Link>\n </Tooltip>\n )}\n </>\n )\n}\n"],"file":"DocSource.js"}
@@ -23,13 +23,18 @@ export var SideNavMethods = styled(_ref => {
23
23
  var _isOpen = !isOpen;
24
24
 
25
25
  setIsOpen(_isOpen);
26
- if (_isOpen) history.push("/".concat(specKey, "/methods/").concat(tag));
26
+
27
+ if (_isOpen) {
28
+ history.push("/".concat(specKey, "/methods/").concat(tag));
29
+ } else {
30
+ history.push("/".concat(specKey, "/methods"));
31
+ }
27
32
  };
28
33
 
29
34
  useEffect(() => {
30
35
  var status = match ? defaultOpen || match.params.methodTag === tag : defaultOpen;
31
36
  setIsOpen(status);
32
- }, [defaultOpen, match, tag]);
37
+ }, [defaultOpen]);
33
38
  return React.createElement(Accordion2, {
34
39
  isOpen: isOpen,
35
40
  toggleOpen: handleOpen,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/SideNav/SideNavMethods.tsx"],"names":["React","useEffect","useState","styled","Accordion2","Heading","useSelector","useHistory","useRouteMatch","Link","buildMethodPath","highlightHTML","selectSearchPattern","SideNavMethods","className","methods","tag","specKey","defaultOpen","searchPattern","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","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"}
1
+ {"version":3,"sources":["../../../../src/components/SideNav/SideNavMethods.tsx"],"names":["React","useEffect","useState","styled","Accordion2","Heading","useSelector","useHistory","useRouteMatch","Link","buildMethodPath","highlightHTML","selectSearchPattern","SideNavMethods","className","methods","tag","specKey","defaultOpen","searchPattern","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","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) {\n history.push(`/${specKey}/methods/${tag}`)\n } else {\n history.push(`/${specKey}/methods`)\n }\n }\n\n useEffect(() => {\n const status = match\n ? defaultOpen || match.params.methodTag === 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(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"}
@@ -23,7 +23,12 @@ export var SideNavTypes = styled(_ref => {
23
23
  var _isOpen = !isOpen;
24
24
 
25
25
  setIsOpen(_isOpen);
26
- if (_isOpen) history.push("/".concat(specKey, "/types/").concat(tag));
26
+
27
+ if (_isOpen) {
28
+ history.push("/".concat(specKey, "/types/").concat(tag));
29
+ } else {
30
+ history.push("/".concat(specKey, "/types"));
31
+ }
27
32
  };
28
33
 
29
34
  useEffect(() => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/SideNav/SideNavTypes.tsx"],"names":["React","useEffect","useState","styled","Accordion2","Heading","useHistory","useRouteMatch","useSelector","Link","buildTypePath","highlightHTML","selectSearchPattern","SideNavTypes","className","types","tag","specKey","defaultOpen","searchPattern","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","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
+ {"version":3,"sources":["../../../../src/components/SideNav/SideNavTypes.tsx"],"names":["React","useEffect","useState","styled","Accordion2","Heading","useHistory","useRouteMatch","useSelector","Link","buildTypePath","highlightHTML","selectSearchPattern","SideNavTypes","className","types","tag","specKey","defaultOpen","searchPattern","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","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) {\n history.push(`/${specKey}/types/${tag}`)\n } else {\n history.push(`/${specKey}/types`)\n }\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"}
@@ -118,6 +118,7 @@ export var DiffScene = _ref => {
118
118
  options: options,
119
119
  onChange: handleLeftChange
120
120
  })), React.createElement(IconButton, {
121
+ className: "switch-button",
121
122
  label: "switch",
122
123
  size: "small",
123
124
  disabled: !leftKey || !rightKey,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/scenes/DiffScene/DiffScene.tsx"],"names":["React","useState","useEffect","useHistory","useRouteMatch","Box","Flex","FlexItem","IconButton","Label","Select","SelectMulti","SyncAlt","useSelector","ApixSection","selectCurrentSpec","diffPath","getApixAdaptor","diffSpecs","standardDiffToggles","DocDiff","diffToggles","label","value","validateParam","specs","specKey","DiffScene","toggleNavigation","adaptor","history","spec","currentSpecKey","key","match","l","params","r","options","Object","entries","map","status","leftKey","setLeftKey","rightKey","setRightKey","leftApi","setLeftApi","api","rightApi","setRightApi","toggles","setToggles","delta","setDelta","handleLeftChange","newLeft","push","handleRightChange","newRight","handleSwitch","fetchSpec","then","handleTogglesChange","values","newToggles"],"mappings":"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","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type { FC } from 'react'\nimport React, { useState, useEffect } from 'react'\nimport type { ApiModel, DiffRow, SpecList } from '@looker/sdk-codegen'\nimport { useHistory, useRouteMatch } from 'react-router-dom'\nimport {\n Box,\n Flex,\n FlexItem,\n IconButton,\n Label,\n Select,\n SelectMulti,\n} from '@looker/components'\nimport { SyncAlt } from '@styled-icons/material/SyncAlt'\nimport { useSelector } from 'react-redux'\n\nimport { ApixSection } from '../../components'\nimport { selectCurrentSpec } from '../../state'\nimport { diffPath, getApixAdaptor } from '../../utils'\nimport { diffSpecs, standardDiffToggles } from './diffUtils'\nimport { DocDiff } from './DocDiff'\n\nconst diffToggles = [\n {\n label: 'Missing',\n value: 'missing',\n },\n {\n label: 'Status',\n value: 'status',\n },\n {\n label: 'Parameters',\n value: 'params',\n },\n {\n label: 'Type',\n value: 'type',\n },\n {\n label: 'Body',\n value: 'body',\n },\n {\n label: 'Response',\n value: 'response',\n },\n]\n\nexport interface DiffSceneProps {\n specs: SpecList\n toggleNavigation: (target?: boolean) => void\n}\n\nconst validateParam = (specs: SpecList, specKey = '') => {\n return specs[specKey] ? specKey : ''\n}\n\nexport const DiffScene: FC<DiffSceneProps> = ({ specs, toggleNavigation }) => {\n const adaptor = getApixAdaptor()\n const history = useHistory()\n const spec = useSelector(selectCurrentSpec)\n const currentSpecKey = spec.key\n const match = useRouteMatch<{ l: string; r: string }>(`/${diffPath}/:l?/:r?`)\n const l = validateParam(specs, match?.params.l)\n const r = validateParam(specs, match?.params.r)\n\n const options = Object.entries(specs).map(([key, spec]) => ({\n value: key,\n label: `${key} (${spec.status})`,\n }))\n\n const [leftKey, setLeftKey] = useState<string>(l || currentSpecKey)\n const [rightKey, setRightKey] = useState<string>(r || '')\n const [leftApi, setLeftApi] = useState<ApiModel>(specs[leftKey].api!)\n const [rightApi, setRightApi] = useState<ApiModel>(() =>\n rightKey ? specs[rightKey].api! : specs[leftKey].api!\n )\n const [toggles, setToggles] = useState<string[]>(standardDiffToggles)\n\n useEffect(() => {\n if (r !== rightKey) {\n setRightKey(r)\n }\n }, [r, rightKey])\n\n useEffect(() => {\n if (l !== leftKey) {\n setLeftKey(l)\n }\n }, [l, leftKey])\n\n useEffect(() => {\n toggleNavigation(false)\n }, [])\n\n const [delta, setDelta] = useState<DiffRow[]>([])\n\n const handleLeftChange = (newLeft: string) => {\n history.push(`/${diffPath}/${newLeft}/${rightKey}`)\n }\n const handleRightChange = (newRight: string) => {\n history.push(`/${diffPath}/${leftKey}/${newRight}`)\n }\n\n const handleSwitch = () => {\n history.push(`/${diffPath}/${rightKey}/${leftKey}`)\n }\n\n useEffect(() => {\n adaptor.fetchSpec(specs[leftKey]).then((spec) => setLeftApi(spec.api!))\n }, [leftKey])\n\n useEffect(() => {\n if (rightKey in specs) {\n adaptor.fetchSpec(specs[rightKey]).then((spec) => setRightApi(spec.api!))\n }\n }, [rightKey])\n\n useEffect(() => {\n if (leftApi && rightApi) {\n setDelta([...diffSpecs(leftApi, rightApi, toggles)])\n }\n }, [leftApi, rightApi, toggles])\n\n const handleTogglesChange = (values?: string[]) => {\n const newToggles = values || []\n setToggles(newToggles)\n }\n\n return (\n <ApixSection>\n <Box>\n <Flex bg=\"AliceBlue\" padding=\"large\" mb=\"large\" alignItems=\"center\">\n <FlexItem>\n <Label htmlFor=\"base\">Base</Label>\n <Select\n mt=\"xxsmall\"\n id=\"base\"\n name=\"Left Version\"\n value={leftKey}\n options={options}\n onChange={handleLeftChange}\n />\n </FlexItem>\n <IconButton\n label=\"switch\"\n size=\"small\"\n disabled={!leftKey || !rightKey}\n icon={<SyncAlt />}\n mt=\"medium\"\n onClick={handleSwitch}\n />\n <FlexItem>\n <Label htmlFor=\"compare\">Compare</Label>\n <Select\n mt=\"xxsmall\"\n id=\"compare\"\n name=\"Right Version\"\n placeholder=\"Select a comparison...\"\n value={rightKey}\n options={options}\n onChange={handleRightChange}\n />\n </FlexItem>\n <FlexItem flex=\"2\" ml=\"large\">\n <Label htmlFor=\"options\">Comparison Options</Label>\n <SelectMulti\n mt=\"xxsmall\"\n id=\"options\"\n name=\"toggles\"\n placeholder=\"Comparison options\"\n defaultValues={toggles}\n onChange={handleTogglesChange}\n options={diffToggles}\n />\n </FlexItem>\n </Flex>\n </Box>\n <DocDiff\n delta={delta}\n leftKey={leftKey}\n leftSpec={leftApi}\n rightKey={rightKey}\n rightSpec={rightApi}\n />\n </ApixSection>\n )\n}\n"],"file":"DiffScene.js"}
1
+ {"version":3,"sources":["../../../../src/scenes/DiffScene/DiffScene.tsx"],"names":["React","useState","useEffect","useHistory","useRouteMatch","Box","Flex","FlexItem","IconButton","Label","Select","SelectMulti","SyncAlt","useSelector","ApixSection","selectCurrentSpec","diffPath","getApixAdaptor","diffSpecs","standardDiffToggles","DocDiff","diffToggles","label","value","validateParam","specs","specKey","DiffScene","toggleNavigation","adaptor","history","spec","currentSpecKey","key","match","l","params","r","options","Object","entries","map","status","leftKey","setLeftKey","rightKey","setRightKey","leftApi","setLeftApi","api","rightApi","setRightApi","toggles","setToggles","delta","setDelta","handleLeftChange","newLeft","push","handleRightChange","newRight","handleSwitch","fetchSpec","then","handleTogglesChange","values","newToggles"],"mappings":"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","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type { FC } from 'react'\nimport React, { useState, useEffect } from 'react'\nimport type { ApiModel, DiffRow, SpecList } from '@looker/sdk-codegen'\nimport { useHistory, useRouteMatch } from 'react-router-dom'\nimport {\n Box,\n Flex,\n FlexItem,\n IconButton,\n Label,\n Select,\n SelectMulti,\n} from '@looker/components'\nimport { SyncAlt } from '@styled-icons/material/SyncAlt'\nimport { useSelector } from 'react-redux'\n\nimport { ApixSection } from '../../components'\nimport { selectCurrentSpec } from '../../state'\nimport { diffPath, getApixAdaptor } from '../../utils'\nimport { diffSpecs, standardDiffToggles } from './diffUtils'\nimport { DocDiff } from './DocDiff'\n\nconst diffToggles = [\n {\n label: 'Missing',\n value: 'missing',\n },\n {\n label: 'Status',\n value: 'status',\n },\n {\n label: 'Parameters',\n value: 'params',\n },\n {\n label: 'Type',\n value: 'type',\n },\n {\n label: 'Body',\n value: 'body',\n },\n {\n label: 'Response',\n value: 'response',\n },\n]\n\nexport interface DiffSceneProps {\n specs: SpecList\n toggleNavigation: (target?: boolean) => void\n}\n\nconst validateParam = (specs: SpecList, specKey = '') => {\n return specs[specKey] ? specKey : ''\n}\n\nexport const DiffScene: FC<DiffSceneProps> = ({ specs, toggleNavigation }) => {\n const adaptor = getApixAdaptor()\n const history = useHistory()\n const spec = useSelector(selectCurrentSpec)\n const currentSpecKey = spec.key\n const match = useRouteMatch<{ l: string; r: string }>(`/${diffPath}/:l?/:r?`)\n const l = validateParam(specs, match?.params.l)\n const r = validateParam(specs, match?.params.r)\n\n const options = Object.entries(specs).map(([key, spec]) => ({\n value: key,\n label: `${key} (${spec.status})`,\n }))\n\n const [leftKey, setLeftKey] = useState<string>(l || currentSpecKey)\n const [rightKey, setRightKey] = useState<string>(r || '')\n const [leftApi, setLeftApi] = useState<ApiModel>(specs[leftKey].api!)\n const [rightApi, setRightApi] = useState<ApiModel>(() =>\n rightKey ? specs[rightKey].api! : specs[leftKey].api!\n )\n const [toggles, setToggles] = useState<string[]>(standardDiffToggles)\n\n useEffect(() => {\n if (r !== rightKey) {\n setRightKey(r)\n }\n }, [r, rightKey])\n\n useEffect(() => {\n if (l !== leftKey) {\n setLeftKey(l)\n }\n }, [l, leftKey])\n\n useEffect(() => {\n toggleNavigation(false)\n }, [])\n\n const [delta, setDelta] = useState<DiffRow[]>([])\n\n const handleLeftChange = (newLeft: string) => {\n history.push(`/${diffPath}/${newLeft}/${rightKey}`)\n }\n const handleRightChange = (newRight: string) => {\n history.push(`/${diffPath}/${leftKey}/${newRight}`)\n }\n\n const handleSwitch = () => {\n history.push(`/${diffPath}/${rightKey}/${leftKey}`)\n }\n\n useEffect(() => {\n adaptor.fetchSpec(specs[leftKey]).then((spec) => setLeftApi(spec.api!))\n }, [leftKey])\n\n useEffect(() => {\n if (rightKey in specs) {\n adaptor.fetchSpec(specs[rightKey]).then((spec) => setRightApi(spec.api!))\n }\n }, [rightKey])\n\n useEffect(() => {\n if (leftApi && rightApi) {\n setDelta([...diffSpecs(leftApi, rightApi, toggles)])\n }\n }, [leftApi, rightApi, toggles])\n\n const handleTogglesChange = (values?: string[]) => {\n const newToggles = values || []\n setToggles(newToggles)\n }\n\n return (\n <ApixSection>\n <Box>\n <Flex bg=\"AliceBlue\" padding=\"large\" mb=\"large\" alignItems=\"center\">\n <FlexItem>\n <Label htmlFor=\"base\">Base</Label>\n <Select\n mt=\"xxsmall\"\n id=\"base\"\n name=\"Left Version\"\n value={leftKey}\n options={options}\n onChange={handleLeftChange}\n />\n </FlexItem>\n <IconButton\n className=\"switch-button\"\n label=\"switch\"\n size=\"small\"\n disabled={!leftKey || !rightKey}\n icon={<SyncAlt />}\n mt=\"medium\"\n onClick={handleSwitch}\n />\n <FlexItem>\n <Label htmlFor=\"compare\">Compare</Label>\n <Select\n mt=\"xxsmall\"\n id=\"compare\"\n name=\"Right Version\"\n placeholder=\"Select a comparison...\"\n value={rightKey}\n options={options}\n onChange={handleRightChange}\n />\n </FlexItem>\n <FlexItem flex=\"2\" ml=\"large\">\n <Label htmlFor=\"options\">Comparison Options</Label>\n <SelectMulti\n mt=\"xxsmall\"\n id=\"options\"\n name=\"toggles\"\n placeholder=\"Comparison options\"\n defaultValues={toggles}\n onChange={handleTogglesChange}\n options={diffToggles}\n />\n </FlexItem>\n </Flex>\n </Box>\n <DocDiff\n delta={delta}\n leftKey={leftKey}\n leftSpec={leftApi}\n rightKey={rightKey}\n rightSpec={rightApi}\n />\n </ApixSection>\n )\n}\n"],"file":"DiffScene.js"}
@@ -13,7 +13,7 @@ export var DocDiff = _ref => {
13
13
  var [page, setPage] = useState(1);
14
14
  if (delta.length === 0) return React.createElement(Text, null, 'No differences found');
15
15
  var pageCount = Math.round((delta.length - 1) / pageSize);
16
- var pageItemData = delta.slice((page - 1) * pageSize + 1, page * pageSize + 1);
16
+ var pageItemData = delta.slice((page - 1) * pageSize, page * pageSize + 1);
17
17
  return React.createElement(React.Fragment, null, delta.length === 0 ? React.createElement(Text, null, 'No differences found') : React.createElement(Flex, {
18
18
  flexDirection: "column",
19
19
  alignItems: "center"
@@ -23,7 +23,7 @@ export var DocDiff = _ref => {
23
23
  mt: "large",
24
24
  gap: "xxsmall"
25
25
  }, pageItemData.map((item, index) => React.createElement(DiffItem, {
26
- key: index,
26
+ key: "page-".concat(page, " item-").concat(index),
27
27
  item: item,
28
28
  leftKey: leftKey,
29
29
  leftSpec: leftSpec,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/scenes/DiffScene/DocDiff/DocDiff.tsx"],"names":["Flex","Heading","Pagination","Space","SpaceVertical","Text","React","useState","DiffItem","DocDiff","delta","leftKey","leftSpec","rightKey","rightSpec","pageSize","page","setPage","length","pageCount","Math","round","pageItemData","slice","map","item","index","nextPage"],"mappings":"AA0BA,SACEA,IADF,EAEEC,OAFF,EAGEC,UAHF,EAIEC,KAJF,EAKEC,aALF,EAMEC,IANF,QAOO,oBAPP;AASA,OAAOC,KAAP,IAAgBC,QAAhB,QAAgC,OAAhC;AACA,SAASC,QAAT,QAAyB,YAAzB;AAiBA,OAAO,IAAMC,OAAyB,GAAG,QAOnC;AAAA,MAPoC;AACxCC,IAAAA,KADwC;AAExCC,IAAAA,OAFwC;AAGxCC,IAAAA,QAHwC;AAIxCC,IAAAA,QAJwC;AAKxCC,IAAAA,SALwC;AAMxCC,IAAAA,QAAQ,GAAG;AAN6B,GAOpC;AACJ,MAAM,CAACC,IAAD,EAAOC,OAAP,IAAkBV,QAAQ,CAAC,CAAD,CAAhC;AAEA,MAAIG,KAAK,CAACQ,MAAN,KAAiB,CAArB,EAAwB,OAAO,oBAAC,IAAD,QAAO,sBAAP,CAAP;AAExB,MAAMC,SAAS,GAAGC,IAAI,CAACC,KAAL,CAAW,CAACX,KAAK,CAACQ,MAAN,GAAe,CAAhB,IAAqBH,QAAhC,CAAlB;AAEA,MAAMO,YAAY,GAAGZ,KAAK,CAACa,KAAN,CACnB,CAACP,IAAI,GAAG,CAAR,IAAaD,QAAb,GAAwB,CADL,EAEnBC,IAAI,GAAGD,QAAP,GAAkB,CAFC,CAArB;AAKA,SACE,0CACGL,KAAK,CAACQ,MAAN,KAAiB,CAAjB,GACC,oBAAC,IAAD,QAAO,sBAAP,CADD,GAGC,oBAAC,IAAD;AAAM,IAAA,aAAa,EAAC,QAApB;AAA6B,IAAA,UAAU,EAAC;AAAxC,KACE,oBAAC,KAAD,QACE,oBAAC,OAAD;AAAS,IAAA,EAAE,EAAC;AAAZ,eAAqBR,KAAK,CAACQ,MAA3B,kCAAyDP,OAAzD,kBAAwEE,QAAxE,EADF,CADF,EAIE,oBAAC,aAAD;AAAe,IAAA,EAAE,EAAC,OAAlB;AAA0B,IAAA,GAAG,EAAC;AAA9B,KACGS,YAAY,CAACE,GAAb,CAAiB,CAACC,IAAD,EAAOC,KAAP,KAChB,oBAAC,QAAD;AACE,IAAA,GAAG,EAAEA,KADP;AAEE,IAAA,IAAI,EAAED,IAFR;AAGE,IAAA,OAAO,EAAEd,OAHX;AAIE,IAAA,QAAQ,EAAEC,QAJZ;AAKE,IAAA,QAAQ,EAAEC,QALZ;AAME,IAAA,SAAS,EAAEC;AANb,IADD,CADH,CAJF,EAgBE,oBAAC,UAAD;AACE,IAAA,OAAO,EAAEE,IADX;AAEE,IAAA,KAAK,EAAEG,SAFT;AAGE,IAAA,QAAQ,EAAGQ,QAAD,IAAc;AACtBV,MAAAA,OAAO,CAACU,QAAD,CAAP;AACD;AALH,IAhBF,CAJJ,CADF;AAgCD,CAnDM","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 { ApiModel, DiffRow } from '@looker/sdk-codegen'\nimport {\n Flex,\n Heading,\n Pagination,\n Space,\n SpaceVertical,\n Text,\n} from '@looker/components'\nimport type { FC } from 'react'\nimport React, { useState } from 'react'\nimport { DiffItem } from './DiffItem'\n\nexport interface DocDiffProps {\n /** Using delta because IntelliJ has bugs with 'diff' in a react app */\n delta: DiffRow[]\n /** Left side specKey */\n leftKey: string\n /** Left side spec */\n leftSpec: ApiModel\n /** Right side specKey */\n rightKey: string\n /** Right side spec */\n rightSpec: ApiModel\n /** Number of rows per page. Defaults to 15 */\n pageSize?: number\n}\n\nexport const DocDiff: FC<DocDiffProps> = ({\n delta,\n leftKey,\n leftSpec,\n rightKey,\n rightSpec,\n pageSize = 15,\n}) => {\n const [page, setPage] = useState(1)\n\n if (delta.length === 0) return <Text>{'No differences found'}</Text>\n\n const pageCount = Math.round((delta.length - 1) / pageSize)\n // The +1 is to skip the header row\n const pageItemData = delta.slice(\n (page - 1) * pageSize + 1,\n page * pageSize + 1\n )\n\n return (\n <>\n {delta.length === 0 ? (\n <Text>{'No differences found'}</Text>\n ) : (\n <Flex flexDirection=\"column\" alignItems=\"center\">\n <Space>\n <Heading as=\"h2\">{`${delta.length} differences between ${leftKey} and ${rightKey}`}</Heading>\n </Space>\n <SpaceVertical mt=\"large\" gap=\"xxsmall\">\n {pageItemData.map((item, index) => (\n <DiffItem\n key={index}\n item={item}\n leftKey={leftKey}\n leftSpec={leftSpec}\n rightKey={rightKey}\n rightSpec={rightSpec}\n />\n ))}\n </SpaceVertical>\n <Pagination\n current={page}\n pages={pageCount}\n onChange={(nextPage) => {\n setPage(nextPage)\n }}\n />\n </Flex>\n )}\n </>\n )\n}\n"],"file":"DocDiff.js"}
1
+ {"version":3,"sources":["../../../../../src/scenes/DiffScene/DocDiff/DocDiff.tsx"],"names":["Flex","Heading","Pagination","Space","SpaceVertical","Text","React","useState","DiffItem","DocDiff","delta","leftKey","leftSpec","rightKey","rightSpec","pageSize","page","setPage","length","pageCount","Math","round","pageItemData","slice","map","item","index","nextPage"],"mappings":"AA0BA,SACEA,IADF,EAEEC,OAFF,EAGEC,UAHF,EAIEC,KAJF,EAKEC,aALF,EAMEC,IANF,QAOO,oBAPP;AASA,OAAOC,KAAP,IAAgBC,QAAhB,QAAgC,OAAhC;AACA,SAASC,QAAT,QAAyB,YAAzB;AAiBA,OAAO,IAAMC,OAAyB,GAAG,QAOnC;AAAA,MAPoC;AACxCC,IAAAA,KADwC;AAExCC,IAAAA,OAFwC;AAGxCC,IAAAA,QAHwC;AAIxCC,IAAAA,QAJwC;AAKxCC,IAAAA,SALwC;AAMxCC,IAAAA,QAAQ,GAAG;AAN6B,GAOpC;AACJ,MAAM,CAACC,IAAD,EAAOC,OAAP,IAAkBV,QAAQ,CAAC,CAAD,CAAhC;AAEA,MAAIG,KAAK,CAACQ,MAAN,KAAiB,CAArB,EAAwB,OAAO,oBAAC,IAAD,QAAO,sBAAP,CAAP;AAExB,MAAMC,SAAS,GAAGC,IAAI,CAACC,KAAL,CAAW,CAACX,KAAK,CAACQ,MAAN,GAAe,CAAhB,IAAqBH,QAAhC,CAAlB;AACA,MAAMO,YAAY,GAAGZ,KAAK,CAACa,KAAN,CAAY,CAACP,IAAI,GAAG,CAAR,IAAaD,QAAzB,EAAmCC,IAAI,GAAGD,QAAP,GAAkB,CAArD,CAArB;AAEA,SACE,0CACGL,KAAK,CAACQ,MAAN,KAAiB,CAAjB,GACC,oBAAC,IAAD,QAAO,sBAAP,CADD,GAGC,oBAAC,IAAD;AAAM,IAAA,aAAa,EAAC,QAApB;AAA6B,IAAA,UAAU,EAAC;AAAxC,KACE,oBAAC,KAAD,QACE,oBAAC,OAAD;AAAS,IAAA,EAAE,EAAC;AAAZ,eAAqBR,KAAK,CAACQ,MAA3B,kCAAyDP,OAAzD,kBAAwEE,QAAxE,EADF,CADF,EAIE,oBAAC,aAAD;AAAe,IAAA,EAAE,EAAC,OAAlB;AAA0B,IAAA,GAAG,EAAC;AAA9B,KACGS,YAAY,CAACE,GAAb,CAAiB,CAACC,IAAD,EAAOC,KAAP,KAChB,oBAAC,QAAD;AACE,IAAA,GAAG,iBAAUV,IAAV,mBAAuBU,KAAvB,CADL;AAEE,IAAA,IAAI,EAAED,IAFR;AAGE,IAAA,OAAO,EAAEd,OAHX;AAIE,IAAA,QAAQ,EAAEC,QAJZ;AAKE,IAAA,QAAQ,EAAEC,QALZ;AAME,IAAA,SAAS,EAAEC;AANb,IADD,CADH,CAJF,EAgBE,oBAAC,UAAD;AACE,IAAA,OAAO,EAAEE,IADX;AAEE,IAAA,KAAK,EAAEG,SAFT;AAGE,IAAA,QAAQ,EAAGQ,QAAD,IAAc;AACtBV,MAAAA,OAAO,CAACU,QAAD,CAAP;AACD;AALH,IAhBF,CAJJ,CADF;AAgCD,CA/CM","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 { ApiModel, DiffRow } from '@looker/sdk-codegen'\nimport {\n Flex,\n Heading,\n Pagination,\n Space,\n SpaceVertical,\n Text,\n} from '@looker/components'\nimport type { FC } from 'react'\nimport React, { useState } from 'react'\nimport { DiffItem } from './DiffItem'\n\nexport interface DocDiffProps {\n /** Using delta because IntelliJ has bugs with 'diff' in a react app */\n delta: DiffRow[]\n /** Left side specKey */\n leftKey: string\n /** Left side spec */\n leftSpec: ApiModel\n /** Right side specKey */\n rightKey: string\n /** Right side spec */\n rightSpec: ApiModel\n /** Number of rows per page. Defaults to 15 */\n pageSize?: number\n}\n\nexport const DocDiff: FC<DocDiffProps> = ({\n delta,\n leftKey,\n leftSpec,\n rightKey,\n rightSpec,\n pageSize = 15,\n}) => {\n const [page, setPage] = useState(1)\n\n if (delta.length === 0) return <Text>{'No differences found'}</Text>\n\n const pageCount = Math.round((delta.length - 1) / pageSize)\n const pageItemData = delta.slice((page - 1) * pageSize, page * pageSize + 1)\n\n return (\n <>\n {delta.length === 0 ? (\n <Text>{'No differences found'}</Text>\n ) : (\n <Flex flexDirection=\"column\" alignItems=\"center\">\n <Space>\n <Heading as=\"h2\">{`${delta.length} differences between ${leftKey} and ${rightKey}`}</Heading>\n </Space>\n <SpaceVertical mt=\"large\" gap=\"xxsmall\">\n {pageItemData.map((item, index) => (\n <DiffItem\n key={`page-${page} item-${index}`}\n item={item}\n leftKey={leftKey}\n leftSpec={leftSpec}\n rightKey={rightKey}\n rightSpec={rightSpec}\n />\n ))}\n </SpaceVertical>\n <Pagination\n current={page}\n pages={pageCount}\n onChange={(nextPage) => {\n setPage(nextPage)\n }}\n />\n </Flex>\n )}\n </>\n )\n}\n"],"file":"DocDiff.js"}
@@ -139,6 +139,7 @@ var DiffScene = _ref => {
139
139
  options: options,
140
140
  onChange: handleLeftChange
141
141
  })), _react.default.createElement(_components.IconButton, {
142
+ className: "switch-button",
142
143
  label: "switch",
143
144
  size: "small",
144
145
  disabled: !leftKey || !rightKey,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/scenes/DiffScene/DiffScene.tsx"],"names":["diffToggles","label","value","validateParam","specs","specKey","DiffScene","toggleNavigation","adaptor","history","spec","selectCurrentSpec","currentSpecKey","key","match","diffPath","l","params","r","options","Object","entries","map","status","leftKey","setLeftKey","rightKey","setRightKey","leftApi","setLeftApi","api","rightApi","setRightApi","toggles","setToggles","standardDiffToggles","delta","setDelta","handleLeftChange","newLeft","push","handleRightChange","newRight","handleSwitch","fetchSpec","then","handleTogglesChange","values","newToggles"],"mappings":"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","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type { FC } from 'react'\nimport React, { useState, useEffect } from 'react'\nimport type { ApiModel, DiffRow, SpecList } from '@looker/sdk-codegen'\nimport { useHistory, useRouteMatch } from 'react-router-dom'\nimport {\n Box,\n Flex,\n FlexItem,\n IconButton,\n Label,\n Select,\n SelectMulti,\n} from '@looker/components'\nimport { SyncAlt } from '@styled-icons/material/SyncAlt'\nimport { useSelector } from 'react-redux'\n\nimport { ApixSection } from '../../components'\nimport { selectCurrentSpec } from '../../state'\nimport { diffPath, getApixAdaptor } from '../../utils'\nimport { diffSpecs, standardDiffToggles } from './diffUtils'\nimport { DocDiff } from './DocDiff'\n\nconst diffToggles = [\n {\n label: 'Missing',\n value: 'missing',\n },\n {\n label: 'Status',\n value: 'status',\n },\n {\n label: 'Parameters',\n value: 'params',\n },\n {\n label: 'Type',\n value: 'type',\n },\n {\n label: 'Body',\n value: 'body',\n },\n {\n label: 'Response',\n value: 'response',\n },\n]\n\nexport interface DiffSceneProps {\n specs: SpecList\n toggleNavigation: (target?: boolean) => void\n}\n\nconst validateParam = (specs: SpecList, specKey = '') => {\n return specs[specKey] ? specKey : ''\n}\n\nexport const DiffScene: FC<DiffSceneProps> = ({ specs, toggleNavigation }) => {\n const adaptor = getApixAdaptor()\n const history = useHistory()\n const spec = useSelector(selectCurrentSpec)\n const currentSpecKey = spec.key\n const match = useRouteMatch<{ l: string; r: string }>(`/${diffPath}/:l?/:r?`)\n const l = validateParam(specs, match?.params.l)\n const r = validateParam(specs, match?.params.r)\n\n const options = Object.entries(specs).map(([key, spec]) => ({\n value: key,\n label: `${key} (${spec.status})`,\n }))\n\n const [leftKey, setLeftKey] = useState<string>(l || currentSpecKey)\n const [rightKey, setRightKey] = useState<string>(r || '')\n const [leftApi, setLeftApi] = useState<ApiModel>(specs[leftKey].api!)\n const [rightApi, setRightApi] = useState<ApiModel>(() =>\n rightKey ? specs[rightKey].api! : specs[leftKey].api!\n )\n const [toggles, setToggles] = useState<string[]>(standardDiffToggles)\n\n useEffect(() => {\n if (r !== rightKey) {\n setRightKey(r)\n }\n }, [r, rightKey])\n\n useEffect(() => {\n if (l !== leftKey) {\n setLeftKey(l)\n }\n }, [l, leftKey])\n\n useEffect(() => {\n toggleNavigation(false)\n }, [])\n\n const [delta, setDelta] = useState<DiffRow[]>([])\n\n const handleLeftChange = (newLeft: string) => {\n history.push(`/${diffPath}/${newLeft}/${rightKey}`)\n }\n const handleRightChange = (newRight: string) => {\n history.push(`/${diffPath}/${leftKey}/${newRight}`)\n }\n\n const handleSwitch = () => {\n history.push(`/${diffPath}/${rightKey}/${leftKey}`)\n }\n\n useEffect(() => {\n adaptor.fetchSpec(specs[leftKey]).then((spec) => setLeftApi(spec.api!))\n }, [leftKey])\n\n useEffect(() => {\n if (rightKey in specs) {\n adaptor.fetchSpec(specs[rightKey]).then((spec) => setRightApi(spec.api!))\n }\n }, [rightKey])\n\n useEffect(() => {\n if (leftApi && rightApi) {\n setDelta([...diffSpecs(leftApi, rightApi, toggles)])\n }\n }, [leftApi, rightApi, toggles])\n\n const handleTogglesChange = (values?: string[]) => {\n const newToggles = values || []\n setToggles(newToggles)\n }\n\n return (\n <ApixSection>\n <Box>\n <Flex bg=\"AliceBlue\" padding=\"large\" mb=\"large\" alignItems=\"center\">\n <FlexItem>\n <Label htmlFor=\"base\">Base</Label>\n <Select\n mt=\"xxsmall\"\n id=\"base\"\n name=\"Left Version\"\n value={leftKey}\n options={options}\n onChange={handleLeftChange}\n />\n </FlexItem>\n <IconButton\n label=\"switch\"\n size=\"small\"\n disabled={!leftKey || !rightKey}\n icon={<SyncAlt />}\n mt=\"medium\"\n onClick={handleSwitch}\n />\n <FlexItem>\n <Label htmlFor=\"compare\">Compare</Label>\n <Select\n mt=\"xxsmall\"\n id=\"compare\"\n name=\"Right Version\"\n placeholder=\"Select a comparison...\"\n value={rightKey}\n options={options}\n onChange={handleRightChange}\n />\n </FlexItem>\n <FlexItem flex=\"2\" ml=\"large\">\n <Label htmlFor=\"options\">Comparison Options</Label>\n <SelectMulti\n mt=\"xxsmall\"\n id=\"options\"\n name=\"toggles\"\n placeholder=\"Comparison options\"\n defaultValues={toggles}\n onChange={handleTogglesChange}\n options={diffToggles}\n />\n </FlexItem>\n </Flex>\n </Box>\n <DocDiff\n delta={delta}\n leftKey={leftKey}\n leftSpec={leftApi}\n rightKey={rightKey}\n rightSpec={rightApi}\n />\n </ApixSection>\n )\n}\n"],"file":"DiffScene.js"}
1
+ {"version":3,"sources":["../../../src/scenes/DiffScene/DiffScene.tsx"],"names":["diffToggles","label","value","validateParam","specs","specKey","DiffScene","toggleNavigation","adaptor","history","spec","selectCurrentSpec","currentSpecKey","key","match","diffPath","l","params","r","options","Object","entries","map","status","leftKey","setLeftKey","rightKey","setRightKey","leftApi","setLeftApi","api","rightApi","setRightApi","toggles","setToggles","standardDiffToggles","delta","setDelta","handleLeftChange","newLeft","push","handleRightChange","newRight","handleSwitch","fetchSpec","then","handleTogglesChange","values","newToggles"],"mappings":"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","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type { FC } from 'react'\nimport React, { useState, useEffect } from 'react'\nimport type { ApiModel, DiffRow, SpecList } from '@looker/sdk-codegen'\nimport { useHistory, useRouteMatch } from 'react-router-dom'\nimport {\n Box,\n Flex,\n FlexItem,\n IconButton,\n Label,\n Select,\n SelectMulti,\n} from '@looker/components'\nimport { SyncAlt } from '@styled-icons/material/SyncAlt'\nimport { useSelector } from 'react-redux'\n\nimport { ApixSection } from '../../components'\nimport { selectCurrentSpec } from '../../state'\nimport { diffPath, getApixAdaptor } from '../../utils'\nimport { diffSpecs, standardDiffToggles } from './diffUtils'\nimport { DocDiff } from './DocDiff'\n\nconst diffToggles = [\n {\n label: 'Missing',\n value: 'missing',\n },\n {\n label: 'Status',\n value: 'status',\n },\n {\n label: 'Parameters',\n value: 'params',\n },\n {\n label: 'Type',\n value: 'type',\n },\n {\n label: 'Body',\n value: 'body',\n },\n {\n label: 'Response',\n value: 'response',\n },\n]\n\nexport interface DiffSceneProps {\n specs: SpecList\n toggleNavigation: (target?: boolean) => void\n}\n\nconst validateParam = (specs: SpecList, specKey = '') => {\n return specs[specKey] ? specKey : ''\n}\n\nexport const DiffScene: FC<DiffSceneProps> = ({ specs, toggleNavigation }) => {\n const adaptor = getApixAdaptor()\n const history = useHistory()\n const spec = useSelector(selectCurrentSpec)\n const currentSpecKey = spec.key\n const match = useRouteMatch<{ l: string; r: string }>(`/${diffPath}/:l?/:r?`)\n const l = validateParam(specs, match?.params.l)\n const r = validateParam(specs, match?.params.r)\n\n const options = Object.entries(specs).map(([key, spec]) => ({\n value: key,\n label: `${key} (${spec.status})`,\n }))\n\n const [leftKey, setLeftKey] = useState<string>(l || currentSpecKey)\n const [rightKey, setRightKey] = useState<string>(r || '')\n const [leftApi, setLeftApi] = useState<ApiModel>(specs[leftKey].api!)\n const [rightApi, setRightApi] = useState<ApiModel>(() =>\n rightKey ? specs[rightKey].api! : specs[leftKey].api!\n )\n const [toggles, setToggles] = useState<string[]>(standardDiffToggles)\n\n useEffect(() => {\n if (r !== rightKey) {\n setRightKey(r)\n }\n }, [r, rightKey])\n\n useEffect(() => {\n if (l !== leftKey) {\n setLeftKey(l)\n }\n }, [l, leftKey])\n\n useEffect(() => {\n toggleNavigation(false)\n }, [])\n\n const [delta, setDelta] = useState<DiffRow[]>([])\n\n const handleLeftChange = (newLeft: string) => {\n history.push(`/${diffPath}/${newLeft}/${rightKey}`)\n }\n const handleRightChange = (newRight: string) => {\n history.push(`/${diffPath}/${leftKey}/${newRight}`)\n }\n\n const handleSwitch = () => {\n history.push(`/${diffPath}/${rightKey}/${leftKey}`)\n }\n\n useEffect(() => {\n adaptor.fetchSpec(specs[leftKey]).then((spec) => setLeftApi(spec.api!))\n }, [leftKey])\n\n useEffect(() => {\n if (rightKey in specs) {\n adaptor.fetchSpec(specs[rightKey]).then((spec) => setRightApi(spec.api!))\n }\n }, [rightKey])\n\n useEffect(() => {\n if (leftApi && rightApi) {\n setDelta([...diffSpecs(leftApi, rightApi, toggles)])\n }\n }, [leftApi, rightApi, toggles])\n\n const handleTogglesChange = (values?: string[]) => {\n const newToggles = values || []\n setToggles(newToggles)\n }\n\n return (\n <ApixSection>\n <Box>\n <Flex bg=\"AliceBlue\" padding=\"large\" mb=\"large\" alignItems=\"center\">\n <FlexItem>\n <Label htmlFor=\"base\">Base</Label>\n <Select\n mt=\"xxsmall\"\n id=\"base\"\n name=\"Left Version\"\n value={leftKey}\n options={options}\n onChange={handleLeftChange}\n />\n </FlexItem>\n <IconButton\n className=\"switch-button\"\n label=\"switch\"\n size=\"small\"\n disabled={!leftKey || !rightKey}\n icon={<SyncAlt />}\n mt=\"medium\"\n onClick={handleSwitch}\n />\n <FlexItem>\n <Label htmlFor=\"compare\">Compare</Label>\n <Select\n mt=\"xxsmall\"\n id=\"compare\"\n name=\"Right Version\"\n placeholder=\"Select a comparison...\"\n value={rightKey}\n options={options}\n onChange={handleRightChange}\n />\n </FlexItem>\n <FlexItem flex=\"2\" ml=\"large\">\n <Label htmlFor=\"options\">Comparison Options</Label>\n <SelectMulti\n mt=\"xxsmall\"\n id=\"options\"\n name=\"toggles\"\n placeholder=\"Comparison options\"\n defaultValues={toggles}\n onChange={handleTogglesChange}\n options={diffToggles}\n />\n </FlexItem>\n </Flex>\n </Box>\n <DocDiff\n delta={delta}\n leftKey={leftKey}\n leftSpec={leftApi}\n rightKey={rightKey}\n rightSpec={rightApi}\n />\n </ApixSection>\n )\n}\n"],"file":"DiffScene.js"}
@@ -27,7 +27,7 @@ var DocDiff = _ref => {
27
27
  var [page, setPage] = (0, _react.useState)(1);
28
28
  if (delta.length === 0) return _react.default.createElement(_components.Text, null, 'No differences found');
29
29
  var pageCount = Math.round((delta.length - 1) / pageSize);
30
- var pageItemData = delta.slice((page - 1) * pageSize + 1, page * pageSize + 1);
30
+ var pageItemData = delta.slice((page - 1) * pageSize, page * pageSize + 1);
31
31
  return _react.default.createElement(_react.default.Fragment, null, delta.length === 0 ? _react.default.createElement(_components.Text, null, 'No differences found') : _react.default.createElement(_components.Flex, {
32
32
  flexDirection: "column",
33
33
  alignItems: "center"
@@ -37,7 +37,7 @@ var DocDiff = _ref => {
37
37
  mt: "large",
38
38
  gap: "xxsmall"
39
39
  }, pageItemData.map((item, index) => _react.default.createElement(_DiffItem.DiffItem, {
40
- key: index,
40
+ key: "page-".concat(page, " item-").concat(index),
41
41
  item: item,
42
42
  leftKey: leftKey,
43
43
  leftSpec: leftSpec,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/scenes/DiffScene/DocDiff/DocDiff.tsx"],"names":["DocDiff","delta","leftKey","leftSpec","rightKey","rightSpec","pageSize","page","setPage","length","pageCount","Math","round","pageItemData","slice","map","item","index","nextPage"],"mappings":";;;;;;;AA0BA;;AASA;;AACA;;;;;;AAiBO,IAAMA,OAAyB,GAAG,QAOnC;AAAA,MAPoC;AACxCC,IAAAA,KADwC;AAExCC,IAAAA,OAFwC;AAGxCC,IAAAA,QAHwC;AAIxCC,IAAAA,QAJwC;AAKxCC,IAAAA,SALwC;AAMxCC,IAAAA,QAAQ,GAAG;AAN6B,GAOpC;AACJ,MAAM,CAACC,IAAD,EAAOC,OAAP,IAAkB,qBAAS,CAAT,CAAxB;AAEA,MAAIP,KAAK,CAACQ,MAAN,KAAiB,CAArB,EAAwB,OAAO,6BAAC,gBAAD,QAAO,sBAAP,CAAP;AAExB,MAAMC,SAAS,GAAGC,IAAI,CAACC,KAAL,CAAW,CAACX,KAAK,CAACQ,MAAN,GAAe,CAAhB,IAAqBH,QAAhC,CAAlB;AAEA,MAAMO,YAAY,GAAGZ,KAAK,CAACa,KAAN,CACnB,CAACP,IAAI,GAAG,CAAR,IAAaD,QAAb,GAAwB,CADL,EAEnBC,IAAI,GAAGD,QAAP,GAAkB,CAFC,CAArB;AAKA,SACE,4DACGL,KAAK,CAACQ,MAAN,KAAiB,CAAjB,GACC,6BAAC,gBAAD,QAAO,sBAAP,CADD,GAGC,6BAAC,gBAAD;AAAM,IAAA,aAAa,EAAC,QAApB;AAA6B,IAAA,UAAU,EAAC;AAAxC,KACE,6BAAC,iBAAD,QACE,6BAAC,mBAAD;AAAS,IAAA,EAAE,EAAC;AAAZ,eAAqBR,KAAK,CAACQ,MAA3B,kCAAyDP,OAAzD,kBAAwEE,QAAxE,EADF,CADF,EAIE,6BAAC,yBAAD;AAAe,IAAA,EAAE,EAAC,OAAlB;AAA0B,IAAA,GAAG,EAAC;AAA9B,KACGS,YAAY,CAACE,GAAb,CAAiB,CAACC,IAAD,EAAOC,KAAP,KAChB,6BAAC,kBAAD;AACE,IAAA,GAAG,EAAEA,KADP;AAEE,IAAA,IAAI,EAAED,IAFR;AAGE,IAAA,OAAO,EAAEd,OAHX;AAIE,IAAA,QAAQ,EAAEC,QAJZ;AAKE,IAAA,QAAQ,EAAEC,QALZ;AAME,IAAA,SAAS,EAAEC;AANb,IADD,CADH,CAJF,EAgBE,6BAAC,sBAAD;AACE,IAAA,OAAO,EAAEE,IADX;AAEE,IAAA,KAAK,EAAEG,SAFT;AAGE,IAAA,QAAQ,EAAGQ,QAAD,IAAc;AACtBV,MAAAA,OAAO,CAACU,QAAD,CAAP;AACD;AALH,IAhBF,CAJJ,CADF;AAgCD,CAnDM","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 { ApiModel, DiffRow } from '@looker/sdk-codegen'\nimport {\n Flex,\n Heading,\n Pagination,\n Space,\n SpaceVertical,\n Text,\n} from '@looker/components'\nimport type { FC } from 'react'\nimport React, { useState } from 'react'\nimport { DiffItem } from './DiffItem'\n\nexport interface DocDiffProps {\n /** Using delta because IntelliJ has bugs with 'diff' in a react app */\n delta: DiffRow[]\n /** Left side specKey */\n leftKey: string\n /** Left side spec */\n leftSpec: ApiModel\n /** Right side specKey */\n rightKey: string\n /** Right side spec */\n rightSpec: ApiModel\n /** Number of rows per page. Defaults to 15 */\n pageSize?: number\n}\n\nexport const DocDiff: FC<DocDiffProps> = ({\n delta,\n leftKey,\n leftSpec,\n rightKey,\n rightSpec,\n pageSize = 15,\n}) => {\n const [page, setPage] = useState(1)\n\n if (delta.length === 0) return <Text>{'No differences found'}</Text>\n\n const pageCount = Math.round((delta.length - 1) / pageSize)\n // The +1 is to skip the header row\n const pageItemData = delta.slice(\n (page - 1) * pageSize + 1,\n page * pageSize + 1\n )\n\n return (\n <>\n {delta.length === 0 ? (\n <Text>{'No differences found'}</Text>\n ) : (\n <Flex flexDirection=\"column\" alignItems=\"center\">\n <Space>\n <Heading as=\"h2\">{`${delta.length} differences between ${leftKey} and ${rightKey}`}</Heading>\n </Space>\n <SpaceVertical mt=\"large\" gap=\"xxsmall\">\n {pageItemData.map((item, index) => (\n <DiffItem\n key={index}\n item={item}\n leftKey={leftKey}\n leftSpec={leftSpec}\n rightKey={rightKey}\n rightSpec={rightSpec}\n />\n ))}\n </SpaceVertical>\n <Pagination\n current={page}\n pages={pageCount}\n onChange={(nextPage) => {\n setPage(nextPage)\n }}\n />\n </Flex>\n )}\n </>\n )\n}\n"],"file":"DocDiff.js"}
1
+ {"version":3,"sources":["../../../../src/scenes/DiffScene/DocDiff/DocDiff.tsx"],"names":["DocDiff","delta","leftKey","leftSpec","rightKey","rightSpec","pageSize","page","setPage","length","pageCount","Math","round","pageItemData","slice","map","item","index","nextPage"],"mappings":";;;;;;;AA0BA;;AASA;;AACA;;;;;;AAiBO,IAAMA,OAAyB,GAAG,QAOnC;AAAA,MAPoC;AACxCC,IAAAA,KADwC;AAExCC,IAAAA,OAFwC;AAGxCC,IAAAA,QAHwC;AAIxCC,IAAAA,QAJwC;AAKxCC,IAAAA,SALwC;AAMxCC,IAAAA,QAAQ,GAAG;AAN6B,GAOpC;AACJ,MAAM,CAACC,IAAD,EAAOC,OAAP,IAAkB,qBAAS,CAAT,CAAxB;AAEA,MAAIP,KAAK,CAACQ,MAAN,KAAiB,CAArB,EAAwB,OAAO,6BAAC,gBAAD,QAAO,sBAAP,CAAP;AAExB,MAAMC,SAAS,GAAGC,IAAI,CAACC,KAAL,CAAW,CAACX,KAAK,CAACQ,MAAN,GAAe,CAAhB,IAAqBH,QAAhC,CAAlB;AACA,MAAMO,YAAY,GAAGZ,KAAK,CAACa,KAAN,CAAY,CAACP,IAAI,GAAG,CAAR,IAAaD,QAAzB,EAAmCC,IAAI,GAAGD,QAAP,GAAkB,CAArD,CAArB;AAEA,SACE,4DACGL,KAAK,CAACQ,MAAN,KAAiB,CAAjB,GACC,6BAAC,gBAAD,QAAO,sBAAP,CADD,GAGC,6BAAC,gBAAD;AAAM,IAAA,aAAa,EAAC,QAApB;AAA6B,IAAA,UAAU,EAAC;AAAxC,KACE,6BAAC,iBAAD,QACE,6BAAC,mBAAD;AAAS,IAAA,EAAE,EAAC;AAAZ,eAAqBR,KAAK,CAACQ,MAA3B,kCAAyDP,OAAzD,kBAAwEE,QAAxE,EADF,CADF,EAIE,6BAAC,yBAAD;AAAe,IAAA,EAAE,EAAC,OAAlB;AAA0B,IAAA,GAAG,EAAC;AAA9B,KACGS,YAAY,CAACE,GAAb,CAAiB,CAACC,IAAD,EAAOC,KAAP,KAChB,6BAAC,kBAAD;AACE,IAAA,GAAG,iBAAUV,IAAV,mBAAuBU,KAAvB,CADL;AAEE,IAAA,IAAI,EAAED,IAFR;AAGE,IAAA,OAAO,EAAEd,OAHX;AAIE,IAAA,QAAQ,EAAEC,QAJZ;AAKE,IAAA,QAAQ,EAAEC,QALZ;AAME,IAAA,SAAS,EAAEC;AANb,IADD,CADH,CAJF,EAgBE,6BAAC,sBAAD;AACE,IAAA,OAAO,EAAEE,IADX;AAEE,IAAA,KAAK,EAAEG,SAFT;AAGE,IAAA,QAAQ,EAAGQ,QAAD,IAAc;AACtBV,MAAAA,OAAO,CAACU,QAAD,CAAP;AACD;AALH,IAhBF,CAJJ,CADF;AAgCD,CA/CM","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 { ApiModel, DiffRow } from '@looker/sdk-codegen'\nimport {\n Flex,\n Heading,\n Pagination,\n Space,\n SpaceVertical,\n Text,\n} from '@looker/components'\nimport type { FC } from 'react'\nimport React, { useState } from 'react'\nimport { DiffItem } from './DiffItem'\n\nexport interface DocDiffProps {\n /** Using delta because IntelliJ has bugs with 'diff' in a react app */\n delta: DiffRow[]\n /** Left side specKey */\n leftKey: string\n /** Left side spec */\n leftSpec: ApiModel\n /** Right side specKey */\n rightKey: string\n /** Right side spec */\n rightSpec: ApiModel\n /** Number of rows per page. Defaults to 15 */\n pageSize?: number\n}\n\nexport const DocDiff: FC<DocDiffProps> = ({\n delta,\n leftKey,\n leftSpec,\n rightKey,\n rightSpec,\n pageSize = 15,\n}) => {\n const [page, setPage] = useState(1)\n\n if (delta.length === 0) return <Text>{'No differences found'}</Text>\n\n const pageCount = Math.round((delta.length - 1) / pageSize)\n const pageItemData = delta.slice((page - 1) * pageSize, page * pageSize + 1)\n\n return (\n <>\n {delta.length === 0 ? (\n <Text>{'No differences found'}</Text>\n ) : (\n <Flex flexDirection=\"column\" alignItems=\"center\">\n <Space>\n <Heading as=\"h2\">{`${delta.length} differences between ${leftKey} and ${rightKey}`}</Heading>\n </Space>\n <SpaceVertical mt=\"large\" gap=\"xxsmall\">\n {pageItemData.map((item, index) => (\n <DiffItem\n key={`page-${page} item-${index}`}\n item={item}\n leftKey={leftKey}\n leftSpec={leftSpec}\n rightKey={rightKey}\n rightSpec={rightSpec}\n />\n ))}\n </SpaceVertical>\n <Pagination\n current={page}\n pages={pageCount}\n onChange={(nextPage) => {\n setPage(nextPage)\n }}\n />\n </Flex>\n )}\n </>\n )\n}\n"],"file":"DocDiff.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@looker/api-explorer",
3
- "version": "0.9.33-alpha.1523+609dcf92",
3
+ "version": "0.9.34",
4
4
  "description": "Looker API Explorer",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib/esm/index.js",
@@ -27,14 +27,14 @@
27
27
  "build": "tsc && webpack --config webpack.prod.config.js",
28
28
  "develop": "webpack serve --host=0.0.0.0 --https --disable-host-check --config webpack.dev.config.js",
29
29
  "docs": "typedoc --mode file --out docs",
30
- "test:e2e": "yarn jest e2e",
30
+ "test:e2e": "yarn jest e2e --config=jest-puppeteer.config.js",
31
31
  "watch": "yarn lerna exec --scope @looker/api-explorer --stream 'BABEL_ENV=build babel src --root-mode upward --out-dir lib/esm --source-maps --extensions .ts,.tsx --no-comments --watch'",
32
32
  "deploy-dev-portal": "rm -f ../../../developer-portal/static/apix/dist/*.js* && cp -R ./dist/*.js* ../../../developer-portal/static/apix/dist"
33
33
  },
34
34
  "devDependencies": {
35
35
  "@looker/components-test-utils": "^1.5.5",
36
- "@looker/sdk-codegen-scripts": "^21.3.3",
37
- "@looker/sdk-node": "^22.4.2",
36
+ "@looker/sdk-codegen-scripts": "^21.4.0",
37
+ "@looker/sdk-node": "^22.8.0",
38
38
  "@styled-icons/styled-icon": "^10.6.3",
39
39
  "@testing-library/jest-dom": "^5.11.6",
40
40
  "@testing-library/react": "^11.2.2",
@@ -67,17 +67,17 @@
67
67
  "webpack-merge": "^5.7.3"
68
68
  },
69
69
  "dependencies": {
70
- "@looker/code-editor": "^0.1.21",
70
+ "@looker/code-editor": "^0.1.22",
71
71
  "@looker/components": "^2.8.1",
72
72
  "@looker/components-date": "^2.4.1",
73
73
  "@looker/design-tokens": "^2.7.1",
74
- "@looker/extension-utils": "^0.1.10-alpha.1523+609dcf92",
74
+ "@looker/extension-utils": "^0.1.11",
75
75
  "@looker/icons": "^1.5.3",
76
- "@looker/redux": "^0.0.0",
77
- "@looker/run-it": "^0.9.33-alpha.1523+609dcf92",
78
- "@looker/sdk": "^22.4.2",
79
- "@looker/sdk-codegen": "^21.5.2",
80
- "@looker/sdk-rtl": "^21.3.3",
76
+ "@looker/redux": "0.0.0",
77
+ "@looker/run-it": "^0.9.34",
78
+ "@looker/sdk": "^22.8.0",
79
+ "@looker/sdk-codegen": "^21.6.0",
80
+ "@looker/sdk-rtl": "^21.3.4",
81
81
  "@reduxjs/toolkit": "^1.6.2",
82
82
  "@styled-icons/material": "^10.28.0",
83
83
  "@styled-icons/material-outlined": "^10.28.0",
@@ -96,5 +96,5 @@
96
96
  "ts-jest": "^26.2.0",
97
97
  "typed-redux-saga": "^1.3.1"
98
98
  },
99
- "gitHead": "609dcf92cd1d0c0311ca5a87208c914126b915d1"
99
+ "gitHead": "c645e639111bd1f4784f0e16d4a5448b92804fcd"
100
100
  }
@@ -26,7 +26,7 @@
26
26
  import React from 'react'
27
27
  import { screen, waitFor } from '@testing-library/react'
28
28
  import type { IDeclarationMine } from '@looker/sdk-codegen'
29
- import { permaLink } from '@looker/sdk-codegen'
29
+ import { codeSearchLink } from '@looker/sdk-codegen'
30
30
  import userEvent from '@testing-library/user-event'
31
31
  import { api } from '../../test-data'
32
32
  import { renderWithLode } from '../../test-utils'
@@ -82,7 +82,7 @@ describe('DocSource', () => {
82
82
  renderWithLode(<DocSource type={type} />, examples, declarations)
83
83
  const link = screen.getByRole('link')
84
84
  const declaration = declarations.types.Query
85
- const expected = permaLink(
85
+ const expected = codeSearchLink(
86
86
  declarations.remoteOrigin,
87
87
  declarations.commitHash,
88
88
  declaration.sourceFile,
@@ -101,7 +101,7 @@ describe('DocSource', () => {
101
101
  renderWithLode(<DocSource method={method} />, examples, declarations)
102
102
  const link = screen.getByRole('link')
103
103
  const declaration = declarations.methods['POST /login']
104
- const expected = permaLink(
104
+ const expected = codeSearchLink(
105
105
  declarations.remoteOrigin,
106
106
  declarations.commitHash,
107
107
  declaration.sourceFile,
@@ -26,7 +26,7 @@
26
26
  import type { FC } from 'react'
27
27
  import React from 'react'
28
28
  import type { IMethod, IType } from '@looker/sdk-codegen'
29
- import { findDeclaration } from '@looker/sdk-codegen'
29
+ import { codeSearchLink, findDeclaration } from '@looker/sdk-codegen'
30
30
  import { Icon, Link, Tooltip } from '@looker/components'
31
31
  import { IdeFileDocument } from '@looker/icons'
32
32
  import { useSelector } from 'react-redux'
@@ -46,7 +46,8 @@ export const DocSource: FC<DocSourceProps> = ({ method, type }) => {
46
46
  ;({ declaration, link: sourceLink } = findDeclaration(
47
47
  declarations,
48
48
  method?.id,
49
- type?.name
49
+ type?.name,
50
+ codeSearchLink
50
51
  ))
51
52
  }
52
53