{"version":3,"sources":["assets/codemirror/toit.js","assets/theme.ts","components/ErrorPage.tsx","components/header/SearchBar.tsx","components/header/SearchResults.tsx","components/header/SearchView.tsx","containers/header/Search.ts","components/header/HeaderBar.tsx","components/main/WelcomeFolderPage.tsx","misc/util.ts","model/model.ts","components/general/CodeBlock.tsx","components/general/ExternalLink.tsx","components/doc/Toitdocs.tsx","components/main/SummaryView.tsx","containers/main/Summary.ts","components/main/WelcomePage.tsx","components/navigation/LibraryNavigation.tsx","components/navigation/NavigationView.tsx","components/ThemeProvider.tsx","components/general/DetailsList.tsx","components/doc/Type.tsx","components/doc/Fields.tsx","components/doc/Functions.tsx","components/general/TablePanel.tsx","components/main/ClassOverview.tsx","components/main/ClassInfoView.tsx","containers/main/ClassInfo.ts","components/doc/Classes.tsx","components/doc/Globals.tsx","components/main/LibraryInfoView.tsx","containers/main/LibraryInfo.ts","generator/convert.ts","generator/doc.ts","model/search.ts","redux/doc.ts","App.tsx","serviceWorker.ts","index.tsx","assets/images/logo.svg"],"names":["mod","CodeMirror","defineMode","config","last","array","length","subState","state","setSubState","makeJsObject","str","result","split","i","keywords","atoms","specialVars","IDENTIFIER","TYPE","OVERRIDABLE_OPERATOR","CONSTANT_HEURISTIC","TYPE_HEURISTIC","CONTROL","isKeyword","propertyIsEnumerable","isAtom","isSpecialVar","isReserved","tryComments","stream","match","skipToEnd","tokenizeMultilineComment","context","push","tokenizeMultilineCommentEnd","pop","next","tryString","tokenizeMultilineString","tokenizeSinglelineString","tokenizeDelimited","closing","expression_result","tryExpression","peek","tryDelimited","style","current","tokenizeIs","tokenizeIsAs","tokenizeType","tokenizeEscape","identifier_result","tryIdentifier","eatWhile","escape_result","eol","tryChar","tryNumber","localAnnotation","sub","allowPrefixedDot","backUp","id","allowNullable","tokenizeType2","indexOfDot","indexOf","tokenizeImport","comment_result","importError","tokenizeExport","tokenizeClassError","tokenizeClass","signatureError","nextSubState","tokenizeMemberDeclaration","MEMBER_DECLARATION_START","tokenizeFunctionBody","tokenizeFunctionSignature","currentSubState","matched_result","DEFAULT_VALUE_AFTER_IDENTIFIER","tokenizeDefaultValueContinuation","error","kind","lastIndentation","tryDefaultValue","isNamed","isSetting","prefix","name","slice","tryNamedArgument","tryOperator","tryIsAs","tryPostfixMemberOrIdentifier","tryPrimitive","tryControl","tokenizeTopLevel","tryImport","tryExport","tryClass","startOfLine","indentation","tryImpliedTopLevelFunction","tryToplevelDeclaration","tokenizeError","startState","basecolumn","readNonWhitespace","atColonIndentation","token","sol","eatSpace","tokenizer","indent","textAfter","Pass","closeBrackets","triples","lineComment","blockCommentStart","blockCommentEnd","fold","defineMIME","window","navigator","then","require","layout","sidebarWidth","headerHeight","footerHeight","theme","createMuiTheme","palette","type","background","paper","default","text","primary","main","secondary","typography","fontFamily","body1","body2","fontSize","h1","h2","h3","h4","h5","h6","sideBarTheme","ErrorBoundary","hasError","info","this","setState","console","log","Grid","item","className","props","classes","grid","to","children","React","Component","withStyles","createStyles","margin","spacing","useStyles","makeStyles","search","padding","display","alignItems","flex","input","marginLeft","clearIcon","marginRight","cursor","memo","Box","border","borderLeft","borderTop","borderRight","InputBase","placeholder","inputProps","onChange","event","onSearch","target","value","searchBy","onClick","onFocus","root","position","width","SEARCH_RESULTS_WIDTH","maxHeight","overflow","marginTop","SEARCH_BAR_WIDTH","listItem","flexDirection","color","emphText","dark","SearchResults","results","map","index","ResultItem","key","hideResults","Paper","square","List","from","ref","path","join","libraryRef","parameters","classRef","ListItem","button","component","href","url","Typography","variant","delayTimer","styles","searchBar","SearchView","libraries","interfaces","mixins","functions","methods","searchString","clearTimeout","setTimeout","model","m","inter","mixin","c","f","onClickAway","searchIn","Fuse","keys","threshold","distance","ClickAwayListener","connect","doc","searchableModel","StyledAppBar","styled","AppBar","HeaderBar","elevation","Toolbar","WelcomeFolderPage","header","section","PureComponent","paddingBottom","libraryFrom","libraryName","rootLibraries","library","undefined","libraryFromRef","methodFromRef","klass","offset","Object","values","exportedClasses","exportedInterfaces","exportedMixins","classFromRef","statics","getFunctionId","functionName","shape","shapeString","arity","totalBlockCount","namedBlockCount","names","encodeURIComponent","libraryUrl","baseUrl","classUrl","memberUrl","globalUrl","classUrlFromRef","libraryUrlFromRef","functionUrlFromRef","fhunction","exportedFunctions","functionFromRef","methodUrlFromRef","method","Wrapper","div","CodeBlock","code","replace","options","mode","readOnly","tabSize","ExternalLink","aria-hidden","statementParagraph","sectionTitle","paddingTop","otherDocRef","fontWeight","parameterDocRef","StatementCodeSection","ExpressionCode","ExpressionText","ExpressionLink","link","rel","StatementItemized","itemized","items","statements","statement","Statement","StatementParagraph","isHeader","expressions","expr","Expression","expression","ToitdocRef","holder","urlFromLinkRef","reference","Error","Section","level","title","Toitdocs","headerOnly","toitdoc","headerToitdoc","SummaryView","fundamentals","justThere","misc","forEach","lib","category","renderSection","libList","libEntry","WelcomePage","Summary","packages","subLibraries","paddingLeft","openLibrary","LibraryNavigation","showSubLibraries","openSubLibrary","sort","a","b","localeCompare","subLibrary","Title","NavigationView","location","useSelector","alt","src","logo","height","params","ThemeProvider","details","element","divider","marginBottom","Signature","SignatureName","span","DetailsList","elements","concat","hash","description","isInherited","toitdocHeaderOnly","Divider","TypeView","isNone","isAny","isBlock","TypeReference","Fields","fields","field","defaultValue","getDescription","returnType","hideReturnTypes","includeDefaultValues","parameter","param","isRequired","Functions","fn","TablePanelGen","other","role","hidden","aria-labelledby","TablePanel","tabFieldData","active","tab","TableContainer","Table","size","aria-label","ariaLabel","methodsTable","TableBody","TableRow","TableCell","scope","tabData","a11yProps","ClassOverviewView","constructors","Tabs","textColor","indicatorColor","Tab","label","hiddenTab","minWidth","ClassInfoView","hashId","substring","document","getElementById","scrollIntoView","classInfo","classFrom","notFound","extends","ClassOverview","Classes","Globals","globals","global","LibraryInfoView","libName","importPath","isCoreExported","noImport","isCore","showImportHelp","viewMode","ViewMode","SDK","startsWith","exec","Package","Folder","heading","importingText","exportedGlobals","sdkPath","packagesPath","packageNames","endsWith","urlAndPathFrom","containsSdk","isSdkPath","containsPkgs","isPackagePath","urlPath","srcIndex","versionNumber","packageId","packageName","nestedPath","unshift","PACKAGES_URL","buildPackageUrlAndPath","len","shapeFrom","toitShape","total_block_count","named_block_count","linkRefKindFrom","toitDocRefKind","linkRefFrom","toitDocRef","docStatementFrom","toitStatement","object_type","toitExpression","docExpressionFrom","toitItem","s","docFrom","toitDoc","toitSection","docSectionFrom","referenceFrom","toitReference","typeFrom","toitType","is_none","is_any","is_block","parameterFrom","toitParameter","is_named","is_required","default_value","methodFrom","toitMethod","return_type","is_inherited","classKindFrom","toitClass","classId","extend","structure","toitField","fieldFrom","factories","constructor","statik","globalFrom","toitGlobal","functionFrom","toitFunction","categoryFrom","libraryFromModule","toitModule","libraryId","export_classes","export_interfaces","export_mixins","export_globals","export_functions","libraryFromLibrary","toitLibrary","libraryPath","librariesFromLibraries","libraryContent","modules","module","subLibraryName","libLibrary","otherLibrary","JSON","stringify","mergeLibraries","toitLibraries","parametersString","typeString","flattenMethod","flattenLibrary","flattenInterface","flattenMixin","flattenClass","flattenFunction","fetchDoc","createAsyncThunk","docPath","process","getMetaValue","fetch","response","json","initialState","sdkVersion","version","createSlice","reducers","extraReducers","builder","addCase","pending","action","fulfilled","payload","sdk_version","sdk_path","packages_path","package_names","contains_pkgs","contains_sdk","pkgName","pkg_name","setViewMode","flatten","rejected","message","body","boxSizing","textDecoration","appContainer","ContentWrapper","Content","Footer","footer","StyledCircularProgress","CircularProgress","def","obj","querySelector","getAttribute","baseURL","getBaseURL","newMode","App","basename","AppContent","FixedNavigationView","pathname","useLocation","useEffect","scrollTo","defaultURL","exact","render","routeProps","LibraryInfo","ClassInfo","disableShrink","dispatch","Boolean","hostname","rootReducer","combineReducers","reducer","store","createStore","applyMiddleware","thunkMiddleware","serviceWorker","ready","registration","unregister","exports"],"mappings":"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","file":"static/js/main.361cf844.chunk.js","sourcesContent":["/* eslint-disable */\n// Code copied from toitware/ide-tools. DO NOT EDIT.\n\n// Copyright (C) 2021 Toitware ApS. All rights reserved.\n// Use of this source code is governed by an MIT-style license that can be\n// found in the LICENSE file.\n\n(function (mod) {\n if (typeof CodeMirror !== \"undefined\") // Just use the variable if it already exits.\n mod(CodeMirror);\n if (typeof window === \"undefined\" || typeof window.navigator == 'undefined')\n import(\"codemirror\").then(mod);\n else if ( typeof module == \"object\" && module.hot)\n import(\"codemirror\").then(mod);\n else if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function (CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineMode(\"toit\", function (config) {\n function last(array) {\n return array[array.length - 1];\n }\n function set_last(array, val) {\n array[array.length - 1] = val;\n }\n\n function subState(state) {\n return last(state.subState);\n }\n function setSubState(state, subState) {\n state.subState[state.subState.length - 1] = subState;\n }\n\n function makeJsObject(str) {\n var result = {};\n var split = str.split(\"|\");\n for (var i = 0; i < split.length; i++) result[split[i]] = true;\n return result;\n }\n var keywords = makeJsObject(\n \"assert|and|or|not|if|for|else|try|finally|\" +\n \"while|break|continue|throw|static|abstract|return|unreachable\");\n var atoms = makeJsObject(\"true|false|null\");\n var specialVars = makeJsObject(\"this|super|it\");\n\n var IDENTIFIER = /[a-zA-Z_]([\\w-]*\\w)?/;\n var TYPE = /[a-zA-Z_]([\\w-]*\\w)?(\\.[a-zA-Z_]([\\w-]*\\w)?)?/;\n var OVERRIDABLE_OPERATOR = /==|>=|<=|<<|>>>|>>|\\*|\\+|-|%|\\/|<|>|&|\\||\\^|~|\\[\\]\\=|\\[\\]|\\[\\.\\.\\]/\n\n var CONSTANT_HEURISTIC = /^_?[A-Z][A-Z_0-9-]*$/;\n var TYPE_HEURISTIC = /^_?[A-Z][\\w-]*[a-z][\\w-]*$/;\n var CONTROL = /[?:;]/;\n\n function isKeyword(str) {\n return keywords.propertyIsEnumerable(str);\n }\n function isAtom(str) {\n return atoms.propertyIsEnumerable(str);\n }\n function isSpecialVar(str) {\n return specialVars.propertyIsEnumerable(str);\n }\n function isReserved(str) {\n return isKeyword(str) || isAtom(str) || isSpecialVar(str);\n }\n\n function tryComments(stream, state) {\n // TODO: once code-mirror supports doc-comments, adjust.\n if (stream.match(\"//\")) {\n stream.skipToEnd();\n return \"comment\";\n }\n if (stream.match(\"/*\")) {\n return tokenizeMultilineComment(stream, state);\n }\n return null;\n }\n\n function tokenizeMultilineComment(stream, state) {\n state.context.push([tokenizeMultilineCommentEnd, -1]);\n state.subState.push(null);\n return tokenizeMultilineCommentEnd(stream, state);\n }\n\n function tokenizeMultilineCommentEnd(stream, state) {\n while (true) {\n if (stream.match(\"/*\")) {\n return tokenizeMultilineComment(stream, state);\n }\n if (stream.match(\"*/\")) {\n state.context.pop();\n state.subState.pop();\n return \"comment\";\n }\n if (!stream.next()) {\n // End of line.\n return \"comment\";\n }\n }\n }\n\n var STRING_PART = 0;\n var STRING_ESCAPE_DOLLAR = 1;\n var STRING_ESCAPE_EXPRESSION = 2;\n var STRING_ESCAPE_AFTER_PAREN = 3;\n var STRING_ESCAPE_AFTER_IDENTIFIER = 4;\n var STRING_ESCAPE_AFTER_FORMAT = 5;\n function tryString(stream, state) {\n if (stream.match('\"')) {\n if (stream.match('\"\"')) {\n // Multiline string.\n state.context.push([tokenizeMultilineString, -1]);\n state.subState.push(STRING_PART);\n return tokenizeMultilineString(stream, state);\n }\n state.context.push([tokenizeSinglelineString, 9999]);\n state.subState.push(STRING_PART);\n return tokenizeSinglelineString(stream, state);\n }\n return null;\n }\n\n function tokenizeDelimited(stream, state) {\n var closing = subState(state);\n var expression_result = tryExpression(stream, state);\n if (expression_result) return expression_result;\n while (true) {\n var peek = stream.peek();\n if (!peek || peek == ' ') return \"enclosed\";\n if (closing == \"]\" && stream.match(\"..\")) {\n // We assume it's the slice operator.\n return \"op_slice\";\n }\n var next = stream.next();\n if (next == closing) {\n state.context.pop();\n state.subState.pop();\n switch (closing) {\n case \")\": return \"paren\";\n case \"}\": return \"brace\";\n case \"]\": return \"bracket\";\n }\n return \"error\";\n } else if (next == ',') {\n if (closing == \")\") return \"error\";\n return \"separator\";\n } else {\n return \"error\";\n }\n }\n }\n\n function tryDelimited(stream, state) {\n if (stream.match(/[({[]|#[[]/)) {\n state.context.push([tokenizeDelimited, -1]);\n // Abusing `subState` to store the delimiter.\n var closing;\n var style;\n switch (stream.current()) {\n case \"(\": closing = \")\"; style = \"paren\"; break;\n case \"{\": closing = \"}\"; style = \"brace\"; break;\n case \"[\": closing = \"]\"; style = \"bracket\"; break;\n case \"#[\": closing = \"]\"; style = \"bracket\"; break;\n }\n state.subState.push(closing);\n return style;\n }\n }\n\n function tryControl(stream, state) {\n if (stream.match(CONTROL)) {\n return \"control\";\n }\n }\n\n function tokenizeIs(stream, state) {\n state.context.pop();\n state.subState.pop();\n state.context.push([tokenizeIsAs, -1]);\n state.subState.push(null);\n if (stream.match(/not(?!-\\w)\\b/)) {\n return \"is_as\";\n } else {\n return tokenizeIsAs(stream, state)\n }\n }\n\n function tokenizeIsAs(stream, state) {\n state.context.pop();\n state.subState.pop();\n if (!stream.match(TYPE, false)) {\n return \"is_as_error\";\n }\n return tokenizeType(stream, state);\n }\n\n function tryIsAs(stream, state) {\n if (stream.match(/is(?!-\\w)\\b/)) {\n state.context.push([tokenizeIs, -1]);\n state.subState.push(null);\n return \"is_as\";\n }\n if (stream.match(/as(?!-\\w)\\b/)) {\n state.context.push([tokenizeIsAs, -1]);\n state.subState.push(null);\n return \"is_as\";\n }\n }\n\n function tokenizeEscape(stream, state) {\n switch (subState(state)) {\n case STRING_ESCAPE_DOLLAR:\n stream.next();\n var peek = stream.peek();\n if (!peek || (peek != \"(\" && !peek.match(/[a-zA-Z_]/))) {\n setSubState(state, STRING_PART);\n return \"missing_escape_expression\";\n }\n setSubState(state, STRING_ESCAPE_EXPRESSION);\n return \"string_dollar\";\n\n case STRING_ESCAPE_EXPRESSION:\n if (stream.match('(')) {\n setSubState(state, STRING_ESCAPE_AFTER_PAREN);\n return \"paren\";\n }\n // Use `tryIdentifier` to get special handling of identifiers.\n var identifier_result = tryIdentifier(stream, state);\n // TODO(florian): this is brittle, since we might want to return\n // different styles for different keywords.\n if (identifier_result == \"keyword\") {\n identifier_result = \"error\";\n }\n setSubState(state, STRING_ESCAPE_AFTER_IDENTIFIER);\n return identifier_result;\n\n case STRING_ESCAPE_AFTER_IDENTIFIER:\n if (stream.match(/\\.[a-zA-Z_]/, false)) {\n stream.next();\n // We can use `STRING_ESCAPE_DOLLAR` as we know that we will\n // hit an identifier.\n setSubState(state, STRING_ESCAPE_EXPRESSION);\n return \"dot\";\n }\n if (stream.match('[')) {\n stream.next();\n // Keeping the current substate, as we want to continue as if\n // we just finished parsing an identifier.\n state.context.push([tokenizeDelimited, -1]);\n // Abusing `subState` to store the delimiter.\n state.subState.push(\"]\");\n return \"bracket\";\n }\n setSubState(state, STRING_PART);\n return null;\n\n case STRING_ESCAPE_AFTER_PAREN:\n if (stream.peek() == '%') {\n stream.eatWhile(/[^ ]/);\n setSubState(state, STRING_ESCAPE_AFTER_FORMAT);\n return \"string_format\";\n }\n // Fall through:\n case STRING_ESCAPE_AFTER_FORMAT:\n setSubState(state, STRING_PART); // When we come back.\n state.context.push([tokenizeDelimited, -1]);\n // Abusing `subState` to store the delimiter.\n state.subState.push(\")\");\n return tokenizeDelimited(stream, state);\n\n default:\n throw \"INTERNAL ERROR\";\n }\n }\n\n function tokenizeSinglelineString(stream, state) {\n if (subState(state) != STRING_PART) {\n var escape_result = tokenizeEscape(stream, state);\n if (escape_result) return escape_result;\n // Otherwise continue as string part.\n }\n while (true) {\n stream.eatWhile(/[^\"$\\\\]/);\n if (stream.eol()) return \"unfinished_string\";\n // TODO: we could highlight escapes. (Especially \\x and \\u).\n if (stream.match(\"\\\\\")) {\n stream.next(); // Consume the escaped character.\n continue;\n }\n if (stream.peek() == '$') {\n setSubState(state, STRING_ESCAPE_DOLLAR);\n return \"singleline_string\";\n }\n stream.match('\"');\n state.context.pop();\n state.subState.pop();\n return \"singleline_string\";\n }\n }\n\n function tokenizeMultilineString(stream, state) {\n if (subState(state) != STRING_PART) {\n var escape_result = tokenizeEscape(stream, state);\n if (escape_result) return escape_result;\n // Otherwise continue as string part.\n }\n while (true) {\n stream.eatWhile(/[^\"$\\\\]/);\n if (stream.eol()) return \"multiline_string\";\n // TODO: we could highlight escapes. (Especially \\x and \\u).\n if (stream.match(\"\\\\\")) stream.next(); // Consume the escaped character.\n if (stream.peek() == '$') {\n setSubState(state, STRING_ESCAPE_DOLLAR);\n return \"multiline_string\";\n }\n stream.next();\n if (stream.match('\"\"')) {\n state.context.pop();\n state.subState.pop();\n return \"multiline_string\";\n }\n }\n }\n\n function tryChar(stream, state) {\n if (stream.match(\"'\")) {\n while (true) {\n if (stream.match(\"'\")) {\n return \"character\";\n }\n stream.match(\"\\\\\"); // If there is a backslash, consume it and the next character.\n stream.next();\n if (stream.eol()) {\n return \"unfinished_character\";\n }\n }\n }\n return null;\n }\n\n function tryNumber(stream, state) {\n if (stream.match(/(\\d(\\d|_\\d)*)?\\.\\d(\\d|_\\d)*([eE][+-]?\\d(\\d|_\\d)*)?/)) return \"float\"; // 0.5e10 and .5e+10\n if (stream.match(/\\d(\\d|_\\d)*[eE][+-]?\\d(\\d|_\\d)*/)) return \"float\"; // 1e+10\n if (stream.match(/0[xX]([\\da-fA-F]([\\da-fA-F]|_[\\da-fA-F])*)?\\.[\\da-fA-F]([\\da-fA-F]|_[\\da-fA-F])*[pP][+-]?\\d(\\d|_\\d)*/)) return \"hex_float\"; // 0x.D7P-3 and 0xAb.D7p+10\n if (stream.match(/0[xX][\\da-fA-F]([\\da-fA-F]|_[\\da-fA-F])*[pP][+-]?\\d(\\d|_\\d)*/)) return \"hex_float\"; // 0xap+10\n if (stream.match(/0[xX][\\da-fA-F]([\\da-fA-F]|_[\\da-fA-F])*/)) return \"hex\";\n if (stream.match(/0[bB][01a-fA-F]([01a-fA-F]|_[01a-fA-F])*/)) return \"binary\";\n if (stream.match(/\\d(\\d|_\\d)*/)) return \"integer\";\n return null;\n }\n\n function tryNamedArgument(stream, state) {\n if (stream.match(\"--\")) {\n if (stream.match(IDENTIFIER)) return \"named_argument\";\n stream.backUp(2);\n }\n return null;\n }\n\n function tryOperator(stream, state) {\n if (stream.match(/\\*|\\+|-|%|\\/|<<|>>>|>>|&|\\||\\^|~/)) {\n if (stream.match(\"=\")) {\n return \"op_assig\";\n }\n return \"overridable_op\"\n }\n if (stream.match(/==|!=|>=|<=|<|>/)) {\n return \"relational\";\n }\n if (stream.match(\"=\")) {\n return \"assig\"\n }\n if (stream.match(/:=|::=/)) {\n return \"define\";\n }\n return null;\n }\n\n var LOCAL_ANNOTATION_DIV = 0;\n var LOCAL_ANNOTATION_TYPE = 1;\n function localAnnotation(stream, state) {\n var sub = subState(state);\n if (sub == LOCAL_ANNOTATION_DIV) {\n if (stream.match(\"/\")) {\n setSubState(state, LOCAL_ANNOTATION_TYPE)\n return \"type_div\";\n }\n throw \"Internal Error\"\n }\n if (sub != LOCAL_ANNOTATION_TYPE) {\n throw \"Internal Error\"\n }\n state.context.pop();\n state.subState.pop();\n if (stream.match(TYPE, false)) {\n return tokenizeType(stream, state, true);\n }\n return null;\n }\n\n function tryPostfixMemberOrIdentifier(stream, state) {\n return tryIdentifier(stream, state, true);\n }\n\n function tryIdentifier(stream, state, allowPrefixedDot) {\n // If we allow a prefixed dot, consume it (but put it back if\n // it's not followed by an identifier).\n if (allowPrefixedDot && stream.match(\".\")) {\n if (!stream.match(IDENTIFIER, false)) {\n stream.backUp(1);\n return null;\n }\n return \"dot\";\n }\n if (!stream.match(IDENTIFIER)) return null;\n var id = stream.current();\n if (isKeyword(id)) return \"keyword\";\n if (isSpecialVar(id)) return \"special_var\";\n if (isAtom(id)) return \"atom\";\n if (id.match(CONSTANT_HEURISTIC)) return \"constant\";\n if (id.match(TYPE_HEURISTIC)) return \"type\";\n if (stream.match(/[ ]*:?:=/, false)) return \"declaration\";\n\n if (stream.match(/[ ]*[/][ ]*[\\w_.]+[?]?[ ]*:?:=/, false)) {\n state.context.push([localAnnotation, -1]);\n state.subState.push(LOCAL_ANNOTATION_DIV);\n return \"declaration\";\n }\n return \"identifier\";\n }\n\n function tryPrimitive(stream, state) {\n if (stream.match(/#primitive(?!-\\w)\\b/)) {\n return \"primitive\";\n }\n return null;\n }\n\n var TYPE_START = 0;\n var TYPE_START_NULLABLE = 1;\n var TYPE_AFTER_PREFIX = 2;\n var TYPE_AFTER_PREFIX_NULLABLE = 3;\n // Assumes that we are currently at an identifier, or a prefixed identifier.\n // Colors the prefix as prefix, and the last identifier as type.\n function tokenizeType(stream, state, allowNullable) {\n if (!stream.match(TYPE, false)) {\n throw \"INTERNAL ERROR\";\n }\n if (stream.match(/any(?!-\\w)\\b/) || stream.match(/none(?!-\\w)\\b/)) {\n return \"type_special\";\n }\n if (stream.match(/int(?!-\\w)\\b\\??/) || stream.match(/float(?!-\\w)\\b\\??/) || stream.match(/bool(?!-\\w)\\b\\??/) || stream.match(/string(?!-\\w)\\b\\??/)) {\n return \"type_short\";\n }\n state.context.push([tokenizeType2, -1]);\n state.subState.push(allowNullable ? TYPE_START_NULLABLE : TYPE_START);\n return tokenizeType2(stream, state);\n }\n\n function tokenizeType2(stream, state) {\n var sub = subState(state);\n if (sub == TYPE_START || sub == TYPE_START_NULLABLE) {\n stream.match(TYPE);\n var indexOfDot = stream.current().indexOf('.');\n if (indexOfDot >= 0) {\n // Backup.\n setSubState(state, sub == TYPE_START ? TYPE_AFTER_PREFIX : TYPE_AFTER_PREFIX_NULLABLE);\n stream.backUp(stream.current().length - indexOfDot);\n return \"type_prefix\";\n }\n if (sub == TYPE_START_NULLABLE) stream.match(\"?\");\n state.context.pop();\n state.subState.pop();\n return \"type_name\";\n }\n if (stream.match(\".\")) return \"type_dot\";\n state.context.pop();\n state.subState.pop();\n stream.match(IDENTIFIER);\n if (sub == TYPE_AFTER_PREFIX_NULLABLE) stream.match(\"?\");\n return \"type_name\";\n }\n\n var IMPORT_AFTER_IMPORT = 0;\n var IMPORT_AFTER_PATH = 1;\n var IMPORT_AFTER_SHOW = 2;\n var IMPORT_AFTER_AS = 3;\n var IMPORT_ERROR = 4;\n function tryImport(stream, state) {\n if (stream.match(/import(?!-\\w)\\b/)) {\n state.context.push([tokenizeImport, 2]);\n state.subState.push(IMPORT_AFTER_IMPORT);\n return \"keyword\"\n }\n return null;\n }\n function tokenizeImport(stream, state) {\n var comment_result = tryComments(stream, state);\n if (comment_result) return comment_result;\n\n function importError() {\n setSubState(state, IMPORT_ERROR);\n stream.skipToEnd();\n return \"error\";\n }\n\n switch (subState(state)) {\n case IMPORT_AFTER_IMPORT:\n if (!stream.match(/\\.*(\\.?[-a-zA-Z_]\\w*)+/)) return importError();\n setSubState(state, IMPORT_AFTER_PATH);\n return \"import_path\";\n case IMPORT_AFTER_PATH:\n if (stream.match(/as(?!-\\w)\\b/)) {\n setSubState(state, IMPORT_AFTER_AS);\n return \"keyword\";\n }\n if (stream.match(/show(?!-\\w)\\b/)) {\n setSubState(state, IMPORT_AFTER_SHOW);\n return \"keyword\";\n }\n return importError();\n case IMPORT_AFTER_AS:\n if (!stream.match(IDENTIFIER)) return importError();\n // Anything that follows is an error.\n setSubState(state, IMPORT_ERROR);\n return \"import_prefix_name\";\n case IMPORT_AFTER_SHOW:\n if (stream.match(\"*\")) {\n setSubState(state, IMPORT_ERROR);\n return \"import_star\";\n }\n if (!stream.match(IDENTIFIER)) return importError();\n return \"import_show_identifier\";\n case IMPORT_ERROR:\n default:\n stream.skipToEnd();\n return \"import_error\";\n }\n }\n\n var EXPORT_AFTER_EXPORT = 0;\n var EXPORT_ERROR = 1;\n function tryExport(stream, state) {\n if (stream.match(/export(?!-\\w)\\b/)) {\n state.context.push([tokenizeExport, 2]);\n state.subState.push(EXPORT_AFTER_EXPORT);\n return \"keyword\"\n }\n return null;\n }\n function tokenizeExport(stream, state) {\n var comment_result = tryComments(stream, state);\n if (comment_result) return comment_result;\n\n switch (subState(state)) {\n case EXPORT_AFTER_EXPORT:\n if (stream.match(\"*\")) {\n setSubState(state, EXPORT_ERROR);\n return \"export_star\";\n }\n if (stream.match(IDENTIFIER)) {\n return \"export_identifier\";\n }\n setSubState(state, EXPORT_ERROR);\n // Fall through.\n case EXPORT_ERROR:\n default:\n stream.skipToEnd();\n return \"export_error\";\n }\n }\n\n var CLASS_SIGNATURE_AFTER_CLASS = 0;\n var CLASS_SIGNATURE_AFTER_NAME = 1;\n var CLASS_SIGNATURE_AFTER_EXTENDS = 2;\n var CLASS_SIGNATURE_AFTER_EXTENDS_TYPE = 3\n var CLASS_SIGNATURE_AFTER_WITH = 4\n var CLASS_SIGNATURE_AFTER_FIRST_WITH_NAME = 5;\n var CLASS_SIGNATURE_AFTER_IMPLEMENTS = 6;\n var CLASS_SIGNATURE_AFTER_FIRST_IMPLEMENTS_NAME = 7;\n var CLASS_BODY = 8;\n function tryClass(stream, state) {\n if (stream.match(/(abstract[ ]+)?class(?!-\\w)\\b/) || stream.match(/interface(?!-\\w)\\b/) || stream.match(/mixin(?!-\\w)\\b/) || stream.match(/monitor(?!-\\w)\\b/)) {\n state.context.push([tokenizeClass, 2]);\n state.subState.push(CLASS_SIGNATURE_AFTER_CLASS);\n return \"keyword\"\n }\n return null;\n }\n\n function tokenizeClassError(stream, state) {\n // This function will be popped by indentation.\n stream.skipToEnd();\n return \"class_error\";\n }\n\n function tokenizeClass(stream, state) {\n var comment_result = tryComments(stream, state);\n if (comment_result) return comment_result;\n\n function signatureError() {\n setSubState(state, CLASS_BODY); // Once the error function is popped.\n // Eat everything until we are back to 2-indentation.\n state.context.push([tokenizeClassError, 4]);\n state.subState.push(null)\n return tokenizeClassError(stream, state);\n }\n\n switch (subState(state)) {\n case CLASS_SIGNATURE_AFTER_CLASS:\n if (!stream.match(IDENTIFIER)) return signatureError();\n setSubState(state, CLASS_SIGNATURE_AFTER_NAME);\n return \"class_name\";\n\n case CLASS_SIGNATURE_AFTER_NAME:\n if (stream.match(/extends(?!-\\w)\\b/)) {\n setSubState(state, CLASS_SIGNATURE_AFTER_EXTENDS);\n return \"keyword\";\n }\n // Fall through.\n\n case CLASS_SIGNATURE_AFTER_EXTENDS_TYPE:\n if (stream.match(/with(?!-\\w)\\b/)) {\n setSubState(state, CLASS_SIGNATURE_AFTER_WITH);\n return \"keyword\";\n }\n if (stream.match(/implements(?!-\\w)\\b/)) {\n setSubState(state, CLASS_SIGNATURE_AFTER_IMPLEMENTS);\n return \"keyword\";\n }\n if (stream.match(\":\")) {\n setSubState(state, CLASS_BODY);\n return \"class_body_colon\";\n }\n return signatureError();\n\n case CLASS_SIGNATURE_AFTER_EXTENDS:\n if (!stream.match(TYPE, false)) return signatureError();\n setSubState(state, CLASS_SIGNATURE_AFTER_EXTENDS_TYPE);\n return tokenizeType(stream, state, false);\n\n case CLASS_SIGNATURE_AFTER_WITH:\n case CLASS_SIGNATURE_AFTER_IMPLEMENTS:\n // The first *requires* an type.\n if (!stream.match(TYPE, false)) return signatureError();\n const nextSubState = subState(state) == CLASS_SIGNATURE_AFTER_WITH\n ? CLASS_SIGNATURE_AFTER_FIRST_WITH_NAME\n : CLASS_SIGNATURE_AFTER_FIRST_IMPLEMENTS_NAME;\n setSubState(state, nextSubState);\n return tokenizeType(stream, state, false);\n\n case CLASS_SIGNATURE_AFTER_FIRST_WITH_NAME:\n case CLASS_SIGNATURE_AFTER_FIRST_IMPLEMENTS_NAME:\n if (stream.match(TYPE, false)) {\n return tokenizeType(stream, state, false);\n }\n if (stream.match(\":\")) {\n setSubState(state, CLASS_BODY);\n return \"class_body_colon\";\n }\n if (subState(state) == CLASS_SIGNATURE_AFTER_FIRST_WITH_NAME) {\n if (stream.match(/implements(?!-\\w)\\b/)) {\n setSubState(state, CLASS_SIGNATURE_AFTER_IMPLEMENTS);\n return \"keyword\";\n }\n }\n return signatureError();\n\n case CLASS_BODY:\n state.context.push([tokenizeMemberDeclaration, 4]);\n state.subState.push(MEMBER_DECLARATION_START);\n return tokenizeMemberDeclaration(stream, state);\n\n default:\n stream.skipToEnd();\n return \"unformatted\";\n }\n }\n\n var MEMBER_DECLARATION_START = 0;\n var MEMBER_DECLARATION_AFTER_STATIC_ABSTRACT = 1;\n var MEMBER_DECLARATION_AFTER_OPERATOR = 2;\n var MEMBER_DECLARATION_AFTER_NAMED_CONSTRUCTOR = 3;\n function tokenizeMemberDeclaration(stream, state) {\n var comment_result = tryComments(stream, state);\n if (comment_result) return comment_result;\n\n if (subState(state) == MEMBER_DECLARATION_START) {\n if (stream.match(/abstract(?!-\\w)\\b/) || stream.match(/static(?!-\\w)\\b/)) {\n setSubState(state, MEMBER_DECLARATION_AFTER_STATIC_ABSTRACT);\n return \"keyword\";\n }\n if (stream.match(/operator(?!-\\w)\\b/)) {\n setSubState(state, MEMBER_DECLARATION_AFTER_OPERATOR);\n return \"keyword\";\n }\n if (stream.match(/constructor(?!-\\w)\\b/)) {\n if (stream.match(/\\.[a-zA-Z_]\\w*/, false)) {\n setSubState(state, MEMBER_DECLARATION_AFTER_NAMED_CONSTRUCTOR);\n } else {\n state.context.push([tokenizeFunctionBody, 4]);\n state.subState.push(null);\n state.context.push([tokenizeFunctionSignature, 6]);\n state.subState.push(null);\n }\n return \"constructor_keyword\"\n }\n } else if (subState(state) == MEMBER_DECLARATION_AFTER_NAMED_CONSTRUCTOR) {\n stream.match(/\\.[a-zA-Z_]\\w*/);\n state.context.push([tokenizeFunctionBody, 4]);\n state.subState.push(null);\n state.context.push([tokenizeFunctionSignature, 6]);\n state.subState.push(null);\n return \"member_named_constructor\"\n }\n\n var currentSubState = subState(state);\n\n // Even if things go wrong, assume that we are going to parse the rest of\n // the signature first, followed by the body.\n // If we find a `:` we will pop the signature by hand.\n state.context.push([tokenizeFunctionBody, 4]);\n state.subState.push(null);\n state.context.push([tokenizeFunctionSignature, 6]);\n state.subState.push(null);\n if (currentSubState == MEMBER_DECLARATION_AFTER_OPERATOR && stream.match(OVERRIDABLE_OPERATOR)) {\n return \"member_operator_name\"\n } else if (stream.match(IDENTIFIER)) {\n if (isReserved(stream.current())) {\n return \"member_name_error\";\n }\n if (stream.match(\".\")) {\n if (stream.match(IDENTIFIER)) {\n if (subState(state) == MEMBER_DECLARATION_AFTER_STATIC_ABSTRACT) {\n return \"member_name_error\";\n }\n return \"named_constructor\";\n }\n return \"member_name_error\";\n } else if (stream.match(\"=\")) {\n return \"member_name_setter\";\n } else {\n return \"member_name\";\n }\n }\n stream.eatWhile(/[^ ]/); // Skip to the next whitespace.\n return \"member_name_error\";\n }\n\n function tokenizeFunctionBody(stream, state) {\n var matched_result = tryExpression(stream, state);\n if (matched_result) return matched_result;\n\n stream.eatWhile(/[^ ]/);\n return \"unformatted\";\n }\n\n function tryDefaultValue(stream, state) {\n var expression_result = tryNumber(stream, state) ||\n tryString(stream, state) ||\n tryChar(stream, state) ||\n tryDelimited(stream, state);\n if (expression_result) return expression_result;\n var identifier_result = tryIdentifier(stream, state);\n if (identifier_result) {\n var lastIndentation = last(state.context)[1];\n state.context.push([tokenizeDefaultValueContinuation, lastIndentation]);\n state.subState.push(DEFAULT_VALUE_AFTER_IDENTIFIER);\n return identifier_result;\n }\n return null;\n }\n\n var DEFAULT_VALUE_AFTER_IDENTIFIER = 0;\n var DEFAULT_VALUE_AFTER_DOT = 1;\n function tokenizeDefaultValueContinuation(stream, state) {\n switch (subState(state)) {\n case DEFAULT_VALUE_AFTER_IDENTIFIER:\n if (stream.match(\".\")) {\n if (stream.match(IDENTIFIER, false)) {\n setSubState(state, DEFAULT_VALUE_AFTER_DOT);\n return \"dot\";\n }\n state.context.pop();\n state.subState.pop();\n return \"default_value_dot_error\";\n }\n if (stream.peek() == '[') {\n setSubState(state, DEFAULT_VALUE_AFTER_IDENTIFIER); // When we return;\n return tryDelimited(stream, state);\n }\n // Not part of the default value anymore.\n state.context.pop();\n state.subState.pop();\n return last(state.context)[0](stream, state);\n\n case DEFAULT_VALUE_AFTER_DOT:\n setSubState(state, DEFAULT_VALUE_AFTER_IDENTIFIER);\n return tryIdentifier(stream, state);\n }\n }\n\n var SIGNATURE_EXPECTING_DEFAULT_VALUE = 0;\n var SIGNATURE_EXPECTING_TYPE = 1;\n var SIGNATURE_AFTER_BRACKET_BLOCK = 2;\n function tokenizeFunctionSignature(stream, state) {\n var comment_result = tryComments(stream, state);\n if (comment_result) return comment_result;\n\n function error(kind) {\n if (!result) {\n stream.eatWhile(/[^ ]/); // Skip to the next whitespace.\n result = kind || \"parameter_error\";\n }\n }\n\n if (stream.match(\"::=\") || stream.match(\":=\")) {\n state.context.pop();\n state.subState.pop();\n return \"field_assig\";\n }\n if (stream.match(\":\")) {\n state.context.pop();\n state.subState.pop();\n return \"function_colon\";\n }\n\n switch (subState(state)) {\n case SIGNATURE_EXPECTING_DEFAULT_VALUE:\n setSubState(state, null); // For when the sub-expression returns.\n // TODO: tokenize default values.\n var result = tryDefaultValue(stream, state);\n if (!result) return error(\"default_value_error\");\n return result;\n case SIGNATURE_EXPECTING_TYPE:\n setSubState(state, null);\n if (!stream.match(TYPE, false)) return error();\n return tokenizeType(stream, state, true);\n\n default:\n // Continue after the `switch`.\n }\n if (stream.match(\"/\")) {\n setSubState(state, SIGNATURE_EXPECTING_TYPE);\n return \"type_div\";\n }\n if (stream.match(\"->\")) {\n setSubState(state, SIGNATURE_EXPECTING_TYPE);\n return \"type_return\";\n }\n if (stream.match(\"=\")) {\n setSubState(state, SIGNATURE_EXPECTING_DEFAULT_VALUE);\n return \"default_equals\"\n }\n if (stream.match(\"[\")) {\n setSubState(state, SIGNATURE_AFTER_BRACKET_BLOCK);\n return \"bracket_block_open\";\n }\n if (stream.match(\"]\")) {\n setSubState(state, null);\n return \"bracket_block_close\";\n }\n var isNamed = false;\n if (stream.match(\"--\")) {\n isNamed = true;\n }\n var isSetting = false;\n if (stream.match(\".\")) {\n // Setting parameter.\n isSetting = true;\n }\n var prefix = stream.current();\n if (!stream.match(IDENTIFIER)) return error();\n var name = stream.current().slice(prefix.length);\n if (name == \"this\") {\n if (isSetting || !stream.match(\".\") || !stream.match(IDENTIFIER)) {\n return error();\n }\n name = stream.current().slice((name + \".\").length);\n if (isReserved(name)) return error();\n return \"parameter\";\n }\n if (isReserved(stream.current().slice(prefix.length))) {\n return error();\n }\n if (isNamed) {\n return \"named_parameter\";\n } else {\n return \"parameter\";\n }\n }\n\n function tryToplevelDeclaration(stream, state) {\n if (stream.match(IDENTIFIER)) {\n state.context.push([tokenizeFunctionBody, 2]);\n state.subState.push(null);\n state.context.push([tokenizeFunctionSignature, 4]);\n state.subState.push(null);\n if (isReserved(stream.current())) {\n return \"toplevel_name_error\";\n }\n if (stream.match(\"=\")) {\n return \"toplevel_name_setter\";\n }\n if (stream.current().match(CONSTANT_HEURISTIC)) {\n return \"toplevel_constant\";\n }\n return \"toplevel_name\";\n }\n return null;\n }\n\n // For code snippets that have an indent on the very first\n // line we assume that we are implicitly inside a function\n // like \"main\".\n function tryImpliedTopLevelFunction(stream, state) {\n if (state.startOfLine && stream.indentation() == 2) {\n state.context.push([tokenizeFunctionBody, 2]);\n state.subState.push(null);\n return \"null\";\n }\n return null;\n }\n\n\n function tokenizeError(stream, state) {\n // We could try to be more aggressive (like trying to highlight numbers,\n // strings, ...), but the most important thing is that we make progress.\n stream.skipToEnd();\n return \"error\";\n }\n\n function tryExpression(stream, state) {\n return tryComments(stream, state) ||\n tryNumber(stream, state) ||\n tryChar(stream, state) ||\n tryNamedArgument(stream, state) ||\n tryOperator(stream, state) ||\n tryString(stream, state) ||\n tryIsAs(stream, state) ||\n // In theory we need to check whether the postfix member is\n // prefixed by another expression but for the syntax highlighter we\n // just assume that was the case.\n tryPostfixMemberOrIdentifier(stream, state) ||\n tryIdentifier(stream, state) ||\n tryPrimitive(stream, state) ||\n tryDelimited(stream, state) ||\n tryControl(stream, state);\n }\n\n function tokenizeTopLevel(stream, state) {\n return tryComments(stream, state) ||\n tryImport(stream, state) ||\n tryExport(stream, state) ||\n tryClass(stream, state) ||\n tryImpliedTopLevelFunction(stream, state) ||\n tryToplevelDeclaration(stream, state) ||\n tokenizeError(stream, state);\n }\n\n return {\n startState: function (basecolumn) {\n return {\n startOfLine: true,\n readNonWhitespace: false,\n // If the last parsed token was a `:` stores the indentation at that point.\n // Is reset every time we parse a non-whitespace token.\n // Used for indentation.\n atColonIndentation: -1,\n context: [[tokenizeTopLevel, -1]],\n subState: [null]\n };\n },\n\n token: function (stream, state) {\n if (stream.sol()) {\n state.startOfLine = true;\n state.readNonWhitespace = false;\n } else if (state.readNonWhitespace) {\n state.startOfLine = false;\n }\n if (stream.eatSpace()) return null;\n if (stream.peek() == \":\") {\n state.atColonIndentation = stream.indentation();\n } else {\n state.atColonIndentation = -1;\n }\n // Next time we aren't at the beginning of the line anymore.\n state.readNonWhitespace = true;\n\n if (state.startOfLine) {\n // Drop contexts if there is a dedent.\n while (last(state.context)[1] > stream.indentation()) {\n state.context.pop();\n state.subState.pop();\n }\n }\n\n var tokenizer = last(state.context)[0];\n var result = tokenizer(stream, state);\n if (!result) return result;\n // We have a more nuanced parsing, allowing for better highlighting\n // (once that's supported, or if there is a better style).\n // Simplify here, so that the standard CSS works.\n\n // CodeMirror highlighting styles:\n // - meta\n // - keyword\n // - atom\n // - number\n // - def\n // - variable, variable-2, variable-3\n // - type\n // - property\n // - operator\n // - comment\n // - string, string-2\n // - qualifier\n // - builtin\n // - bracket\n // - tag\n // - attribute\n // - link\n // - error\n\n switch (result) {\n case \"unformatted\":\n case \"import_path\":\n case \"export_identifier\":\n result = null;\n break;\n\n case \"type_special\":\n case \"keyword\":\n case \"is_as\":\n case \"constructor_keyword\":\n case \"control\":\n result = \"keyword\";\n break;\n\n case \"atom\":\n case \"constant\":\n case \"toplevel_constant\":\n result = \"atom\";\n break;\n\n case \"float\":\n case \"hex_float\":\n case \"integer\":\n case \"hex\":\n case \"binary\":\n result = \"number\";\n break;\n\n case \"member_name\":\n case \"member_name_setter\":\n case \"member_named_constructor\":\n case \"declaration\":\n case \"toplevel_name\":\n case \"toplevel_name_setter\":\n case \"class_name\":\n case \"member_operator_name\":\n result = \"def\";\n break;\n\n case \"import_show_identifier\":\n case \"named_constructor\":\n case \"named_parameter\":\n case \"parameter\":\n result = \"variable\";\n break;\n\n case \"identifier\":\n result = \"variable-2\";\n break;\n\n case \"type\":\n case \"type_name\":\n case \"type_short\":\n result = \"type\";\n break;\n\n case \"import_star\":\n case \"export_star\":\n case \"type_dot\":\n case \"default_equals\":\n case \"function_colon\":\n case \"field_assig\": // Also for globals.\n case \"type_div\":\n case \"type_return\":\n case \"class_body_colon\":\n case \"dot\":\n case \"string_dollar\":\n case \"colon\":\n case \"relational\":\n case \"op_assig\":\n case \"overridable_op\":\n case \"op_slice\":\n case \"assig\":\n case \"define\":\n case \"separator\":\n result = \"operator\";\n break;\n\n case \"singleline_string\":\n case \"multiline_string\":\n case \"character\":\n result = \"string\";\n break;\n\n case \"unfinished_string\":\n case \"missing_escape_expression\":\n case \"unfinished_character\":\n result = \"string error\";\n break;\n\n case \"string_format\":\n case \"named_argument\":\n case \"import_prefix_name\":\n case \"type_prefix\":\n result = \"qualifier\";\n break;\n\n case \"special_var\":\n case \"primitive\":\n result = \"builtin\";\n break;\n\n case \"bracket_block_open\":\n case \"bracket_block_close\":\n case \"paren\":\n case \"bracket\":\n result = \"bracket\";\n break;\n\n case \"import_error\":\n case \"export_error\":\n case \"class_error\":\n case \"member_name_error\":\n case \"parameter_error\":\n case \"default_value_error\":\n case \"toplevel_name_error\":\n case \"default_value_dot_error\":\n case \"is_as_error\":\n result = \"error\"; // Might want to just not color.\n break;\n\n default:\n /* do nothing. */\n break;\n }\n return result;\n },\n\n indent: function (state, textAfter) {\n if (state.atColonIndentation == -1) return CodeMirror.Pass;\n // We don't use `config.indentUnit`. Toit is 2 chars.\n return state.atColonIndentation + 2;\n },\n\n closeBrackets: { triples: \"\\\"\" },\n lineComment: \"//\",\n blockCommentStart: \"/*\",\n blockCommentEnd: \"*/\",\n fold: \"indent\",\n };\n });\n\n CodeMirror.defineMIME(\"text/x-toit\", \"toit\");\n\n});\n","// Copyright (C) 2024 Toitware ApS.\n// Use of this source code is governed by an MIT-style license that can be\n// found in the LICENSE file.\n\nimport { createMuiTheme } from \"@material-ui/core\";\n\nconst layout = {\n sidebarWidth: \"18rem\",\n headerHeight: 64,\n footerHeight: \"6rem\",\n};\n\nexport const theme = createMuiTheme({\n layout: layout,\n palette: {\n type: \"light\",\n background: {\n paper: \"#fff\",\n default: \"#fff\",\n },\n text: {\n primary: \"#000\",\n },\n primary: {\n main: \"#5E6FDB\",\n },\n secondary: {\n main: \"#55A398\",\n },\n },\n typography: {\n fontFamily: \"Roboto, Helvetica, sans-serif\",\n body1: {},\n body2: {\n fontSize: \"0.80rem\",\n },\n h1: {\n fontFamily: \"ClashDisplay\",\n fontSize: \"4.0rem\",\n },\n h2: {\n fontFamily: \"ClashDisplay\",\n fontSize: \"3.0rem\",\n },\n h3: {\n fontFamily: \"ClashDisplay\",\n fontSize: \"2.0rem\",\n },\n h4: {\n fontFamily: \"ClashDisplay\",\n fontSize: \"1.5rem\",\n },\n h5: {\n fontFamily: \"ClashDisplay\",\n fontSize: \"1.125rem\",\n },\n h6: {\n fontFamily: \"ClashDisplay\",\n fontSize: \"1.07rem\",\n },\n },\n});\n\nexport const sideBarTheme = createMuiTheme({\n layout: layout,\n palette: {\n type: \"dark\",\n background: {\n paper: \"#000\",\n default: \"#000\",\n },\n text: {\n primary: \"#fff\",\n },\n primary: {\n main: \"#FAC864\",\n },\n secondary: {\n main: \"#5E6FDB\",\n },\n },\n typography: {\n fontFamily: \"Roboto, Helvetica, sans-serif\",\n body1: {},\n body2: {\n fontSize: \"0.80rem\",\n },\n },\n});\n\n/**\n * Since material-ui lengths can be defined as numbers (pixels) we need to\n * convert them sometimes.\n *\n * I've searched in the material-ui code for about an hour, since there must be\n * a util there, but I couldn't find it.\n */\nexport function length(length: number | string): string {\n return typeof length === \"string\" ? length : `${length}px`;\n}\n","// Copyright (C) 2020 Toitware ApS.\n// Use of this source code is governed by an MIT-style license that can be\n// found in the LICENSE file.\n\nimport {\n createStyles,\n Grid,\n StyleRules,\n Theme,\n withStyles,\n WithStyles,\n} from \"@material-ui/core\";\nimport React, { ErrorInfo } from \"react\";\nimport { Link } from \"react-router-dom\";\n\nconst styles = (theme: Theme): StyleRules =>\n createStyles({\n grid: {\n margin: theme.spacing(3),\n },\n });\n\ninterface ErrorBoundaryProps extends WithStyles {\n children: React.ReactNode;\n}\n\nclass ErrorBoundary extends React.Component {\n state = {\n hasError: false,\n };\n\n componentDidCatch(error: Error, info: ErrorInfo): void {\n // Display fallback UI\n this.setState({ hasError: true });\n }\n\n render(): JSX.Element {\n if (this.state.hasError) {\n // You can render any custom fallback UI\n console.log(\"ERROR: In the object \");\n return (\n \n

Something went wrong.

\n Home Page\n
\n );\n } else {\n return <>{this.props.children};\n }\n }\n}\n\nexport default withStyles(styles)(ErrorBoundary);\n","// Copyright (C) 2024 Toitware ApS.\n// Use of this source code is governed by an MIT-style license that can be\n// found in the LICENSE file.\n\nimport {\n Box,\n createStyles,\n InputBase,\n makeStyles,\n Theme,\n} from \"@material-ui/core\";\nimport ClearIcon from \"@material-ui/icons/Clear\";\nimport SearchIcon from \"@material-ui/icons/Search\";\nimport React, { memo } from \"react\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n search: {\n padding: \"2px 4px\",\n display: \"flex\",\n alignItems: \"center\",\n flex: 1,\n },\n input: {\n marginLeft: theme.spacing(1),\n flex: 1,\n },\n clearIcon: {\n marginRight: theme.spacing(2),\n cursor: \"pointer\",\n },\n })\n);\n\ninterface SearchBarProps {\n searchBy: string;\n onSearch: (searchString: string) => void;\n onFocus?: () => void;\n}\n\nfunction SearchBar(props: SearchBarProps): JSX.Element {\n const handleSearchStringChange = (\n event: React.ChangeEvent\n ): void => {\n props.onSearch(event.target.value);\n };\n\n const resetSearchString = (): void => {\n if (props.searchBy) {\n props.onSearch(\"\");\n }\n };\n\n const classes = useStyles();\n\n return (\n <>\n \n \n {\n if (props.onFocus) {\n props.onFocus();\n }\n }}\n />\n \n \n \n );\n}\n\nexport default memo(SearchBar);\n","// Copyright (C) 2024 Toitware ApS.\n// Use of this source code is governed by an MIT-style license that can be\n// found in the LICENSE file.\n\nimport {\n List,\n ListItem,\n makeStyles,\n Paper,\n Theme,\n Typography,\n} from \"@material-ui/core\";\nimport React from \"react\";\nimport {\n Searchable,\n SearchableClass,\n SearchableFunction,\n SearchableInterface,\n SearchableLibrary,\n SearchableMethod,\n} from \"../../model/search\";\nimport { SEARCH_BAR_WIDTH, SEARCH_RESULTS_WIDTH } from \"./SearchView\";\n\nconst useStyles = makeStyles((theme: Theme) => ({\n root: {\n position: \"fixed\",\n width: SEARCH_RESULTS_WIDTH,\n maxHeight: 500,\n overflow: \"auto\",\n marginTop: 2,\n marginLeft: SEARCH_BAR_WIDTH - SEARCH_RESULTS_WIDTH,\n },\n listItem: {\n display: \"flex\",\n alignItems: \"flex-start\",\n flexDirection: \"column\",\n },\n text: {\n display: \"inline\",\n color: theme.palette.secondary.main,\n },\n emphText: {\n display: \"inline\",\n color: theme.palette.primary.dark,\n },\n}));\n\ninterface SearchResultsProps {\n results: Searchable[];\n hideResults: boolean;\n}\n\nexport default function SearchResults(props: SearchResultsProps): JSX.Element {\n const classes = useStyles();\n\n const results = props.results.map((item, index) => (\n \n ));\n\n return (\n <>\n {!props.hideResults && results.length > 0 && (\n \n {results}\n \n )}\n \n );\n}\n\nfunction ResultItem(props: { item: Searchable }): JSX.Element {\n const classes = useStyles();\n\n let name = \"\";\n let from = \"\";\n\n switch (props.item.type) {\n case \"library\": {\n const item = props.item as SearchableLibrary;\n name = item.name;\n from = item.ref.path.join(\".\");\n break;\n }\n case \"interface\": {\n const item = props.item as SearchableInterface;\n name = item.name;\n from = item.ref.libraryRef.path.join(\".\");\n break;\n }\n case \"mixin\": {\n const item = props.item as SearchableInterface;\n name = item.name;\n from = item.ref.libraryRef.path.join(\".\");\n break;\n }\n case \"class\": {\n const item = props.item as SearchableClass;\n name = item.name;\n from = item.ref.libraryRef.path.join(\".\");\n break;\n }\n case \"function\": {\n const item = props.item as SearchableFunction;\n name = item.name + \" \" + item.parameters + \" \";\n from = item.ref.libraryRef.path.join(\".\");\n break;\n }\n case \"method\": {\n const item = props.item as SearchableMethod;\n name = item.name + \" \" + item.parameters + \" \";\n from =\n item.className + \" in \" + item.ref.classRef.libraryRef.path.join(\".\");\n break;\n }\n }\n\n return (\n \n
\n {name} \n {props.item.type}\n
\n {from && (\n
\n \n from {from}\n \n
\n )}\n \n );\n}\n","// Copyright (C) 2024 Toitware ApS.\n// Use of this source code is governed by an MIT-style license that can be\n// found in the LICENSE file.\n\nimport {\n ClickAwayListener,\n createStyles,\n withStyles,\n WithStyles,\n} from \"@material-ui/core\";\nimport Fuse from \"fuse.js\";\nimport React from \"react\";\nimport {\n SearchableClass,\n SearchableFunction,\n SearchableInterface,\n SearchableLibrary,\n SearchableMethod,\n SearchableMixin,\n SearchableModel,\n} from \"../../model/search\";\nimport SearchBar from \"./SearchBar\";\nimport SearchResults from \"./SearchResults\";\n\nexport const SEARCH_BAR_WIDTH = 300;\nexport const SEARCH_RESULTS_WIDTH = 400;\n\nconst styles = createStyles({\n searchBar: {\n width: SEARCH_BAR_WIDTH,\n marginLeft: \"auto\",\n },\n});\n\nexport interface SearchProps extends WithStyles {\n model: SearchableModel;\n}\n\ninterface SearchState {\n searchBy: string;\n libraries: SearchableLibrary[];\n classes: SearchableClass[];\n interfaces: SearchableInterface[];\n mixins: SearchableMixin[];\n functions: SearchableFunction[];\n methods: SearchableMethod[];\n hideResults: boolean;\n}\n\nlet delayTimer: number;\n\nclass SearchView extends React.Component {\n state = {\n searchBy: \"\",\n libraries: [],\n classes: [],\n interfaces: [],\n mixins: [],\n functions: [],\n methods: [],\n hideResults: false,\n };\n\n search(\n searchIn: T[],\n searchBy: string\n ): Fuse.FuseResult[] {\n const options = {\n keys: [\"name\"],\n threshold: 0.01,\n distance: 10000000,\n };\n return new Fuse(searchIn, options).search(searchBy);\n }\n\n onSearch = (searchString: string): void => {\n this.setState({ searchBy: searchString });\n\n clearTimeout(delayTimer);\n delayTimer = window.setTimeout(\n () => {\n let libraries = [] as SearchableLibrary[];\n let classes = [] as SearchableClass[];\n let interfaces = [] as SearchableInterface[];\n let mixins = [] as SearchableMixin[];\n let functions = [] as SearchableFunction[];\n let methods = [] as SearchableMethod[];\n\n if (searchString && searchString.length > 1) {\n libraries = this.search(this.props.model.libraries, searchString).map(\n (m) => m.item\n );\n interfaces = this.search(\n this.props.model.interfaces,\n searchString\n ).map((inter) => inter.item);\n mixins = this.search(this.props.model.mixins, searchString).map(\n (mixin) => mixin.item\n );\n classes = this.search(this.props.model.classes, searchString).map(\n (c) => c.item\n );\n functions = this.search(this.props.model.functions, searchString).map(\n (f) => f.item\n );\n methods = this.search(this.props.model.methods, searchString).map(\n (m) => m.item\n );\n }\n\n this.setState({\n searchBy: searchString,\n libraries: libraries,\n interfaces: interfaces,\n classes: classes,\n mixins: mixins,\n functions: functions,\n methods: methods,\n });\n },\n searchString ? 200 : 0\n );\n };\n\n onFocus = (): void => {\n this.setState({ hideResults: false });\n };\n\n onClickAway = (): void => {\n this.setState({ hideResults: true });\n };\n\n render(): JSX.Element {\n return (\n \n
\n \n \n
\n
\n );\n }\n}\n\nexport default withStyles(styles)(SearchView);\n","// Copyright (C) 2024 Toitware ApS.\n// Use of this source code is governed by an MIT-style license that can be\n// found in the LICENSE file.\n\nimport { connect } from \"react-redux\";\nimport SearchView, { SearchProps } from \"../../components/header/SearchView\";\nimport { RootState } from \"../../redux/doc\";\n\nconst mapStateToProps = (state: RootState): Pick => {\n return {\n model: state.doc.searchableModel || {\n libraries: [],\n classes: [],\n interfaces: [],\n mixins: [],\n functions: [],\n methods: [],\n },\n };\n};\n\nexport default connect(mapStateToProps)(SearchView);\n","// Copyright (C) 2020 Toitware ApS.\n// Use of this source code is governed by an MIT-style license that can be\n// found in the LICENSE file.\n\nimport styled from \"@emotion/styled\";\nimport { AppBar } from \"@material-ui/core\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport React from \"react\";\nimport { length } from \"../../assets/theme\";\nimport Search from \"../../containers/header/Search\";\n\nconst StyledAppBar = styled(AppBar)`\n height: ${({ theme }) => theme.layout.headerHeight};\n left: ${({ theme }) => theme.layout.sidebarWidth};\n width: calc(100% - ${({ theme }) => length(theme.layout.sidebarWidth)});\n border-bottom: 1px solid black;\n background: rgba(255, 255, 255, 0.6);\n -webkit-backdrop-filter: blur(10px);\n backdrop-filter: blur(10px);\n`;\n\nexport function HeaderBar(): JSX.Element {\n return (\n \n \n \n \n \n );\n}\n\nexport default HeaderBar;\n","// Copyright (C) 2020 Toitware ApS.\n// Use of this source code is governed by an MIT-style license that can be\n// found in the LICENSE file.\n\nimport {\n createStyles,\n StyleRules,\n Theme,\n Typography,\n withStyles,\n WithStyles,\n} from \"@material-ui/core\";\nimport React from \"react\";\n\nconst styles = (theme: Theme): StyleRules =>\n createStyles({\n header: {\n paddingBottom: theme.spacing(4),\n },\n section: {\n paddingBottom: theme.spacing(2),\n },\n });\n\ntype WelcomeFolderPageProps = WithStyles;\n\nclass WelcomeFolderPage extends React.PureComponent {\n render(): JSX.Element {\n return (\n <>\n \n Toitdoc Viewer\n \n \n Welcome to the Toitdoc viewer.\n \n \n Select the library you want to view from the list on the left.\n \n \n );\n }\n}\n\nexport default withStyles(styles)(WelcomeFolderPage);\n","// Copyright (C) 2024 Toitware ApS.\n// Use of this source code is governed by an MIT-style license that can be\n// found in the LICENSE file.\n\nimport {\n Class,\n Function,\n Libraries,\n Library,\n Method,\n Shape,\n} from \"../model/model\";\nimport {\n ClassMemberRef,\n LinkRef,\n TopLevelItemRef,\n TopLevelRef,\n} from \"../model/reference\";\n\nexport function libraryFrom(\n libraryName: string,\n rootLibraries: Libraries\n): Library | undefined {\n const path = libraryName.split(\"/\");\n let library = undefined;\n let libraries = rootLibraries;\n\n for (const p of path) {\n library = libraries[p];\n if (!library) {\n break;\n }\n libraries = library.libraries;\n }\n return library;\n}\n\nexport function classFrom(\n libraryName: string,\n className: string,\n rootLibraries: Libraries\n): Class | undefined {\n const library = libraryFrom(libraryName, rootLibraries);\n return (\n library?.classes[className] ||\n library?.exportedClasses[className] ||\n library?.interfaces[className] ||\n library?.exportedInterfaces[className] ||\n library?.mixins[className] ||\n library?.exportedMixins[className]\n );\n}\n\nexport function libraryFromRef(\n rootLibraries: Libraries,\n ref: TopLevelRef\n): Library | undefined {\n return libraryFrom(ref.path.join(\"/\"), rootLibraries);\n}\n\nexport function classFromRef(\n rootLibraries: Libraries,\n ref: TopLevelItemRef\n): Class | undefined {\n const library = libraryFromRef(rootLibraries, ref.libraryRef);\n if (!library || ref.offset === undefined) {\n return undefined;\n }\n\n return (\n Object.values(library.classes)[ref.offset] ||\n Object.values(library.exportedClasses)[ref.offset] ||\n Object.values(library.interfaces)[ref.offset] ||\n Object.values(library.exportedInterfaces)[ref.offset] ||\n Object.values(library.mixins)[ref.offset] ||\n Object.values(library.exportedMixins)[ref.offset]\n );\n}\n\nexport function functionFromRef(\n rootLibraries: Libraries,\n ref: TopLevelItemRef\n): Function | undefined {\n const library = libraryFromRef(rootLibraries, ref.libraryRef);\n if (!library || ref.offset === undefined) {\n return undefined;\n }\n\n return library.functions[ref.offset] || library.exportedFunctions[ref.offset];\n}\n\nexport function methodFromRef(\n rootLibraries: Libraries,\n ref: ClassMemberRef\n): Method | undefined {\n const klass = classFromRef(rootLibraries, ref.classRef);\n if (!klass || ref.offset === undefined) {\n return undefined;\n }\n return klass.methods[ref.offset] || klass.statics[ref.offset];\n}\n\n// URL related functions\n\nexport function getFunctionId(functionName: string, shape?: Shape): string {\n if (!shape) {\n return \"\";\n }\n const shapeString = `${shape.arity},${shape.totalBlockCount},${\n shape.namedBlockCount\n },${shape.names.join(\",\")}`;\n return encodeURIComponent(functionName + \"(\" + shapeString + \")\");\n}\n\nexport function getFieldId(fieldName: string): string {\n return fieldName;\n}\n\nfunction libraryUrl(baseUrl: string, path: string[]): string {\n return baseUrl + \"/\" + path.join(\"/\") + \"/library-summary\";\n}\n\nfunction classUrl(baseUrl: string, path: string[], name: string): string {\n return baseUrl + \"/\" + path.join(\"/\") + \"/class-\" + name;\n}\n\nfunction memberUrl(classUrl: string, id: string): string {\n return classUrl + \"#\" + id;\n}\n\nfunction globalUrl(libraryUrl: string, id: string): string {\n return libraryUrl + \"#\" + id;\n}\n\nexport function topLevelRefToId(ref: TopLevelRef): string {\n return ref.name + \"-\" + ref.path.join(\"/\");\n}\n\nexport function classUrlFromRef(ref: TopLevelItemRef): string {\n return classUrl(ref.libraryRef.baseUrl, ref.libraryRef.path, ref.name);\n}\n\nexport function libraryUrlFromRef(ref: TopLevelRef): string {\n return libraryUrl(ref.baseUrl, ref.path);\n}\n\nexport function functionUrlFromRef(\n rootLibraries: Libraries,\n ref: TopLevelItemRef\n): string {\n const fhunction = functionFromRef(rootLibraries, ref);\n if (!fhunction) {\n return \"/\";\n }\n return globalUrl(\n libraryUrlFromRef(ref.libraryRef),\n getFunctionId(fhunction.name, fhunction.shape)\n );\n}\n\nexport function methodUrlFromRef(\n rootLibraries: Libraries,\n ref: ClassMemberRef\n): string {\n const method = methodFromRef(rootLibraries, ref);\n if (!method) {\n return \"/\";\n }\n return memberUrl(\n classUrlFromRef(ref.classRef),\n getFunctionId(method.name, method.shape)\n );\n}\n\nexport function urlFromLinkRef(ref: LinkRef): string {\n switch (ref.kind) {\n case \"class\":\n return classUrl(ref.baseUrl, ref.path, ref.name);\n case \"constructor\":\n case \"factory\":\n case \"method\":\n case \"static-method\":\n return memberUrl(\n classUrl(ref.baseUrl, ref.path, ref.holder),\n getFunctionId(ref.name, ref.shape)\n );\n case \"field\":\n return memberUrl(\n classUrl(ref.baseUrl, ref.path, ref.holder),\n getFieldId(ref.name)\n );\n case \"global\":\n return globalUrl(libraryUrl(ref.baseUrl, ref.path), ref.name);\n case \"global-method\":\n return globalUrl(\n libraryUrl(ref.baseUrl, ref.path),\n getFunctionId(ref.name, ref.shape)\n );\n case \"parameter\":\n return \"\";\n default:\n return \"\";\n }\n}\n","// Copyright (C) 2024 Toitware ApS.\n// Use of this source code is governed by an MIT-style license that can be\n// found in the LICENSE file.\n\nimport {\n ClassMemberRef,\n LinkRef,\n TopLevelItemRef,\n TopLevelRef,\n} from \"./reference\";\n\nexport type Libraries = { [libraryName: string]: Library };\nexport type Classes = { [className: string]: Class };\n\nexport const CATEGORY_FUNDAMENTAL = \"fundamental\";\nexport const CATEGORY_JUST_THERE = \"just_there\";\nexport const CATEGORY_MISC = \"misc\";\nexport const CATEGORY_SUB = \"sub\";\n\nexport type Category =\n | typeof CATEGORY_FUNDAMENTAL\n | typeof CATEGORY_JUST_THERE\n | typeof CATEGORY_MISC\n | typeof CATEGORY_SUB;\n\nexport const CLASS_KIND_CLASS = \"class\";\nexport const CLASS_KIND_INTERFACE = \"interface\";\nexport const CLASS_KIND_MIXIN = \"mixin\";\n\nexport type ClassKind =\n | typeof CLASS_KIND_CLASS\n | typeof CLASS_KIND_INTERFACE\n | typeof CLASS_KIND_MIXIN;\n\nexport interface Library {\n name: string;\n id: TopLevelRef;\n libraries: Libraries;\n classes: Classes;\n interfaces: Classes;\n mixins: Classes;\n exportedClasses: Classes;\n exportedInterfaces: Classes;\n exportedMixins: Classes;\n globals: Global[];\n exportedGlobals: Global[];\n functions: Function[];\n exportedFunctions: Function[];\n toitdoc?: Doc;\n category: Category;\n}\n\nexport interface Class {\n name: string;\n id: TopLevelItemRef;\n kind: ClassKind;\n extends?: TopLevelItemRef;\n interfaces: TopLevelItemRef[];\n mixins: TopLevelItemRef[];\n fields: Field[];\n constructors: Method[];\n statics: Method[];\n methods: Method[];\n toitdoc?: Doc;\n}\n\nexport interface Global {\n name: string;\n id: TopLevelItemRef;\n toitdoc?: Doc;\n}\n\nexport interface Function {\n name: string;\n id: TopLevelItemRef;\n parameters: Parameter[];\n returnType: Type;\n toitdoc?: Doc;\n shape?: Shape;\n isInherited: boolean;\n}\n\nexport interface Method {\n name: string;\n id: ClassMemberRef;\n parameters: Parameter[];\n returnType: Type;\n toitdoc?: Doc;\n shape?: Shape;\n isInherited: boolean;\n}\n\nexport interface Parameter {\n name: string;\n isBlock: boolean;\n isNamed: boolean;\n isRequired: boolean;\n defaultValue?: string;\n type: Type;\n}\n\nexport interface Field {\n name: string;\n id: ClassMemberRef;\n type: Type;\n toitdoc?: Doc;\n isInherited: boolean;\n}\n\nexport interface Type {\n isNone: boolean;\n isAny: boolean;\n isBlock: boolean;\n reference?: TopLevelItemRef;\n}\n\nexport interface Shape {\n arity: number;\n totalBlockCount: number;\n namedBlockCount: number;\n names: string[];\n}\n\n// Toitdoc related\n\nexport const DOC_STATEMENT_PARAGRAPH = \"DOC_STATEMENT_PARAGRAPH\";\nexport const DOC_STATEMENT_ITEMIZED = \"DOC_STATEMENT_ITEMIZED\";\nexport const DOC_STATEMENT_ITEM = \"DOC_STATEMENT_ITEM\";\nexport const DOC_STATEMENT_CODE_SECTION = \"DOC_STATEMENT_CODE_SECTION\";\nexport const DOC_EXPRESSION_CODE = \"DOC_EXPRESSION_CODE\";\nexport const DOC_EXPRESSION_LINK = \"DOC_EXPRESSION_LINK\";\nexport const DOC_EXPRESSION_TEXT = \"DOC_EXPRESSION_TEXT\";\nexport const DOC_DOCREF = \"DOC_DOCREF\";\n\nexport type Doc = DocSection[];\n\nexport interface DocSection {\n title: string | null;\n level: number;\n statements: DocStatement[];\n}\n\nexport type DocStatement =\n | DocStatementParagraph\n | DocStatementItemized\n | DocStatementCodeSection;\n\nexport interface DocStatementItemized {\n type: typeof DOC_STATEMENT_ITEMIZED;\n items: DocStatementItem[];\n}\n\nexport interface DocStatementItem {\n type: typeof DOC_STATEMENT_ITEM;\n statements: DocStatement[];\n}\n\nexport interface DocStatementCodeSection {\n type: typeof DOC_STATEMENT_CODE_SECTION;\n text: string;\n}\n\nexport interface DocStatementParagraph {\n type: typeof DOC_STATEMENT_PARAGRAPH;\n expressions: DocExpression[];\n}\n\nexport type DocExpression =\n | DocExpressionCode\n | DocExpressionText\n | DocExpressionLink\n | DocRef;\n\nexport interface DocExpressionCode {\n type: typeof DOC_EXPRESSION_CODE;\n text: string;\n}\n\nexport interface DocExpressionText {\n type: typeof DOC_EXPRESSION_TEXT;\n text: string;\n}\n\nexport interface DocExpressionLink {\n type: typeof DOC_EXPRESSION_LINK;\n text: string;\n url: string;\n}\n\nexport interface DocRef {\n type: typeof DOC_DOCREF;\n text: string;\n reference: LinkRef;\n}\n","// Copyright (C) 2024 Toitware ApS.\n// Use of this source code is governed by an MIT-style license that can be\n// found in the LICENSE file.\n\nimport styled from \"@emotion/styled\";\nimport \"codemirror/lib/codemirror.css\";\nimport React from \"react\";\nimport { UnControlled as CodeMirror } from \"react-codemirror2\";\nimport \"../../assets/codemirror/codemirror.css\";\nimport \"../../assets/codemirror/toit\";\n\nconst Wrapper = styled.div`\n .CodeMirror {\n background: #b0b8ed20;\n padding: 1rem;\n border-radius: 1em;\n margin-left: -1rem;\n margin-right: -1rem;\n width: auto;\n }\n`;\n\ninterface CodeBlockProps {\n code: string;\n}\n\nexport default function CodeBlock(props: CodeBlockProps): JSX.Element {\n return (\n \n \n \n );\n}\n","// Copyright (C) 2024 Toitware ApS.\n// Use of this source code is governed by an MIT-style license that can be\n// found in the LICENSE file.\n\nimport React from \"react\";\nimport \"./ExternalLink.css\";\n\nexport default function ExternalLink(props: {\n to: string;\n text: string;\n}): JSX.Element {\n return (\n <>\n \n \n {props.text}\n \n \n \n \n );\n}\n","// Copyright (C) 2020 Toitware ApS.\n// Use of this source code is governed by an MIT-style license that can be\n// found in the LICENSE file.\n\nimport { makeStyles, Typography } from \"@material-ui/core\";\nimport { Variant } from \"@material-ui/core/styles/createTypography\";\nimport React from \"react\";\nimport { HashLink } from \"react-router-hash-link\";\nimport { urlFromLinkRef } from \"../../misc/util\";\nimport {\n Doc,\n DOC_DOCREF,\n DOC_EXPRESSION_CODE,\n DOC_EXPRESSION_LINK,\n DOC_EXPRESSION_TEXT,\n DOC_STATEMENT_CODE_SECTION,\n DOC_STATEMENT_ITEMIZED,\n DOC_STATEMENT_PARAGRAPH,\n DocExpression,\n DocExpressionCode,\n DocExpressionLink,\n DocExpressionText,\n DocRef,\n DocSection,\n DocStatement,\n DocStatementCodeSection,\n DocStatementItem,\n DocStatementItemized,\n DocStatementParagraph,\n} from \"../../model/model\";\nimport CodeBlock from \"../general/CodeBlock\";\nimport ExternalLink from \"../general/ExternalLink\";\n\n// TODO: Pull all format and structure from old printStatements function (structure from old format: https://github.com/toitware/web-toitdocs/blob/e74e3d5478fb3fd350e28f7801d69b7f38a1d563/src/components/toitdoc_info.js#L26)\n\nconst useStyles = makeStyles((theme) => ({\n statementParagraph: { paddingBottom: theme.spacing(1) },\n sectionTitle: {\n paddingTop: theme.spacing(2),\n paddingBottom: theme.spacing(1),\n },\n otherDocRef: {\n fontWeight: 590,\n },\n parameterDocRef: {\n fontWeight: 590,\n },\n}));\n\nfunction StatementCodeSection(props: {\n code: DocStatementCodeSection;\n}): JSX.Element {\n return ;\n}\n\nfunction ExpressionCode(props: { code: DocExpressionCode }): JSX.Element {\n return {props.code.text};\n}\n\nfunction ExpressionText(props: { text: DocExpressionText }): JSX.Element {\n return {props.text.text};\n}\n\nfunction ExpressionLink(props: { link: DocExpressionLink }): JSX.Element {\n return (\n \n {props.link.text}\n \n );\n}\n\nfunction StatementItemized(props: {\n itemized: DocStatementItemized;\n}): JSX.Element {\n return (\n
    \n {props.itemized.items.map((item: DocStatementItem) =>\n item.statements.map((statement, index) => (\n
  • \n \n
  • \n ))\n )}\n
\n );\n}\n\nfunction StatementParagraph(props: {\n statement: DocStatementParagraph;\n isHeader?: boolean;\n}): JSX.Element {\n const classes = useStyles();\n return (\n
\n {props.statement.expressions.map((expr: DocExpression, index: number) => (\n \n ))}\n
\n );\n}\n\nfunction ToitdocRef(props: { reference: DocRef }): JSX.Element {\n const classes = useStyles();\n const url = urlFromLinkRef(props.reference.reference);\n if (!url) {\n let className: string;\n switch (props.reference.reference.kind) {\n case \"parameter\":\n className = classes.parameterDocRef;\n break;\n default:\n className = classes.otherDocRef;\n }\n return {props.reference.text};\n }\n if (props.reference.reference.baseUrl !== \"\") {\n return ;\n }\n return {props.reference.text};\n}\n\nfunction Expression(props: { expression: DocExpression }): JSX.Element {\n const expression = props.expression;\n switch (expression.type) {\n case DOC_EXPRESSION_CODE:\n return ;\n case DOC_EXPRESSION_TEXT:\n return ;\n case DOC_EXPRESSION_LINK:\n return ;\n case DOC_DOCREF:\n return ;\n default:\n throw Error(\"unhandled expression: \" + expression);\n }\n}\n\nfunction Statement(props: {\n statement: DocStatement;\n isHeader?: boolean;\n}): JSX.Element {\n const statement = props.statement;\n switch (statement.type) {\n case DOC_STATEMENT_PARAGRAPH:\n return (\n \n );\n case DOC_STATEMENT_CODE_SECTION:\n return ;\n case DOC_STATEMENT_ITEMIZED:\n return ;\n default:\n throw Error(\"unhandled statement: \" + statement);\n }\n}\n\nfunction Section(props: { section: DocSection }): JSX.Element {\n const classes = useStyles();\n let level = props.section.level;\n if (level > 2) level = 2;\n const variant = (\"h\" + (props.section.level + 4)) as Variant;\n return (\n <>\n \n {props.section.title}\n \n {props.section.statements.map((statement, index) => (\n \n ))}\n \n );\n}\n\nfunction headerToitdoc(toitdoc?: Doc): DocStatement | undefined {\n if (!toitdoc) return toitdoc;\n if (toitdoc.length === 0) return undefined;\n const first = toitdoc[0];\n const statements = first.statements;\n if (statements.length === 0) return undefined;\n return statements[0];\n}\n\n// Function that prints the content of currently presented element.\nfunction Toitdocs(props: {\n value?: Doc;\n headerOnly?: boolean;\n}): JSX.Element | null {\n if (props.headerOnly) {\n const statement = headerToitdoc(props.value);\n if (!statement) return null;\n return (\n \n );\n }\n const value = props.value;\n if (!value) {\n return null;\n }\n return (\n <>\n {value.map((section, index) => (\n
\n ))}\n \n );\n}\n\nexport default Toitdocs;\n","// Copyright (C) 2021 Toitware ApS.\n// Use of this source code is governed by an MIT-style license that can be\n// found in the LICENSE file.\n\nimport { Theme, Typography } from \"@material-ui/core\";\nimport {\n createStyles,\n StyleRules,\n withStyles,\n WithStyles,\n} from \"@material-ui/core/styles\";\nimport React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { libraryUrlFromRef } from \"../../misc/util\";\nimport {\n CATEGORY_FUNDAMENTAL,\n CATEGORY_JUST_THERE,\n CATEGORY_MISC,\n Libraries,\n Library,\n} from \"../../model/model\";\nimport Toitdocs from \"../doc/Toitdocs\";\n\nconst styles = (theme: Theme): StyleRules =>\n createStyles({\n section: {\n paddingTop: theme.spacing(2),\n paddingBottom: theme.spacing(0.5),\n },\n libList: {\n \"column-count\": 2,\n \"column-gap\": theme.spacing(2),\n },\n libEntry: {\n paddingBottom: theme.spacing(1),\n \"break-inside\": \"avoid-column\",\n },\n toitdoc: {\n paddingTop: theme.spacing(0.3),\n },\n });\n\nexport interface SummaryViewProps extends WithStyles {\n libraries: Libraries;\n}\n\nclass SummaryView extends React.PureComponent {\n render(): JSX.Element {\n const fundamentals: Array = [];\n const justThere: Array = [];\n const misc: Array = [];\n Object.values(this.props.libraries).forEach((lib) => {\n switch (lib.category) {\n case CATEGORY_FUNDAMENTAL:\n fundamentals.push(lib);\n break;\n case CATEGORY_JUST_THERE:\n justThere.push(lib);\n break;\n case CATEGORY_MISC:\n misc.push(lib);\n break;\n }\n });\n\n const classes = this.props.classes;\n\n const renderSection = (\n array: Array,\n name?: string\n ): JSX.Element => {\n return (\n
\n {name && (\n \n {name}\n \n )}\n
\n {array.map((lib) => (\n
\n {lib.name}\n {lib.toitdoc && (\n
\n \n
\n )}\n
\n ))}\n
\n
\n );\n };\n\n // Shortcut if the viewer is used for non-core libraries in which\n // case there should only be misc libraries.\n if (fundamentals.length === 0 && justThere.length === 0) {\n return renderSection(misc);\n }\n return (\n <>\n {renderSection(fundamentals, \"Fundamental\")}\n {renderSection(justThere, \"Framework\")}\n {renderSection(misc, \"Misc\")}\n \n );\n }\n}\n\nexport default withStyles(styles)(SummaryView);\n","// Copyright (C) 2021 Toitware ApS.\n// Use of this source code is governed by an MIT-style license that can be\n// found in the LICENSE file.\n\nimport { connect } from \"react-redux\";\nimport SummaryView, {\n SummaryViewProps,\n} from \"../../components/main/SummaryView\";\nimport { RootState } from \"../../redux/doc\";\n\nconst mapStateToProps = (\n state: RootState\n): Pick => {\n return {\n libraries: state.doc.libraries || {},\n };\n};\n\nexport default connect(mapStateToProps)(SummaryView);\n","// Copyright (C) 2020 Toitware ApS.\n// Use of this source code is governed by an MIT-style license that can be\n// found in the LICENSE file.\n\nimport {\n createStyles,\n StyleRules,\n Theme,\n Typography,\n withStyles,\n WithStyles,\n} from \"@material-ui/core\";\nimport React from \"react\";\nimport Summary from \"../../containers/main/Summary\";\nimport CodeBlock from \"../general/CodeBlock\";\n\nconst styles = (theme: Theme): StyleRules =>\n createStyles({\n header: {\n paddingBottom: theme.spacing(4),\n },\n section: {\n paddingBottom: theme.spacing(2),\n },\n packages: {\n paddingBottom: theme.spacing(1),\n },\n });\n\ntype WelcomePageProps = WithStyles;\n\nclass WelcomePage extends React.PureComponent {\n render(): JSX.Element {\n return (\n <>\n \n Toit standard libraries\n \n \n Welcome to the standard libraries for the Toit programming language.\n The Toit SDK contains a vast amount of libraries, ready-to use classes\n and functionalities that allow a fast and easy use of Toit. This\n documentation contains the structure of the Toit libraries.\n \n \n Except for the core library, you must import a library before\n you can use it. Here is an example of how to do it:\n \n \n \n
\n \n Packages\n \n \n Additional libraries are distributed as packages. You can find them\n at pkg.toit.io.\n \n
\n \n );\n }\n}\n\nexport default withStyles(styles)(WelcomePage);\n","// Copyright (C) 2024 Toitware ApS.\n// Use of this source code is governed by an MIT-style license that can be\n// found in the LICENSE file.\n\nimport { createStyles, Theme } from \"@material-ui/core\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { libraryUrlFromRef, topLevelRefToId } from \"../../misc/util\";\nimport { Library } from \"../../model/model\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n subLibraries: {\n paddingLeft: theme.spacing(1),\n },\n openLibrary: {\n color: `${theme.palette.primary.main} !important`,\n },\n })\n);\n\nexport type LibraryNavigationProps = {\n library: Library;\n openLibrary: string;\n};\n\nconst LibraryNavigation: React.FC = ({\n library,\n openLibrary,\n}: LibraryNavigationProps) => {\n const classes = useStyles();\n const showSubLibraries = openLibrary?.split(\"/\")[0] === library.name;\n const openSubLibrary = openLibrary?.split(\"/\").slice(1).join(\"/\");\n return (\n
\n \n {library.name}\n \n {showSubLibraries && (\n
\n {Object.values(library.libraries)\n .sort((a, b) => a.name.localeCompare(b.name))\n .map((subLibrary) => (\n \n ))}\n
\n )}\n
\n );\n};\n\nexport default LibraryNavigation;\n","// Copyright (C) 2024 Toitware ApS.\n// Use of this source code is governed by an MIT-style license that can be\n// found in the LICENSE file.\n\nimport styled from \"@emotion/styled\";\nimport { Typography } from \"@material-ui/core\";\nimport React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Link, RouteComponentProps } from \"react-router-dom\";\nimport logo from \"../../assets/images/logo.svg\";\nimport { Libraries } from \"../../model/model\";\nimport { RootState } from \"../../redux/doc\";\nimport LibraryNavigation from \"./LibraryNavigation\";\n\nconst Wrapper = styled.div`\n background: ${({ theme }) => theme.palette.background.default};\n width: 100%;\n height: 100%;\n overflow-y: scroll;\n padding: 3rem;\n a {\n color: ${({ theme }) => theme.palette.text.primary};\n text-decoration: none;\n display: block;\n margin: 0.5rem 0;\n }\n`;\n\nconst Title = styled.div`\n margin-bottom: 3rem;\n`;\n\nexport type NavigationParams = {\n libraryName: string;\n};\n\nexport type NavigationProps = {\n className?: string;\n} & RouteComponentProps;\n\nconst NavigationView: React.FC = ({\n location,\n match,\n className,\n}: NavigationProps) => {\n const libraries = useSelector(\n (state) => state.doc.libraries || {}\n );\n\n return (\n \n \n \"Toit\"\n \n \n <Typography variant=\"h5\">Libraries</Typography>\n \n {Object.values(libraries)\n .sort((a, b) => a.name.localeCompare(b.name))\n .map((subLibrary) => (\n \n ))}\n \n );\n};\n\nexport default NavigationView;\n","// Copyright (C) 2024 Toitware ApS.\n// Use of this source code is governed by an MIT-style license that can be\n// found in the LICENSE file.\n\nimport { ThemeProvider as EmotionThemeProvider } from \"@emotion/react\";\nimport {\n Theme,\n ThemeProvider as MaterialThemeProvider,\n} from \"@material-ui/core/styles\";\nimport React from \"react\";\n\ntype ThemeProviderProps = React.PropsWithChildren<{\n theme: Theme;\n}>;\n\n/**\n * A simple helper component, that sets the theme for both, material-ui and\n * emotion.\n */\nexport function ThemeProvider({\n theme,\n children,\n}: ThemeProviderProps): JSX.Element {\n return (\n \n {children}\n \n );\n}\n\nexport default ThemeProvider;\n","// Copyright (C) 2024 Toitware ApS.\n// Use of this source code is governed by an MIT-style license that can be\n// found in the LICENSE file.\n\nimport styled from \"@emotion/styled\";\nimport { Divider, makeStyles, Typography } from \"@material-ui/core\";\nimport React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { HashLink } from \"react-router-hash-link\";\nimport { Doc } from \"../../model/model\";\nimport Toitdocs from \"../doc/Toitdocs\";\n\ninterface DetailsListProps {\n title: string;\n elements: {\n name: string;\n description: JSX.Element;\n key: string;\n id: string;\n toitdoc?: Doc;\n toitdocHeaderOnly?: boolean;\n link?: string;\n isInherited: boolean;\n }[];\n}\n\nconst useStyles = makeStyles((theme) => ({\n details: { paddingBottom: theme.spacing(3) },\n title: {\n paddingTop: theme.spacing(2),\n paddingBottom: theme.spacing(1),\n },\n element: {\n paddingTop: theme.spacing(2),\n paddingBottom: theme.spacing(2),\n },\n toitdoc: {\n paddingTop: theme.spacing(1),\n },\n divider: {\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n },\n}));\n\nconst Signature = styled.div`\n font-family: \"Roboto mono\", monospace;\n font-size: 1.125em;\n`;\nconst SignatureName = styled.span`\n font-weight: bold;\n`;\n\nfunction name(name: string, id: string, link?: string): JSX.Element {\n if (link) {\n return {name};\n } else {\n return {name};\n }\n}\n\nexport default function DetailsList(props: DetailsListProps): JSX.Element {\n const classes = useStyles();\n return (\n
\n
\n {props.title}\n
\n {props.elements\n .concat([])\n .sort((a, b) => a.name.localeCompare(b.name))\n .map((element, i) => {\n return (\n
\n
\n \n \n {name(element.name, element.id, element.link)}\n {\" \"}\n {element.description}\n \n {element.isInherited && inherited}\n {element.toitdoc && (\n
\n \n
\n )}\n
\n \n
\n );\n })}\n
\n );\n}\n","// Copyright (C) 2024 Toitware ApS.\n// Use of this source code is governed by an MIT-style license that can be\n// found in the LICENSE file.\n\nimport React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { classUrlFromRef } from \"../../misc/util\";\nimport { Type } from \"../../model/model\";\nimport { TopLevelItemRef } from \"../../model/reference\";\nimport ExternalLink from \"../general/ExternalLink\";\n\ninterface TypeProps {\n type: Type;\n}\n\nexport class TypeView extends Component {\n render(): JSX.Element {\n const type = this.props.type;\n if (type.isNone) {\n return none;\n }\n if (type.isAny) {\n return any;\n }\n if (type.isBlock) {\n return [block];\n }\n if (type.reference) {\n return ;\n }\n return <>;\n }\n}\n\ninterface TypeReferenceProps {\n reference: TopLevelItemRef;\n}\n\nexport class TypeReference extends Component {\n render(): JSX.Element {\n const url = classUrlFromRef(this.props.reference);\n const name = this.props.reference.name;\n if (this.props.reference.libraryRef.baseUrl !== \"\") {\n return ;\n }\n return {name};\n }\n}\n","// Copyright (C) 2024 Toitware ApS.\n// Use of this source code is governed by an MIT-style license that can be\n// found in the LICENSE file.\n\nimport React from \"react\";\nimport { getFieldId } from \"../../misc/util\";\nimport { Field } from \"../../model/model\";\nimport DetailsList from \"../general/DetailsList\";\nimport { TypeView } from \"./Type\";\n\ninterface FieldsProps {\n fields: Field[];\n}\n\nexport default function Fields(props: FieldsProps): JSX.Element {\n return (\n {\n return {\n name: field.name,\n description: (\n <>\n / \n \n ),\n key: \"field_\" + i,\n id: getFieldId(field.name),\n toitdoc: field.toitdoc,\n isInherited: field.isInherited,\n };\n })}\n />\n );\n}\n","// Copyright (C) 2020 Toitware ApS.\n// Use of this source code is governed by an MIT-style license that can be\n// found in the LICENSE file.\n\nimport { makeStyles } from \"@material-ui/core\";\nimport { ClassNameMap } from \"@material-ui/core/styles/withStyles\";\nimport React from \"react\";\nimport { getFunctionId } from \"../../misc/util\";\nimport { Function, Method, Parameter, Type } from \"../../model/model\";\nimport DetailsList from \"../general/DetailsList\";\nimport { TypeView } from \"./Type\";\n\nconst useStyles = makeStyles((theme) => ({\n defaultValue: { fontSize: \"0.875em\" },\n}));\n\ninterface FunctionsProps {\n functions: (Function | Method)[];\n title: string;\n hideReturnTypes?: boolean;\n}\n\nexport function getDescription(\n parameters: Parameter[],\n returnType?: Type,\n hideReturnTypes?: boolean,\n includeDefaultValues?: boolean,\n classes?: ClassNameMap<\"defaultValue\">\n): JSX.Element {\n return (\n <>\n {parameters.map((parameter, i) => {\n let param = parameter.name;\n if (parameter.isNamed) {\n param = \"--\" + param;\n }\n if (parameter.isBlock) {\n param = \"[\" + param + \"] \";\n return param;\n }\n return (\n \n {param + \"/\"}\n \n {!parameter.isRequired && (\n <>\n {\"=\"}\n {includeDefaultValues && (\n \n {parameter.defaultValue}\n \n )}{\" \"}\n \n )}{\" \"}\n \n );\n })}\n {!hideReturnTypes && returnType && (\n <>\n {\" -> \"}\n \n \n )}\n \n );\n}\n\nexport default function Functions(props: FunctionsProps): JSX.Element {\n const classes = useStyles();\n return (\n {\n const id = getFunctionId(fn.name, fn.shape);\n return {\n name: fn.name,\n description: getDescription(\n fn.parameters,\n fn.returnType,\n props.hideReturnTypes,\n true,\n classes\n ),\n key: \"function\" + i,\n id: id,\n toitdoc: fn.toitdoc,\n isInherited: fn.isInherited,\n };\n })}\n />\n );\n}\n","// Copyright (C) 2024 Toitware ApS.\n// Use of this source code is governed by an MIT-style license that can be\n// found in the LICENSE file.\n\nimport {\n Box,\n createStyles,\n StyleRules,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableRow,\n Theme,\n withStyles,\n WithStyles,\n} from \"@material-ui/core\";\nimport React, { Component } from \"react\";\nimport { HashLink } from \"react-router-hash-link\";\nimport { getFunctionId } from \"../../misc/util\";\nimport { Field, Function, Method } from \"../../model/model\";\nimport { getDescription } from \"../doc/Functions\";\nimport Toitdocs from \"../doc/Toitdocs\";\nimport { TypeView } from \"../doc/Type\";\n\nconst styles = (theme: Theme): StyleRules =>\n createStyles({\n methodsTable: {\n marginTop: theme.spacing(1),\n },\n });\n\ninterface TablePanelGenProps {\n children?: React.ReactNode;\n index: number;\n value: number;\n}\n\nfunction TablePanelGen(props: TablePanelGenProps): JSX.Element {\n const { children, value, index, ...other } = props;\n\n return (\n