mirror of
				https://github.com/XRPLF/xrpl-dev-portal.git
				synced 2025-11-04 03:45:49 +00:00 
			
		
		
		
	Use @uiw/react-codemirror and react@18
				
					
				
			Updating redocly to latest and leveraging `@uiw/react-codemirror` which it also uses.
This commit is contained in:
		
							
								
								
									
										32
									
								
								content/shared/editor/editor.tsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								content/shared/editor/editor.tsx
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
			
		||||
import CodeMirror from '@uiw/react-codemirror';
 | 
			
		||||
import { ViewUpdate } from '@codemirror/view'
 | 
			
		||||
import { Extension } from '@codemirror/state'
 | 
			
		||||
 | 
			
		||||
import { editorXRPLTheme } from './theme'
 | 
			
		||||
 | 
			
		||||
export interface EditorWrapperProps {
 | 
			
		||||
    value: string
 | 
			
		||||
    onChange?: (value: string, viewUpdate: ViewUpdate) => void
 | 
			
		||||
    readOnly?: boolean
 | 
			
		||||
    lineNumbers?: boolean
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export interface EditorProps extends EditorWrapperProps {
 | 
			
		||||
    extensions: Extension[]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export const Editor = ({value, extensions, onChange = () => {}, readOnly=false, lineNumbers=true }: EditorProps) => {
 | 
			
		||||
    return (
 | 
			
		||||
        <CodeMirror
 | 
			
		||||
          value={value}
 | 
			
		||||
          theme={editorXRPLTheme}
 | 
			
		||||
          extensions={[...extensions]}
 | 
			
		||||
          onChange={onChange}
 | 
			
		||||
          basicSetup={{
 | 
			
		||||
            highlightActiveLine: false,
 | 
			
		||||
            highlightActiveLineGutter: false,
 | 
			
		||||
            lineNumbers
 | 
			
		||||
          }}
 | 
			
		||||
        />
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										15
									
								
								content/shared/editor/javascript-editor.tsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								content/shared/editor/javascript-editor.tsx
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
			
		||||
import { javascript } from '@codemirror/lang-javascript'
 | 
			
		||||
import { Editor, EditorWrapperProps } from './editor'
 | 
			
		||||
 | 
			
		||||
export const JavascriptEditor = ({value, onChange, readOnly }: EditorWrapperProps) => {
 | 
			
		||||
    return <Editor
 | 
			
		||||
        value={value}
 | 
			
		||||
        onChange={onChange}
 | 
			
		||||
        readOnly={readOnly}
 | 
			
		||||
        extensions={
 | 
			
		||||
            [
 | 
			
		||||
                javascript(),
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    />
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										26
									
								
								content/shared/editor/json-editor.tsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								content/shared/editor/json-editor.tsx
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
			
		||||
import { linter, lintGutter } from '@codemirror/lint'
 | 
			
		||||
import { json, jsonParseLinter } from '@codemirror/lang-json'
 | 
			
		||||
import { Extension } from '@codemirror/state'
 | 
			
		||||
 | 
			
		||||
import { Editor, EditorWrapperProps } from './editor'
 | 
			
		||||
 | 
			
		||||
export const JsonEditor = ({value, onChange, readOnly, lineNumbers }: EditorWrapperProps) => {
 | 
			
		||||
    const extensions: Extension[] = [
 | 
			
		||||
        json()
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    if(!readOnly) {
 | 
			
		||||
        extensions.push(
 | 
			
		||||
            lintGutter(),
 | 
			
		||||
            linter(jsonParseLinter())
 | 
			
		||||
        )
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return <Editor
 | 
			
		||||
        value={value}
 | 
			
		||||
        onChange={onChange}
 | 
			
		||||
        readOnly={readOnly}
 | 
			
		||||
        extensions={extensions}
 | 
			
		||||
        lineNumbers={lineNumbers}
 | 
			
		||||
    />
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										40
									
								
								content/shared/editor/theme.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								content/shared/editor/theme.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
			
		||||
import { tags as t } from '@lezer/highlight';
 | 
			
		||||
import { createTheme } from '@uiw/codemirror-themes';
 | 
			
		||||
 | 
			
		||||
const blue200 = '#B2E0FF'
 | 
			
		||||
const blue500 = '#19A3FF'
 | 
			
		||||
const gray500 = '#838386'
 | 
			
		||||
const gray800 = '#232325'
 | 
			
		||||
const green700 = '#28B86A'
 | 
			
		||||
const orange500 = '#FF6719'
 | 
			
		||||
const white = '#FFFFFF'
 | 
			
		||||
 | 
			
		||||
export const editorXRPLTheme = createTheme({
 | 
			
		||||
    theme: 'dark',
 | 
			
		||||
    settings: {
 | 
			
		||||
      background: gray800,
 | 
			
		||||
      backgroundImage: '',
 | 
			
		||||
      fontFamily: 'Space Mono',
 | 
			
		||||
      foreground: white,
 | 
			
		||||
      caret: gray500,
 | 
			
		||||
      lineHighlight: gray800,
 | 
			
		||||
      gutterBackground: gray800,
 | 
			
		||||
    },
 | 
			
		||||
    styles: [
 | 
			
		||||
      { tag: [t.attributeName, t.attributeValue], color: white },
 | 
			
		||||
      { tag: t.propertyName, color: green700 },
 | 
			
		||||
      { tag: t.comment, color: gray500 },
 | 
			
		||||
      { tag: t.variableName, color: white },
 | 
			
		||||
      { tag: [t.string, t.special(t.brace)], color: green700 },
 | 
			
		||||
      { tag: t.number, color: blue500 },
 | 
			
		||||
      { tag: t.atom, color: orange500 },
 | 
			
		||||
      { tag: t.bool, color: orange500 },
 | 
			
		||||
      { tag: t.null, color: orange500 },
 | 
			
		||||
      { tag: t.keyword, color: orange500 },
 | 
			
		||||
      { tag: t.operator, color: white },
 | 
			
		||||
      { tag: t.definition(t.typeName), color: white },
 | 
			
		||||
      { tag: t.tagName, color: white },
 | 
			
		||||
      { tag: [t.brace, t.bracket], color: white },
 | 
			
		||||
      { tag: t.link, color: blue200 }
 | 
			
		||||
    ],
 | 
			
		||||
});
 | 
			
		||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										64
									
								
								content/static/vendor/cm-javascript-lint.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										64
									
								
								content/static/vendor/cm-javascript-lint.js
									
									
									
									
										vendored
									
									
								
							@@ -1,64 +0,0 @@
 | 
			
		||||
// CodeMirror, copyright (c) by Marijn Haverbeke and others
 | 
			
		||||
// Distributed under an MIT license: https://codemirror.net/LICENSE
 | 
			
		||||
 | 
			
		||||
(function(mod) {
 | 
			
		||||
  if (typeof exports == "object" && typeof module == "object") // CommonJS
 | 
			
		||||
    mod(require("../../lib/codemirror"));
 | 
			
		||||
  else if (typeof define == "function" && define.amd) // AMD
 | 
			
		||||
    define(["../../lib/codemirror"], mod);
 | 
			
		||||
  else // Plain browser env
 | 
			
		||||
    mod(CodeMirror);
 | 
			
		||||
})(function(CodeMirror) {
 | 
			
		||||
  "use strict";
 | 
			
		||||
  // declare global: JSHINT
 | 
			
		||||
 | 
			
		||||
  function validator(text, options) {
 | 
			
		||||
    if (!window.JSHINT) {
 | 
			
		||||
      if (window.console) {
 | 
			
		||||
        window.console.error("Error: window.JSHINT not defined, CodeMirror JavaScript linting cannot run.");
 | 
			
		||||
      }
 | 
			
		||||
      return [];
 | 
			
		||||
    }
 | 
			
		||||
    if (!options.indent) // JSHint error.character actually is a column index, this fixes underlining on lines using tabs for indentation
 | 
			
		||||
      options.indent = 1; // JSHint default value is 4
 | 
			
		||||
    options.esversion = 8; // suppress warnings for using modern JS features
 | 
			
		||||
    JSHINT(text, options, options.globals);
 | 
			
		||||
    var errors = JSHINT.data().errors, result = [];
 | 
			
		||||
    if (errors) parseErrors(errors, result);
 | 
			
		||||
    return result;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  CodeMirror.registerHelper("lint", "javascript", validator);
 | 
			
		||||
 | 
			
		||||
  function parseErrors(errors, output) {
 | 
			
		||||
    for ( var i = 0; i < errors.length; i++) {
 | 
			
		||||
      var error = errors[i];
 | 
			
		||||
      if (error) {
 | 
			
		||||
        if (error.line < 0) {
 | 
			
		||||
          if (window.console) {
 | 
			
		||||
            window.console.warn("Cannot display JSHint error (invalid line " + error.line + ")", error);
 | 
			
		||||
          }
 | 
			
		||||
          continue;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        var start = error.character - 1, end = start + 1;
 | 
			
		||||
        if (error.evidence) {
 | 
			
		||||
          var index = error.evidence.substring(start).search(/.\b/);
 | 
			
		||||
          if (index > -1) {
 | 
			
		||||
            end += index;
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Convert to format expected by validation service
 | 
			
		||||
        var hint = {
 | 
			
		||||
          message: error.reason,
 | 
			
		||||
          severity: error.code ? (error.code.startsWith('W') ? "warning" : "error") : "error",
 | 
			
		||||
          from: CodeMirror.Pos(error.line - 1, start),
 | 
			
		||||
          to: CodeMirror.Pos(error.line - 1, end)
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        output.push(hint);
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
});
 | 
			
		||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										341
									
								
								content/static/vendor/codemirror.css
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										341
									
								
								content/static/vendor/codemirror.css
									
									
									
									
										vendored
									
									
								
							@@ -1,341 +0,0 @@
 | 
			
		||||
/* BASICS */
 | 
			
		||||
 | 
			
		||||
.CodeMirror {
 | 
			
		||||
  /* Set height, width, borders, and global font properties here */
 | 
			
		||||
  font-family: "Space Mono", monospace;
 | 
			
		||||
  height: 300px;
 | 
			
		||||
  background-color: #EBE8E7;
 | 
			
		||||
  margin: 16px 0;
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror-scroll {
 | 
			
		||||
  /* Set scrolling behaviour here */
 | 
			
		||||
  overflow: auto;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* PADDING */
 | 
			
		||||
 | 
			
		||||
.CodeMirror-lines {
 | 
			
		||||
  padding: 24px 0; /* Vertical padding around content */
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror pre {
 | 
			
		||||
  padding: 0 24px 0 8px; /* Horizontal padding of content w/ room for 16px gutter */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
 | 
			
		||||
  background-color: white; /* The little square between H and V scrollbars */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* GUTTER */
 | 
			
		||||
 | 
			
		||||
.CodeMirror-gutters {
 | 
			
		||||
  /* border-right: 1px solid #EBE8E7; */
 | 
			
		||||
  background-color: #EBE8E7;
 | 
			
		||||
  white-space: nowrap;
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror-linenumbers {}
 | 
			
		||||
.CodeMirror-linenumber {
 | 
			
		||||
  padding: 0 3px 0 5px;
 | 
			
		||||
  min-width: 20px;
 | 
			
		||||
  text-align: right;
 | 
			
		||||
  color: #999;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* CURSOR */
 | 
			
		||||
 | 
			
		||||
.CodeMirror div.CodeMirror-cursor {
 | 
			
		||||
  border-left: 1px solid black;
 | 
			
		||||
  z-index: 3;
 | 
			
		||||
}
 | 
			
		||||
/* Shown when moving in bi-directional text */
 | 
			
		||||
.CodeMirror div.CodeMirror-secondarycursor {
 | 
			
		||||
  border-left: 1px solid silver;
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror.cm-keymap-fat-cursor div.CodeMirror-cursor {
 | 
			
		||||
  width: auto;
 | 
			
		||||
  border: 0;
 | 
			
		||||
  background: #7e7;
 | 
			
		||||
  z-index: 1;
 | 
			
		||||
}
 | 
			
		||||
/* Can style cursor different in overwrite (non-insert) mode */
 | 
			
		||||
.CodeMirror div.CodeMirror-cursor.CodeMirror-overwrite {}
 | 
			
		||||
 | 
			
		||||
.cm-tab { display: inline-block; }
 | 
			
		||||
 | 
			
		||||
/* DEFAULT THEME - modified for XRPL.org */
 | 
			
		||||
 | 
			
		||||
.cm-s-default .cm-keyword {color: #708;}
 | 
			
		||||
.cm-s-default .cm-atom {color: #62682E;}
 | 
			
		||||
.cm-s-default .cm-number {color: #7699bb;}
 | 
			
		||||
.cm-s-default .cm-def {color: #00f;}
 | 
			
		||||
.cm-s-default .cm-variable {color: black;}
 | 
			
		||||
.cm-s-default .cm-variable-2 {color: #05a;}
 | 
			
		||||
.cm-s-default .cm-variable-3 {color: #085;}
 | 
			
		||||
.cm-s-default .cm-property {color: black;}
 | 
			
		||||
.cm-s-default .cm-operator {color: black;}
 | 
			
		||||
.cm-s-default .cm-comment {color: #a50;}
 | 
			
		||||
.cm-s-default .cm-string {color: #25A768;}
 | 
			
		||||
.cm-s-default .cm-string-2 {color: #f50;}
 | 
			
		||||
.cm-s-default .cm-meta {color: #555;}
 | 
			
		||||
.cm-s-default .cm-qualifier {color: #555;}
 | 
			
		||||
.cm-s-default .cm-builtin {color: #30a;}
 | 
			
		||||
.cm-s-default .cm-bracket {color: #997;}
 | 
			
		||||
.cm-s-default .cm-tag {color: #170;}
 | 
			
		||||
.cm-s-default .cm-attribute {color: #00c;}
 | 
			
		||||
.cm-s-default .cm-header {color: blue;}
 | 
			
		||||
.cm-s-default .cm-quote {color: #090;}
 | 
			
		||||
.cm-s-default .cm-hr {color: #999;}
 | 
			
		||||
.cm-s-default .cm-link {color: #00c;}
 | 
			
		||||
 | 
			
		||||
.cm-negative {color: #d44;}
 | 
			
		||||
.cm-positive {color: #292;}
 | 
			
		||||
.cm-header, .cm-strong {font-weight: bold;}
 | 
			
		||||
.cm-em {font-style: italic;}
 | 
			
		||||
.cm-link {text-decoration: underline;}
 | 
			
		||||
 | 
			
		||||
.cm-s-default .cm-error {color: #f00;}
 | 
			
		||||
.cm-invalidchar {color: #f00;}
 | 
			
		||||
 | 
			
		||||
div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;}
 | 
			
		||||
div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}
 | 
			
		||||
.CodeMirror-activeline-background {background: #e8f2ff;}
 | 
			
		||||
 | 
			
		||||
/* STOP */
 | 
			
		||||
 | 
			
		||||
/* The rest of this file contains styles related to the mechanics of
 | 
			
		||||
   the editor. You probably shouldn't touch them. */
 | 
			
		||||
 | 
			
		||||
.CodeMirror {
 | 
			
		||||
  line-height: 1;
 | 
			
		||||
  position: relative;
 | 
			
		||||
  overflow: hidden;
 | 
			
		||||
  background: #EBE8E7;
 | 
			
		||||
  color: black;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-scroll {
 | 
			
		||||
  /* 30px is the magic margin used to hide the element's real scrollbars */
 | 
			
		||||
  /* See overflow: hidden in .CodeMirror */
 | 
			
		||||
  margin-bottom: -30px; margin-right: -30px;
 | 
			
		||||
  padding-bottom: 30px; padding-right: 30px;
 | 
			
		||||
  height: 100%;
 | 
			
		||||
  outline: none; /* Prevent dragging from highlighting the element */
 | 
			
		||||
  position: relative;
 | 
			
		||||
  -moz-box-sizing: content-box;
 | 
			
		||||
  box-sizing: content-box;
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror-sizer {
 | 
			
		||||
  position: relative;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* The fake, visible scrollbars. Used to force redraw during scrolling
 | 
			
		||||
   before actuall scrolling happens, thus preventing shaking and
 | 
			
		||||
   flickering artifacts. */
 | 
			
		||||
.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  z-index: 6;
 | 
			
		||||
  display: none;
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror-vscrollbar {
 | 
			
		||||
  right: 0; top: 0;
 | 
			
		||||
  overflow-x: hidden;
 | 
			
		||||
  overflow-y: scroll;
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror-hscrollbar {
 | 
			
		||||
  bottom: 0; left: 0;
 | 
			
		||||
  overflow-y: hidden;
 | 
			
		||||
  overflow-x: scroll;
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror-scrollbar-filler {
 | 
			
		||||
  right: 0; bottom: 0;
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror-gutter-filler {
 | 
			
		||||
  left: 0; bottom: 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-gutters {
 | 
			
		||||
  position: absolute; left: 0; top: 0;
 | 
			
		||||
  padding-bottom: 30px;
 | 
			
		||||
  z-index: 3;
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror-gutter {
 | 
			
		||||
  white-space: normal;
 | 
			
		||||
  height: 100%;
 | 
			
		||||
  -moz-box-sizing: content-box;
 | 
			
		||||
  box-sizing: content-box;
 | 
			
		||||
  padding-bottom: 30px;
 | 
			
		||||
  margin-bottom: -32px;
 | 
			
		||||
  display: inline-block;
 | 
			
		||||
  /* Hack to make IE7 behave */
 | 
			
		||||
  *zoom:1;
 | 
			
		||||
  *display:inline;
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror-gutter-elt {
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  cursor: default;
 | 
			
		||||
  z-index: 4;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-lines {
 | 
			
		||||
  cursor: text;
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror pre {
 | 
			
		||||
  /* Reset some styles that the rest of the page might have set */
 | 
			
		||||
  -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0;
 | 
			
		||||
  border-width: 0;
 | 
			
		||||
  background: transparent;
 | 
			
		||||
  font-family: inherit;
 | 
			
		||||
  font-size: inherit;
 | 
			
		||||
  margin: 0;
 | 
			
		||||
  white-space: pre;
 | 
			
		||||
  word-wrap: normal;
 | 
			
		||||
  line-height: inherit;
 | 
			
		||||
  color: inherit;
 | 
			
		||||
  z-index: 2;
 | 
			
		||||
  position: relative;
 | 
			
		||||
  overflow: visible;
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror-wrap pre {
 | 
			
		||||
  word-wrap: break-word;
 | 
			
		||||
  white-space: pre-wrap;
 | 
			
		||||
  word-break: normal;
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror-code pre {
 | 
			
		||||
  border-right: 30px solid transparent;
 | 
			
		||||
  width: -webkit-fit-content;
 | 
			
		||||
  width: -moz-fit-content;
 | 
			
		||||
  width: fit-content;
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror-wrap .CodeMirror-code pre {
 | 
			
		||||
  border-right: none;
 | 
			
		||||
  width: auto;
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror-linebackground {
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  left: 0; right: 0; top: 0; bottom: 0;
 | 
			
		||||
  z-index: 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-linewidget {
 | 
			
		||||
  position: relative;
 | 
			
		||||
  z-index: 2;
 | 
			
		||||
  overflow: auto;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-widget {}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-wrap .CodeMirror-scroll {
 | 
			
		||||
  overflow-x: hidden;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-measure {
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  width: 100%;
 | 
			
		||||
  height: 0;
 | 
			
		||||
  overflow: hidden;
 | 
			
		||||
  visibility: hidden;
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror-measure pre { position: static; }
 | 
			
		||||
 | 
			
		||||
.CodeMirror div.CodeMirror-cursor {
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  visibility: hidden;
 | 
			
		||||
  border-right: none;
 | 
			
		||||
  width: 0;
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror-focused div.CodeMirror-cursor {
 | 
			
		||||
  visibility: visible;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-selected { background: #d9d9d9; }
 | 
			
		||||
.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; }
 | 
			
		||||
 | 
			
		||||
.cm-searching {
 | 
			
		||||
  background: #ffa;
 | 
			
		||||
  background: rgba(255, 255, 0, .4);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* IE7 hack to prevent it from returning funny offsetTops on the spans */
 | 
			
		||||
.CodeMirror span { *vertical-align: text-bottom; }
 | 
			
		||||
 | 
			
		||||
@media print {
 | 
			
		||||
  /* Hide the cursor when printing */
 | 
			
		||||
  .CodeMirror div.CodeMirror-cursor {
 | 
			
		||||
    visibility: hidden;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* ADDON: lint.css ---------------------------------------------------------- */
 | 
			
		||||
 | 
			
		||||
/* The lint marker gutter */
 | 
			
		||||
.CodeMirror-lint-markers {
 | 
			
		||||
  width: 16px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-lint-tooltip {
 | 
			
		||||
  background-color: #ffd;
 | 
			
		||||
  border: 1px solid black;
 | 
			
		||||
  border-radius: 4px 4px 4px 4px;
 | 
			
		||||
  color: black;
 | 
			
		||||
  font-family: monospace;
 | 
			
		||||
  font-size: 10pt;
 | 
			
		||||
  overflow: hidden;
 | 
			
		||||
  padding: 2px 5px;
 | 
			
		||||
  position: fixed;
 | 
			
		||||
  white-space: pre;
 | 
			
		||||
  white-space: pre-wrap;
 | 
			
		||||
  z-index: 100;
 | 
			
		||||
  max-width: 600px;
 | 
			
		||||
  opacity: 0;
 | 
			
		||||
  transition: opacity .4s;
 | 
			
		||||
  -moz-transition: opacity .4s;
 | 
			
		||||
  -webkit-transition: opacity .4s;
 | 
			
		||||
  -o-transition: opacity .4s;
 | 
			
		||||
  -ms-transition: opacity .4s;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-lint-mark-error, .CodeMirror-lint-mark-warning {
 | 
			
		||||
  background-position: left bottom;
 | 
			
		||||
  background-repeat: repeat-x;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-lint-mark-error {
 | 
			
		||||
  background-image:
 | 
			
		||||
  url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJDw4cOCW1/KIAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAHElEQVQI12NggIL/DAz/GdA5/xkY/qPKMDAwAADLZwf5rvm+LQAAAABJRU5ErkJggg==")
 | 
			
		||||
  ;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-lint-mark-warning {
 | 
			
		||||
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJFhQXEbhTg7YAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAMklEQVQI12NkgIIvJ3QXMjAwdDN+OaEbysDA4MPAwNDNwMCwiOHLCd1zX07o6kBVGQEAKBANtobskNMAAAAASUVORK5CYII=");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-lint-marker-error, .CodeMirror-lint-marker-warning {
 | 
			
		||||
  background-position: center center;
 | 
			
		||||
  background-repeat: no-repeat;
 | 
			
		||||
  cursor: pointer;
 | 
			
		||||
  display: inline-block;
 | 
			
		||||
  height: 16px;
 | 
			
		||||
  width: 16px;
 | 
			
		||||
  vertical-align: middle;
 | 
			
		||||
  position: relative;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-lint-message-error, .CodeMirror-lint-message-warning {
 | 
			
		||||
  padding-left: 18px;
 | 
			
		||||
  background-position: top left;
 | 
			
		||||
  background-repeat: no-repeat;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-lint-marker-error, .CodeMirror-lint-message-error {
 | 
			
		||||
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAHlBMVEW7AAC7AACxAAC7AAC7AAAAAAC4AAC5AAD///+7AAAUdclpAAAABnRSTlMXnORSiwCK0ZKSAAAATUlEQVR42mWPOQ7AQAgDuQLx/z8csYRmPRIFIwRGnosRrpamvkKi0FTIiMASR3hhKW+hAN6/tIWhu9PDWiTGNEkTtIOucA5Oyr9ckPgAWm0GPBog6v4AAAAASUVORK5CYII=");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-lint-marker-warning, .CodeMirror-lint-message-warning {
 | 
			
		||||
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAANlBMVEX/uwDvrwD/uwD/uwD/uwD/uwD/uwD/uwD/uwD6twD/uwAAAADurwD2tQD7uAD+ugAAAAD/uwDhmeTRAAAADHRSTlMJ8mN1EYcbmiixgACm7WbuAAAAVklEQVR42n3PUQqAIBBFUU1LLc3u/jdbOJoW1P08DA9Gba8+YWJ6gNJoNYIBzAA2chBth5kLmG9YUoG0NHAUwFXwO9LuBQL1giCQb8gC9Oro2vp5rncCIY8L8uEx5ZkAAAAASUVORK5CYII=");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-lint-marker-multiple {
 | 
			
		||||
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAMAAADzjKfhAAAACVBMVEUAAAAAAAC/v7914kyHAAAAAXRSTlMAQObYZgAAACNJREFUeNo1ioEJAAAIwmz/H90iFFSGJgFMe3gaLZ0od+9/AQZ0ADosbYraAAAAAElFTkSuQmCC");
 | 
			
		||||
  background-repeat: no-repeat;
 | 
			
		||||
  background-position: right bottom;
 | 
			
		||||
  width: 100%; height: 100%;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										31321
									
								
								content/static/vendor/jshint.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										31321
									
								
								content/static/vendor/jshint.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										432
									
								
								content/static/vendor/jsonlint.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										432
									
								
								content/static/vendor/jsonlint.js
									
									
									
									
										vendored
									
									
								
							@@ -1,432 +0,0 @@
 | 
			
		||||
/* Jison generated parser */
 | 
			
		||||
var jsonlint = (function(){
 | 
			
		||||
var parser = {trace: function trace() { },
 | 
			
		||||
yy: {},
 | 
			
		||||
symbols_: {"error":2,"JSONString":3,"STRING":4,"JSONNumber":5,"NUMBER":6,"JSONNullLiteral":7,"NULL":8,"JSONBooleanLiteral":9,"TRUE":10,"FALSE":11,"JSONText":12,"JSONValue":13,"EOF":14,"JSONObject":15,"JSONArray":16,"{":17,"}":18,"JSONMemberList":19,"JSONMember":20,":":21,",":22,"[":23,"]":24,"JSONElementList":25,"$accept":0,"$end":1},
 | 
			
		||||
terminals_: {2:"error",4:"STRING",6:"NUMBER",8:"NULL",10:"TRUE",11:"FALSE",14:"EOF",17:"{",18:"}",21:":",22:",",23:"[",24:"]"},
 | 
			
		||||
productions_: [0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[15,2],[15,3],[20,3],[19,1],[19,3],[16,2],[16,3],[25,1],[25,3]],
 | 
			
		||||
performAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$) {
 | 
			
		||||
 | 
			
		||||
var $0 = $$.length - 1;
 | 
			
		||||
switch (yystate) {
 | 
			
		||||
case 1: // replace escaped characters with actual character
 | 
			
		||||
          this.$ = yytext.replace(/\\(\\|")/g, "$"+"1")
 | 
			
		||||
                     .replace(/\\n/g,'\n')
 | 
			
		||||
                     .replace(/\\r/g,'\r')
 | 
			
		||||
                     .replace(/\\t/g,'\t')
 | 
			
		||||
                     .replace(/\\v/g,'\v')
 | 
			
		||||
                     .replace(/\\f/g,'\f')
 | 
			
		||||
                     .replace(/\\b/g,'\b');
 | 
			
		||||
        
 | 
			
		||||
break;
 | 
			
		||||
case 2:this.$ = Number(yytext);
 | 
			
		||||
break;
 | 
			
		||||
case 3:this.$ = null;
 | 
			
		||||
break;
 | 
			
		||||
case 4:this.$ = true;
 | 
			
		||||
break;
 | 
			
		||||
case 5:this.$ = false;
 | 
			
		||||
break;
 | 
			
		||||
case 6:return this.$ = $$[$0-1];
 | 
			
		||||
break;
 | 
			
		||||
case 13:this.$ = {};
 | 
			
		||||
break;
 | 
			
		||||
case 14:this.$ = $$[$0-1];
 | 
			
		||||
break;
 | 
			
		||||
case 15:this.$ = [$$[$0-2], $$[$0]];
 | 
			
		||||
break;
 | 
			
		||||
case 16:this.$ = {}; this.$[$$[$0][0]] = $$[$0][1];
 | 
			
		||||
break;
 | 
			
		||||
case 17:this.$ = $$[$0-2]; $$[$0-2][$$[$0][0]] = $$[$0][1];
 | 
			
		||||
break;
 | 
			
		||||
case 18:this.$ = [];
 | 
			
		||||
break;
 | 
			
		||||
case 19:this.$ = $$[$0-1];
 | 
			
		||||
break;
 | 
			
		||||
case 20:this.$ = [$$[$0]];
 | 
			
		||||
break;
 | 
			
		||||
case 21:this.$ = $$[$0-2]; $$[$0-2].push($$[$0]);
 | 
			
		||||
break;
 | 
			
		||||
}
 | 
			
		||||
},
 | 
			
		||||
table: [{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],12:1,13:2,15:7,16:8,17:[1,14],23:[1,15]},{1:[3]},{14:[1,16]},{14:[2,7],18:[2,7],22:[2,7],24:[2,7]},{14:[2,8],18:[2,8],22:[2,8],24:[2,8]},{14:[2,9],18:[2,9],22:[2,9],24:[2,9]},{14:[2,10],18:[2,10],22:[2,10],24:[2,10]},{14:[2,11],18:[2,11],22:[2,11],24:[2,11]},{14:[2,12],18:[2,12],22:[2,12],24:[2,12]},{14:[2,3],18:[2,3],22:[2,3],24:[2,3]},{14:[2,4],18:[2,4],22:[2,4],24:[2,4]},{14:[2,5],18:[2,5],22:[2,5],24:[2,5]},{14:[2,1],18:[2,1],21:[2,1],22:[2,1],24:[2,1]},{14:[2,2],18:[2,2],22:[2,2],24:[2,2]},{3:20,4:[1,12],18:[1,17],19:18,20:19},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:23,15:7,16:8,17:[1,14],23:[1,15],24:[1,21],25:22},{1:[2,6]},{14:[2,13],18:[2,13],22:[2,13],24:[2,13]},{18:[1,24],22:[1,25]},{18:[2,16],22:[2,16]},{21:[1,26]},{14:[2,18],18:[2,18],22:[2,18],24:[2,18]},{22:[1,28],24:[1,27]},{22:[2,20],24:[2,20]},{14:[2,14],18:[2,14],22:[2,14],24:[2,14]},{3:20,4:[1,12],20:29},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:30,15:7,16:8,17:[1,14],23:[1,15]},{14:[2,19],18:[2,19],22:[2,19],24:[2,19]},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:31,15:7,16:8,17:[1,14],23:[1,15]},{18:[2,17],22:[2,17]},{18:[2,15],22:[2,15]},{22:[2,21],24:[2,21]}],
 | 
			
		||||
defaultActions: {16:[2,6]},
 | 
			
		||||
parseError: function parseError(str, hash) {
 | 
			
		||||
    throw new Error(str);
 | 
			
		||||
},
 | 
			
		||||
parse: function parse(input) {
 | 
			
		||||
    var self = this,
 | 
			
		||||
        stack = [0],
 | 
			
		||||
        vstack = [null], // semantic value stack
 | 
			
		||||
        lstack = [], // location stack
 | 
			
		||||
        table = this.table,
 | 
			
		||||
        yytext = '',
 | 
			
		||||
        yylineno = 0,
 | 
			
		||||
        yyleng = 0,
 | 
			
		||||
        recovering = 0,
 | 
			
		||||
        TERROR = 2,
 | 
			
		||||
        EOF = 1;
 | 
			
		||||
 | 
			
		||||
    //this.reductionCount = this.shiftCount = 0;
 | 
			
		||||
 | 
			
		||||
    this.lexer.setInput(input);
 | 
			
		||||
    this.lexer.yy = this.yy;
 | 
			
		||||
    this.yy.lexer = this.lexer;
 | 
			
		||||
    if (typeof this.lexer.yylloc == 'undefined')
 | 
			
		||||
        this.lexer.yylloc = {};
 | 
			
		||||
    var yyloc = this.lexer.yylloc;
 | 
			
		||||
    lstack.push(yyloc);
 | 
			
		||||
 | 
			
		||||
    if (typeof this.yy.parseError === 'function')
 | 
			
		||||
        this.parseError = this.yy.parseError;
 | 
			
		||||
 | 
			
		||||
    function popStack (n) {
 | 
			
		||||
        stack.length = stack.length - 2*n;
 | 
			
		||||
        vstack.length = vstack.length - n;
 | 
			
		||||
        lstack.length = lstack.length - n;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    function lex() {
 | 
			
		||||
        var token;
 | 
			
		||||
        token = self.lexer.lex() || 1; // $end = 1
 | 
			
		||||
        // if token isn't its numeric value, convert
 | 
			
		||||
        if (typeof token !== 'number') {
 | 
			
		||||
            token = self.symbols_[token] || token;
 | 
			
		||||
        }
 | 
			
		||||
        return token;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    var symbol, preErrorSymbol, state, action, a, r, yyval={},p,len,newState, expected;
 | 
			
		||||
    while (true) {
 | 
			
		||||
        // retreive state number from top of stack
 | 
			
		||||
        state = stack[stack.length-1];
 | 
			
		||||
 | 
			
		||||
        // use default actions if available
 | 
			
		||||
        if (this.defaultActions[state]) {
 | 
			
		||||
            action = this.defaultActions[state];
 | 
			
		||||
        } else {
 | 
			
		||||
            if (symbol == null)
 | 
			
		||||
                symbol = lex();
 | 
			
		||||
            // read action for current state and first input
 | 
			
		||||
            action = table[state] && table[state][symbol];
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // handle parse error
 | 
			
		||||
        _handle_error:
 | 
			
		||||
        if (typeof action === 'undefined' || !action.length || !action[0]) {
 | 
			
		||||
 | 
			
		||||
            if (!recovering) {
 | 
			
		||||
                // Report error
 | 
			
		||||
                expected = [];
 | 
			
		||||
                for (p in table[state]) if (this.terminals_[p] && p > 2) {
 | 
			
		||||
                    expected.push("'"+this.terminals_[p]+"'");
 | 
			
		||||
                }
 | 
			
		||||
                var errStr = '';
 | 
			
		||||
                if (this.lexer.showPosition) {
 | 
			
		||||
                    errStr = 'Parse error on line '+(yylineno+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+expected.join(', ') + ", got '" + this.terminals_[symbol]+ "'";
 | 
			
		||||
                } else {
 | 
			
		||||
                    errStr = 'Parse error on line '+(yylineno+1)+": Unexpected " +
 | 
			
		||||
                                  (symbol == 1 /*EOF*/ ? "end of input" :
 | 
			
		||||
                                              ("'"+(this.terminals_[symbol] || symbol)+"'"));
 | 
			
		||||
                }
 | 
			
		||||
                this.parseError(errStr,
 | 
			
		||||
                    {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected});
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // just recovered from another error
 | 
			
		||||
            if (recovering == 3) {
 | 
			
		||||
                if (symbol == EOF) {
 | 
			
		||||
                    throw new Error(errStr || 'Parsing halted.');
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                // discard current lookahead and grab another
 | 
			
		||||
                yyleng = this.lexer.yyleng;
 | 
			
		||||
                yytext = this.lexer.yytext;
 | 
			
		||||
                yylineno = this.lexer.yylineno;
 | 
			
		||||
                yyloc = this.lexer.yylloc;
 | 
			
		||||
                symbol = lex();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // try to recover from error
 | 
			
		||||
            while (1) {
 | 
			
		||||
                // check for error recovery rule in this state
 | 
			
		||||
                if ((TERROR.toString()) in table[state]) {
 | 
			
		||||
                    break;
 | 
			
		||||
                }
 | 
			
		||||
                if (state == 0) {
 | 
			
		||||
                    throw new Error(errStr || 'Parsing halted.');
 | 
			
		||||
                }
 | 
			
		||||
                popStack(1);
 | 
			
		||||
                state = stack[stack.length-1];
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            preErrorSymbol = symbol; // save the lookahead token
 | 
			
		||||
            symbol = TERROR;         // insert generic error symbol as new lookahead
 | 
			
		||||
            state = stack[stack.length-1];
 | 
			
		||||
            action = table[state] && table[state][TERROR];
 | 
			
		||||
            recovering = 3; // allow 3 real symbols to be shifted before reporting a new error
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // this shouldn't happen, unless resolve defaults are off
 | 
			
		||||
        if (action[0] instanceof Array && action.length > 1) {
 | 
			
		||||
            throw new Error('Parse Error: multiple actions possible at state: '+state+', token: '+symbol);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        switch (action[0]) {
 | 
			
		||||
 | 
			
		||||
            case 1: // shift
 | 
			
		||||
                //this.shiftCount++;
 | 
			
		||||
 | 
			
		||||
                stack.push(symbol);
 | 
			
		||||
                vstack.push(this.lexer.yytext);
 | 
			
		||||
                lstack.push(this.lexer.yylloc);
 | 
			
		||||
                stack.push(action[1]); // push state
 | 
			
		||||
                symbol = null;
 | 
			
		||||
                if (!preErrorSymbol) { // normal execution/no error
 | 
			
		||||
                    yyleng = this.lexer.yyleng;
 | 
			
		||||
                    yytext = this.lexer.yytext;
 | 
			
		||||
                    yylineno = this.lexer.yylineno;
 | 
			
		||||
                    yyloc = this.lexer.yylloc;
 | 
			
		||||
                    if (recovering > 0)
 | 
			
		||||
                        recovering--;
 | 
			
		||||
                } else { // error just occurred, resume old lookahead f/ before error
 | 
			
		||||
                    symbol = preErrorSymbol;
 | 
			
		||||
                    preErrorSymbol = null;
 | 
			
		||||
                }
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 2: // reduce
 | 
			
		||||
                //this.reductionCount++;
 | 
			
		||||
 | 
			
		||||
                len = this.productions_[action[1]][1];
 | 
			
		||||
 | 
			
		||||
                // perform semantic action
 | 
			
		||||
                yyval.$ = vstack[vstack.length-len]; // default to $$ = $1
 | 
			
		||||
                // default location, uses first token for firsts, last for lasts
 | 
			
		||||
                yyval._$ = {
 | 
			
		||||
                    first_line: lstack[lstack.length-(len||1)].first_line,
 | 
			
		||||
                    last_line: lstack[lstack.length-1].last_line,
 | 
			
		||||
                    first_column: lstack[lstack.length-(len||1)].first_column,
 | 
			
		||||
                    last_column: lstack[lstack.length-1].last_column
 | 
			
		||||
                };
 | 
			
		||||
                r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);
 | 
			
		||||
 | 
			
		||||
                if (typeof r !== 'undefined') {
 | 
			
		||||
                    return r;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                // pop off stack
 | 
			
		||||
                if (len) {
 | 
			
		||||
                    stack = stack.slice(0,-1*len*2);
 | 
			
		||||
                    vstack = vstack.slice(0, -1*len);
 | 
			
		||||
                    lstack = lstack.slice(0, -1*len);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                stack.push(this.productions_[action[1]][0]);    // push nonterminal (reduce)
 | 
			
		||||
                vstack.push(yyval.$);
 | 
			
		||||
                lstack.push(yyval._$);
 | 
			
		||||
                // goto new state = table[STATE][NONTERMINAL]
 | 
			
		||||
                newState = table[stack[stack.length-2]][stack[stack.length-1]];
 | 
			
		||||
                stack.push(newState);
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 3: // accept
 | 
			
		||||
                return true;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return true;
 | 
			
		||||
}};
 | 
			
		||||
/* Jison generated lexer */
 | 
			
		||||
var lexer = (function(){
 | 
			
		||||
var lexer = ({EOF:1,
 | 
			
		||||
parseError:function parseError(str, hash) {
 | 
			
		||||
        if (this.yy.parseError) {
 | 
			
		||||
            this.yy.parseError(str, hash);
 | 
			
		||||
        } else {
 | 
			
		||||
            throw new Error(str);
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
setInput:function (input) {
 | 
			
		||||
        this._input = input;
 | 
			
		||||
        this._more = this._less = this.done = false;
 | 
			
		||||
        this.yylineno = this.yyleng = 0;
 | 
			
		||||
        this.yytext = this.matched = this.match = '';
 | 
			
		||||
        this.conditionStack = ['INITIAL'];
 | 
			
		||||
        this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0};
 | 
			
		||||
        return this;
 | 
			
		||||
    },
 | 
			
		||||
input:function () {
 | 
			
		||||
        var ch = this._input[0];
 | 
			
		||||
        this.yytext+=ch;
 | 
			
		||||
        this.yyleng++;
 | 
			
		||||
        this.match+=ch;
 | 
			
		||||
        this.matched+=ch;
 | 
			
		||||
        var lines = ch.match(/\n/);
 | 
			
		||||
        if (lines) this.yylineno++;
 | 
			
		||||
        this._input = this._input.slice(1);
 | 
			
		||||
        return ch;
 | 
			
		||||
    },
 | 
			
		||||
unput:function (ch) {
 | 
			
		||||
        this._input = ch + this._input;
 | 
			
		||||
        return this;
 | 
			
		||||
    },
 | 
			
		||||
more:function () {
 | 
			
		||||
        this._more = true;
 | 
			
		||||
        return this;
 | 
			
		||||
    },
 | 
			
		||||
less:function (n) {
 | 
			
		||||
        this._input = this.match.slice(n) + this._input;
 | 
			
		||||
    },
 | 
			
		||||
pastInput:function () {
 | 
			
		||||
        var past = this.matched.substr(0, this.matched.length - this.match.length);
 | 
			
		||||
        return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, "");
 | 
			
		||||
    },
 | 
			
		||||
upcomingInput:function () {
 | 
			
		||||
        var next = this.match;
 | 
			
		||||
        if (next.length < 20) {
 | 
			
		||||
            next += this._input.substr(0, 20-next.length);
 | 
			
		||||
        }
 | 
			
		||||
        return (next.substr(0,20)+(next.length > 20 ? '...':'')).replace(/\n/g, "");
 | 
			
		||||
    },
 | 
			
		||||
showPosition:function () {
 | 
			
		||||
        var pre = this.pastInput();
 | 
			
		||||
        var c = new Array(pre.length + 1).join("-");
 | 
			
		||||
        return pre + this.upcomingInput() + "\n" + c+"^";
 | 
			
		||||
    },
 | 
			
		||||
next:function () {
 | 
			
		||||
        if (this.done) {
 | 
			
		||||
            return this.EOF;
 | 
			
		||||
        }
 | 
			
		||||
        if (!this._input) this.done = true;
 | 
			
		||||
 | 
			
		||||
        var token,
 | 
			
		||||
            match,
 | 
			
		||||
            tempMatch,
 | 
			
		||||
            index,
 | 
			
		||||
            col,
 | 
			
		||||
            lines;
 | 
			
		||||
        if (!this._more) {
 | 
			
		||||
            this.yytext = '';
 | 
			
		||||
            this.match = '';
 | 
			
		||||
        }
 | 
			
		||||
        var rules = this._currentRules();
 | 
			
		||||
        for (var i=0;i < rules.length; i++) {
 | 
			
		||||
            tempMatch = this._input.match(this.rules[rules[i]]);
 | 
			
		||||
            if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
 | 
			
		||||
                match = tempMatch;
 | 
			
		||||
                index = i;
 | 
			
		||||
                if (!this.options.flex) break;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        if (match) {
 | 
			
		||||
            lines = match[0].match(/\n.*/g);
 | 
			
		||||
            if (lines) this.yylineno += lines.length;
 | 
			
		||||
            this.yylloc = {first_line: this.yylloc.last_line,
 | 
			
		||||
                           last_line: this.yylineno+1,
 | 
			
		||||
                           first_column: this.yylloc.last_column,
 | 
			
		||||
                           last_column: lines ? lines[lines.length-1].length-1 : this.yylloc.last_column + match[0].length}
 | 
			
		||||
            this.yytext += match[0];
 | 
			
		||||
            this.match += match[0];
 | 
			
		||||
            this.yyleng = this.yytext.length;
 | 
			
		||||
            this._more = false;
 | 
			
		||||
            this._input = this._input.slice(match[0].length);
 | 
			
		||||
            this.matched += match[0];
 | 
			
		||||
            token = this.performAction.call(this, this.yy, this, rules[index],this.conditionStack[this.conditionStack.length-1]);
 | 
			
		||||
            if (this.done && this._input) this.done = false;
 | 
			
		||||
            if (token) return token;
 | 
			
		||||
            else return;
 | 
			
		||||
        }
 | 
			
		||||
        if (this._input === "") {
 | 
			
		||||
            return this.EOF;
 | 
			
		||||
        } else {
 | 
			
		||||
            this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\n'+this.showPosition(), 
 | 
			
		||||
                    {text: "", token: null, line: this.yylineno});
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
lex:function lex() {
 | 
			
		||||
        var r = this.next();
 | 
			
		||||
        if (typeof r !== 'undefined') {
 | 
			
		||||
            return r;
 | 
			
		||||
        } else {
 | 
			
		||||
            return this.lex();
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
begin:function begin(condition) {
 | 
			
		||||
        this.conditionStack.push(condition);
 | 
			
		||||
    },
 | 
			
		||||
popState:function popState() {
 | 
			
		||||
        return this.conditionStack.pop();
 | 
			
		||||
    },
 | 
			
		||||
_currentRules:function _currentRules() {
 | 
			
		||||
        return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules;
 | 
			
		||||
    },
 | 
			
		||||
topState:function () {
 | 
			
		||||
        return this.conditionStack[this.conditionStack.length-2];
 | 
			
		||||
    },
 | 
			
		||||
pushState:function begin(condition) {
 | 
			
		||||
        this.begin(condition);
 | 
			
		||||
    }});
 | 
			
		||||
lexer.options = {};
 | 
			
		||||
lexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {
 | 
			
		||||
 | 
			
		||||
var YYSTATE=YY_START
 | 
			
		||||
switch($avoiding_name_collisions) {
 | 
			
		||||
case 0:/* skip whitespace */
 | 
			
		||||
break;
 | 
			
		||||
case 1:return 6
 | 
			
		||||
break;
 | 
			
		||||
case 2:yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2); return 4
 | 
			
		||||
break;
 | 
			
		||||
case 3:return 17
 | 
			
		||||
break;
 | 
			
		||||
case 4:return 18
 | 
			
		||||
break;
 | 
			
		||||
case 5:return 23
 | 
			
		||||
break;
 | 
			
		||||
case 6:return 24
 | 
			
		||||
break;
 | 
			
		||||
case 7:return 22
 | 
			
		||||
break;
 | 
			
		||||
case 8:return 21
 | 
			
		||||
break;
 | 
			
		||||
case 9:return 10
 | 
			
		||||
break;
 | 
			
		||||
case 10:return 11
 | 
			
		||||
break;
 | 
			
		||||
case 11:return 8
 | 
			
		||||
break;
 | 
			
		||||
case 12:return 14
 | 
			
		||||
break;
 | 
			
		||||
case 13:return 'INVALID'
 | 
			
		||||
break;
 | 
			
		||||
}
 | 
			
		||||
};
 | 
			
		||||
lexer.rules = [/^(?:\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/,/^(?:"(?:\\[\\"bfnrt/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/,/^(?:\{)/,/^(?:\})/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?::)/,/^(?:true\b)/,/^(?:false\b)/,/^(?:null\b)/,/^(?:$)/,/^(?:.)/];
 | 
			
		||||
lexer.conditions = {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13],"inclusive":true}};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
;
 | 
			
		||||
return lexer;})()
 | 
			
		||||
parser.lexer = lexer;
 | 
			
		||||
return parser;
 | 
			
		||||
})();
 | 
			
		||||
if (typeof require !== 'undefined' && typeof exports !== 'undefined') {
 | 
			
		||||
exports.parser = jsonlint;
 | 
			
		||||
exports.parse = function () { return jsonlint.parse.apply(jsonlint, arguments); }
 | 
			
		||||
exports.main = function commonjsMain(args) {
 | 
			
		||||
    if (!args[1])
 | 
			
		||||
        throw new Error('Usage: '+args[0]+' FILE');
 | 
			
		||||
    if (typeof process !== 'undefined') {
 | 
			
		||||
        var source = require('fs').readFileSync(require('path').join(process.cwd(), args[1]), "utf8");
 | 
			
		||||
    } else {
 | 
			
		||||
        var cwd = require("file").path(require("file").cwd());
 | 
			
		||||
        var source = cwd.join(args[1]).read({charset: "utf-8"});
 | 
			
		||||
    }
 | 
			
		||||
    return exports.parser.parse(source);
 | 
			
		||||
}
 | 
			
		||||
if (typeof module !== 'undefined' && require.main === module) {
 | 
			
		||||
  exports.main(typeof process !== 'undefined' ? process.argv.slice(1) : require("system").args);
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										10
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								package.json
									
									
									
									
									
								
							@@ -12,15 +12,21 @@
 | 
			
		||||
  "keywords": [],
 | 
			
		||||
  "license": "MIT",
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "@redocly/portal": "^0.66.1",
 | 
			
		||||
    "@codemirror/state": "6.3.3",
 | 
			
		||||
    "@codemirror/view": "^6.22.2",
 | 
			
		||||
    "@lezer/highlight": "^1.2.0",
 | 
			
		||||
    "@redocly/portal": "0.67.1",
 | 
			
		||||
    "@uiw/react-codemirror": "^4.21.21",
 | 
			
		||||
    "@uiw/codemirror-themes": "4.21.21",
 | 
			
		||||
    "clsx": "^2.0.0",
 | 
			
		||||
    "lottie-react": "^2.4.0",
 | 
			
		||||
    "moment": "^2.29.4",
 | 
			
		||||
    "react": "^18.0.0",
 | 
			
		||||
    "react-alert": "^7.0.3",
 | 
			
		||||
    "xrpl": "^3.0.0-beta.1"
 | 
			
		||||
  },
 | 
			
		||||
  "overrides": {
 | 
			
		||||
    "react": "^17.0.2"
 | 
			
		||||
    "react": "^18.0.0"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "htmltojsx": "^0.3.0",
 | 
			
		||||
 
 | 
			
		||||
@@ -236,327 +236,12 @@ pre {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// CodeMirror (editable code blocks) -------------------------------------------
 | 
			
		||||
 | 
			
		||||
.CodeMirror {
 | 
			
		||||
  font-family: $font-family-monospace;
 | 
			
		||||
  height: 300px;
 | 
			
		||||
  background-color: $code-bg;
 | 
			
		||||
  margin: 16px 0;
 | 
			
		||||
  border-radius: 4px;
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror-scroll {
 | 
			
		||||
  overflow: auto;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-lines {
 | 
			
		||||
  padding: 2rem 0; /* Vertical padding around content */
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror pre {
 | 
			
		||||
  padding: 0 2rem 0 1rem; /* Horizontal padding of content w/ room for 1rem gutter */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
 | 
			
		||||
  background-color: $black; /* The little square between H and V scrollbars */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* GUTTER */
 | 
			
		||||
 | 
			
		||||
.CodeMirror-gutters {
 | 
			
		||||
  background-color: $code-bg;
 | 
			
		||||
  white-space: nowrap;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* CURSOR */
 | 
			
		||||
 | 
			
		||||
.CodeMirror div.CodeMirror-cursor {
 | 
			
		||||
  border-left: 1px solid $white;
 | 
			
		||||
  z-index: 3;
 | 
			
		||||
}
 | 
			
		||||
/* Shown when moving in bi-directional text */
 | 
			
		||||
.CodeMirror div.CodeMirror-secondarycursor {
 | 
			
		||||
  border-left: 1px solid $gray-500;
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror.cm-keymap-fat-cursor div.CodeMirror-cursor {
 | 
			
		||||
  width: auto;
 | 
			
		||||
  border: 0;
 | 
			
		||||
  background: $gray-500;
 | 
			
		||||
  z-index: 1;
 | 
			
		||||
}
 | 
			
		||||
/* Can style cursor different in overwrite (non-insert) mode */
 | 
			
		||||
.CodeMirror div.CodeMirror-cursor.CodeMirror-overwrite {}
 | 
			
		||||
 | 
			
		||||
.cm-tab { display: inline-block; }
 | 
			
		||||
 | 
			
		||||
/* DEFAULT THEME - modified for XRPL.org */
 | 
			
		||||
 | 
			
		||||
.cm-s-default .cm-keyword {color: $orange-500;}
 | 
			
		||||
.cm-s-default .cm-atom {color: $orange-500;}
 | 
			
		||||
.cm-s-default .cm-number {color: $blue-500;}
 | 
			
		||||
.cm-s-default .cm-def {color: $blue-500;}
 | 
			
		||||
.cm-s-default .cm-variable {color: $white;}
 | 
			
		||||
.cm-s-default .cm-variable-2 {color: $white;}
 | 
			
		||||
.cm-s-default .cm-variable-3 {color: $white;}
 | 
			
		||||
.cm-s-default .cm-property {color: $white;}
 | 
			
		||||
.cm-s-default .cm-operator {color: $white;}
 | 
			
		||||
.cm-s-default .cm-comment {color: $gray-500;}
 | 
			
		||||
.cm-s-default .cm-string {color: $green-700;}
 | 
			
		||||
.cm-s-default .cm-string-2 {color: $green-700;}
 | 
			
		||||
.cm-s-default .cm-meta {color: $gray-500;}
 | 
			
		||||
.cm-s-default .cm-qualifier {color: $gray-500;}
 | 
			
		||||
.cm-s-default .cm-builtin {color: $green-700;}
 | 
			
		||||
.cm-s-default .cm-bracket {color: $white;}
 | 
			
		||||
.cm-s-default .cm-tag {color: $white;}
 | 
			
		||||
.cm-s-default .cm-attribute {color: $white;}
 | 
			
		||||
.cm-s-default .cm-header {color: $blue-500;}
 | 
			
		||||
.cm-s-default .cm-quote {color: $green-700;}
 | 
			
		||||
.cm-s-default .cm-hr {color: $gray-500;}
 | 
			
		||||
.cm-s-default .cm-link {color: $blue-200;}
 | 
			
		||||
 | 
			
		||||
.cm-negative {color: $white;}
 | 
			
		||||
.cm-positive {color: $white;}
 | 
			
		||||
.cm-header, .cm-strong {font-weight: bold;}
 | 
			
		||||
.cm-em {font-style: italic;}
 | 
			
		||||
.cm-link {text-decoration: underline;}
 | 
			
		||||
 | 
			
		||||
.cm-s-default .cm-error {color: $danger;}
 | 
			
		||||
.cm-invalidchar {color: $danger;}
 | 
			
		||||
 | 
			
		||||
div.CodeMirror span.CodeMirror-matchingbracket {color: $blue-purple-500;}
 | 
			
		||||
div.CodeMirror span.CodeMirror-nonmatchingbracket {color: $warning;}
 | 
			
		||||
.CodeMirror-activeline-background {background: $gray-800;}
 | 
			
		||||
 | 
			
		||||
/* STOP */
 | 
			
		||||
 | 
			
		||||
/* The rest of this file contains styles related to the mechanics of
 | 
			
		||||
   the editor. You probably shouldn't touch them. */
 | 
			
		||||
 | 
			
		||||
.CodeMirror {
 | 
			
		||||
  line-height: 1;
 | 
			
		||||
  position: relative;
 | 
			
		||||
  overflow: hidden;
 | 
			
		||||
  background: $code-bg;
 | 
			
		||||
  color: $white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-scroll {
 | 
			
		||||
  /* 30px is the magic margin used to hide the element's real scrollbars */
 | 
			
		||||
  /* See overflow: hidden in .CodeMirror */
 | 
			
		||||
  margin-bottom: -30px; margin-right: -30px;
 | 
			
		||||
  padding-bottom: 30px; padding-right: 30px;
 | 
			
		||||
  height: 100%;
 | 
			
		||||
  outline: none; /* Prevent dragging from highlighting the element */
 | 
			
		||||
  position: relative;
 | 
			
		||||
  -moz-box-sizing: content-box;
 | 
			
		||||
  box-sizing: content-box;
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror-sizer {
 | 
			
		||||
  position: relative;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* The fake, visible scrollbars. Used to force redraw during scrolling
 | 
			
		||||
   before actuall scrolling happens, thus preventing shaking and
 | 
			
		||||
   flickering artifacts. */
 | 
			
		||||
.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  z-index: 6;
 | 
			
		||||
  display: none;
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror-vscrollbar {
 | 
			
		||||
  right: 0; top: 0;
 | 
			
		||||
  overflow-x: hidden;
 | 
			
		||||
  overflow-y: scroll;
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror-hscrollbar {
 | 
			
		||||
  bottom: 0; left: 0;
 | 
			
		||||
  overflow-y: hidden;
 | 
			
		||||
  overflow-x: scroll;
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror-scrollbar-filler {
 | 
			
		||||
  right: 0; bottom: 0;
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror-gutter-filler {
 | 
			
		||||
  left: 0; bottom: 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-gutters {
 | 
			
		||||
  position: absolute; left: 0; top: 0;
 | 
			
		||||
  padding-bottom: 30px;
 | 
			
		||||
  z-index: 3;
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror-gutter {
 | 
			
		||||
  white-space: normal;
 | 
			
		||||
  height: 100%;
 | 
			
		||||
  -moz-box-sizing: content-box;
 | 
			
		||||
  box-sizing: content-box;
 | 
			
		||||
  padding-bottom: 30px;
 | 
			
		||||
  margin-bottom: -32px;
 | 
			
		||||
  display: inline-block;
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror-gutter-elt {
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  cursor: default;
 | 
			
		||||
  z-index: 4;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-lines {
 | 
			
		||||
  cursor: text;
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror pre {
 | 
			
		||||
  /* Reset some styles that the rest of the page might have set */
 | 
			
		||||
  -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0;
 | 
			
		||||
  border-width: 0;
 | 
			
		||||
  background: transparent;
 | 
			
		||||
  font-family: inherit;
 | 
			
		||||
  font-size: inherit;
 | 
			
		||||
  margin: 0;
 | 
			
		||||
  white-space: pre;
 | 
			
		||||
  word-wrap: normal;
 | 
			
		||||
  line-height: inherit;
 | 
			
		||||
  color: inherit;
 | 
			
		||||
  z-index: 2;
 | 
			
		||||
  position: relative;
 | 
			
		||||
  overflow: visible;
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror-wrap pre {
 | 
			
		||||
  word-wrap: break-word;
 | 
			
		||||
  white-space: pre-wrap;
 | 
			
		||||
  word-break: normal;
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror-code pre {
 | 
			
		||||
  border-right: 30px solid transparent;
 | 
			
		||||
  width: -webkit-fit-content;
 | 
			
		||||
  width: -moz-fit-content;
 | 
			
		||||
  width: fit-content;
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror-wrap .CodeMirror-code pre {
 | 
			
		||||
  border-right: none;
 | 
			
		||||
  width: auto;
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror-linebackground {
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  left: 0; right: 0; top: 0; bottom: 0;
 | 
			
		||||
  z-index: 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-linewidget {
 | 
			
		||||
  position: relative;
 | 
			
		||||
  z-index: 2;
 | 
			
		||||
  overflow: auto;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-widget {}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-wrap .CodeMirror-scroll {
 | 
			
		||||
  overflow-x: hidden;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-measure {
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  width: 100%;
 | 
			
		||||
  height: 0;
 | 
			
		||||
  overflow: hidden;
 | 
			
		||||
  visibility: hidden;
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror-measure pre { position: static; }
 | 
			
		||||
 | 
			
		||||
.CodeMirror div.CodeMirror-cursor {
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  visibility: hidden;
 | 
			
		||||
  border-right: none;
 | 
			
		||||
  width: 0;
 | 
			
		||||
}
 | 
			
		||||
.CodeMirror-focused div.CodeMirror-cursor {
 | 
			
		||||
  visibility: visible;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-selected { background: #d9d9d9; }
 | 
			
		||||
.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; }
 | 
			
		||||
 | 
			
		||||
.cm-searching {
 | 
			
		||||
  background: #ffa;
 | 
			
		||||
  background: rgba(255, 255, 0, .4);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@media print {
 | 
			
		||||
  /* Hide the cursor when printing */
 | 
			
		||||
  .CodeMirror div.CodeMirror-cursor {
 | 
			
		||||
    visibility: hidden;
 | 
			
		||||
// Have to nest due to the order Redocly loads in the styles
 | 
			
		||||
#redocly_root {
 | 
			
		||||
  // folded code ellipsis
 | 
			
		||||
  .cm-foldPlaceholder {
 | 
			
		||||
    background-color: $code-bg;
 | 
			
		||||
    border: none;
 | 
			
		||||
    font-size: 18px;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* ADDON: lint.css ---------------------------------------------------------- */
 | 
			
		||||
 | 
			
		||||
/* The lint marker gutter */
 | 
			
		||||
.CodeMirror-lint-markers {
 | 
			
		||||
  width: 16px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-lint-tooltip {
 | 
			
		||||
  background-color: #ffd;
 | 
			
		||||
  border: 1px solid black;
 | 
			
		||||
  border-radius: 4px 4px 4px 4px;
 | 
			
		||||
  color: black;
 | 
			
		||||
  font-family: monospace;
 | 
			
		||||
  font-size: 10pt;
 | 
			
		||||
  overflow: hidden;
 | 
			
		||||
  padding: 2px 5px;
 | 
			
		||||
  position: fixed;
 | 
			
		||||
  white-space: pre;
 | 
			
		||||
  white-space: pre-wrap;
 | 
			
		||||
  z-index: 100;
 | 
			
		||||
  max-width: 600px;
 | 
			
		||||
  opacity: 0;
 | 
			
		||||
  transition: opacity .4s;
 | 
			
		||||
  -moz-transition: opacity .4s;
 | 
			
		||||
  -webkit-transition: opacity .4s;
 | 
			
		||||
  -o-transition: opacity .4s;
 | 
			
		||||
  -ms-transition: opacity .4s;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-lint-mark-error, .CodeMirror-lint-mark-warning {
 | 
			
		||||
  background-position: left bottom;
 | 
			
		||||
  background-repeat: repeat-x;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-lint-mark-error {
 | 
			
		||||
  background-image:
 | 
			
		||||
  url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJDw4cOCW1/KIAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAHElEQVQI12NggIL/DAz/GdA5/xkY/qPKMDAwAADLZwf5rvm+LQAAAABJRU5ErkJggg==")
 | 
			
		||||
  ;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-lint-mark-warning {
 | 
			
		||||
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJFhQXEbhTg7YAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAMklEQVQI12NkgIIvJ3QXMjAwdDN+OaEbysDA4MPAwNDNwMCwiOHLCd1zX07o6kBVGQEAKBANtobskNMAAAAASUVORK5CYII=");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-lint-marker-error, .CodeMirror-lint-marker-warning {
 | 
			
		||||
  background-position: center center;
 | 
			
		||||
  background-repeat: no-repeat;
 | 
			
		||||
  cursor: pointer;
 | 
			
		||||
  display: inline-block;
 | 
			
		||||
  height: 16px;
 | 
			
		||||
  width: 16px;
 | 
			
		||||
  vertical-align: middle;
 | 
			
		||||
  position: relative;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-lint-message-error, .CodeMirror-lint-message-warning {
 | 
			
		||||
  padding-left: 18px;
 | 
			
		||||
  background-position: top left;
 | 
			
		||||
  background-repeat: no-repeat;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-lint-marker-error, .CodeMirror-lint-message-error {
 | 
			
		||||
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAHlBMVEW7AAC7AACxAAC7AAC7AAAAAAC4AAC5AAD///+7AAAUdclpAAAABnRSTlMXnORSiwCK0ZKSAAAATUlEQVR42mWPOQ7AQAgDuQLx/z8csYRmPRIFIwRGnosRrpamvkKi0FTIiMASR3hhKW+hAN6/tIWhu9PDWiTGNEkTtIOucA5Oyr9ckPgAWm0GPBog6v4AAAAASUVORK5CYII=");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-lint-marker-warning, .CodeMirror-lint-message-warning {
 | 
			
		||||
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAANlBMVEX/uwDvrwD/uwD/uwD/uwD/uwD/uwD/uwD/uwD6twD/uwAAAADurwD2tQD7uAD+ugAAAAD/uwDhmeTRAAAADHRSTlMJ8mN1EYcbmiixgACm7WbuAAAAVklEQVR42n3PUQqAIBBFUU1LLc3u/jdbOJoW1P08DA9Gba8+YWJ6gNJoNYIBzAA2chBth5kLmG9YUoG0NHAUwFXwO9LuBQL1giCQb8gC9Oro2vp5rncCIY8L8uEx5ZkAAAAASUVORK5CYII=");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.CodeMirror-lint-marker-multiple {
 | 
			
		||||
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAMAAADzjKfhAAAACVBMVEUAAAAAAAC/v7914kyHAAAAAXRSTlMAQObYZgAAACNJREFUeNo1ioEJAAAIwmz/H90iFFSGJgFMe3gaLZ0od+9/AQZ0ADosbYraAAAAAElFTkSuQmCC");
 | 
			
		||||
  background-repeat: no-repeat;
 | 
			
		||||
  background-position: right bottom;
 | 
			
		||||
  width: 100%; height: 100%;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "compilerOptions": {
 | 
			
		||||
    "baseUrl": ".",
 | 
			
		||||
    "jsx": "react",
 | 
			
		||||
    "jsx": "react-jsx",
 | 
			
		||||
    "resolveJsonModule": true,
 | 
			
		||||
    "paths": {
 | 
			
		||||
      "@theme/*": [
 | 
			
		||||
@@ -13,4 +13,4 @@
 | 
			
		||||
      ]
 | 
			
		||||
    },
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user