{"version":3,"sources":["webpack://typescriptlang-org/./src/lib/documentationNavigation.ts","webpack://typescriptlang-org/./src/components/layout/Sidebar-keyboard.tsx","webpack://typescriptlang-org/./src/components/layout/Sidebar.tsx","webpack://typescriptlang-org/./src/components/handbook/NextPrev.tsx","webpack://typescriptlang-org/./src/components/handbook/Contributors.tsx","webpack://typescriptlang-org/./src/templates/scripts/setupSubNavigationSidebar.ts","webpack://typescriptlang-org/./src/components/svgs/documentation.tsx","webpack://typescriptlang-org/./src/components/Popup.tsx","webpack://typescriptlang-org/./src/templates/documentation.tsx","webpack://typescriptlang-org/./src/templates/scripts/setupLikeDislikeButtons.ts","webpack://typescriptlang-org/../node_modules/gatsby/node_modules/babel-loader/lib/node_modules/github-slugger/index.js","webpack://typescriptlang-org/../node_modules/gatsby/node_modules/babel-loader/lib/node_modules/github-slugger/node_modules/emoji-regex/index.js"],"names":["getDocumentationNavForLanguage","langRequest","navigations","title","oneline","id","chronological","items","permalink","includes","childOfType","tag","element","found","children","e","nodeName","toUpperCase","onAnchorKeyDown","event","li","getTagFromParents","target","keyCode","aboveLI","previousElementSibling","a","button","focus","classList","contains","lastLI","lastElementChild","sectionHostingLI","preventDefault","belowLI","nextElementSibling","nextLI","onButtonKeydown","firstElementChild","key","remove","add","closedChevron","fill","height","viewBox","width","xmlns","d","stroke","strokeWidth","openChevron","root","parent","parentElement","Error","toggleNavigationSection","SidebarToggleButton","onClick","navSidebar","document","getElementById","Sidebar","props","useEffect","querySelectorAll","forEach","f","RenderItem","item","hostsSelected","findSelected","selectedID","classes","forceOpen","openAllSectionsExceptWhatsNew","push","opened","closed","aria","className","join","onKeyDown","map","href","Link","to","navItems","Row","NextPrev","prev","next","childMarkdownRemark","frontmatter","LinkSection","i","data","InltLink","IntlLink","type","EmptyLink","rel","Section","sKey","Contributors","attrPath","path","replace","page","attribution","repoPageURL","Date","lastEdited","Intl","DateTimeFormat","lang","year","month","day","format","t","window","performance","mozPerformance","msPerformance","webkitPerformance","timing","pageLoadIndicator","querySelector","innerHTML","start","navigationStart","loadTime","domInteractive","style","padding","marginTop","Avatars","showRest","total","top","length","grav","gravatar","startsWith","alt","name","count","chars","split","dp","substr","src","updateSidebarOnScroll","currentPossibleAnchor","subnavLinks","fromTop","scrollY","link","section","decodeURIComponent","hash","offsetTop","error","LikeUnfilledSVG","DislikeUnfilledSVG","Popup","left","position","opacity","show","url","dangerouslySetInnerHTML","__html","html","HandbookTemplate","post","markdownRemark","console","log","JSON","stringify","showPopup","enterTimeoutId","leaveTimeoutId","useState","setShowPopup","handleLinkMouseEnter","clearTimeout","getAttribute","rect","getBoundingClientRect","setTimeout","args","prevProps","x","bottom","handleLinkMouseLeave","handlePopupMouseEnter","handlePopupMouseLeave","aTags","getElementsByTagName","links","test","addEventListener","popupEl","el","removeEventListener","fetch","response","json","configType","indexOf","fetchHTML","useQuickInfoPopup","pageContext","deprecated_by","deprecationURL","setDeprecationURL","createInternational","useIntl","createIntlLink","location","redirects","deprecation_redirects","indexOfHash","slice","scrollIntoView","behavior","block","passive","capture","slug","likeButton","dislikeButton","clicked","eventName","appInsights","trackEvent","properties","ab","newContent","textSectionNav","popoverPopup","onclick","likeButtonPopup","dislikeButtonPopup","body","documentElement","Math","max","scrollHeight","offsetHeight","clientHeight","bottomOfWindow","pageYOffset","innerHeight","popup","nav","popupOpacity","display","navOpacity","setupLikeDislikeButtons","sidebarHeaders","headings","filter","h","depth","showSidebar","disable_toc","showExperimental","experimental","showSidebarHeadings","navigation","prefix","handbook","slugger","description","role","Helmet","cx","cy","r","preamble","heading","value","repoPath","modifiedTime","locale","emoji","module","exports","BananaSlug","own","Object","hasOwnProperty","whitespace","specials","this","reset","string","maintainCase","toLowerCase","trim","prototype","self","originalSlug","call","occurrences","create"],"mappings":"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","file":"component---src-templates-documentation-tsx-168e9243818b5118586a.js","sourcesContent":["/* This function is completely auto-generated via the `yarn bootstrap` phase of\n the app. You can re-run it when adding new localized handbook pages by running:\n\n yarn workspace documentation create-handbook-nav\n\n Find the source of truth at packages/documentation/scripts/generateDocsNavigationPerLanguage.js\n*/\n\nimport type { SidebarNavItem } from \"./documentationNavigationUtils\";\n\nexport function getDocumentationNavForLanguage(\n langRequest: string\n): SidebarNavItem[] {\n const langs = [\"en\"];\n const lang = langs.includes(langRequest) ? langRequest : \"en\";\n const navigations: Record = {};\n\n navigations.en = [\n {\n title: \"Get Started\",\n oneline: \"Quick introductions based on your background or preference.\",\n id: \"get-started\",\n chronological: false,\n\n items: [\n {\n title: \"TS for the New Programmer\",\n id: \"0-typescript-for-the-new-programmer\",\n permalink: \"/docs/handbook/typescript-from-scratch.html\",\n oneline: \"Learn TypeScript from scratch\",\n },\n {\n title: \"TypeScript for JS Programmers\",\n id: \"0-typescript-for-javascript-programmers\",\n permalink: \"/docs/handbook/typescript-in-5-minutes.html\",\n oneline: \"Learn how TypeScript extends JavaScript\",\n },\n {\n title: \"TS for Java/C# Programmers\",\n id: \"0-typescript-for-java/c#-programmers\",\n permalink: \"/docs/handbook/typescript-in-5-minutes-oop.html\",\n oneline:\n \"Learn TypeScript if you have a background in object-oriented languages\",\n },\n {\n title: \"TS for Functional Programmers\",\n id: \"0-typescript-for-functional-programmers\",\n permalink: \"/docs/handbook/typescript-in-5-minutes-func.html\",\n oneline:\n \"Learn TypeScript if you have a background in functional programming\",\n },\n {\n title: \"TypeScript Tooling in 5 minutes\",\n id: \"0-typescript-tooling-in-5-minutes\",\n permalink: \"/docs/handbook/typescript-tooling-in-5-minutes.html\",\n oneline:\n \"A tutorial to understand how to create a small website with TypeScript\",\n },\n ],\n },\n {\n title: \"Handbook\",\n oneline: \"A great first read for your daily TS work.\",\n id: \"handbook\",\n chronological: true,\n\n items: [\n {\n title: \"The TypeScript Handbook\",\n id: \"1-the-typescript-handbook\",\n permalink: \"/docs/handbook/intro.html\",\n oneline: \"Your first step to learn TypeScript\",\n },\n {\n title: \"The Basics\",\n id: \"1-the-basics\",\n permalink: \"/docs/handbook/2/basic-types.html\",\n oneline: \"Step one in learning TypeScript: The basic types.\",\n },\n {\n title: \"Everyday Types\",\n id: \"1-everyday-types\",\n permalink: \"/docs/handbook/2/everyday-types.html\",\n oneline: \"The language primitives.\",\n },\n {\n title: \"Narrowing\",\n id: \"1-narrowing\",\n permalink: \"/docs/handbook/2/narrowing.html\",\n oneline:\n \"Understand how TypeScript uses JavaScript knowledge to reduce the amount of type syntax in your projects.\",\n },\n {\n title: \"More on Functions\",\n id: \"1-more-on-functions\",\n permalink: \"/docs/handbook/2/functions.html\",\n oneline: \"Learn about how Functions work in TypeScript.\",\n },\n {\n title: \"Object Types\",\n id: \"1-object-types\",\n permalink: \"/docs/handbook/2/objects.html\",\n oneline: \"How TypeScript describes the shapes of JavaScript objects.\",\n },\n {\n title: \"Type Manipulation\",\n id: \"1-type-manipulation\",\n oneline: \"undefined\",\n chronological: true,\n\n items: [\n {\n title: \"Creating Types from Types\",\n id: \"1-creating-types-from-types\",\n permalink: \"/docs/handbook/2/types-from-types.html\",\n oneline:\n \"An overview of the ways in which you can create more types from existing types.\",\n },\n {\n title: \"Generics\",\n id: \"1-generics\",\n permalink: \"/docs/handbook/2/generics.html\",\n oneline: \"Types which take parameters\",\n },\n {\n title: \"Keyof Type Operator\",\n id: \"1-keyof-type-operator\",\n permalink: \"/docs/handbook/2/keyof-types.html\",\n oneline: \"Using the keyof operator in type contexts.\",\n },\n {\n title: \"Typeof Type Operator\",\n id: \"1-typeof-type-operator\",\n permalink: \"/docs/handbook/2/typeof-types.html\",\n oneline: \"Using the typeof operator in type contexts.\",\n },\n {\n title: \"Indexed Access Types\",\n id: \"1-indexed-access-types\",\n permalink: \"/docs/handbook/2/indexed-access-types.html\",\n oneline: \"Using Type['a'] syntax to access a subset of a type.\",\n },\n {\n title: \"Conditional Types\",\n id: \"1-conditional-types\",\n permalink: \"/docs/handbook/2/conditional-types.html\",\n oneline:\n \"Create types which act like if statements in the type system.\",\n },\n {\n title: \"Mapped Types\",\n id: \"1-mapped-types\",\n permalink: \"/docs/handbook/2/mapped-types.html\",\n oneline: \"Generating types by re-using an existing type.\",\n },\n {\n title: \"Template Literal Types\",\n id: \"1-template-literal-types\",\n permalink: \"/docs/handbook/2/template-literal-types.html\",\n oneline:\n \"Generating mapping types which change properties via template literal strings.\",\n },\n ],\n },\n {\n title: \"Classes\",\n id: \"1-classes\",\n permalink: \"/docs/handbook/2/classes.html\",\n oneline: \"How classes work in TypeScript\",\n },\n {\n title: \"Modules\",\n id: \"1-modules\",\n permalink: \"/docs/handbook/2/modules.html\",\n oneline:\n \"How JavaScript handles communicating across file boundaries.\",\n },\n ],\n },\n {\n title: \"Reference\",\n oneline: \"Deep dive reference materials.\",\n id: \"reference\",\n chronological: false,\n\n items: [\n {\n title: \"Utility Types\",\n id: \"2-utility-types\",\n permalink: \"/docs/handbook/utility-types.html\",\n oneline: \"Types which are globally included in TypeScript\",\n },\n {\n title: \"Cheat Sheets\",\n id: \"2-cheat-sheets\",\n permalink: \"/cheatsheets\",\n oneline: \"Syntax overviews for common code\",\n },\n {\n title: \"Decorators\",\n id: \"2-decorators\",\n permalink: \"/docs/handbook/decorators.html\",\n oneline: \"TypeScript Decorators overview\",\n },\n {\n title: \"Declaration Merging\",\n id: \"2-declaration-merging\",\n permalink: \"/docs/handbook/declaration-merging.html\",\n oneline: \"How merging namespaces and interfaces works\",\n },\n {\n title: \"Enums\",\n id: \"2-enums\",\n permalink: \"/docs/handbook/enums.html\",\n oneline: \"How TypeScript enums work\",\n },\n {\n title: \"Iterators and Generators\",\n id: \"2-iterators-and-generators\",\n permalink: \"/docs/handbook/iterators-and-generators.html\",\n oneline: \"How Iterators and Generators work in TypeScript\",\n },\n {\n title: \"JSX\",\n id: \"2-jsx\",\n permalink: \"/docs/handbook/jsx.html\",\n oneline: \"Using JSX with TypeScript\",\n },\n {\n title: \"Mixins\",\n id: \"2-mixins\",\n permalink: \"/docs/handbook/mixins.html\",\n oneline: \"Using the mixin pattern with TypeScript\",\n },\n {\n title: \"ECMAScript Modules in Node.js\",\n id: \"2-ecmascript-modules-in-node.js\",\n permalink: \"/docs/handbook/esm-node.html\",\n oneline: \"Using ECMAScript Modules in Node.js\",\n },\n {\n title: \"Modules\",\n id: \"2-modules\",\n permalink: \"/docs/handbook/modules.html\",\n oneline: \"How modules work in TypeScript\",\n },\n {\n title: \"Module Resolution\",\n id: \"2-module-resolution\",\n permalink: \"/docs/handbook/module-resolution.html\",\n oneline: \"How TypeScript resolves modules in JavaScript\",\n },\n {\n title: \"Namespaces\",\n id: \"2-namespaces\",\n permalink: \"/docs/handbook/namespaces.html\",\n oneline: \"How TypeScript namespaces work\",\n },\n {\n title: \"Namespaces and Modules\",\n id: \"2-namespaces-and-modules\",\n permalink: \"/docs/handbook/namespaces-and-modules.html\",\n oneline:\n \"How to organize code in TypeScript via modules or namespaces\",\n },\n {\n title: \"Symbols\",\n id: \"2-symbols\",\n permalink: \"/docs/handbook/symbols.html\",\n oneline: \"Using the JavaScript Symbol primitive in TypeScript\",\n },\n {\n title: \"Triple-Slash Directives\",\n id: \"2-triple-slash-directives\",\n permalink: \"/docs/handbook/triple-slash-directives.html\",\n oneline: \"How to use triple slash directives in TypeScript\",\n },\n {\n title: \"Type Compatibility\",\n id: \"2-type-compatibility\",\n permalink: \"/docs/handbook/type-compatibility.html\",\n oneline: \"How type-checking works in TypeScript\",\n },\n {\n title: \"Type Inference\",\n id: \"2-type-inference\",\n permalink: \"/docs/handbook/type-inference.html\",\n oneline: \"How code flow analysis works in TypeScript\",\n },\n {\n title: \"Variable Declaration\",\n id: \"2-variable-declaration\",\n permalink: \"/docs/handbook/variable-declarations.html\",\n oneline: \"How TypeScript handles variable declaration\",\n },\n ],\n },\n {\n title: \"Tutorials\",\n oneline: \"Using TypeScript in several environments.\",\n id: \"tutorials\",\n chronological: false,\n\n items: [\n {\n title: \"ASP.NET Core\",\n id: \"3-asp.net-core\",\n permalink: \"/docs/handbook/asp-net-core.html\",\n oneline: \"Using TypeScript in ASP.NET Core\",\n },\n {\n title: \"Gulp\",\n id: \"3-gulp\",\n permalink: \"/docs/handbook/gulp.html\",\n oneline: \"Using TypeScript with Gulp\",\n },\n {\n title: \"DOM Manipulation\",\n id: \"3-dom-manipulation\",\n permalink: \"/docs/handbook/dom-manipulation.html\",\n oneline: \"Using the DOM with TypeScript\",\n },\n {\n title: \"Migrating from JavaScript\",\n id: \"3-migrating-from-javascript\",\n permalink: \"/docs/handbook/migrating-from-javascript.html\",\n oneline: \"How to migrate from JavaScript to TypeScript\",\n },\n {\n title: \"Using Babel with TypeScript\",\n id: \"3-using-babel-with-typescript\",\n permalink: \"/docs/handbook/babel-with-typescript.html\",\n oneline: \"How to create a hybrid Babel + TypeScript project\",\n },\n ],\n },\n {\n title: \"What's New\",\n oneline:\n \"Find out how TypeScript has evolved and what's new in the releases.\",\n id: \"what's-new\",\n chronological: false,\n\n items: [\n {\n title: \"Overview\",\n id: \"4-overview\",\n permalink: \"/docs/handbook/release-notes/overview.html\",\n oneline: \"All TypeScript release notes\",\n },\n {\n title: \"TypeScript 4.8\",\n id: \"4-typescript-4.8\",\n permalink: \"/docs/handbook/release-notes/typescript-4-8.html\",\n oneline: \"TypeScript 4.8 Release Notes\",\n },\n {\n title: \"TypeScript 4.7\",\n id: \"4-typescript-4.7\",\n permalink: \"/docs/handbook/release-notes/typescript-4-7.html\",\n oneline: \"TypeScript 4.7 Release Notes\",\n },\n {\n title: \"TypeScript 4.6\",\n id: \"4-typescript-4.6\",\n permalink: \"/docs/handbook/release-notes/typescript-4-6.html\",\n oneline: \"TypeScript 4.6 Release Notes\",\n },\n {\n title: \"TypeScript 4.5\",\n id: \"4-typescript-4.5\",\n permalink: \"/docs/handbook/release-notes/typescript-4-5.html\",\n oneline: \"TypeScript 4.5 Release Notes\",\n },\n {\n title: \"TypeScript 4.4\",\n id: \"4-typescript-4.4\",\n permalink: \"/docs/handbook/release-notes/typescript-4-4.html\",\n oneline: \"TypeScript 4.4 Release Notes\",\n },\n {\n title: \"TypeScript 4.3\",\n id: \"4-typescript-4.3\",\n permalink: \"/docs/handbook/release-notes/typescript-4-3.html\",\n oneline: \"TypeScript 4.3 Release Notes\",\n },\n {\n title: \"TypeScript 4.2\",\n id: \"4-typescript-4.2\",\n permalink: \"/docs/handbook/release-notes/typescript-4-2.html\",\n oneline: \"TypeScript 4.2 Release Notes\",\n },\n {\n title: \"TypeScript 4.1\",\n id: \"4-typescript-4.1\",\n permalink: \"/docs/handbook/release-notes/typescript-4-1.html\",\n oneline: \"TypeScript 4.1 Release Notes\",\n },\n {\n title: \"TypeScript 4.0\",\n id: \"4-typescript-4.0\",\n permalink: \"/docs/handbook/release-notes/typescript-4-0.html\",\n oneline: \"TypeScript 4.0 Release Notes\",\n },\n {\n title: \"TypeScript 3.9\",\n id: \"4-typescript-3.9\",\n permalink: \"/docs/handbook/release-notes/typescript-3-9.html\",\n oneline: \"TypeScript 3.9 Release Notes\",\n },\n {\n title: \"TypeScript 3.8\",\n id: \"4-typescript-3.8\",\n permalink: \"/docs/handbook/release-notes/typescript-3-8.html\",\n oneline: \"TypeScript 3.8 Release Notes\",\n },\n {\n title: \"TypeScript 3.7\",\n id: \"4-typescript-3.7\",\n permalink: \"/docs/handbook/release-notes/typescript-3-7.html\",\n oneline: \"TypeScript 3.7 Release Notes\",\n },\n {\n title: \"TypeScript 3.6\",\n id: \"4-typescript-3.6\",\n permalink: \"/docs/handbook/release-notes/typescript-3-6.html\",\n oneline: \"TypeScript 3.6 Release Notes\",\n },\n {\n title: \"TypeScript 3.5\",\n id: \"4-typescript-3.5\",\n permalink: \"/docs/handbook/release-notes/typescript-3-5.html\",\n oneline: \"TypeScript 3.5 Release Notes\",\n },\n {\n title: \"TypeScript 3.4\",\n id: \"4-typescript-3.4\",\n permalink: \"/docs/handbook/release-notes/typescript-3-4.html\",\n oneline: \"TypeScript 3.4 Release Notes\",\n },\n {\n title: \"TypeScript 3.3\",\n id: \"4-typescript-3.3\",\n permalink: \"/docs/handbook/release-notes/typescript-3-3.html\",\n oneline: \"TypeScript 3.3 Release Notes\",\n },\n {\n title: \"TypeScript 3.2\",\n id: \"4-typescript-3.2\",\n permalink: \"/docs/handbook/release-notes/typescript-3-2.html\",\n oneline: \"TypeScript 3.2 Release Notes\",\n },\n {\n title: \"TypeScript 3.1\",\n id: \"4-typescript-3.1\",\n permalink: \"/docs/handbook/release-notes/typescript-3-1.html\",\n oneline: \"TypeScript 3.1 Release Notes\",\n },\n {\n title: \"TypeScript 3.0\",\n id: \"4-typescript-3.0\",\n permalink: \"/docs/handbook/release-notes/typescript-3-0.html\",\n oneline: \"TypeScript 3.0 Release Notes\",\n },\n {\n title: \"TypeScript 2.9\",\n id: \"4-typescript-2.9\",\n permalink: \"/docs/handbook/release-notes/typescript-2-9.html\",\n oneline: \"TypeScript 2.9 Release Notes\",\n },\n {\n title: \"TypeScript 2.8\",\n id: \"4-typescript-2.8\",\n permalink: \"/docs/handbook/release-notes/typescript-2-8.html\",\n oneline: \"TypeScript 2.8 Release Notes\",\n },\n {\n title: \"TypeScript 2.7\",\n id: \"4-typescript-2.7\",\n permalink: \"/docs/handbook/release-notes/typescript-2-7.html\",\n oneline: \"TypeScript 2.7 Release Notes\",\n },\n {\n title: \"TypeScript 2.6\",\n id: \"4-typescript-2.6\",\n permalink: \"/docs/handbook/release-notes/typescript-2-6.html\",\n oneline: \"TypeScript 2.6 Release Notes\",\n },\n {\n title: \"TypeScript 2.5\",\n id: \"4-typescript-2.5\",\n permalink: \"/docs/handbook/release-notes/typescript-2-5.html\",\n oneline: \"TypeScript 2.5 Release Notes\",\n },\n {\n title: \"TypeScript 2.4\",\n id: \"4-typescript-2.4\",\n permalink: \"/docs/handbook/release-notes/typescript-2-4.html\",\n oneline: \"TypeScript 2.4 Release Notes\",\n },\n {\n title: \"TypeScript 2.3\",\n id: \"4-typescript-2.3\",\n permalink: \"/docs/handbook/release-notes/typescript-2-3.html\",\n oneline: \"TypeScript 2.3 Release Notes\",\n },\n {\n title: \"TypeScript 2.2\",\n id: \"4-typescript-2.2\",\n permalink: \"/docs/handbook/release-notes/typescript-2-2.html\",\n oneline: \"TypeScript 2.2 Release Notes\",\n },\n {\n title: \"TypeScript 2.1\",\n id: \"4-typescript-2.1\",\n permalink: \"/docs/handbook/release-notes/typescript-2-1.html\",\n oneline: \"TypeScript 2.1 Release Notes\",\n },\n {\n title: \"TypeScript 2.0\",\n id: \"4-typescript-2.0\",\n permalink: \"/docs/handbook/release-notes/typescript-2-0.html\",\n oneline: \"TypeScript 2.0 Release Notes\",\n },\n {\n title: \"TypeScript 1.8\",\n id: \"4-typescript-1.8\",\n permalink: \"/docs/handbook/release-notes/typescript-1-8.html\",\n oneline: \"TypeScript 1.8 Release Notes\",\n },\n {\n title: \"TypeScript 1.7\",\n id: \"4-typescript-1.7\",\n permalink: \"/docs/handbook/release-notes/typescript-1-7.html\",\n oneline: \"TypeScript 1.7 Release Notes\",\n },\n {\n title: \"TypeScript 1.6\",\n id: \"4-typescript-1.6\",\n permalink: \"/docs/handbook/release-notes/typescript-1-6.html\",\n oneline: \"TypeScript 1.6 Release Notes\",\n },\n {\n title: \"TypeScript 1.5\",\n id: \"4-typescript-1.5\",\n permalink: \"/docs/handbook/release-notes/typescript-1-5.html\",\n oneline: \"TypeScript 1.5 Release Notes\",\n },\n {\n title: \"TypeScript 1.4\",\n id: \"4-typescript-1.4\",\n permalink: \"/docs/handbook/release-notes/typescript-1-4.html\",\n oneline: \"TypeScript 1.3 Release Notes\",\n },\n {\n title: \"TypeScript 1.3\",\n id: \"4-typescript-1.3\",\n permalink: \"/docs/handbook/release-notes/typescript-1-3.html\",\n oneline: \"TypeScript 1.3 Release Notes\",\n },\n {\n title: \"TypeScript 1.1\",\n id: \"4-typescript-1.1\",\n permalink: \"/docs/handbook/release-notes/typescript-1-1.html\",\n oneline: \"TypeScript 1.1 Release Notes\",\n },\n ],\n },\n {\n title: \"Declaration Files\",\n oneline:\n \"Learn how to write declaration files to describe existing JavaScript. Important for DefinitelyTyped contributions.\",\n id: \"declaration-files\",\n chronological: true,\n\n items: [\n {\n title: \"Introduction\",\n id: \"5-introduction\",\n permalink: \"/docs/handbook/declaration-files/introduction.html\",\n oneline:\n \"How to write a high-quality TypeScript Declaration (d.ts) file\",\n },\n {\n title: \"Declaration Reference\",\n id: \"5-declaration-reference\",\n permalink: \"/docs/handbook/declaration-files/by-example.html\",\n oneline: \"How to create a d.ts file for a module\",\n },\n {\n title: \"Library Structures\",\n id: \"5-library-structures\",\n permalink: \"/docs/handbook/declaration-files/library-structures.html\",\n oneline: \"How to structure your d.ts files\",\n },\n {\n title: \".d.ts Templates\",\n id: \"5-.d.ts-templates\",\n oneline: \"undefined\",\n chronological: false,\n\n items: [\n {\n title: \"Modules .d.ts\",\n id: \"5-modules-.d.ts\",\n permalink:\n \"/docs/handbook/declaration-files/templates/module-d-ts.html\",\n oneline: \"undefined\",\n },\n {\n title: \"Module: Plugin\",\n id: \"5-module:-plugin\",\n permalink:\n \"/docs/handbook/declaration-files/templates/module-plugin-d-ts.html\",\n oneline: \"undefined\",\n },\n {\n title: \"Module: Class\",\n id: \"5-module:-class\",\n permalink:\n \"/docs/handbook/declaration-files/templates/module-class-d-ts.html\",\n oneline: \"undefined\",\n },\n {\n title: \"Module: Function\",\n id: \"5-module:-function\",\n permalink:\n \"/docs/handbook/declaration-files/templates/module-function-d-ts.html\",\n oneline: \"undefined\",\n },\n {\n title: \"Global .d.ts\",\n id: \"5-global-.d.ts\",\n permalink:\n \"/docs/handbook/declaration-files/templates/global-d-ts.html\",\n oneline: \"undefined\",\n },\n {\n title: \"Global: Modifying Module\",\n id: \"5-global:-modifying-module\",\n permalink:\n \"/docs/handbook/declaration-files/templates/global-modifying-module-d-ts.html\",\n oneline: \"undefined\",\n },\n ],\n },\n {\n title: \"Do's and Don'ts\",\n id: \"5-do's-and-don'ts\",\n permalink: \"/docs/handbook/declaration-files/do-s-and-don-ts.html\",\n oneline: \"Recommendations for writing d.ts files\",\n },\n {\n title: \"Deep Dive\",\n id: \"5-deep-dive\",\n permalink: \"/docs/handbook/declaration-files/deep-dive.html\",\n oneline: \"How do d.ts files work, a deep dive\",\n },\n {\n title: \"Publishing\",\n id: \"5-publishing\",\n permalink: \"/docs/handbook/declaration-files/publishing.html\",\n oneline: \"How to get your d.ts files to users\",\n },\n {\n title: \"Consumption\",\n id: \"5-consumption\",\n permalink: \"/docs/handbook/declaration-files/consumption.html\",\n oneline: \"How to download d.ts files for your project\",\n },\n ],\n },\n {\n title: \"JavaScript\",\n oneline: \"How to use TypeScript-powered JavaScript tooling.\",\n id: \"javascript\",\n chronological: true,\n\n items: [\n {\n title: \"JS Projects Utilizing TypeScript\",\n id: \"6-js-projects-utilizing-typescript\",\n permalink: \"/docs/handbook/intro-to-js-ts.html\",\n oneline:\n \"How to add type checking to JavaScript files using TypeScript\",\n },\n {\n title: \"Type Checking JavaScript Files\",\n id: \"6-type-checking-javascript-files\",\n permalink: \"/docs/handbook/type-checking-javascript-files.html\",\n oneline:\n \"How to add type checking to JavaScript files using TypeScript\",\n },\n {\n title: \"JSDoc Reference\",\n id: \"6-jsdoc-reference\",\n permalink: \"/docs/handbook/jsdoc-supported-types.html\",\n oneline: \"What JSDoc does TypeScript-powered JavaScript support?\",\n },\n {\n title: \"Creating .d.ts Files from .js files\",\n id: \"6-creating-.d.ts-files-from-.js-files\",\n permalink: \"/docs/handbook/declaration-files/dts-from-js.html\",\n oneline: \"How to add d.ts generation to JavaScript projects\",\n },\n ],\n },\n {\n title: \"Project Configuration\",\n oneline: \"Compiler configuration reference.\",\n id: \"project-configuration\",\n chronological: false,\n\n items: [\n {\n title: \"What is a tsconfig.json\",\n id: \"7-what-is-a-tsconfig.json\",\n permalink: \"/docs/handbook/tsconfig-json.html\",\n oneline: \"Learn about how a TSConfig works\",\n },\n {\n title: \"Compiler Options in MSBuild\",\n id: \"7-compiler-options-in-msbuild\",\n permalink: \"/docs/handbook/compiler-options-in-msbuild.html\",\n oneline: \"Which compiler options are available in MSBuild projects.\",\n },\n {\n title: \"TSConfig Reference\",\n id: \"7-tsconfig-reference\",\n permalink: \"/tsconfig\",\n oneline: \"The page covering every TSConfig option\",\n },\n {\n title: \"tsc CLI Options\",\n id: \"7-tsc-cli-options\",\n permalink: \"/docs/handbook/compiler-options.html\",\n oneline:\n \"A very high-level overview of the CLI compiler options for tsc\",\n },\n {\n title: \"Project References\",\n id: \"7-project-references\",\n permalink: \"/docs/handbook/project-references.html\",\n oneline: \"How to split up a large TypeScript project\",\n },\n {\n title: \"Integrating with Build Tools\",\n id: \"7-integrating-with-build-tools\",\n permalink: \"/docs/handbook/integrating-with-build-tools.html\",\n oneline: \"How to use TypeScript with other build tools\",\n },\n {\n title: \"Configuring Watch\",\n id: \"7-configuring-watch\",\n permalink: \"/docs/handbook/configuring-watch.html\",\n oneline: \"How to configure the watch mode of TypeScript\",\n },\n {\n title: \"Nightly Builds\",\n id: \"7-nightly-builds\",\n permalink: \"/docs/handbook/nightly-builds.html\",\n oneline: \"How to use a nightly build of TypeScript\",\n },\n ],\n },\n ];\n\n return navigations[lang];\n}\n","import { KeyboardEventHandler } from \"react\"\nimport { getTagFromParents } from \"./Sidebar\"\n\nconst UpArrow = 38\nconst DownArrow = 40\n\nconst childOfType = (tag: string, element: any) => {\n let found: HTMLElement | undefined\n for (const e of element.children) {\n if (e.nodeName === tag.toUpperCase()) found = e\n }\n return found\n}\n\n/**\n * Handles moving up and down through the navigation hierarchy\n * selecting leaf nodes and jumping up into section categories\n */\nexport const onAnchorKeyDown: KeyboardEventHandler = event => {\n const li = getTagFromParents(\"li\", event.target as any)\n\n // Up, and jump into section headers\n if (event.keyCode == UpArrow) {\n const aboveLI = li.previousElementSibling\n const a = aboveLI && childOfType(\"a\", aboveLI)\n const button = aboveLI && childOfType(\"button\", aboveLI)\n\n if (a) {\n // next link\n a.focus()\n } else if (aboveLI && button) {\n // Jump to the subnav above, either at the bottom item if open or\n // the main button otherwise\n const open = aboveLI.classList.contains(\"open\")\n if (open) {\n const listOfLinks = childOfType(\"ul\", aboveLI)!\n const lastLI = listOfLinks.lastElementChild\n childOfType(\"a\", lastLI)!.focus()\n } else {\n button.focus()\n }\n } else {\n // at the top\n const sectionHostingLI = getTagFromParents(\"li\", li)\n childOfType(\"button\", sectionHostingLI)!.focus()\n }\n\n event.preventDefault()\n }\n\n // Down, and jump into section header belows\n if (event.keyCode === DownArrow) {\n const belowLI = li.nextElementSibling\n const a = belowLI && childOfType(\"a\", belowLI)\n const button = belowLI && childOfType(\"button\", belowLI)\n\n if (a) {\n // next link\n a.focus()\n } else if (button) {\n // potential subnav above\n button.focus()\n } else {\n // at the bottom\n const sectionHostingLI = getTagFromParents(\"li\", li)\n const nextLI = sectionHostingLI.nextElementSibling\n const a = nextLI && childOfType(\"a\", nextLI)\n const button = nextLI && childOfType(\"button\", nextLI)\n\n if (a) {\n // next link\n a.focus()\n } else if (button) {\n // potential subnav above\n button.focus()\n }\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * Handles moving up and down through the navigation hierarchy\n * when it's at a section category, which has different semantics\n * from the a's above\n */\nexport const onButtonKeydown: KeyboardEventHandler = event => {\n const li = getTagFromParents(\"li\", event.target as any)\n // Up, either go to the bottom of the a's in the section above\n // if it's open or jump to the previous sibling button\n if (event.keyCode == UpArrow) {\n const aboveLI = li.previousElementSibling\n if (!aboveLI) return // Hit the top\n\n const a = aboveLI && childOfType(\"a\", aboveLI)\n const button = aboveLI && childOfType(\"button\", aboveLI)\n\n if (a) {\n // next link\n a.focus()\n } else if (button) {\n // potential subnav above\n const open = aboveLI.classList.contains(\"open\")\n if (open) {\n const listOfLinks = childOfType(\"ul\", aboveLI)!\n const lastLI = listOfLinks.lastElementChild\n childOfType(\"a\", lastLI)!.focus()\n } else {\n button.focus()\n }\n } else {\n // at the top\n const sectionHostingLI = getTagFromParents(\"li\", li)\n childOfType(\"button\", sectionHostingLI)!.focus()\n }\n\n event.preventDefault()\n }\n\n // Down, and jump into section header belows\n if (event.keyCode == DownArrow) {\n const open = li.classList.contains(\"open\")\n if (open) {\n // Need to jump to first in the section\n const listOfLinks = childOfType(\"ul\", li)!\n const lastLI = listOfLinks.firstElementChild\n childOfType(\"a\", lastLI)!.focus()\n } else {\n const belowLI = li.nextElementSibling\n if (belowLI) {\n const a = belowLI && childOfType(\"a\", belowLI)\n const button = belowLI && childOfType(\"button\", belowLI)\n\n if (a) {\n // next link\n a.focus()\n } else if (button) {\n // potential subnav above\n button.focus()\n }\n }\n }\n event.preventDefault()\n }\n\n // Right, open\n if (event.key === \"ArrowRight\") {\n li.classList.remove(\"closed\")\n li.classList.add(\"open\")\n\n event.preventDefault()\n }\n\n // Right, close\n if (event.key === \"ArrowLeft\") {\n li.classList.remove(\"open\")\n li.classList.add(\"closed\")\n\n event.preventDefault()\n }\n}\n","import React, { MouseEventHandler, useEffect } from \"react\"\nimport { Link } from \"gatsby\"\n\nimport \"./Sidebar.scss\"\nimport { onAnchorKeyDown, onButtonKeydown } from \"./Sidebar-keyboard\"\nimport { SidebarNavItem } from \"../../lib/documentationNavigationUtils\"\n\nexport type Props = {\n navItems: SidebarNavItem[]\n selectedID: string\n openAllSectionsExceptWhatsNew?: true\n}\nconst closedChevron = \nconst openChevron = \n\nexport const getTagFromParents = (tag: string, root: { nodeName: string, parentElement: any }) => {\n let parent = root.parentElement\n while (parent.nodeName !== tag.toUpperCase()) {\n parent = parent.parentElement\n if (parent.nodeName === \"BODY\") throw new Error(\"Could not find parent LI for toggle \")\n }\n return parent as HTMLElement\n}\n\nconst toggleNavigationSection: MouseEventHandler = (event) => {\n const li = getTagFromParents(\"li\", event.target as any)\n const isOpen = li.classList.contains(\"open\")\n if (isOpen) {\n li.classList.remove(\"open\")\n li.classList.add(\"closed\")\n\n } else {\n li.classList.remove(\"closed\")\n li.classList.add(\"open\")\n }\n}\n\nexport const SidebarToggleButton = () => {\n const toggleClick = () => {\n const navSidebar = document.getElementById(\"sidebar\")\n const isOpen = navSidebar?.classList.contains(\"show\")\n if (isOpen) {\n navSidebar?.classList.remove(\"show\")\n } else {\n navSidebar?.classList.add(\"show\")\n }\n }\n\n\n return (\n \n )\n}\n\nexport const Sidebar = (props: Props) => {\n useEffect(() => {\n // Keep all of the sidebar open at launch, then use JS to close the ones after\n // because otherwise you can't jump between sections\n document.querySelectorAll(\".closed-at-launch\").forEach(f => {\n f.classList.remove(\"closed-at-launch\")\n f.classList.remove(\"open\")\n f.classList.add(\"closed\")\n })\n }, [])\n\n const RenderItem = (props: { item: SidebarNavItem, selectedID: string, openAllSectionsExceptWhatsNew?: boolean }) => {\n const item = props.item\n if (!item.items) {\n // Is it the leaf in the nav?\n const isSelected = item.id === props.selectedID\n const aria: any = {}\n if (isSelected) {\n aria[\"aria-current\"] = \"page\"\n aria.className = \"highlight\"\n }\n\n const href = item.permalink!\n return
  • \n {item.title}\n
  • \n } else {\n // Has children\n const findSelected = (item: SidebarNavItem) => {\n if (item.id === props.selectedID) return true\n if (!item.items) return false\n for (const subItem of item.items) {\n if (findSelected(subItem)) return true\n }\n return false\n }\n\n const hostsSelected = findSelected(item)\n const classes = [] as string[]\n\n const forceOpen = props.openAllSectionsExceptWhatsNew && item.id !== \"whats-new\"\n if (hostsSelected || forceOpen) {\n classes.push(\"open\")\n classes.push(\"highlighted\")\n } else {\n classes.push(\"closed\")\n }\n\n const opened = { \"aria-expanded\": \"true\", \"aria-label\": item.title + \" close\" }\n const closed = { \"aria-label\": item.title + \" expand\" }\n const aria = hostsSelected ? opened : closed\n\n return (\n
  • \n \n \n
  • \n )\n }\n }\n\n return (\n \n )\n}\n","import * as React from \"react\"\nimport { Link } from \"gatsby\"\n\ninterface NextPrevProps {\n prev: { childMarkdownRemark: { frontmatter: { title: string, oneline: string, permalink: string } } } | undefined\n next: { childMarkdownRemark: { frontmatter: { title: string, oneline: string, permalink: string } } } | undefined,\n i: (string) => string,\n IntlLink: typeof Link\n}\n\nconst Row = (props: { children: any, className?: string }) =>
    {props.children}
    \n\n\nexport const NextPrev = (props: NextPrevProps) => {\n if (!props.prev && !props.next) return null\n const prev = props.prev && props.prev.childMarkdownRemark.frontmatter\n const next = props.next && props.next.childMarkdownRemark.frontmatter\n\n return (\n
    \n \n {!prev ? : }\n
    \n {!next ? : }\n \n
    \n )\n}\n\nconst EmptyLink = () =>
    \n\ninterface Section {\n data: { title: string, oneline: string, permalink: string }\n i: (string) => string,\n InltLink: typeof Link\n type: string\n}\n\nconst LinkSection = (props: Section) =>\n \n \n
    \n \n \n \n
    \n\n
    \n
    {props.i(\"handb_\" + props.type)}
    \n

    {props.data.title}

    \n

    {props.data.oneline}

    \n
    \n
    \n \n","import React, { useEffect } from \"react\";\nimport attribution from \"../../../../documentation/output/attribution.json\";\n\ninterface ContributorsProps {\n i: (string) => string;\n path: string;\n lastEdited: string;\n lang: string;\n}\n\nconst Row = (props: { children: any; className?: string }) =>\n
    {props.children}
    ;\n\nconst Section = (props: { children: any; className?: string; sKey: string }) =>\n
    \n {props.children}\n
    ;\n\nexport const Contributors = (props: ContributorsProps) => {\n const attrPath = props.path.replace(\"/packages/documentation/\", \"\");\n const page = attribution[attrPath];\n\n // https://github.com/microsoft/TypeScript-Website/blob/v2/packages/documentation/en/Advanced%20Types.md\n const reposRootURL =\n \"https://github.com/microsoft/TypeScript-Website/blob/v2\";\n const repoPageURL = reposRootURL + props.path;\n\n const d = new Date(props.lastEdited);\n const dtf = new Intl.DateTimeFormat(\n props.lang,\n { year: \"numeric\", month: \"short\", day: \"2-digit\" },\n );\n const lastEdited = dtf.format(d);\n\n useEffect(() => {\n // @ts-ignore\n const perf = window.performance || window.mozPerformance ||\n // @ts-ignore\n window.msPerformance || window.webkitPerformance || {};\n const t = perf.timing;\n if (!t) return;\n\n const pageLoadIndicator = document.querySelector(\"#page-loaded-time\");\n if (pageLoadIndicator?.innerHTML.includes(\"This page\")) return;\n\n const start = t.navigationStart;\n const end = t.domInteractive;\n const loadTime = (end - start) / 1000;\n\n // No idea how this is happening, likely from React re-rendering\n if (loadTime < 0) return;\n\n if (pageLoadIndicator) {\n pageLoadIndicator.innerHTML = \"This page loaded in \" + loadTime +\n \" seconds.

    \";\n }\n }, []);\n\n return (\n
    \n \n
    \n

    \n The TypeScript docs are an open source project. Help us improve\n these pages by sending a Pull Request ❤\n

    \n
    \n \n
    \n Contributors to this page:
    \n \n
    \n \n
    \n

    \n {`Last updated: ${lastEdited}`}\n
    \n
    \n  \n

    \n
    \n
    \n
    \n );\n};\n\nconst Avatars = (\n props: {\n data: typeof attribution[\"copy/en/declaration-files/By Example.md\"];\n },\n) => {\n const showRest = props.data && props.data.total > props.data.top.length;\n return
    \n {props.data && props.data.top.map((t) => {\n const grav = t.gravatar.startsWith(\"http\") ? t.gravatar : `https://gravatar.com/avatar/${t.gravatar}?s=32&&d=blank`;\n const alt = `${t.name} (${t.count})`;\n const chars = t.name.split(\" \").map((dp) => dp.substr(0, 1)).join(\"\")\n .toUpperCase();\n return
    \n {chars}\n {alt}\n
    ;\n })}\n {showRest &&\n
    \n {props.data.total - props.data.top.length}+\n
    }\n
    ;\n};\n","export const overrideSubNavLinksWithSmoothScroll = () => {\n // Overrides the anchor behavior to smooth scroll instead\n // Came from https://css-tricks.com/sticky-smooth-active-nav/\n const subnavLinks = document.querySelectorAll(\n \"#handbook-content nav ul li a\"\n )\n subnavLinks.forEach(link => {\n link.addEventListener(\"click\", event => {\n event.preventDefault()\n\n const hash = (event.target! as HTMLAnchorElement).hash\n const id = decodeURIComponent(hash).slice(1)\n const target = document.querySelector(`[id=\"${id}\"]`)\n \n target!.scrollIntoView({ behavior: \"smooth\", block: \"start\" })\n document.location.hash = hash\n })\n })\n}\n\n// Sets the current selection\nexport const updateSidebarOnScroll = () => {\n const subnavLinks = document.querySelectorAll(\n \"#handbook-content nav ul li a\"\n )\n\n const fromTop = window.scrollY\n let currentPossibleAnchor: HTMLAnchorElement | undefined\n const offset = 100\n\n // Scroll down to find the highest anchor on the screen\n subnavLinks.forEach(link => {\n try {\n const section = document.querySelector(\n decodeURIComponent(link.hash)\n )\n if (!section) {\n return\n }\n const isBelow = section.offsetTop - offset <= fromTop\n if (isBelow) currentPossibleAnchor = link\n } catch (error) {\n return\n }\n })\n\n // Then set the active tag\n subnavLinks.forEach(link => {\n if (link === currentPossibleAnchor) {\n link.classList.add(\"current\")\n } else {\n link.classList.remove(\"current\")\n }\n })\n}\n","import React from \"react\"\n\n// Taken from https://github.com/microsoft/fluentui-system-icons\n// They don't have a web pipeline, so I just C&P'd directly\n// It's licensed MIT\n// https://github.com/microsoft/fluentui-system-icons/blob/master/LICENSE\n\nexport const LikeFilledSVG = () => \n \n\n\nexport const LikeUnfilledSVG = () => \n \n\n\nexport const DislikeFilledSVG = () => \n \n\n\nexport const DislikeUnfilledSVG = () => \n \n\n\n","import React, { useEffect, useState } from \"react\"\n\nexport interface PopupProps {\n\tshow: boolean\n\thtml?: string\n\turl?: string\n\t// These are absolute to the page\n\tposition?: {left: number, top: number} | null\n}\n\nexport const Popup = (props: PopupProps) => (\n\t
    \n\t\t
    \n\t\t\t\n\t\t\t\t
    \t\t\n\t\t\t\t\n\t\t
    \n\t
    \n)\n\n\nexport const useQuickInfoPopup = (lang: string) => {\n\tconst [showPopup, setShowPopup] = useState({ show: false });\n\n // Add event listeners for individual links and the popup itself on pageload\n useEffect(() => {\n const aTags = document.getElementsByTagName(\"a\")\n const links: HTMLAnchorElement[] = []\n\n for (let i = 0; i < aTags.length; i++) {\n const href = aTags[i].getAttribute(\"href\") || \"\";\n if (/\\/tsconfig\\/?#\\w+$/.test(href)) {\n aTags[i].addEventListener(\"mouseenter\", handleLinkMouseEnter)\n aTags[i].addEventListener(\"mouseleave\", handleLinkMouseLeave)\n links.push(aTags[i])\n }\n }\n\n const popupEl = document.getElementById(\"quickTipPopup\")\n popupEl?.addEventListener(\"mouseenter\", handlePopupMouseEnter)\n popupEl?.addEventListener(\"mouseleave\", handlePopupMouseLeave)\n\n // don't forget to clear them on leave\n return () => {\n for (const el of links) {\n el.removeEventListener(\"mouseenter\", handleLinkMouseEnter)\n el.removeEventListener(\"mouseleave\", handleLinkMouseLeave)\n }\n\n popupEl?.removeEventListener(\"mouseenter\", handlePopupMouseEnter)\n popupEl?.removeEventListener(\"mouseleave\", handlePopupMouseLeave)\n }\n }, [])\n\n // Keep track of how long user is hovering\n // or how long they have left the link.\n var enterTimeoutId, leaveTimeoutId\n function handleLinkMouseEnter(e) {\n clearTimeout(leaveTimeoutId); \n const target = e.target as HTMLElement\n const url = target.getAttribute(\"href\") || \"\";\n\tconst rect = target.getBoundingClientRect()\n\n\tenterTimeoutId = setTimeout((args) => {\n setShowPopup(prevProps => {\n \treturn { ...prevProps, show: true, url: args[0], position: args[1] } })\n }, 500, [url, { left: rect.x, top: rect.bottom + window.scrollY }])\n }\n\n function handleLinkMouseLeave(e) {\n clearTimeout(enterTimeoutId)\n leaveTimeoutId = setTimeout(() => {\n setShowPopup({\n show: false,\n html: \"\",\n url: \"\",\n position: null,\n })\n }, 300);\n }\n\n // Fetch content from the JSON based on url and set inner HTML\n useEffect(() => {\n async function fetchHTML() {\n\t if (!showPopup.url) return\n\n const response = await fetch(`/js/json/${lang}-tsconfig-popup.json`);\n const json = await response.json();\n const url = showPopup.url\n const configType = url.substr(url.indexOf(\"#\") + 1)\n\t const html = `
    TSConfig Reference: ${configType}
    ${json[configType]}`\n\n setShowPopup(prevProps => ({ ...prevProps, html }))\n }\n if (showPopup.show) fetchHTML();\n\n }, [showPopup.show, showPopup.url, showPopup.html])\n\n // In order to keep the popups when user leaves link\n // but still hovers over the popup itself\n function handlePopupMouseEnter(e) {\n clearTimeout(leaveTimeoutId)\n }\n\n function handlePopupMouseLeave(e) {\n clearTimeout(enterTimeoutId)\n leaveTimeoutId = setTimeout(() => {\n setShowPopup({\n show: false,\n html: \"\",\n url: \"\",\n position: null,\n })\n }, 300);\n }\n\n return showPopup\n}","import React, { useEffect, useState } from \"react\"\nimport { graphql } from \"gatsby\"\nimport { Layout } from \"../components/layout\"\nimport { Sidebar, SidebarToggleButton } from \"../components/layout/Sidebar\"\nimport { getDocumentationNavForLanguage } from \"../lib/documentationNavigation\"\nimport { Intl } from \"../components/Intl\"\n\n// This dependency is used in gatsby-remark-autolink-headers to generate the slugs\nimport slugger from \"github-slugger\"\n\nimport \"./documentation.scss\"\nimport \"./markdown.scss\"\n\nimport { NextPrev } from \"../components/handbook/NextPrev\"\nimport { createInternational } from \"../lib/createInternational\"\nimport { useIntl } from \"react-intl\"\nimport { createIntlLink } from \"../components/IntlLink\"\nimport { handbookCopy } from \"../copy/en/handbook\"\nimport { Contributors } from \"../components/handbook/Contributors\"\nimport { overrideSubNavLinksWithSmoothScroll, updateSidebarOnScroll } from \"./scripts/setupSubNavigationSidebar\"\nimport { setupLikeDislikeButtons } from \"./scripts/setupLikeDislikeButtons\"\nimport { DislikeUnfilledSVG, LikeUnfilledSVG } from \"../components/svgs/documentation\"\nimport { Popup, useQuickInfoPopup } from \"../components/Popup\"\nimport Helmet from \"react-helmet\"\n\ntype Props = {\n pageContext: {\n // This is only set up if it's in the handbook nav\n id: string | undefined\n nextID: string\n previousID: string\n repoPath: string\n slug: string\n lang: string\n modifiedTime: string\n }\n data: GatsbyTypes.GetDocumentBySlugQuery\n path: string\n}\n\nconst HandbookTemplate: React.FC = (props) => {\n const post = props.data.markdownRemark\n if (!post) {\n console.log(\"Could not render:\", JSON.stringify(props))\n return
    \n }\n\n // Note: This can, and does, change triggering re-renders\n const showPopup = useQuickInfoPopup(props.pageContext.lang)\n\n const [deprecationURL, setDeprecationURL] = useState(post.frontmatter!.deprecated_by)\n\n const i = createInternational(useIntl())\n const IntlLink = createIntlLink(props.pageContext.lang)\n\n useEffect(() => {\n if (document.location.hash) {\n const redirects = post.frontmatter?.deprecation_redirects || []\n const indexOfHash = redirects.indexOf(document.location.hash.slice(1))\n if (indexOfHash !== -1) {\n setDeprecationURL(redirects[indexOfHash + 1])\n }\n }\n\n overrideSubNavLinksWithSmoothScroll()\n\n // Handles setting the scroll \n window.addEventListener(\"scroll\", updateSidebarOnScroll, { passive: true, capture: true });\n // Sets current selection\n updateSidebarOnScroll()\n\n setupLikeDislikeButtons(props.pageContext.slug, i)\n\n\n return () => {\n window.removeEventListener(\"scroll\", updateSidebarOnScroll)\n }\n }, [])\n\n\n if (!post.frontmatter) throw new Error(`No front-matter found for the file with props: ${props}`)\n if (!post.html) throw new Error(`No html found for the file with props: ${props}`)\n\n const selectedID = props.pageContext.id || \"NO-ID\"\n const sidebarHeaders = post.headings?.filter(h => (h?.depth || 0) <= 3) || []\n const showSidebar = !post.frontmatter.disable_toc\n const showExperimental = post.frontmatter.experimental\n const showSidebarHeadings = post.headings && sidebarHeaders.length <= 30\n const navigation = getDocumentationNavForLanguage(props.pageContext.lang)\n const isHandbook = post.frontmatter.handbook\n const prefix = isHandbook ? \"Handbook\" : \"Documentation\"\n\n const slug = slugger()\n return (\n \n
    \n \n\n
    \n

    Was this page helpful?

    \n
    \n \n \n
    \n
    \n\n