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":"60pmBA0BeA,E,MALAC,GAAa,CAC1B,IAAK,6BACL,eAAgB,2B,sBCDZC,EAAgBC,IAAOC,IAAV,6CACN,qBAAGC,YAiBDC,EAdA,SAAC,GAA4D,IAA1DC,EAAyD,EAAzDA,SAAaC,EAA4C,8BAC3CC,mBAAS,GADkC,mBAClEC,EADkE,KACzDC,EADyD,KAOzE,OAJAC,qBAAU,WACRC,YAAW,kBAAMF,EAAW,QAC3B,IAGD,cAACT,EAAD,yBAAeG,SAAUK,GAAaF,GAAtC,aACGD,MCTQO,GALWX,IAAOC,IAAV,wGCDVW,GAAY,YACZC,GAAiB,gBACjBC,GAAuB,gBAGvBC,GAAQ,QCFfC,GAA0BhB,IAAOiB,KAAV,gKASvBC,GAAuBlB,IAAOmB
 
,EAAV,oNAMf,qBAAGC,YAAiCN,GAAuBF,MACnD,qBAAGQ,YAA8B,oBDftB,eCeyD,SAE1EN,IAkBEO,GARU,SAAC,GAAD,IAAGC,EAAH,EAAGA,WAAYC,EAAf,EAAeA,KAAMC,EAArB,EAAqBA,MAArB,OACvB,cAACR,GAAD,UACE,cAACE,GAAD,CAAsBK,KAAMA,EAAMH,YAAaE,EAA/C,SACGE,OC7BDC,GAAmBzB,IAAOC,IAAV,mJACNc,GACAA,IAQVW,GAAS1B,IAAOC,IAAV,6CAoBG0B,GAZG,SAAC,GAAD,IAAGC,EAAH,EAAGA,aAAH,OAChB,gCACE,cAACH,GAAD,UACE,eAAC,GAAD,WACE,cAAC,GAAD,CAAkBH,WAA6B,MAAjBM,EAAsBJ,MAAM,kBAAkBD,KAAK,OACjF,cAAC,GAAD,CAAkBD,WAA6B,iBAAjBM,EAAiCJ,MAAM,cAAcD,KAAK,uBAG5F,cAACG,GAAD,QChCSG,GAAW,SAACC,EAAgBC,GACvCC,OAAOC,cAAc,IAAIC,YAAYJ,EAAQ,CAAEK,OAAQJ,M,SC8B1CK,GA7BY,YAA0E,IAApEC,EAAmE,EAAnEA,aAAcC,EAAqD,EAArDA,SAAUC,EAA2C,EAA3CA,SACnDC,EAAQH,EACRI,EAAuC,GAE3CC,OAAOC,QAAQL,GAAUM,SAAQ,YAAwB,IAAD,mBAArBd,EAAqB,KAAbe,EAAa,KACtDb,OAAOc,iBAAiBhB,GAAS,SAACiB,GAChC,IAAMC,EAAYH,EAAQL,EAAOO,EAAMZ,QACvCK,EAAQQ,EACRP,EAAgBG,SAAQ,SAACK,GAAD,OAAoBA,EAAeT,YAI/DE,OAAOC,QAAQJ,GAAUK,SAAQ,YAAwB,IAAD,mBAArBd,EAAqB,KAAboB,EAAa,KACtDlB,OAAOc,iBAAiBhB,GAAS,SAACiB,GAChCG,EAAQV,EAAOO,
 
EAAMZ,cAYzB,MAAO,CAAEK,QAAOW,kBARU,SAACC,GACzBX,EAAe,uBAAOA,GAAP,CAAwBW,KAONC,qBAJN,SAACC,GAC5Bb,EAAkBA,EAAgBc,QAAO,SAACN,GAAD,OAAoBA,IAAmBK,QChBrEjB,GATM,CACnBmB,WAAY,GACZC,YAAa,GACbC,2BAA2B,EAC3BC,YAAa,EACbC,cAAe,GACfC,gCAAgC,G,iBCNrBC,GAAkB,kBAClBC,GAAe,eACfC,GAAsC,sCACtCC,GAAkB,kBAClBC,GAAsB,sBACtBC,GAA0C,0CCExCC,GAFDhC,GAAmB,CAAEC,gBAAcC,UCmDnC,oBACXwB,IA9CyB,SAACtB,EAAcgB,GAAf,mBAAC,eACxBhB,GADuB,IAE1BgB,kBA2CY,eAEXO,IA1CuB,SAACvB,GAAD,mBAAC,eACtBA,GADqB,IAExBiB,YAAaY,uBAAY7B,EAAMgB,WAAY,CACzCG,YAAanB,EAAMmB,YACnBC,cAAepB,EAAMoB,cACrBC,+BAAgCrB,EAAMqB,sCAmC5B,eAGXG,IAlC2C,SAACxB,GAAD,mBAAC,eAC1CA,GADyC,IAE5CkB,2BAA4BlB,EAAMkB,+BA6BtB,eAIXO,IA9B0B,SAACzB,EAAc8B,GAC1C,IAAMX,EAAcY,SAASD,GAC7B,GAAIE,MAAMb,GAAc,OAAO,eAAKnB,GACpC,GAAImB,EAAc,EAAG,OAAO,2BAAKnB,GAAZ,IAAmBmB,YAAa,IAHqB,IAIlEC,EAAkBpB,EAAlBoB,cACR,OAAID,EAAcC,EACT,2BAAKpB,GAAZ,IAAmBmB,YAAaC,IAE3B,2BAAKpB,GAAZ,IAAmBmB,mBAkBP,eAKXO,IApB4B,SAAC1B,EAAciC,GAC5C,IAAMb,EAAgBW,SAASE,GAC/B,GAAID,MAAMZ,GAAgB,OAAO,eAAKpB,GAFwC,IAG
 
tEmB,EAAgBnB,EAAhBmB,YACR,OAAIC,EAAgBD,EACX,2BAAKnB,GAAZ,IAAmBoB,cAAeD,IAE7B,2BAAKnB,GAAZ,IAAmBoB,qBAQP,eAMXO,IAX6C,SAAC3B,EAAcqB,GAAf,mBAAC,eAC5CrB,GAD2C,IAE9CqB,sCAGY,GDnD6CtB,UES7C,oBACXuB,IANyB,kBAAMjC,GAASkC,OAK7B,eAEXE,IAN0B,kBAAMpC,GAASkC,OAI9B,eAGXG,IAN4B,kBAAMrC,GAASkC,OAGhC,eAIXI,IAN6C,kBAAMtC,GAASkC,OAEjD,KCVRW,GAAoB1E,IAAOC,IAAV,8CAIjB0E,GAAqB3E,IAAO4E,SAAV,gXAYb/D,IAeIgE,GANI,SAAC,GAAD,IAAGC,EAAH,EAAGA,SAAUC,EAAb,EAAaA,MAAb,OACjB,cAACL,GAAD,UACE,cAACC,GAAD,CAAoBG,SAAUA,EAAUC,MAAOA,EAAOC,KAAM,QC3B1DC,GAAoBjF,IAAOiB,KAAV,mGAMjBiE,GAAmBlF,IAAOmF,OAAV,8NAIXvE,GAEEE,IAoBEsE,GANI,SAAC,GAAD,IAAG5D,EAAH,EAAGA,MAAO6D,EAAV,EAAUA,QAAV,OACjB,cAACJ,GAAD,UACE,cAACC,GAAD,CAAkBG,QAASA,EAA3B,SAAqC7D,OC3BnC8D,GAAqBtF,IAAOC,IAAV,8CAIlBsF,GAAiBvF,IAAOC,IAAV,+VAeduF,GAAOxF,IAAOC,IAAV,oFACCW,IAKL6E,GAAYzF,IAAOC,IAAV,kLAGQ,qBAAGyF,iBZ7BO,aYiDlBC,GATK,SAAC,GAAD,IAAG/B,EAAH,EAAGA,cAAexD,EAAlB,EAAkBA,SAAlB,OAClB,cAACkF,GAAD,UACE,eAACC,GAAD,WACE,cAACC,GAAD,UAAOpF,IACNwD,EAAgB,cAAC6B,GAAD,CAAWC,eA
 
AgB9B,IAAoB,WC7CzDgC,GAAkB,SAAIC,GAAmC,IAAD,EACzCvF,mBAAYuF,EAAarD,OADgB,mBAC5DA,EAD4D,KACrDsD,EADqD,KAWnE,OARArF,qBAAU,WACR,IAAMwC,EAAiB,SAACT,GACtBsD,EAAStD,IAGX,OADAqD,EAAa1C,kBAAkBF,GACxB,kBAAM4C,EAAaxC,qBAAqBJ,MAC9C,CAAC4C,IAEGrD,GCVHuD,GAAkB/F,IAAOiB,KAAV,8NAET,qBAAG+E,WACJ,qBAAGC,UAORC,GAASlG,IAAOiB,KAAV,gPAGA,qBAAG+E,WACC,qBAAGC,SAKRrF,IAILuF,GAAiBnG,IAAOiB,KAAV,kXACJF,IAKN,qBAAGqF,SAA2B,QAAU,MAQvCtF,GdzCgB,acyEZuF,GAlBA,SAAC,GAAD,QACbC,aADa,MACL,QADK,MAEbC,cAFa,MAEJ,OAFI,MAGbC,eAHa,aAIbC,cAJa,MAIJ,CAAED,QAAS,UAAWE,UAAW,aAJ7B,EAKb5B,EALa,EAKbA,SALa,OAOb,eAACiB,GAAD,CAAiBE,OAAQK,EAAON,QAASO,EAAzC,UACE,cAACL,GAAD,CAAQD,OAAQK,EAAON,QAASO,EAAQlB,QAAS,kBAAMP,GAAS,IAAhE,SACG2B,EAAOC,YAEV,cAACR,GAAD,CAAQD,OAAQK,EAAON,QAASO,EAAQlB,QAAS,kBAAMP,GAAS,IAAhE,SACG2B,EAAOD,UAEV,cAACL,GAAD,CAAgBC,SAAUI,EAA1B,SAAoCA,EAAUC,EAAOD,QAAUC,EAAOC,gBC5DpEC,GAA2B3G,IAAOC,IAAV,8CAIxB2G,GAAsB5G,IAAOC,IAAV,qGAIdW,IAGLiG,GAAsB7G,IAAO8G,MAAV,uVAQdjG,IAsDIkG,GA9CS,WACtB,IAAMvE,EAAQoD,GAAgBxB,IAC9B,OACE,gCA
 
CE,eAACuC,GAAD,WACE,cAACC,GAAD,0BACA,cAACC,GAAD,CACEG,KAAK,SACLC,IAAK,EACLC,IAAK1E,EAAMoB,cACXmB,MAAOvC,EAAMmB,YACbmB,SAAU,YAAiB,IAAdqC,EAAa,EAAbA,OACXtF,GAASoC,GAAiBkD,EAAOpC,aAIvC,eAAC4B,GAAD,WACE,cAACC,GAAD,8BACA,cAACC,GAAD,CACEG,KAAK,SACLC,IAAKzE,EAAMmB,YACXoB,MAAOvC,EAAMoB,cACbkB,SAAU,YAAiB,IAAdqC,EAAa,EAAbA,OACXtF,GAASqC,GAAqBiD,EAAOpC,aAI3C,eAAC4B,GAAD,WACE,cAACC,GAAD,4BACA,cAAC,GAAD,CACEL,OAAO,OACPD,MAAM,QACNE,QAAShE,EAAMqB,+BACf4C,OAAQ,CACND,QAAS,mBACTE,UAAW,qBAEb5B,SAAU,SAACjB,GACThC,GAASsC,GAAyCN,aC9DxDuD,GAAmCpH,IAAOC,IAAV,iIACtB,qBAAGoH,YAAiC,QAAU,OAuB/CC,GAjBQ,WACrB,IAAM9E,EAAQoD,GAAuBxB,IACrC,OACE,gCACE,cAAC,GAAD,CAAYW,MAAOvC,EAAMgB,WAAYsB,SAAU,gBAAGqC,EAAH,EAAGA,OAAH,OAAgBtF,GAASiC,GAAiBqD,EAAOpC,UAChG,cAAC,GAAD,CACEvD,MAAOgB,EAAMkB,0BAA4B,wBAA0B,wBACnE2B,QAAS,kBAAMxD,GAASmC,OAE1B,cAACoD,GAAD,CAAkCC,YAAa7E,EAAMkB,0BAArD,SACE,cAAC,GAAD,MAEDlB,EAAMiB,YAAc,cAAC,GAAD,CAAaG,cAAepB,EAAMoB,cAAlC,SAAkDpB,EAAMiB,cAA6B,SC1B1G8D,GAAmBvH,IAAOC,IAAV,mCAClB,qBAAGuH,aAEHC,YADW,yDAM
 
TC,GAAmB1H,IAAOiB,KAAV,oFACXL,IAWI+G,GANG,SAAC,GAAD,IAAGvH,EAAH,EAAGA,SAAH,OAChB,cAACmH,GAAD,CAAkBC,YAAaI,QAAQxH,GAAvC,SACE,cAACsH,GAAD,UAAmBtH,OChBjByH,GAAe7H,IAAOC,IAAV,mCACd,qBAAGuH,aAEHC,YADW,yDAMTK,GAAe9H,IAAOC,IAAV,oFACPW,IAWImH,GAND,SAAC,GAAD,IAAG3H,EAAH,EAAGA,SAAH,OACZ,cAACyH,GAAD,CAAcL,YAAaI,QAAQxH,GAAnC,SACE,cAAC0H,GAAD,UAAe1H,OCFJ4H,GARQ,SAAC,GAAD,IAAGC,EAAH,EAAGA,MAAOC,EAAV,EAAUA,YAAaC,EAAvB,EAAuBA,QAAvB,OACrB,gCACE,cAAC,GAAD,UAAQF,IACR,cAAC,GAAD,UAAYC,IACZ,cAAC,GAAD,UAAcC,QCfLC,GAAQ,CACnB,CACEH,MAAO,yCACPC,YAAY,onBAIZC,QAAQ,iZAkBV,CACEF,MAAO,yCACPC,YAAa,mGACbC,QAAQ,wcAgBV,CACEF,MAAO,iCACPC,YACE,gLACFC,QAAQ,gZAeV,CACEF,MAAO,qBACPC,YAAY,yvBAKZC,QAAQ,uuCA6CV,CACEF,MAAO,0CACPC,YAAY,gXACZC,QAAQ,sNAaV,CACEF,MAAO,8CACPC,YAAY,soBACZC,QAAQ,8vBAgCV,CACEF,MAAO,mGACPC,YAAa,GACbC,QAAQ,+5BAkCV,CACEF,MAAO,4EACPC,YACE,uMACFC,QAAQ,uhBA8BV,CACEF,MAAO,6GACPC,YAAa,GACbC,QAAQ,yZAWV,CACEF,MAAO,gCACPC,YACE,8LACFC,QAAQ,iSAOV,CACEF,MAAO,+BACPC,YAAY,oGACZC,QAAQ,uUCpQNE,GAAoBrI,IAAOC,IAAV,qEAaRqI
 
,GARI,kBACjB,cAACD,GAAD,UACGD,GAAMG,KAAI,gBAAGN,EAAH,EAAGA,MAAOC,EAAV,EAAUA,YAAaC,EAAvB,EAAuBA,QAAvB,OACT,cAAC,GAAD,CAA4BF,MAAOA,EAAOC,YAAaA,EAAaC,QAASA,GAAxDF,SCPrBO,GAAcxI,IAAOC,IAAV,6CAkBFwI,GAVF,SAAC,GAAiC,IAA/B7G,EAA8B,EAA9BA,aACd,OACE,cAAC4G,GAAD,UACE,cAAC,GAAD,UACoB,MAAjB5G,EAAuB,cAAC,GAAD,IAAsC,iBAAjBA,EAAkC,cAAC,GAAD,IAAiB,UCblG8G,G,MAAkBC,EAAS,yBAAyBC,QAEpDC,GAAgB7I,IAAOC,IAAV,6HAERW,IAeIkI,GATA,kBACb,cAAC,GAAD,UACE,eAACD,GAAD,WACE,mDAAsBH,MACtB,+FCtCS,OAA0B,0DCA1B,OAA0B,4DCyBnCK,GAA0B/I,IAAOC,IAAV,oIAEbc,IAQViI,GAAwBhJ,IAAOC,IAAV,oHAOrBgJ,GAAsBjJ,IAAOC,IAAV,4IAEb,qBAAGiJ,mBAA8C,KAMvDC,GAAQnJ,IAAOoJ,IAAV,iOACE,qBAAGlJ,YAwDDmJ,GAxCU,SAAC,GAAkD,IAAhDC,EAA+C,EAA/CA,kBAA+C,EACvBhJ,mBAAS,GADc,mBAClEiJ,EADkE,KAC/CC,EAD+C,OAEflJ,oBAAS,GAFM,mBAElEmJ,EAFkE,KAE3CC,EAF2C,OAGXpJ,oBAAS,GAHE,mBAGlEqJ,EAHkE,KAGzCC,EAHyC,KAoBzE,OAfAnJ,qBAAU,WACRC,YACE,WACM6I,EAAoB,IAClBE,GAAyBE,GAC3BH,EAAqBD,EAAoB,GAG3C7I,WAAW4I,EAAmB,OAGZ,IAAtBC,EAA0B,IAAM,MAEjC,CAACA,EAAmBE,EAAuBE,EAAyBL,IAGrE,eAACP,GAA
 
D,WACE,cAACC,GAAD,UACE,cAACG,GAAD,CACEU,IAAKC,GACL5J,SAAUyJ,GAAiD,MAAtBJ,EAA4B,EAAI,EACrEQ,OAAQ,kBAAMH,GAA2B,QAG7C,cAACX,GAAD,CAAqBC,mBAAoBK,EAAzC,SACE,cAACJ,GAAD,CACEU,IAAKG,GACL9J,SAAgC,MAAtBqJ,EAA4B,EAAI,EAC1CQ,OAAQ,kBAAML,GAAyB,YCtE3CO,GAAajK,IAAOC,IAAV,2FAqBDiK,GAfH,WAAO,IACTtI,EAAiBuI,oBAAUtK,GAA3B+B,aADQ,EAE8BtB,oBAAS,GAFvC,mBAET8J,EAFS,KAEQC,EAFR,KAGhB,OAAKD,EAEH,cAAC,EAAD,UACE,eAACH,GAAD,WACE,cAAC,GAAD,CAAWrI,aAAcA,IACzB,cAAC,GAAD,CAAMA,aAAcA,IACpB,cAAC,GAAD,SANuB,cAAC,GAAD,CAAkB0H,kBAAmB,kBAAMe,GAAmB,OCN9EC,GAZS,SAACC,GACnBA,GAAeA,aAAuBC,UACxC,6BAAqBC,MAAK,YAAkD,IAA/CC,EAA8C,EAA9CA,OAAQC,EAAsC,EAAtCA,OAAQC,EAA8B,EAA9BA,OAAQC,EAAsB,EAAtBA,OAAQC,EAAc,EAAdA,QAC3DJ,EAAOH,GACPI,EAAOJ,GACPK,EAAOL,GACPM,EAAON,GACPO,EAAQP,OCHdQ,IAASC,OACP,cAAC,IAAMC,WAAP,UACE,cAAC,GAAD,MAEFC,SAASC,eAAe,SAM1Bb,O","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


Reply via email to