You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2022/01/13 11:58:42 UTC

svn commit: r1896987 [10/17] - in /tinkerpop/site: ./ css/ fonts/ gremlint/ gremlint/static/css/ gremlint/static/js/ img/ img/community/ img/download/ img/gremlin/ img/providers/ img/social/ img/use-cases/ js/

Modified: tinkerpop/site/gremlint/index.html
URL: http://svn.apache.org/viewvc/tinkerpop/site/gremlint/index.html?rev=1896987&r1=1896986&r2=1896987&view=diff
==============================================================================
--- tinkerpop/site/gremlint/index.html (original)
+++ tinkerpop/site/gremlint/index.html Thu Jan 13 11:58:40 2022
@@ -1 +1 @@
-<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/gremlint/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Web site created using create-react-app"/><meta name="google-site-verification" content="8rkkiQkZaBwVUAUBxSY6Nj_EBHqCGPEYnEJmlyXuLnw"/><link rel="apple-touch-icon" href="/gremlint/logo192.png"/><link rel="manifest" href="/gremlint/manifest.json"/><title>React App</title><link href="/gremlint/static/css/main.1a75189c.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function r(r){for(var n,i,a=r[0],c=r[1],l=r[2],s=0,p=[];s<a.length;s++)i=a[s],Object.prototype.hasOwnProperty.call(o,i)&&o[i]&&p.push(o[i][0]),o[i]=0;for(n in c)Object.prototype.hasOwnProperty.call(c,n)&&(e[n]=c[n]);for(f&&f(r);p.length;)p.shift()();return u.push.apply(u,l||[
 ]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,a=1;a<t.length;a++){var c=t[a];0!==o[c]&&(n=!1)}n&&(u.splice(r--,1),e=i(i.s=t[0]))}return e}var n={},o={1:0},u=[];function i(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,i),t.l=!0,t.exports}i.e=function(e){var r=[],t=o[e];if(0!==t)if(t)r.push(t[2]);else{var n=new Promise((function(r,n){t=o[e]=[r,n]}));r.push(t[2]=n);var u,a=document.createElement("script");a.charset="utf-8",a.timeout=120,i.nc&&a.setAttribute("nonce",i.nc),a.src=function(e){return i.p+"static/js/"+({}[e]||e)+"."+{3:"aa78d2bd"}[e]+".chunk.js"}(e);var c=new Error;u=function(r){a.onerror=a.onload=null,clearTimeout(l);var t=o[e];if(0!==t){if(t){var n=r&&("load"===r.type?"missing":r.type),u=r&&r.target&&r.target.src;c.message="Loading chunk "+e+" failed.\n("+n+": "+u+")",c.name="ChunkLoadError",c.type=n,c.request=u,t[1](c)}o[e]=void 0}};var l=setTimeout((function(){u({type:"timeout",target:a})}),
 12e4);a.onerror=a.onload=u,document.head.appendChild(a)}return Promise.all(r)},i.m=e,i.c=n,i.d=function(e,r,t){i.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,r){if(1&r&&(e=i(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(i.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)i.d(t,n,function(r){return e[r]}.bind(null,n));return t},i.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(r,"a",r),r},i.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},i.p="/gremlint/",i.oe=function(e){throw console.error(e),e};var a=this["webpackJsonpgremlint.com"]=this["webpackJsonpgremlint.com"]||[],c=a.push.bind(a);a.push=r,a=a.slice();for(va
 r l=0;l<a.length;l++)r(a[l]);var f=c;t()}([])</script><script src="/gremlint/static/js/2.7ab90129.chunk.js"></script><script src="/gremlint/static/js/main.3ad59235.chunk.js"></script></body></html>
\ No newline at end of file
+<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/gremlint/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Web site created using create-react-app"/><meta name="google-site-verification" content="8rkkiQkZaBwVUAUBxSY6Nj_EBHqCGPEYnEJmlyXuLnw"/><link rel="apple-touch-icon" href="/gremlint/logo192.png"/><link rel="manifest" href="/gremlint/manifest.json"/><title>React App</title><link href="/gremlint/static/css/main.39910e18.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function r(r){for(var n,i,a=r[0],c=r[1],l=r[2],s=0,p=[];s<a.length;s++)i=a[s],Object.prototype.hasOwnProperty.call(o,i)&&o[i]&&p.push(o[i][0]),o[i]=0;for(n in c)Object.prototype.hasOwnProperty.call(c,n)&&(e[n]=c[n]);for(f&&f(r);p.length;)p.shift()();return u.push.apply(u,l||[
 ]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,a=1;a<t.length;a++){var c=t[a];0!==o[c]&&(n=!1)}n&&(u.splice(r--,1),e=i(i.s=t[0]))}return e}var n={},o={1:0},u=[];function i(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,i),t.l=!0,t.exports}i.e=function(e){var r=[],t=o[e];if(0!==t)if(t)r.push(t[2]);else{var n=new Promise((function(r,n){t=o[e]=[r,n]}));r.push(t[2]=n);var u,a=document.createElement("script");a.charset="utf-8",a.timeout=120,i.nc&&a.setAttribute("nonce",i.nc),a.src=function(e){return i.p+"static/js/"+({}[e]||e)+"."+{3:"aa78d2bd"}[e]+".chunk.js"}(e);var c=new Error;u=function(r){a.onerror=a.onload=null,clearTimeout(l);var t=o[e];if(0!==t){if(t){var n=r&&("load"===r.type?"missing":r.type),u=r&&r.target&&r.target.src;c.message="Loading chunk "+e+" failed.\n("+n+": "+u+")",c.name="ChunkLoadError",c.type=n,c.request=u,t[1](c)}o[e]=void 0}};var l=setTimeout((function(){u({type:"timeout",target:a})}),
 12e4);a.onerror=a.onload=u,document.head.appendChild(a)}return Promise.all(r)},i.m=e,i.c=n,i.d=function(e,r,t){i.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,r){if(1&r&&(e=i(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(i.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)i.d(t,n,function(r){return e[r]}.bind(null,n));return t},i.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(r,"a",r),r},i.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},i.p="/gremlint/",i.oe=function(e){throw console.error(e),e};var a=this["webpackJsonpgremlint.com"]=this["webpackJsonpgremlint.com"]||[],c=a.push.bind(a);a.push=r,a=a.slice();for(va
 r l=0;l<a.length;l++)r(a[l]);var f=c;t()}([])</script><script src="/gremlint/static/js/2.7ab90129.chunk.js"></script><script src="/gremlint/static/js/main.b5a6548c.chunk.js"></script></body></html>
\ No newline at end of file

Added: tinkerpop/site/gremlint/static/css/main.39910e18.chunk.css
URL: http://svn.apache.org/viewvc/tinkerpop/site/gremlint/static/css/main.39910e18.chunk.css?rev=1896987&view=auto
==============================================================================
--- tinkerpop/site/gremlint/static/css/main.39910e18.chunk.css (added)
+++ tinkerpop/site/gremlint/static/css/main.39910e18.chunk.css Thu Jan 13 11:58:40 2022
@@ -0,0 +1,2 @@
+body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:source-code-pro,Menlo,Monaco,Consolas,"Courier New",monospace}.App{text-align:center}.App-logo{height:40vmin;pointer-events:none}@media (prefers-reduced-motion:no-preference){.App-logo{-webkit-animation:App-logo-spin 20s linear infinite;animation:App-logo-spin 20s linear infinite}}.App-header{background-color:#282c34;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:calc(10px + 2vmin);color:#fff}.App-link{color:#61dafb}@-webkit-keyframes App-logo-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes App-logo-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);trans
 form:rotate(1turn)}}
+/*# sourceMappingURL=main.39910e18.chunk.css.map */
\ No newline at end of file

Added: tinkerpop/site/gremlint/static/css/main.39910e18.chunk.css.map
URL: http://svn.apache.org/viewvc/tinkerpop/site/gremlint/static/css/main.39910e18.chunk.css.map?rev=1896987&view=auto
==============================================================================
--- tinkerpop/site/gremlint/static/css/main.39910e18.chunk.css.map (added)
+++ tinkerpop/site/gremlint/static/css/main.39910e18.chunk.css.map Thu Jan 13 11:58:40 2022
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack://src/index.css","webpack://src/App.css"],"names":[],"mappings":"AAmBA,KACE,QAAS,CACT,mJAC4C,CAC5C,kCAAmC,CACnC,iCACF,CAEA,KACE,yEACF,CCVA,KACE,iBACF,CAEA,UACE,aAAc,CACd,mBACF,CAEA,8CACE,UACE,mDAA4C,CAA5C,2CACF,CACF,CAEA,YACE,wBAAyB,CACzB,gBAAiB,CACjB,YAAa,CACb,qBAAsB,CACtB,kBAAmB,CACnB,sBAAuB,CACvB,4BAA6B,CAC7B,UACF,CAEA,UACE,aACF,CAEA,iCACE,GACE,8BAAuB,CAAvB,sBACF,CACA,GACE,+BAAyB,CAAzB,uBACF,CACF,CAPA,yBACE,GACE,8BAAuB,CAAvB,sBACF,CACA,GACE,+BAAyB,CAAzB,uBACF,CACF","file":"main.39910e18.chunk.css","sourcesContent":["/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements.  See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership.  The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License.  You may obtain a copy of the License at\n *\n
  *  http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied.  See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nbody {\n  margin: 0;\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans',\n    'Droid Sans', 'Helvetica Neue', sans-serif;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\ncode {\n  font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace;\n}\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements.  See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership.  The ASF 
 licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License.  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied.  See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\n.App {\n  text-align: center;\n}\n\n.App-logo {\n  height: 40vmin;\n  pointer-events: none;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n  .App-logo {\n    animation: App-logo-spin infinite 20s linear;\n  }\n}\n\n.App-header {\n  background-color: #282c34;\n  min-height: 100vh;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  font-size
 : calc(10px + 2vmin);\n  color: white;\n}\n\n.App-link {\n  color: #61dafb;\n}\n\n@keyframes App-logo-spin {\n  from {\n    transform: rotate(0deg);\n  }\n  to {\n    transform: rotate(360deg);\n  }\n}\n"]}
\ No newline at end of file

Added: tinkerpop/site/gremlint/static/js/main.b5a6548c.chunk.js
URL: http://svn.apache.org/viewvc/tinkerpop/site/gremlint/static/js/main.b5a6548c.chunk.js?rev=1896987&view=auto
==============================================================================
--- tinkerpop/site/gremlint/static/js/main.b5a6548c.chunk.js (added)
+++ tinkerpop/site/gremlint/static/js/main.b5a6548c.chunk.js Thu Jan 13 11:58:40 2022
@@ -0,0 +1,2 @@

[... 4 lines stripped ...]
Added: tinkerpop/site/gremlint/static/js/main.b5a6548c.chunk.js.map
URL: http://svn.apache.org/viewvc/tinkerpop/site/gremlint/static/js/main.b5a6548c.chunk.js.map?rev=1896987&view=auto
==============================================================================
--- tinkerpop/site/gremlint/static/js/main.b5a6548c.chunk.js.map (added)
+++ tinkerpop/site/gremlint/static/js/main.b5a6548c.chunk.js.map Thu Jan 13 11:58:40 2022
@@ -0,0 +1 @@
+{"version":3,"sources":["router.ts","components/FadeIn.tsx","components/CenteredContainer.tsx","styleVariables.ts","components/NavigationButton.tsx","components/Navigator.tsx","libs/reduced-state/dispatch.ts","libs/reduced-state/reducedState.ts","store/initialState.ts","store/actions.ts","store/index.ts","store/reducers.ts","store/routines.ts","components/QueryInput.tsx","components/TextButton.tsx","components/CodePreview.tsx","libs/reduced-state/useReducedState.ts","components/Toggle.tsx","views/QueryFormatter/AdvancedOptions.tsx","views/QueryFormatter/index.tsx","components/Paragraph.tsx","components/Title.tsx","components/StyleGuideRule.tsx","views/StyleGuide/rules.ts","views/StyleGuide/index.tsx","components/View.tsx","components/Footer.tsx","gremlint-loading-logo-colored.png","gremlint-loading-logo-grayscale.png","components/LoadingAnimation.tsx","App.tsx","reportWebVitals.ts","index.tsx"],"names":["router","createRouter","FadeInWrapper","styled","div","$opacity","FadeIn","chil
 dren","props","useState","opacity","setOpacity","useEffect","setTimeout","CenteredContainer","textColor","inputTextColor","highlightedTextColor","white","NavigationButtonWrapper","span","NavigationButtonLink","a","$isSelected","NavigationButton","isSelected","href","label","NavigatorWrapper","Spacer","Navigator","matchedRoute","dispatch","action","payload","window","dispatchEvent","CustomEvent","detail","createReducedState","initialState","reducers","routines","state","changeListeners","Object","entries","forEach","reducer","addEventListener","event","nextState","changeListener","routine","addChangeListener","changeListenerToBeAdded","removeChangeListener","changeListenerToBeRemoved","filter","queryInput","queryOutput","shouldShowAdvancedOptions","indentation","maxLineLength","shouldPlaceDotsAfterLineBreaks","SET_QUERY_INPUT","FORMAT_QUERY","TOGGLE_SHOULD_SHOW_ADVANCED_OPTIONS","SET_INDENTATION","SET_MAX_LINE_LENGTH","SET_SHOULD_PLACE_DOTS_AFTER_LINE_BREAKS","store","formatQuery","u
 nparsedIndentation","parseInt","isNaN","unparsedMaxLineLength","QueryInputWrapper","QueryInputTextArea","textarea","QueryInput","onChange","value","rows","TextButtonWrapper","TextButtonButton","button","TextButton","onClick","CodePreviewWrapper","CodePreviewBox","Code","CodeRuler","$maxLineLength","CodePreview","useReducedState","reducedState","setState","ToggleContainer","$height","$width","Option","SelectedOption","$checked","Toggle","width","height","checked","labels","unchecked","AdvancedOptionRowWrapper","AdvancedOptionLabel","AdvancedOptionInput","input","AdvancedOptions","type","min","max","target","ExpandableAdvancedOptionsWrapper","$isExpanded","QueryFormatter","ParagraphWrapper","$hasContent","css","ParagraphContent","Paragraph","Boolean","TitleWrapper","TitleContent","Title","StyleGuideRule","title","explanation","example","rules","StyleGuideWrapper","StyleGuide","map","ViewWrapper","View","gremlintVersion","packages","version","FooterContent","Footer","LoadingAnimationWr
 apper","GrayscaleImageWrapper","ColoredImageWrapper","$loadingCompletion","Image","img","LoadingAnimation","onLoadingComplete","loadingCompletion","setLoadingCompletion","coloredImageHasLoaded","setColoredImageHasLoaded","grayscaleImageHasLoaded","setGrayscaleImageHasLoaded","src","gremlintLoadingLogoGrayscale","onLoad","gremlintLoadingLogoColored","AppWrapper","App","useRouter","loadingComplete","setLoadingComplete","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.b5a6548c.chunk.js","sourcesContent":["/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements.  See the NOTICE f
 ile\n * distributed with this work for additional information\n * regarding copyright ownership.  The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License.  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied.  See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport createRouter from 'sharp-router';\n\nconst router = createRouter({\n  '/': 'Gremlint - Query formatter',\n  '/style-guide': 'Gremlint - Style guide',\n});\n\nexport default router;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agr
 eements.  See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership.  The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License.  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied.  See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport React, { HTMLAttributes, useEffect, useState } from 'react';\nimport styled from 'styled-components';\n\nconst FadeInWrapper = styled.div<{ $opacity: number }>`\n  opacity: ${({ $opacity }) => $opacity};\n`;\n\nconst FadeIn = ({ children, ...props }: HTMLAttri
 butes<HTMLDivElement>) => {\n  const [opacity, setOpacity] = useState(0);\n\n  useEffect(() => {\n    setTimeout(() => setOpacity(1));\n  }, []);\n\n  return (\n    <FadeInWrapper $opacity={opacity} {...props}>\n      {children}\n    </FadeInWrapper>\n  );\n};\n\nexport default FadeIn;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements.  See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership.  The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License.  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or 
 implied.  See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport styled from 'styled-components';\n\nconst CenteredContainer = styled.div`\n  width: min(800px, 100vw);\n  margin-left: calc(50vw - min(400px, 50vw));\n`;\n\nexport default CenteredContainer;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements.  See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership.  The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License.  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS
  OF ANY\n * KIND, either express or implied.  See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nexport const borderColor = 'lightgray';\nexport const textColor = 'slategray';\nexport const inputTextColor = 'darkslategray';\nexport const highlightedTextColor = 'darkslategray';\nexport const disabledTextColor = 'lightgray';\nexport const highlightColor = 'yellowgreen';\nexport const white = 'white';\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements.  See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership.  The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License.  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law
  or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied.  See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport React from 'react';\nimport styled from 'styled-components';\nimport { highlightColor, highlightedTextColor, textColor } from '../styleVariables';\n\nconst NavigationButtonWrapper = styled.span`\n  display: inline-block;\n  vertical-align: bottom;\n  padding: 10px;\n  box-sizing: border-box;\n  height: 40px;\n  width: 160px;\n`;\n\nconst NavigationButtonLink = styled.a<{ $isSelected: boolean }>`\n  text-decoration: none;\n  display: inline-block;\n  height: 20px;\n  line-height: 20px;\n  font-size: 15px;\n  color: ${({ $isSelected }) => ($isSelected ? highlightedTextColor : textColor)};\n  border-bottom: ${({ $isSelected }) => ($isSelected ? `2px solid ${highlightColor}` : 'non
 e')};\n  &:hover {\n    color: ${highlightedTextColor};\n  }\n`;\n\ntype NavigationButtonProps = {\n  isSelected: boolean;\n  href: string;\n  label: string;\n};\n\nconst NavigationButton = ({ isSelected, href, label }: NavigationButtonProps) => (\n  <NavigationButtonWrapper>\n    <NavigationButtonLink href={href} $isSelected={isSelected}>\n      {label}\n    </NavigationButtonLink>\n  </NavigationButtonWrapper>\n);\n\nexport default NavigationButton;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements.  See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership.  The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License.  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed
  to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied.  See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport React from 'react';\nimport styled from 'styled-components';\nimport CenteredContainer from './CenteredContainer';\nimport NavigationButton from './NavigationButton';\nimport { white } from '../styleVariables';\n\nconst NavigatorWrapper = styled.div`\n  background: ${white};\n  box-shadow: ${white} 0 0 10px;\n  position: fixed;\n  top: 0;\n  left: 0;\n  right: 0;\n  z-index: 1;\n`;\n\nconst Spacer = styled.div`\n  height: 40px;\n`;\n\ntype NavigatorProps = {\n  matchedRoute: string;\n};\n\nconst Navigator = ({ matchedRoute }: NavigatorProps) => (\n  <div>\n    <NavigatorWrapper>\n      <CenteredContainer>\n        <NavigationButton isSelected={matchedRoute === '/'} label=\"Query formatte
 r\" href=\"#/\" />\n        <NavigationButton isSelected={matchedRoute === '/style-guide'} label=\"Style guide\" href=\"#/style-guide\" />\n      </CenteredContainer>\n    </NavigatorWrapper>\n    <Spacer />\n  </div>\n);\n\nexport default Navigator;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements.  See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership.  The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License.  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied.  See the License for the\n 
 * specific language governing permissions and limitations\n * under the License.\n */\n\nexport const dispatch = (action: string, payload?: any) => {\n  window.dispatchEvent(new CustomEvent(action, { detail: payload }));\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements.  See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership.  The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License.  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied.  See the License for the\n * specific language govern
 ing permissions and limitations\n * under the License.\n */\n\nimport { ChangeListener, CreateReducedStateProps } from './types';\n\nconst createReducedState = <T>({ initialState, reducers, routines }: CreateReducedStateProps<T>) => {\n  let state = initialState;\n  let changeListeners: ChangeListener<T>[] = [];\n\n  Object.entries(reducers).forEach(([action, reducer]) => {\n    window.addEventListener(action, ((event: CustomEvent) => {\n      const nextState = reducer(state, event.detail);\n      state = nextState;\n      changeListeners.forEach((changeListener) => changeListener(state));\n    }) as EventListener);\n  });\n\n  Object.entries(routines).forEach(([action, routine]) => {\n    window.addEventListener(action, ((event: CustomEvent) => {\n      routine(state, event.detail);\n    }) as EventListener);\n  });\n\n  const addChangeListener = (changeListenerToBeAdded: ChangeListener<T>) => {\n    changeListeners = [...changeListeners, changeListenerToBeAdded];\n  };\n\n  const 
 removeChangeListener = (changeListenerToBeRemoved: ChangeListener<T>) => {\n    changeListeners = changeListeners.filter((changeListener) => changeListener !== changeListenerToBeRemoved);\n  };\n\n  return { state, addChangeListener, removeChangeListener };\n};\n\nexport default createReducedState;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements.  See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership.  The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License.  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, eithe
 r express or implied.  See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nconst initialState = {\n  queryInput: '',\n  queryOutput: '',\n  shouldShowAdvancedOptions: false,\n  indentation: 0,\n  maxLineLength: 72,\n  shouldPlaceDotsAfterLineBreaks: false,\n};\n\nexport default initialState;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements.  See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership.  The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License.  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied.  See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nexport const SET_QUERY_INPUT = 'SET_QUERY_INPUT';\nexport const FORMAT_QUERY = 'FORMAT_QUERY';\nexport const TOGGLE_SHOULD_SHOW_ADVANCED_OPTIONS = 'TOGGLE_SHOULD_SHOW_ADVANCED_OPTIONS';\nexport const SET_INDENTATION = 'SET_INDENTATION';\nexport const SET_MAX_LINE_LENGTH = 'SET_MAX_LINE_LENGTH';\nexport const SET_SHOULD_PLACE_DOTS_AFTER_LINE_BREAKS = 'SET_SHOULD_PLACE_DOTS_AFTER_LINE_BREAKS';\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements.  See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership.  The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License.  You may ob
 tain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied.  See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport createReducedState from '../libs/reduced-state';\nimport initialState from './initialState';\nimport reducers from './reducers';\nimport routines from './routines';\n\nconst store = createReducedState({ initialState, reducers, routines });\n\nexport default store;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements.  See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership.  The ASF licenses this file\n * to you under the Apache License, Versi
 on 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License.  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied.  See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { formatQuery } from 'gremlint';\nimport {\n  FORMAT_QUERY,\n  SET_INDENTATION,\n  SET_MAX_LINE_LENGTH,\n  SET_QUERY_INPUT,\n  SET_SHOULD_PLACE_DOTS_AFTER_LINE_BREAKS,\n  TOGGLE_SHOULD_SHOW_ADVANCED_OPTIONS,\n} from './actions';\nimport { State } from './types';\n\nconst handleSetQueryInput = (state: State, queryInput: string) => ({\n  ...state,\n  queryInput,\n});\n\nconst handleFormatQuery = (state: State) => ({\n  ...state,\n  queryOutput: format
 Query(state.queryInput, {\n    indentation: state.indentation,\n    maxLineLength: state.maxLineLength,\n    shouldPlaceDotsAfterLineBreaks: state.shouldPlaceDotsAfterLineBreaks,\n  }),\n});\n\nconst handleToggleShouldShowAdvancedOptions = (state: State) => ({\n  ...state,\n  shouldShowAdvancedOptions: !state.shouldShowAdvancedOptions,\n});\n\nconst handleSetIndentation = (state: State, unparsedIndentation: string) => {\n  const indentation = parseInt(unparsedIndentation);\n  if (isNaN(indentation)) return { ...state };\n  if (indentation < 0) return { ...state, indentation: 0 };\n  const { maxLineLength } = state;\n  if (indentation > maxLineLength) {\n    return { ...state, indentation: maxLineLength };\n  }\n  return { ...state, indentation };\n};\n\nconst handleSetMaxLineLength = (state: State, unparsedMaxLineLength: string) => {\n  const maxLineLength = parseInt(unparsedMaxLineLength);\n  if (isNaN(maxLineLength)) return { ...state };\n  const { indentation } = state;\n  if (ma
 xLineLength < indentation) {\n    return { ...state, maxLineLength: indentation };\n  }\n  return { ...state, maxLineLength };\n};\n\nconst handleSetShouldPlaceDotsAfterLineBreaks = (state: State, shouldPlaceDotsAfterLineBreaks: boolean) => ({\n  ...state,\n  shouldPlaceDotsAfterLineBreaks,\n});\n\nconst reducers = {\n  [SET_QUERY_INPUT]: handleSetQueryInput,\n  [FORMAT_QUERY]: handleFormatQuery,\n  [TOGGLE_SHOULD_SHOW_ADVANCED_OPTIONS]: handleToggleShouldShowAdvancedOptions,\n  [SET_INDENTATION]: handleSetIndentation,\n  [SET_MAX_LINE_LENGTH]: handleSetMaxLineLength,\n  [SET_SHOULD_PLACE_DOTS_AFTER_LINE_BREAKS]: handleSetShouldPlaceDotsAfterLineBreaks,\n};\n\nexport default reducers;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements.  See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership.  The ASF licenses this file\n * to you under the Apache License, Version 2.
 0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License.  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied.  See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { dispatch } from '../libs/reduced-state';\nimport {\n  SET_QUERY_INPUT,\n  FORMAT_QUERY,\n  SET_INDENTATION,\n  SET_MAX_LINE_LENGTH,\n  SET_SHOULD_PLACE_DOTS_AFTER_LINE_BREAKS,\n} from './actions';\n\nconst handleSetQueryInput = () => dispatch(FORMAT_QUERY);\nconst handleSetIndentation = () => dispatch(FORMAT_QUERY);\nconst handleSetMaxLineLength = () => dispatch(FORMAT_QUERY);\nconst handleSetShouldPlaceDotsAfterLineBreaks = () => dispatch(FORMAT_QUERY
 );\n\nconst routines = {\n  [SET_QUERY_INPUT]: handleSetQueryInput,\n  [SET_INDENTATION]: handleSetIndentation,\n  [SET_MAX_LINE_LENGTH]: handleSetMaxLineLength,\n  [SET_SHOULD_PLACE_DOTS_AFTER_LINE_BREAKS]: handleSetShouldPlaceDotsAfterLineBreaks,\n};\n\nexport default routines;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements.  See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership.  The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License.  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implie
 d.  See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport React from 'react';\nimport styled from 'styled-components';\nimport { inputTextColor } from '../styleVariables';\n\nconst QueryInputWrapper = styled.div`\n  padding: 10px;\n`;\n\nconst QueryInputTextArea = styled.textarea`\n  height: calc(100vh / 4);\n  border-radius: 5px;\n  font-family: 'Courier New', Courier, monospace;\n  background: rgba(0, 0, 0, 0.05);\n  outline: none;\n  font-size: 16px;\n  padding: 10px;\n  border: none;\n  resize: none;\n  width: 100%;\n  box-shadow: inset rgba(0, 0, 0, 0.5) 0 0 10px -5px;\n  color: ${inputTextColor};\n  box-sizing: border-box;\n`;\n\ntype QueryInputProps = {\n  onChange?: ((event: React.ChangeEvent<HTMLTextAreaElement>) => void) | undefined;\n  value: string;\n};\n\nconst QueryInput = ({ onChange, value }: QueryInputProps) => (\n  <QueryInputWrapper>\n    <QueryInputTextArea onChange={onChange} value={value} rows=
 {25} />\n  </QueryInputWrapper>\n);\n\nexport default QueryInput;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements.  See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership.  The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License.  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied.  See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport React from 'react';\nimport styled from 'styled-components';\nimport { highlightedTextCol
 or, textColor } from '../styleVariables';\n\nconst TextButtonWrapper = styled.span`\n  display: inline-block;\n  padding: 10px;\n  box-sizing: border-box;\n`;\n\nconst TextButtonButton = styled.button`\n  height: 20px;\n  line-height: 20px;\n  font-size: 15px;\n  color: ${textColor};\n  &: {\n    color: ${highlightedTextColor};\n  }\n  background: none;\n  border: none;\n  cursor: pointer;\n  padding: 0;\n  outline: none;\n`;\n\ntype TextButtonProps = {\n  label: string;\n  onClick: VoidFunction;\n};\n\nconst TextButton = ({ label, onClick }: TextButtonProps) => (\n  <TextButtonWrapper>\n    <TextButtonButton onClick={onClick}>{label}</TextButtonButton>\n  </TextButtonWrapper>\n);\n\nexport default TextButton;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements.  See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership.  The ASF licenses this file\n * to you under the 
 Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License.  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied.  See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport React from 'react';\nimport styled from 'styled-components';\nimport { HTMLAttributes } from 'react';\nimport { disabledTextColor, textColor } from '../styleVariables';\n\nconst CodePreviewWrapper = styled.div`\n  padding: 10px;\n`;\n\nconst CodePreviewBox = styled.div`\n  border-radius: 5px;\n  font-family: 'Courier New', Courier, monospace;\n  background: rgba(0, 0, 0, 0.05);\n  outline: none;\n  font-size: 15px;\n  padding: 1
 0px;\n  border: none;\n  resize: none;\n  box-shadow: inset rgba(0, 0, 0, 0.5) 0 0 10px -5px;\n  white-space: pre-wrap;\n  overflow: auto;\n  position: relative;\n`;\n\nconst Code = styled.div`\n  color: ${textColor};\n  line-height: 20px;\n  font-size: 15px;\n`;\n\nconst CodeRuler = styled.div<{ $maxLineLength: number }>`\n  top: 0;\n  left: 0;\n  width: calc(10px + ${({ $maxLineLength }) => $maxLineLength}ch);\n  border-right: 1px solid ${disabledTextColor};\n  position: absolute;\n  height: 100%;\n  pointer-events: none;\n`;\n\ntype CodePreviewProps = {\n  maxLineLength?: number;\n} & HTMLAttributes<HTMLSpanElement>;\n\nconst CodePreview = ({ maxLineLength, children }: CodePreviewProps) => (\n  <CodePreviewWrapper>\n    <CodePreviewBox>\n      <Code>{children}</Code>\n      {maxLineLength ? <CodeRuler $maxLineLength={maxLineLength} /> : null}\n    </CodePreviewBox>\n  </CodePreviewWrapper>\n);\n\nexport default CodePreview;\n","/*\n * Licensed to the Apache Software Foundation (A
 SF) under one\n * or more contributor license agreements.  See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership.  The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License.  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied.  See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { useEffect, useState } from 'react';\nimport { ReducedState } from './types';\n\nexport const useReducedState = <T>(reducedState: ReducedState<T>) => {\n  const [state, setState] = useState<T>(reducedState.stat
 e);\n\n  useEffect(() => {\n    const changeListener = (state: T) => {\n      setState(state);\n    };\n    reducedState.addChangeListener(changeListener);\n    return () => reducedState.removeChangeListener(changeListener);\n  }, [reducedState]);\n\n  return state;\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements.  See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership.  The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License.  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied.  See th
 e License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport React from 'react';\nimport styled from 'styled-components';\nimport { borderColor, highlightedTextColor, textColor, white } from '../styleVariables';\n\nconst ToggleContainer = styled.span<{ $width: string; $height: string }>`\n  display: inline-block;\n  height: ${({ $height }) => $height};\n  width: ${({ $width }) => $width};\n  border-radius: 5px;\n  background: rgba(0, 0, 0, 0.05);\n  box-shadow: inset rgba(0, 0, 0, 0.5) 0 0 10px -5px;\n  position: relative;\n`;\n\nconst Option = styled.span<{ $width: string; $height: string }>`\n  cursor: pointer;\n  display: inline-block;\n  height: ${({ $height }) => $height};\n  width: calc(${({ $width }) => $width} / 2);\n  box-sizing: border-box;\n  padding: 10px;\n  line-height: 20px;\n  font-size: 16px;\n  color: ${textColor};\n  text-align: center;\n`;\n\nconst SelectedOption = styled.span<{ $checked: boolean }>`\n  backg
 round: ${white};\n  cursor: pointer;\n  display: inline-block;\n  position: absolute;\n  top: 0;\n  left: ${({ $checked }) => ($checked ? '160px' : '0')};\n  height: 40px;\n  width: 160px;\n  border-radius: 5px;\n  box-sizing: border-box;\n  padding: 10px;\n  line-height: 20px;\n  font-size: 16px;\n  color: ${highlightedTextColor};\n  text-align: center;\n  border: 1px solid ${borderColor};\n  transition: 0.5s;\n`;\n\ntype ToggleProps = {\n  width: string;\n  height: string;\n  checked: boolean;\n  labels: { checked: string; unchecked: string };\n  onChange: (checked: boolean) => void;\n};\n\nconst Toggle = ({\n  width = '320px',\n  height = '40px',\n  checked = false,\n  labels = { checked: 'Checked', unchecked: 'Unchecked' },\n  onChange,\n}: ToggleProps) => (\n  <ToggleContainer $width={width} $height={height}>\n    <Option $width={width} $height={height} onClick={() => onChange(false)}>\n      {labels.unchecked}\n    </Option>\n    <Option $width={width} $height={height} onClick
 ={() => onChange(true)}>\n      {labels.checked}\n    </Option>\n    <SelectedOption $checked={checked}>{checked ? labels.checked : labels.unchecked}</SelectedOption>\n  </ToggleContainer>\n);\n\nexport default Toggle;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements.  See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership.  The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License.  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied.  See the License for the\n * specific language governing pe
 rmissions and limitations\n * under the License.\n */\n\nimport React from 'react';\nimport styled from 'styled-components';\nimport { dispatch } from '../../libs/reduced-state';\nimport { useReducedState } from '../../libs/reduced-state/useReducedState';\nimport store from '../../store';\nimport { SET_INDENTATION, SET_MAX_LINE_LENGTH, SET_SHOULD_PLACE_DOTS_AFTER_LINE_BREAKS } from '../../store/actions';\nimport { inputTextColor, textColor } from '../../styleVariables';\nimport Toggle from '../../components/Toggle';\n\nconst AdvancedOptionRowWrapper = styled.div`\n  padding: 10px;\n`;\n\nconst AdvancedOptionLabel = styled.div`\n  height: 20px;\n  line-height: 20px;\n  font-size: 15px;\n  color: ${textColor};\n`;\n\nconst AdvancedOptionInput = styled.input`\n  border-radius: 5px;\n  background: rgba(0, 0, 0, 0.05);\n  outline: none;\n  font-size: 16px;\n  padding: 10px;\n  border: none;\n  box-shadow: inset rgba(0, 0, 0, 0.5) 0 0 10px -5px;\n  color: ${inputTextColor};\n  display: in
 line-block;\n  vertical-align: bottom;\n  box-sizing: border-box;\n  height: 40px;\n  width: 320px;\n`;\n\nconst AdvancedOptions = () => {\n  const state = useReducedState(store);\n  return (\n    <div>\n      <AdvancedOptionRowWrapper>\n        <AdvancedOptionLabel>Indentation</AdvancedOptionLabel>\n        <AdvancedOptionInput\n          type=\"number\"\n          min={0}\n          max={state.maxLineLength}\n          value={state.indentation}\n          onChange={({ target }) => {\n            dispatch(SET_INDENTATION, target.value);\n          }}\n        />\n      </AdvancedOptionRowWrapper>\n      <AdvancedOptionRowWrapper>\n        <AdvancedOptionLabel>Max line length</AdvancedOptionLabel>\n        <AdvancedOptionInput\n          type=\"number\"\n          min={state.indentation}\n          value={state.maxLineLength}\n          onChange={({ target }) => {\n            dispatch(SET_MAX_LINE_LENGTH, target.value);\n          }}\n        />\n      </AdvancedOptionRowWrapper>\n
       <AdvancedOptionRowWrapper>\n        <AdvancedOptionLabel>Dot placement</AdvancedOptionLabel>\n        <Toggle\n          height=\"40px\"\n          width=\"320px\"\n          checked={state.shouldPlaceDotsAfterLineBreaks}\n          labels={{\n            checked: 'After line break',\n            unchecked: 'Before line break',\n          }}\n          onChange={(shouldPlaceDotsAfterLineBreaks) => {\n            dispatch(SET_SHOULD_PLACE_DOTS_AFTER_LINE_BREAKS, shouldPlaceDotsAfterLineBreaks);\n          }}\n        />\n      </AdvancedOptionRowWrapper>\n    </div>\n  );\n};\n\nexport default AdvancedOptions;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements.  See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership.  The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance
 \n * with the License.  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied.  See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport React from 'react';\nimport styled from 'styled-components';\nimport store from '../../store';\nimport QueryInput from '../../components/QueryInput';\nimport TextButton from '../../components/TextButton';\nimport CodePreview from '../../components/CodePreview';\nimport AdvancedOptions from './AdvancedOptions';\nimport { State } from '../../store/types';\nimport { dispatch } from '../../libs/reduced-state';\nimport { useReducedState } from '../../libs/reduced-state/useReducedState';\nimport { SET_QUERY_INPUT, TOGGLE_SHOULD_S
 HOW_ADVANCED_OPTIONS } from '../../store/actions';\n\nconst ExpandableAdvancedOptionsWrapper = styled.div<{ $isExpanded: boolean }>`\n  max-height: ${({ $isExpanded }) => ($isExpanded ? '240px' : '0')};\n  box-shadow: inset white 0 0 10px 0;\n  overflow: hidden;\n  transition: 0.5s;\n`;\n\nconst QueryFormatter = () => {\n  const state = useReducedState<State>(store);\n  return (\n    <div>\n      <QueryInput value={state.queryInput} onChange={({ target }) => dispatch(SET_QUERY_INPUT, target.value)} />\n      <TextButton\n        label={state.shouldShowAdvancedOptions ? 'Hide advanced options' : 'Show advanced options'}\n        onClick={() => dispatch(TOGGLE_SHOULD_SHOW_ADVANCED_OPTIONS)}\n      />\n      <ExpandableAdvancedOptionsWrapper $isExpanded={state.shouldShowAdvancedOptions}>\n        <AdvancedOptions />\n      </ExpandableAdvancedOptionsWrapper>\n      {state.queryOutput ? <CodePreview maxLineLength={state.maxLineLength}>{state.queryOutput}</CodePreview> : null}\n    </div
 >\n  );\n};\n\nexport default QueryFormatter;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements.  See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership.  The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License.  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied.  See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport React from 'react';\nimport styled, { css } from 'styled-components';\nimport { HTMLAttributes } from 'react'
 ;\nimport { textColor } from '../styleVariables';\n\nconst ParagraphWrapper = styled.div<{ $hasContent: boolean }>`\n  ${({ $hasContent }) =>\n    $hasContent &&\n    css`\n      padding: 10px;\n    `}\n`;\n\nconst ParagraphContent = styled.span`\n  color: ${textColor};\n  line-height: 20px;\n  font-size: 15px;\n`;\n\nconst Paragraph = ({ children }: HTMLAttributes<HTMLSpanElement>) => (\n  <ParagraphWrapper $hasContent={Boolean(children)}>\n    <ParagraphContent>{children}</ParagraphContent>\n  </ParagraphWrapper>\n);\n\nexport default Paragraph;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements.  See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership.  The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License.  You may obtain a copy of the License at\n *\n
  *  http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied.  See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport React from 'react';\nimport styled, { css } from 'styled-components';\nimport { HTMLAttributes } from 'react';\nimport { textColor } from '../styleVariables';\n\nconst TitleWrapper = styled.div<{ $hasContent: boolean }>`\n  ${({ $hasContent }) =>\n    $hasContent &&\n    css`\n      padding: 10px;\n    `}\n`;\n\nconst TitleContent = styled.div`\n  color: ${textColor};\n  line-height: 30px;\n  font-size: 25px;\n`;\n\nconst Title = ({ children }: HTMLAttributes<HTMLDivElement>) => (\n  <TitleWrapper $hasContent={Boolean(children)}>\n    <TitleContent>{children}</TitleContent>\n  </TitleWrapper
 >\n);\n\nexport default Title;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements.  See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership.  The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License.  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied.  See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport React from 'react';\nimport Paragraph from './Paragraph';\nimport Title from './Title';\nimport CodePreview from './CodePrev
 iew';\n\ntype StyleGuideRuleProps = {\n  title: string;\n  explanation: string;\n  example: string;\n};\n\nconst StyleGuideRule = ({ title, explanation, example }: StyleGuideRuleProps) => (\n  <div>\n    <Title>{title}</Title>\n    <Paragraph>{explanation}</Paragraph>\n    <CodePreview>{example}</CodePreview>\n  </div>\n);\n\nexport default StyleGuideRule;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements.  See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership.  The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License.  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BAS
 IS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied.  See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nexport const rules = [\n  {\n    title: 'Break long queries into multiple lines',\n    explanation: `What is considered too long depends on your application.\nWhen breaking the query, not all parts of the traversal have to be broken up. First, divide the query into logical groups, based on which steps belong naturally together. For instance, every set of steps which end with an as()-step often belong together, as they together form a new essential step in the query.\n    \nIf anoymous traversals are passed as arguments to another step, like a filter()-step, and it's causing the line to be too long, first split the line at the commas. Only if the traversal arguments are still too long, consider splitting them further.`,\n    example: `// Good (80 characters max width)\ng.V().hasLabel('perso
 n').where(outE(\"created\").count().is(P.gte(2))).count()\n    \n// Good (50 characters max width)\ng.V().\n  hasLabel('person').\n  where(outE(\"created\").count().is(P.gte(2))).\n  count()\n    \n// Good (30 characters max width)\ng.V().\n  hasLabel('person').\n  where(\n    outE(\"created\").\n    count().\n    is(P.gte(2))).\n  count()`,\n  },\n  {\n    title: 'Use soft tabs (spaces) for indentation',\n    explanation: 'This ensures that your code looks the same for anyone, regardless of their text editor settings.',\n    example: `// Bad - indented using hard tabs\ng.V().\n  hasLabel('person').as('person').\n  properties('location').as('location').\n  select('person','location').\n    by('name').\n    by(valueMap())\n    \n// Good - indented using spaces\ng.V().\n∙∙hasLabel('person').as('person').\n∙∙properties('location').as('location').\n∙∙select('person','location').\n∙∙∙∙by('name').\n∙∙∙∙by(valueMap())`,\
 n  },\n  {\n    title: 'Use two spaces for indentation',\n    explanation:\n      'Two spaces makes the intent of the indent clear, but does not waste too much space. Of course, more spaces are allowed when indenting from an already indented block of code.',\n    example: `// Bad - Indented using four spaces\ng.V().\n    hasLabel('person').as('person').\n    properties('location').as('location').\n    select('person','location').\n        by('name').\n        by(valueMap())\n// Good - Indented using two spaces\ng.V().\n  hasLabel('person').as('person').\n  properties('location').as('location').\n  select('person','location').\n    by('name').\n    by(valueMap())`,\n  },\n  {\n    title: 'Use indents wisely',\n    explanation: `No newline should ever have the same indent as the line starting with the traversal source g.\nUse indents when the step in the new line is a modulator of a previous line.\nUse indents when the content in the new line is an argument of a previous step.\nIf mul
 tiple anonymous traversals are passed as arguments to a function, each newline which is not the first step of the traversal should be indented to make it more clear where the distinction between each argument goes. If this is the case, but the newline would already be indented because the step in the content in the new line is the argument of a previous step, there is no need to double-indent.\nDon't be tempted to add extra indentation to vertically align a step with a step in a previous line.`,\n    example: `// Bad - No newline should have the same indent as the line starting with the traversal source g\ng.V().\ngroup().\nby().\nby(bothE().count())\n// Bad - Modulators of a step on a previous line should be indented\ng.V().\n  group().\n  by().\n  by(bothE().count())\n// Good\ng.V().\n  group().\n    by().\n    by(bothE().count())\n// Bad - You have ignored the indent rules to achieve the temporary satisfaction of vertical alignment\ng.V().local(union(identity(),\n                
   bothE().count()).\n            fold())\n// Good\ng.V().\n  local(\n    union(\n      identity(),\n      bothE().count()).\n    fold())\n// Bad - When multiple anonymous traversals are passed as arguments to a function, each newline which is not the first of line of the step should be indented to make it more clear where the distinction between each argument goes.\ng.V().\n  has('person','name','marko').\n  fold().\n  coalesce(\n    unfold(),\n    addV('person').\n    property('name','marko').\n    property('age',29))\n// Good - We make it clear that the coalesce step takes two traversals as arguments\ng.V().\n  has('person','name','marko').\n  fold().\n  coalesce(\n    unfold(),\n    addV('person').\n      property('name','marko').\n      property('age',29))`,\n  },\n  {\n    title: 'Keep as()-steps at the end of each line',\n    explanation: `The end of the line is a natural place to assign a label to a step. It's okay if the as()-step is in the middle of the line if there are mu
 ltiple consecutive label assignments, or if the line is so short that a newline doesn't make sense. Maybe a better way to put it is to not start a line with an as()-step, unless you're using it inside a match()-step of course.`,\n    example: `// Bad\ng.V().\n  as('a').\n  out('created').\n  as('b').\n  select('a','b')\n// Good\ng.V().as('a').\n  out('created').as('b').\n  select('a','b')\n// Good\ng.V().as('a').out('created').as('b').select('a','b')`,\n  },\n  {\n    title: 'Add linebreak after punctuation, not before',\n    explanation: `While adding the linebreak before the punctuation looks good in most cases, it introduces alignment problems when not all lines start with a punctuation. You never know if the next line should be indented relative to the punctuation of the previous line or the method of the previous line. Switching between having the punctuation at the start or the end of the line depending on whether it works in a particular case requires much brainpower (which w
 e don't have), so it's better to be consistent. Adding the punctuation before the linebreak also means that you can know if you have reached the end of the query without reading the next line.`,\n    example: `// Bad - Looks okay, though\ng.V().has('name','marko')\n     .out('knows')\n     .has('age', gt(29))\n     .values('name')\n// Good\ng.V().\n  has('name','marko').\n  out('knows').\n  has('age', gt(29)).\n  values('name')\n// Bad - Punctuation at the start of the line makes the transition from filter to select to count too smooth\ng.V()\n  .hasLabel(\"person\")\n  .group()\n    .by(values(\"name\", \"age\").fold())\n  .unfold()\n  .filter(\n    select(values)\n    .count(local)\n    .is(gt(1)))\n// Good - Keeping punctuation at the end of each line, more clearly shows the query structure\ng.V().\n  hasLabel(\"person\").\n  group().\n    by(values(\"name\", \"age\").fold()).\n  unfold().\n  filter(\n    select(values).\n    count(local).\n    is(gt(1)))`,\n  },\n  {\n    title:
  'Add linebreak and indentation for nested traversals which are long enough to span multiple lines',\n    explanation: '',\n    example: `// Bad - Not newlining the first argument of a function whose arguments span over multipe lines causes the arguments to not align.\ng.V().\n  hasLabel(\"person\").\n  groupCount().\n    by(values(\"age\").\n      choose(is(lt(28)),\n        constant(\"young\"),\n        choose(is(lt(30)),\n          constant(\"old\"),\n          constant(\"very old\"))))\n// Bad - We talked about this in the indentation section, didn't we?\ng.V().\n  hasLabel(\"person\").\n  groupCount().\n    by(values(\"age\").\n       choose(is(lt(28)),\n              constant(\"young\"),\n              choose(is(lt(30)),\n                     constant(\"old\"),\n                     constant(\"very old\"))))\n// Good\ng.V().\n  hasLabel(\"person\").\n  groupCount().\n    by(\n      values(\"age\").\n      choose(\n        is(lt(28)),\n        constant(\"young\"),\n        choo
 se(\n          is(lt(30)),\n          constant(\"old\"),\n          constant(\"very old\"))))`,\n  },\n  {\n    title: 'Place all trailing parentheses on a single line instead of distinct lines',\n    explanation:\n      'Aligning the end parenthesis with the step to which the start parenthesis belongs might make it easier to check that the number of parentheses is correct, but looks ugly and wastes a lot of space.',\n    example: `// Bad\ng.V().\n  hasLabel(\"person\").\n  groupCount().\n    by(\n      values(\"age\").\n      choose(\n        is(lt(28)),\n        constant(\"young\"),\n        choose(\n          is(lt(30)),\n          constant(\"old\"),\n          constant(\"very old\")\n        )\n      )\n    )\n// Good\ng.V().\n  hasLabel(\"person\").\n  groupCount().\n    by(\n      values(\"age\").\n      choose(\n        is(lt(28)),\n        constant(\"young\"),\n        choose(\n          is(lt(30)),\n          constant(\"old\"),\n          constant(\"very old\"))))`,\n  },\n
   {\n    title: 'Use // for single line comments. Place single line comments on a newline above the subject of the comment.',\n    explanation: '',\n    example: `// Bad\ng.V().\n  has('name','alice').out('bought'). // Find everything that Alice has bought\n  in('bought').dedup().values('name') // Find everyone who have bought some of the same things as Alice\n// Good\ng.V().\n  // Find everything that Alice has bought\n  has('name','alice').out('bought').\n  // Find everyone who have bought some of the same things as Alice\n  in('bought').dedup().values('name')`,\n  },\n  {\n    title: 'Use single quotes for strings',\n    explanation:\n      'Use single quotes for literal string values. If the string contains double quotes or single quotes, surround the string with the type of quote which creates the fewest escaped characters.',\n    example: `// Bad - Use single quotes where possible\ng.V().has(\"Movie\", \"name\", \"It's a wonderful life\")\n// Bad - Escaped single quotes are ev
 en worse than double quotes\ng.V().has('Movie', 'name', 'It\\\\'s a wonderful life')\n// Good\ng.V().has('Movie', 'name', \"It's a wonderful life\")`,\n  },\n  {\n    title: 'Write idiomatic Gremlin code',\n    explanation: `If there is a simpler way, do it the simpler way. Use the Gremlin methods for what they're worth.`,\n    example: `// Bad\ng.V().outE().inV()\n// Good\ng.V().out()\n// Bad\ng.V().\n  has('name', 'alice').\n  outE().hasLabel('bought').inV().\n  values('name')\n// Good\ng.V().\n  has('name','alice').\n  out('bought').\n  values('name')\n// Bad\ng.V().hasLabel('person').has('name', 'alice')\n// Good\ng.V().has('person', 'name', 'alice')`,\n  },\n];\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements.  See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership.  The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"Licens
 e\"); you may not use this file except in compliance\n * with the License.  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied.  See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport React from 'react';\nimport styled from 'styled-components';\nimport StyleGuideRule from '../../components/StyleGuideRule';\nimport { rules } from './rules';\n\nconst StyleGuideWrapper = styled.div`\n  display: grid;\n  grid-row-gap: 20px;\n`;\n\nconst StyleGuide = () => (\n  <StyleGuideWrapper>\n    {rules.map(({ title, explanation, example }) => (\n      <StyleGuideRule key={title} title={title} explanation={explanation} example={example} />\n    ))}\n  </StyleGuideWrapp
 er>\n);\n\nexport default StyleGuide;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements.  See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership.  The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License.  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied.  See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport React from 'react';\nimport styled from 'styled-components';\nimport QueryFormatter from '../views/QueryFormatter';\n
 import StyleGuide from '../views/StyleGuide';\nimport CenteredContainer from './CenteredContainer';\n\nconst ViewWrapper = styled.div`\n  flex-grow: 1;\n`;\n\ntype ViewProps = {\n  matchedRoute: string;\n};\n\nconst View = ({ matchedRoute }: ViewProps) => {\n  return (\n    <ViewWrapper>\n      <CenteredContainer>\n        {matchedRoute === '/' ? <QueryFormatter /> : matchedRoute === '/style-guide' ? <StyleGuide /> : null}\n      </CenteredContainer>\n    </ViewWrapper>\n  );\n};\n\nexport default View;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements.  See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership.  The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License.  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.
 0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied.  See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport styled from 'styled-components';\nimport CenteredContainer from './CenteredContainer';\nimport { textColor } from '../styleVariables';\nimport { packages } from '../../package-lock.json';\n\nconst gremlintVersion = packages['node_modules/gremlint'].version;\n\nconst FooterContent = styled.div`\n  padding: 10px;\n  color: ${textColor};\n  font-size: 15px;\n  text-align: center;\n  line-height: 20px;\n`;\n\nconst Footer = () => (\n  <CenteredContainer>\n    <FooterContent>\n      <p>Gremlint version: {gremlintVersion}</p>\n      <p>Copyright © 2015-2021 The Apache Software Foundation.</p>\n    </FooterContent>\n  </CenteredContainer>\
 n);\n\nexport default Footer;\n","export default __webpack_public_path__ + \"static/media/gremlint-loading-logo-colored.7e095463.png\";","export default __webpack_public_path__ + \"static/media/gremlint-loading-logo-grayscale.a64db4a4.png\";","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements.  See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership.  The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License.  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied.  See the License for the\n * specific 
 language governing permissions and limitations\n * under the License.\n */\n\nimport React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport { white } from '../styleVariables';\nimport gremlintLoadingLogoColored from '../gremlint-loading-logo-colored.png';\nimport gremlintLoadingLogoGrayscale from '../gremlint-loading-logo-grayscale.png';\n\nconst LoadingAnimationWrapper = styled.div`\n  position: fixed;\n  background: ${white};\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 2;\n`;\n\nconst GrayscaleImageWrapper = styled.div`\n  height: 100%;\n  width: 100%;\n  position: absolute;\n  bottom: calc(50vh - 25vmin);\n`;\n\nconst ColoredImageWrapper = styled.div<{ $loadingCompletion: number }>`\n  overflow: hidden;\n  height: ${({ $loadingCompletion }) => $loadingCompletion / 2}vmin;\n  width: 100%;\n  position: absolute;\n  bottom: calc(50vh - 25vmin);\n`;\n\nconst Image = styled.img<{ $opacity: number }>`\n  opacity: ${({ $opacity })
  => $opacity};\n  transition: 0.25s;\n  height: 50vmin;\n  width: 50vmin;\n  display: block;\n  margin: auto;\n  position: absolute;\n  bottom: 0;\n  left: 50%;\n  transform: translate(-50%, 0);\n`;\n\ntype LoadingAnimationProps = {\n  onLoadingComplete: VoidFunction;\n};\n\nconst LoadingAnimation = ({ onLoadingComplete }: LoadingAnimationProps) => {\n  const [loadingCompletion, setLoadingCompletion] = useState(0);\n  const [coloredImageHasLoaded, setColoredImageHasLoaded] = useState(false);\n  const [grayscaleImageHasLoaded, setGrayscaleImageHasLoaded] = useState(false);\n\n  useEffect(() => {\n    setTimeout(\n      () => {\n        if (loadingCompletion < 100) {\n          if (coloredImageHasLoaded && grayscaleImageHasLoaded) {\n            setLoadingCompletion(loadingCompletion + 1);\n          }\n        } else {\n          setTimeout(onLoadingComplete, 250);\n        }\n      },\n      loadingCompletion === 0 ? 250 : 10,\n    );\n  }, [loadingCompletion, coloredImageHasLoaded,
  grayscaleImageHasLoaded, onLoadingComplete]);\n\n  return (\n    <LoadingAnimationWrapper>\n      <GrayscaleImageWrapper>\n        <Image\n          src={gremlintLoadingLogoGrayscale}\n          $opacity={grayscaleImageHasLoaded && loadingCompletion !== 100 ? 1 : 0}\n          onLoad={() => setGrayscaleImageHasLoaded(true)}\n        />\n      </GrayscaleImageWrapper>\n      <ColoredImageWrapper $loadingCompletion={loadingCompletion}>\n        <Image\n          src={gremlintLoadingLogoColored}\n          $opacity={loadingCompletion !== 100 ? 1 : 0}\n          onLoad={() => setColoredImageHasLoaded(true)}\n        />\n      </ColoredImageWrapper>\n    </LoadingAnimationWrapper>\n  );\n};\n\nexport default LoadingAnimation;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements.  See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership.  The ASF licenses this file\n * to yo
 u under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License.  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied.  See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport React, { useState } from 'react';\nimport './App.css';\nimport styled from 'styled-components';\nimport { useRouter } from 'sharp-router';\nimport router from './router';\nimport FadeIn from './components/FadeIn';\nimport Navigator from './components/Navigator';\nimport View from './components/View';\nimport Footer from './components/Footer';\nimport LoadingAnimation from './components/LoadingAnimation';\n\nconst App
 Wrapper = styled.div`\n  display: flex;\n  flex-direction: column;\n  height: 100vh;\n`;\n\nconst App = () => {\n  const { matchedRoute } = useRouter(router);\n  const [loadingComplete, setLoadingComplete] = useState(false);\n  if (!loadingComplete) return <LoadingAnimation onLoadingComplete={() => setLoadingComplete(true)} />;\n  return (\n    <FadeIn>\n      <AppWrapper>\n        <Navigator matchedRoute={matchedRoute} />\n        <View matchedRoute={matchedRoute} />\n        <Footer />\n      </AppWrapper>\n    </FadeIn>\n  );\n};\n\nexport default App;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements.  See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership.  The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License.  You may obtain a copy of the License 
 at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied.  See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n  if (onPerfEntry && onPerfEntry instanceof Function) {\n    import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n      getCLS(onPerfEntry);\n      getFID(onPerfEntry);\n      getFCP(onPerfEntry);\n      getLCP(onPerfEntry);\n      getTTFB(onPerfEntry);\n    });\n  }\n};\n\nexport default reportWebVitals;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements.  See the NOTICE file\n * distributed with th
 is work for additional information\n * regarding copyright ownership.  The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License.  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied.  See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\nReactDOM.render(\n  <React.StrictMode>\n    <App />\n  </React.StrictMode>,\n  document.getElementById('root'),\n);\n\n// If you want to start measuring per
 formance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}
\ No newline at end of file

Added: tinkerpop/site/img/arrow-right.svg
URL: http://svn.apache.org/viewvc/tinkerpop/site/img/arrow-right.svg?rev=1896987&view=auto
==============================================================================
--- tinkerpop/site/img/arrow-right.svg (added)
+++ tinkerpop/site/img/arrow-right.svg Thu Jan 13 11:58:40 2022
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="14.615" height="14.615" viewBox="0 0 14.615 14.615">
+  <path id="arrow-right" d="M14.615,14.058,5.846,6.75v4.385H0v5.846H5.846v4.385Z" transform="translate(0 -6.75)" fill="#147aa4"/>
+</svg>

Added: tinkerpop/site/img/community/arrow-right-circle-fill.svg
URL: http://svn.apache.org/viewvc/tinkerpop/site/img/community/arrow-right-circle-fill.svg?rev=1896987&view=auto
==============================================================================
--- tinkerpop/site/img/community/arrow-right-circle-fill.svg (added)
+++ tinkerpop/site/img/community/arrow-right-circle-fill.svg Thu Jan 13 11:58:40 2022
@@ -0,0 +1,3 @@
+<svg id="arrow-right-circle-fill" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18">
+  <path id="Path_28" data-name="Path 28" d="M18,9A9,9,0,1,1,9,0,9,9,0,0,1,18,9ZM8.6,11.977a.563.563,0,1,0,.8.8L12.774,9.4a.563.563,0,0,0,0-.8L9.4,5.227a.563.563,0,1,0-.8.8l2.415,2.414H5.625a.563.563,0,0,0,0,1.125h5.392L8.6,11.977Z" fill="#308ec5"/>
+</svg>

Added: tinkerpop/site/img/community/bg.png
URL: http://svn.apache.org/viewvc/tinkerpop/site/img/community/bg.png?rev=1896987&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tinkerpop/site/img/community/bg.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream