diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index 2e964f9f3b59d..e2e3c5dda7419 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -8,6 +8,7 @@ on: - '**/*.rs' - 'Cargo.lock' - '.github/workflows/benchmark.yml' + - '!crates/oxc_codegen' push: branches: - main @@ -16,6 +17,7 @@ on: - '**/*.rs' - 'Cargo.lock' - '.github/workflows/benchmark.yml' + - '!crates/oxc_codegen' concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} @@ -48,7 +50,7 @@ jobs: RUSTFLAGS: "-C debuginfo=2 -C strip=none -g --cfg codspeed" shell: bash run: | - cargo build --release -p oxc_benchmark --features codspeed --bench lexer --bench parser --bench transformer --bench semantic --bench linter --bench minifier --bench codegen_sourcemap + cargo build --release -p oxc_benchmark --features codspeed --bench lexer --bench parser --bench transformer --bench semantic --bench linter --bench minifier mkdir -p target/codspeed/oxc_benchmark/ mv target/release/deps/lexer-* target/codspeed/oxc_benchmark mv target/release/deps/parser-* target/codspeed/oxc_benchmark @@ -56,7 +58,6 @@ jobs: mv target/release/deps/semantic-* target/codspeed/oxc_benchmark mv target/release/deps/linter-* target/codspeed/oxc_benchmark mv target/release/deps/minifier-* target/codspeed/oxc_benchmark - mv target/release/deps/codegen_sourcemap-* target/codspeed/oxc_benchmark rm -rf target/codspeed/oxc_benchmark/*.d - name: Run benchmark diff --git a/Cargo.lock b/Cargo.lock index f0a5b727a8119..8e3cab7e8f5f7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -96,9 +96,9 @@ dependencies = [ [[package]] name = "base64" -version = "0.21.7" +version = "0.21.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" [[package]] name = "bitflags" @@ -458,22 +458,6 @@ dependencies = [ "parking_lot_core", ] -[[package]] -name = "data-encoding" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" - -[[package]] -name = "debugid" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d" -dependencies = [ - "serde", - "uuid", -] - [[package]] name = "diff" version = "0.1.13" @@ -801,12 +785,6 @@ dependencies = [ "unicode-normalization", ] -[[package]] -name = "if_chain" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb56e1aa765b4b4f3aadfab769793b7087bb03a4ea4920644a6d238e2df5b9ed" - [[package]] name = "ignore" version = "0.4.22" @@ -1160,7 +1138,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "semver 1.0.21", + "semver", "syn 2.0.48", ] @@ -1352,7 +1330,6 @@ dependencies = [ "codspeed-criterion-compat", "criterion", "oxc_allocator", - "oxc_codegen", "oxc_linter", "oxc_minifier", "oxc_parser", @@ -1386,14 +1363,12 @@ dependencies = [ name = "oxc_codegen" version = "0.8.0" dependencies = [ - "base64", "bitflags 2.4.2", "oxc_allocator", "oxc_ast", "oxc_parser", "oxc_span", "oxc_syntax", - "sourcemap", ] [[package]] @@ -2167,15 +2142,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" -[[package]] -name = "rustc_version" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -dependencies = [ - "semver 0.9.0", -] - [[package]] name = "rustls" version = "0.21.10" @@ -2241,27 +2207,12 @@ dependencies = [ "untrusted", ] -[[package]] -name = "semver" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -dependencies = [ - "semver-parser", -] - [[package]] name = "semver" version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" -[[package]] -name = "semver-parser" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" - [[package]] name = "seq-macro" version = "0.3.5" @@ -2418,22 +2369,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "sourcemap" -version = "7.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10da010a590ed2fa9ca8467b00ce7e9c5a8017742c0c09c45450efc172208c4b" -dependencies = [ - "data-encoding", - "debugid", - "if_chain", - "rustc_version", - "serde", - "serde_json", - "unicode-id", - "url", -] - [[package]] name = "spin" version = "0.9.8" @@ -2812,12 +2747,6 @@ version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" -[[package]] -name = "unicode-id" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1b6def86329695390197b82c1e244a54a131ceb66c996f2088a3876e2ae083f" - [[package]] name = "unicode-id-start" version = "1.1.2" @@ -2898,12 +2827,6 @@ dependencies = [ "serde", ] -[[package]] -name = "uuid" -version = "1.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a" - [[package]] name = "valuable" version = "0.1.0" diff --git a/crates/oxc_ast/src/ast/js.rs b/crates/oxc_ast/src/ast/js.rs index 079705c30f5e3..cde41b466f2d0 100644 --- a/crates/oxc_ast/src/ast/js.rs +++ b/crates/oxc_ast/src/ast/js.rs @@ -383,7 +383,7 @@ pub struct ThisExpression { /// #[derive(Debug, Hash)] -#[cfg_attr(feature = "serde", derive(Serialize), serde(tag = "type", rename_all = "camelCase"))] +#[cfg_attr(feature = "serde", derive(Serialize), serde(tag = "type"))] #[cfg_attr(all(feature = "serde", feature = "wasm"), derive(tsify::Tsify))] pub struct ArrayExpression<'a> { #[cfg_attr(feature = "serde", serde(flatten))] @@ -414,7 +414,7 @@ impl<'a> ArrayExpressionElement<'a> { /// Object Expression #[derive(Debug, Hash)] -#[cfg_attr(feature = "serde", derive(Serialize), serde(tag = "type", rename_all = "camelCase"))] +#[cfg_attr(feature = "serde", derive(Serialize), serde(tag = "type"))] #[cfg_attr(all(feature = "serde", feature = "wasm"), derive(tsify::Tsify))] pub struct ObjectExpression<'a> { #[cfg_attr(feature = "serde", serde(flatten))] @@ -968,7 +968,7 @@ pub enum AssignmentTargetPattern<'a> { } #[derive(Debug, Hash)] -#[cfg_attr(feature = "serde", derive(Serialize), serde(tag = "type", rename_all = "camelCase"))] +#[cfg_attr(feature = "serde", derive(Serialize), serde(tag = "type"))] #[cfg_attr(all(feature = "serde", feature = "wasm"), derive(tsify::Tsify))] pub struct ArrayAssignmentTarget<'a> { #[cfg_attr(feature = "serde", serde(flatten))] @@ -1770,8 +1770,6 @@ pub enum FunctionType { FunctionDeclaration, FunctionExpression, TSDeclareFunction, - /// - TSEmptyBodyFunctionExpression, } /// @@ -1801,7 +1799,6 @@ pub struct FormalParameter<'a> { pub pattern: BindingPattern<'a>, pub accessibility: Option, pub readonly: bool, - pub r#override: bool, pub decorators: Vec<'a, Decorator<'a>>, } @@ -2410,11 +2407,19 @@ impl<'a> ExportDefaultDeclarationKind<'a> { #[inline] pub fn is_typescript_syntax(&self) -> bool { match self { - ExportDefaultDeclarationKind::FunctionDeclaration(func) => func.is_typescript_syntax(), - ExportDefaultDeclarationKind::ClassDeclaration(class) => class.is_typescript_syntax(), + ExportDefaultDeclarationKind::FunctionDeclaration(func) + if func.is_typescript_syntax() => + { + true + } + ExportDefaultDeclarationKind::ClassDeclaration(class) + if class.is_typescript_syntax() => + { + true + } ExportDefaultDeclarationKind::TSInterfaceDeclaration(_) | ExportDefaultDeclarationKind::TSEnumDeclaration(_) => true, - ExportDefaultDeclarationKind::Expression(_) => false, + _ => false, } } } diff --git a/crates/oxc_ast/src/ast/ts.rs b/crates/oxc_ast/src/ast/ts.rs index ab6e2076c452e..c25414ba401c1 100644 --- a/crates/oxc_ast/src/ast/ts.rs +++ b/crates/oxc_ast/src/ast/ts.rs @@ -137,17 +137,6 @@ impl<'a> TSType<'a> { pub fn is_const_type_reference(&self) -> bool { matches!(self, TSType::TSTypeReference(reference) if reference.type_name.is_const()) } - - /// Check if type maybe `undefined` - pub fn is_maybe_undefined(&self) -> bool { - match self { - TSType::TSUndefinedKeyword(_) => true, - TSType::TSUnionType(un) => { - un.types.iter().any(|t| matches!(t, TSType::TSUndefinedKeyword(_))) - } - _ => false, - } - } } /// `SomeType extends OtherType ? TrueType : FalseType;` @@ -582,7 +571,6 @@ pub struct TSIndexSignature<'a> { pub span: Span, pub parameters: Vec<'a, Box<'a, TSIndexSignatureName<'a>>>, pub type_annotation: Box<'a, TSTypeAnnotation<'a>>, - pub readonly: bool, } #[derive(Debug, Hash)] @@ -837,7 +825,7 @@ pub struct TSMappedType<'a> { pub span: Span, pub type_parameter: Box<'a, TSTypeParameter<'a>>, pub name_type: Option>, - pub type_annotation: Option>, + pub type_annotation: Option>>, pub optional: TSMappedTypeModifierOperator, pub readonly: TSMappedTypeModifierOperator, } diff --git a/crates/oxc_ast/src/ast_builder.rs b/crates/oxc_ast/src/ast_builder.rs index 37814fa081763..648ca6c5aa391 100644 --- a/crates/oxc_ast/src/ast_builder.rs +++ b/crates/oxc_ast/src/ast_builder.rs @@ -796,10 +796,9 @@ impl<'a> AstBuilder<'a> { pattern: BindingPattern<'a>, accessibility: Option, readonly: bool, - r#override: bool, decorators: Vec<'a, Decorator<'a>>, ) -> FormalParameter<'a> { - FormalParameter { span, pattern, accessibility, readonly, r#override, decorators } + FormalParameter { span, pattern, accessibility, readonly, decorators } } pub fn ts_this_parameter( @@ -1365,13 +1364,11 @@ impl<'a> AstBuilder<'a> { span: Span, parameters: Vec<'a, Box<'a, TSIndexSignatureName<'a>>>, type_annotation: Box<'a, TSTypeAnnotation<'a>>, - readonly: bool, ) -> TSSignature<'a> { TSSignature::TSIndexSignature(self.alloc(TSIndexSignature { span, parameters, type_annotation, - readonly, })) } @@ -1670,7 +1667,7 @@ impl<'a> AstBuilder<'a> { span: Span, type_parameter: Box<'a, TSTypeParameter<'a>>, name_type: Option>, - type_annotation: Option>, + type_annotation: Option>>, optional: TSMappedTypeModifierOperator, readonly: TSMappedTypeModifierOperator, ) -> TSType<'a> { diff --git a/crates/oxc_ast/src/visit.rs b/crates/oxc_ast/src/visit.rs index ccfae684521ad..7d878b054db4f 100644 --- a/crates/oxc_ast/src/visit.rs +++ b/crates/oxc_ast/src/visit.rs @@ -1044,11 +1044,6 @@ pub trait Visit<'a>: Sized { fn visit_jsx_element_name(&mut self, name: &JSXElementName<'a>) { let kind = AstKind::JSXElementName(self.alloc(name)); self.enter_node(kind); - match name { - JSXElementName::Identifier(ident) => self.visit_jsx_identifier(ident), - JSXElementName::NamespacedName(expr) => self.visit_jsx_namespaced_name(expr), - JSXElementName::MemberExpression(expr) => self.visit_jsx_member_expression(expr), - } self.leave_node(kind); } @@ -1668,7 +1663,7 @@ pub trait Visit<'a>: Sized { self.visit_ts_type(name); } if let Some(type_annotation) = &ty.type_annotation { - self.visit_ts_type(type_annotation); + self.visit_ts_type_annotation(type_annotation); } } diff --git a/crates/oxc_ast/src/visit_mut.rs b/crates/oxc_ast/src/visit_mut.rs index c1abda805eb26..af55551717ad9 100644 --- a/crates/oxc_ast/src/visit_mut.rs +++ b/crates/oxc_ast/src/visit_mut.rs @@ -1667,7 +1667,7 @@ pub trait VisitMut<'a>: Sized { self.visit_ts_type(name); } if let Some(type_annotation) = &mut ty.type_annotation { - self.visit_ts_type(type_annotation); + self.visit_ts_type_annotation(type_annotation); } } diff --git a/crates/oxc_codegen/Cargo.toml b/crates/oxc_codegen/Cargo.toml index 7005b0061bf7c..f1cf0030ffae7 100644 --- a/crates/oxc_codegen/Cargo.toml +++ b/crates/oxc_codegen/Cargo.toml @@ -23,9 +23,8 @@ oxc_ast = { workspace = true } oxc_span = { workspace = true } oxc_allocator = { workspace = true } oxc_syntax = { workspace = true } -sourcemap = { version = "7.0.1" } -bitflags = { workspace = true } + +bitflags = { workspace = true } [dev-dependencies] oxc_parser = { workspace = true } -base64 = "0.21.7" diff --git a/crates/oxc_codegen/examples/sourcemap.rs b/crates/oxc_codegen/examples/sourcemap.rs deleted file mode 100644 index 34e1bdf50199f..0000000000000 --- a/crates/oxc_codegen/examples/sourcemap.rs +++ /dev/null @@ -1,46 +0,0 @@ -use std::{env, path::Path}; - -use base64::{prelude::BASE64_STANDARD, Engine}; -use oxc_allocator::Allocator; -use oxc_codegen::{Codegen, CodegenOptions}; -use oxc_parser::Parser; -use oxc_span::SourceType; - -// Instruction: -// 1. create a `test.js` -// 2. run `cargo run -p oxc_codegen --example sourcemap` - -fn main() -> std::io::Result<()> { - let name = env::args().nth(1).unwrap_or_else(|| "test.js".to_string()); - let path = Path::new(&name); - let source_text = std::fs::read_to_string(path)?; - let source_type = SourceType::from_path(path).unwrap(); - let allocator = Allocator::default(); - let ret = Parser::new(&allocator, &source_text, source_type).parse(); - - if !ret.errors.is_empty() { - for error in ret.errors { - let error = error.with_source_code(source_text.clone()); - println!("{error:?}"); - } - return Ok(()); - } - - let codegen_options = CodegenOptions::default(); - let mut codegen = Codegen::::new(source_text.len(), codegen_options); - let content = codegen.with_sourcemap(&source_text, "").build(&ret.program); - let map = codegen.into_sourcemap(); - - let mut buff = vec![]; - map.to_writer(&mut buff).unwrap(); - let result = String::from_utf8(buff).unwrap(); - let hash = BASE64_STANDARD.encode(format!( - "{}\0{}{}\0{}", - content.len(), - content, - result.len(), - result - )); - println!("https://evanw.github.io/source-map-visualization/#{hash}"); - Ok(()) -} diff --git a/crates/oxc_codegen/src/gen.rs b/crates/oxc_codegen/src/gen.rs index 97f121b9e25df..0abeed3be60af 100644 --- a/crates/oxc_codegen/src/gen.rs +++ b/crates/oxc_codegen/src/gen.rs @@ -1,7 +1,6 @@ use oxc_allocator::{Box, Vec}; #[allow(clippy::wildcard_imports)] use oxc_ast::ast::*; -use oxc_span::GetSpan; use oxc_syntax::{ identifier::{LS, PS}, keyword::is_keyword, @@ -70,7 +69,6 @@ impl<'a, const MINIFY: bool> Gen for Hashbang<'a> { impl<'a, const MINIFY: bool> Gen for Directive<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, _ctx: Context) { - p.add_source_mapping(self.span.start); // A Use Strict Directive may not contain an EscapeSequence or LineContinuation. // So here should print original `directive` value, the `expression` value is escaped str. // See https://github.com/babel/babel/blob/main/packages/babel-generator/src/generators/base.ts#L64 @@ -110,7 +108,6 @@ impl<'a, const MINIFY: bool> Gen for Statement<'a> { impl<'a, const MINIFY: bool> Gen for ExpressionStatement<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, _ctx: Context) { - p.add_source_mapping(self.span.start); p.print_indent(); p.start_of_stmt = p.code_len(); p.print_expression(&self.expression); @@ -124,7 +121,6 @@ impl<'a, const MINIFY: bool> Gen for ExpressionStatement<'a> { impl<'a, const MINIFY: bool> Gen for IfStatement<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - p.add_source_mapping(self.span.start); p.print_indent(); print_if(self, p, ctx); } @@ -147,10 +143,10 @@ fn print_if( p.print_block1(block, ctx); } stmt if wrap_to_avoid_ambiguous_else(stmt) => { - p.print_block_start(stmt.span().start); + p.print_block_start(); stmt.gen(p, ctx); p.needs_semicolon = false; - p.print_block_end(stmt.span().end); + p.print_block_end(); } stmt => { stmt.gen(p, ctx); @@ -216,7 +212,6 @@ impl<'a, const MINIFY: bool> Gen for BlockStatement<'a> { impl<'a, const MINIFY: bool> Gen for ForStatement<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - p.add_source_mapping(self.span.start); p.print_indent(); p.print_str(b"for"); p.print_soft_space(); @@ -254,7 +249,6 @@ impl<'a, const MINIFY: bool> Gen for ForStatement<'a> { impl<'a, const MINIFY: bool> Gen for ForInStatement<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - p.add_source_mapping(self.span.start); p.print_indent(); p.print_str(b"for"); p.print_soft_space(); @@ -273,7 +267,6 @@ impl<'a, const MINIFY: bool> Gen for ForInStatement<'a> { impl<'a, const MINIFY: bool> Gen for ForOfStatement<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - p.add_source_mapping(self.span.start); p.print_indent(); p.print_str(b"for"); p.print_soft_space(); @@ -313,7 +306,6 @@ impl<'a, const MINIFY: bool> Gen for ForStatementLeft<'a> { impl<'a, const MINIFY: bool> Gen for WhileStatement<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - p.add_source_mapping(self.span.start); p.print_indent(); p.print_str(b"while"); p.print(b'('); @@ -325,7 +317,6 @@ impl<'a, const MINIFY: bool> Gen for WhileStatement<'a> { impl<'a, const MINIFY: bool> Gen for DoWhileStatement<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - p.add_source_mapping(self.span.start); p.print_indent(); p.print_str(b"do "); if let Statement::BlockStatement(block) = &self.body { @@ -348,7 +339,6 @@ impl<'a, const MINIFY: bool> Gen for DoWhileStatement<'a> { impl Gen for EmptyStatement { fn gen(&self, p: &mut Codegen<{ MINIFY }>, _ctx: Context) { - p.add_source_mapping(self.span.start); p.print_indent(); p.print_semicolon(); } @@ -356,7 +346,6 @@ impl Gen for EmptyStatement { impl<'a, const MINIFY: bool> Gen for ContinueStatement<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - p.add_source_mapping(self.span.start); p.print_indent(); p.print_str(b"continue"); if let Some(label) = &self.label { @@ -369,7 +358,6 @@ impl<'a, const MINIFY: bool> Gen for ContinueStatement<'a> { impl<'a, const MINIFY: bool> Gen for BreakStatement<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - p.add_source_mapping(self.span.start); p.print_indent(); p.print_str(b"break"); if let Some(label) = &self.label { @@ -382,18 +370,16 @@ impl<'a, const MINIFY: bool> Gen for BreakStatement<'a> { impl<'a, const MINIFY: bool> Gen for SwitchStatement<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - p.add_source_mapping(self.span.start); p.print_indent(); p.print_str(b"switch"); p.print(b'('); p.print_expression(&self.discriminant); p.print(b')'); - p.print_block_start(self.span.start); + p.print_block_start(); for case in &self.cases { - p.add_source_mapping(case.span.start); case.gen(p, ctx); } - p.print_block_end(self.span.end); + p.print_block_end(); p.print_soft_newline(); p.needs_semicolon = false; } @@ -424,7 +410,6 @@ impl<'a, const MINIFY: bool> Gen for SwitchCase<'a> { impl<'a, const MINIFY: bool> Gen for ReturnStatement<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, _ctx: Context) { - p.add_source_mapping(self.span.start); p.print_indent(); p.print_str(b"return"); if let Some(arg) = &self.argument { @@ -437,7 +422,6 @@ impl<'a, const MINIFY: bool> Gen for ReturnStatement<'a> { impl<'a, const MINIFY: bool> Gen for LabeledStatement<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - p.add_source_mapping(self.span.start); p.print_indent(); self.label.gen(p, ctx); p.print_colon(); @@ -447,7 +431,6 @@ impl<'a, const MINIFY: bool> Gen for LabeledStatement<'a> { impl<'a, const MINIFY: bool> Gen for TryStatement<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - p.add_source_mapping(self.span.start); p.print_indent(); p.print_str(b"try"); p.print_block1(&self.block, ctx); @@ -469,7 +452,6 @@ impl<'a, const MINIFY: bool> Gen for TryStatement<'a> { impl<'a, const MINIFY: bool> Gen for ThrowStatement<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, _ctx: Context) { - p.add_source_mapping(self.span.start); p.print_indent(); p.print_str(b"throw "); p.print_expression(&self.argument); @@ -479,7 +461,6 @@ impl<'a, const MINIFY: bool> Gen for ThrowStatement<'a> { impl<'a, const MINIFY: bool> Gen for WithStatement<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - p.add_source_mapping(self.span.start); p.print_indent(); p.print_str(b"with"); p.print(b'('); @@ -491,7 +472,6 @@ impl<'a, const MINIFY: bool> Gen for WithStatement<'a> { impl Gen for DebuggerStatement { fn gen(&self, p: &mut Codegen<{ MINIFY }>, _ctx: Context) { - p.add_source_mapping(self.span.start); p.print_indent(); p.print_str(b"debugger"); p.print_semicolon_after_statement(); @@ -608,7 +588,6 @@ impl<'a, const MINIFY: bool> Gen for UsingDeclaration<'a> { impl<'a, const MINIFY: bool> Gen for VariableDeclaration<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - p.add_source_mapping(self.span.start); if p.options.enable_typescript && self.modifiers.contains(ModifierKind::Declare) { p.print_str(b"declare "); } @@ -637,7 +616,6 @@ impl<'a, const MINIFY: bool> Gen for VariableDeclarator<'a> { impl<'a, const MINIFY: bool> Gen for Function<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - p.add_source_mapping(self.span.start); if !p.options.enable_typescript && self.is_typescript_syntax() { return; } @@ -685,14 +663,14 @@ impl<'a, const MINIFY: bool> Gen for Function<'a> { impl<'a, const MINIFY: bool> Gen for FunctionBody<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - p.print_block_start(self.span.start); + p.print_block_start(); p.print_directives_and_statements_with_semicolon_order( Some(&self.directives), &self.statements, ctx, true, ); - p.print_block_end(self.span.end); + p.print_block_end(); p.needs_semicolon = false; } } @@ -722,7 +700,6 @@ impl<'a, const MINIFY: bool> Gen for FormalParameters<'a> { impl<'a, const MINIFY: bool> Gen for ImportDeclaration<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - p.add_source_mapping(self.span.start); p.print_str(b"import "); if let Some(specifiers) = &self.specifiers { if specifiers.is_empty() { @@ -800,7 +777,6 @@ impl<'a, const MINIFY: bool> Gen for ImportDeclaration<'a> { p.print_hard_space(); } self.with_clause.gen(p, ctx); - p.add_source_mapping(self.span.end); p.print_semicolon_after_statement(); } } @@ -815,10 +791,9 @@ impl<'a, const MINIFY: bool> Gen for Option> { impl<'a, const MINIFY: bool> Gen for WithClause<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - p.add_source_mapping(self.span.start); self.attributes_keyword.gen(p, ctx); p.print_soft_space(); - p.print_block(&self.with_entries, Separator::Comma, ctx, self.span); + p.print_block(&self.with_entries, Separator::Comma, ctx); } } @@ -837,7 +812,6 @@ impl<'a, const MINIFY: bool> Gen for ImportAttribute<'a> { impl<'a, const MINIFY: bool> Gen for ExportNamedDeclaration<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - p.add_source_mapping(self.span.start); if !p.options.enable_typescript && self.is_typescript_syntax() { return; } @@ -887,7 +861,6 @@ impl<'a, const MINIFY: bool> Gen for ModuleExportName<'a> { impl<'a, const MINIFY: bool> Gen for ExportAllDeclaration<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - p.add_source_mapping(self.span.start); if !p.options.enable_typescript && self.is_typescript_syntax() { return; } @@ -912,7 +885,6 @@ impl<'a, const MINIFY: bool> Gen for ExportAllDeclaration<'a> { impl<'a, const MINIFY: bool> Gen for ExportDefaultDeclaration<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - p.add_source_mapping(self.span.start); if !p.options.enable_typescript && self.is_typescript_syntax() { return; } @@ -1015,34 +987,30 @@ impl<'a, const MINIFY: bool> Gen for IdentifierReference<'a> { // } // } // } - p.add_source_mapping_for_name(self.span.start, &self.name); p.print_str(self.name.as_bytes()); } } impl<'a, const MINIFY: bool> Gen for IdentifierName<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, _ctx: Context) { - p.add_source_mapping(self.span.start); p.print_str(self.name.as_bytes()); } } impl<'a, const MINIFY: bool> Gen for BindingIdentifier<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, _ctx: Context) { - p.print_symbol(self.span.start, self.symbol_id.get(), &self.name); + p.print_symbol(self.symbol_id.get(), &self.name); } } impl<'a, const MINIFY: bool> Gen for LabelIdentifier<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, _ctx: Context) { - p.add_source_mapping_for_name(self.span.start, &self.name); p.print_str(self.name.as_bytes()); } } impl Gen for BooleanLiteral { fn gen(&self, p: &mut Codegen<{ MINIFY }>, _ctx: Context) { - p.add_source_mapping(self.span.start); p.print_str(self.as_str().as_bytes()); } } @@ -1050,7 +1018,6 @@ impl Gen for BooleanLiteral { impl Gen for NullLiteral { fn gen(&self, p: &mut Codegen<{ MINIFY }>, _ctx: Context) { p.print_space_before_identifier(); - p.add_source_mapping(self.span.start); p.print_str(b"null"); } } @@ -1065,7 +1032,6 @@ fn need_space_before_dot(bytes: &[u8], p: &mut Codegen<{ MIN impl<'a, const MINIFY: bool> Gen for NumericLiteral<'a> { #[allow(clippy::cast_sign_loss, clippy::cast_possible_truncation)] fn gen(&self, p: &mut Codegen<{ MINIFY }>, _ctx: Context) { - p.add_source_mapping(self.span.start); if self.value != f64::INFINITY && (MINIFY || self.raw.is_empty()) { p.print_space_before_identifier(); let abs_value = self.value.abs(); @@ -1166,7 +1132,6 @@ fn print_non_negative_float(value: f64, _p: &Codegen<{ MINIF impl<'a, const MINIFY: bool> Gen for BigintLiteral<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, _ctx: Context) { - p.add_source_mapping(self.span.start); if self.raw.contains('_') { p.print_str(self.raw.replace('_', "").as_bytes()); } else { @@ -1177,7 +1142,6 @@ impl<'a, const MINIFY: bool> Gen for BigintLiteral<'a> { impl<'a, const MINIFY: bool> Gen for RegExpLiteral<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, _ctx: Context) { - p.add_source_mapping(self.span.start); let last = p.peek_nth(0); // Avoid forming a single-line comment or "(s: &str, quote: char, p: &mut Codegen< impl<'a, const MINIFY: bool> Gen for StringLiteral<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, _ctx: Context) { - p.add_source_mapping(self.span.start); let s = self.value.as_str(); p.wrap_quote(s, |p, quote| { print_unquoted_str(s, quote, p); @@ -1286,7 +1249,6 @@ impl<'a, const MINIFY: bool> Gen for StringLiteral<'a> { impl Gen for ThisExpression { fn gen(&self, p: &mut Codegen<{ MINIFY }>, _ctx: Context) { - p.add_source_mapping(self.span.start); p.print_space_before_identifier(); p.print_str(b"this"); } @@ -1346,7 +1308,6 @@ impl<'a, const MINIFY: bool> GenExpr for CallExpression<'a> { let wrap = precedence > self.precedence() || ctx.has_forbid_call(); let ctx = ctx.and_forbid_call(false); p.wrap(wrap, |p| { - p.add_source_mapping(self.span.start); self.callee.gen_expr(p, self.precedence(), ctx); if self.optional { p.print_str(b"?."); @@ -1384,7 +1345,6 @@ impl<'a, const MINIFY: bool> Gen for ArrayExpressionElement<'a> { impl<'a, const MINIFY: bool> Gen for SpreadElement<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, _ctx: Context) { - p.add_source_mapping(self.span.start); p.print_ellipsis(); self.argument.gen_expr(p, Precedence::Assign, Context::default()); } @@ -1392,14 +1352,12 @@ impl<'a, const MINIFY: bool> Gen for SpreadElement<'a> { impl<'a, const MINIFY: bool> Gen for ArrayExpression<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - p.add_source_mapping(self.span.start); p.print(b'['); p.print_list(&self.elements, ctx); if self.trailing_comma.is_some() { p.print_comma(); } p.print(b']'); - p.add_source_mapping(self.span.end); } } @@ -1408,7 +1366,6 @@ impl<'a, const MINIFY: bool> GenExpr for ObjectExpression<'a> { let n = p.code_len(); let is_multi_line = !self.properties.is_empty(); p.wrap(p.start_of_stmt == n || p.start_of_arrow_expr == n, |p| { - p.add_source_mapping(self.span.start); p.print(b'{'); if is_multi_line { p.indent(); @@ -1427,7 +1384,6 @@ impl<'a, const MINIFY: bool> GenExpr for ObjectExpression<'a> { p.print_indent(); } p.print(b'}'); - p.add_source_mapping(self.span.end); }); } } @@ -1444,16 +1400,13 @@ impl<'a, const MINIFY: bool> Gen for ObjectPropertyKind<'a> { impl<'a, const MINIFY: bool> Gen for ObjectProperty<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { if let Expression::FunctionExpression(func) = &self.value { - p.add_source_mapping(self.span.start); let is_accessor = match &self.kind { PropertyKind::Init => false, PropertyKind::Get => { - p.add_source_mapping(self.span.start); p.print_str(b"get "); true } PropertyKind::Set => { - p.add_source_mapping(self.span.start); p.print_str(b"set "); true } @@ -1516,7 +1469,6 @@ impl<'a, const MINIFY: bool> GenExpr for ArrowFunctionExpression<'a> { fn gen_expr(&self, p: &mut Codegen<{ MINIFY }>, precedence: Precedence, ctx: Context) { p.wrap(precedence > Precedence::Assign, |p| { if self.r#async { - p.add_source_mapping(self.span.start); p.print_str(b"async"); } @@ -1534,9 +1486,6 @@ impl<'a, const MINIFY: bool> GenExpr for ArrowFunctionExpression<'a> { type_parameters.gen(p, ctx); } } - if !nowrap { - p.add_source_mapping(self.span.start); - } p.wrap(!nowrap, |p| { self.params.gen(p, ctx); }); @@ -1565,7 +1514,6 @@ impl<'a, const MINIFY: bool> GenExpr for ArrowFunctionExpression<'a> { impl<'a, const MINIFY: bool> GenExpr for YieldExpression<'a> { fn gen_expr(&self, p: &mut Codegen<{ MINIFY }>, precedence: Precedence, ctx: Context) { p.wrap(precedence >= self.precedence(), |p| { - p.add_source_mapping(self.span.start); p.print_space_before_identifier(); p.print_str(b"yield"); if self.delegate { @@ -1586,7 +1534,6 @@ impl<'a, const MINIFY: bool> GenExpr for UpdateExpression<'a> { let operator = self.operator.as_str().as_bytes(); p.wrap(precedence > self.precedence(), |p| { if self.prefix { - p.add_source_mapping(self.span.start); p.print_space_before_operator(self.operator.into()); p.print_str(operator); p.prev_op = Some(self.operator.into()); @@ -1792,14 +1739,12 @@ impl<'a, const MINIFY: bool> Gen for AssignmentTargetPattern<'a> { impl<'a, const MINIFY: bool> Gen for ArrayAssignmentTarget<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - p.add_source_mapping(self.span.start); p.print(b'['); p.print_list(&self.elements, ctx); if let Some(target) = &self.rest { if !self.elements.is_empty() { p.print_comma(); } - p.add_source_mapping(self.span.start); p.print_ellipsis(); target.gen(p, ctx); } @@ -1807,7 +1752,6 @@ impl<'a, const MINIFY: bool> Gen for ArrayAssignmentTarget<'a> { p.print_comma(); } p.print(b']'); - p.add_source_mapping(self.span.end); } } @@ -1821,19 +1765,16 @@ impl<'a, const MINIFY: bool> Gen for Option Gen for ObjectAssignmentTarget<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - p.add_source_mapping(self.span.start); p.print(b'{'); p.print_list(&self.properties, ctx); if let Some(target) = &self.rest { if !self.properties.is_empty() { p.print_comma(); } - p.add_source_mapping(self.span.start); p.print_ellipsis(); target.gen(p, ctx); } p.print(b'}'); - p.add_source_mapping(self.span.end); } } @@ -1906,7 +1847,6 @@ impl<'a, const MINIFY: bool> GenExpr for ImportExpression<'a> { let wrap = precedence > self.precedence() || ctx.has_forbid_call(); let ctx = ctx.and_forbid_call(false); p.wrap(wrap, |p| { - p.add_source_mapping(self.span.start); p.print_str(b"import("); self.source.gen_expr(p, Precedence::Assign, ctx); if !self.arguments.is_empty() { @@ -1924,7 +1864,6 @@ impl<'a, const MINIFY: bool> Gen for TemplateLiteral<'a> { let mut expressions = self.expressions.iter(); for quasi in &self.quasis { - p.add_source_mapping(quasi.span.start); p.print_str(quasi.value.raw.as_bytes()); if let Some(expr) = expressions.next() { @@ -1940,7 +1879,6 @@ impl<'a, const MINIFY: bool> Gen for TemplateLiteral<'a> { impl<'a, const MINIFY: bool> Gen for TaggedTemplateExpression<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - p.add_source_mapping(self.span.start); self.tag.gen_expr(p, Precedence::Postfix, Context::default()); self.quasi.gen(p, ctx); } @@ -1948,7 +1886,6 @@ impl<'a, const MINIFY: bool> Gen for TaggedTemplateExpression<'a> { impl Gen for Super { fn gen(&self, p: &mut Codegen<{ MINIFY }>, _ctx: Context) { - p.add_source_mapping(self.span.start); p.print_str(b"super"); } } @@ -1956,7 +1893,6 @@ impl Gen for Super { impl<'a, const MINIFY: bool> GenExpr for AwaitExpression<'a> { fn gen_expr(&self, p: &mut Codegen<{ MINIFY }>, precedence: Precedence, ctx: Context) { p.wrap(precedence > self.precedence(), |p| { - p.add_source_mapping(self.span.start); p.print_str(b"await "); self.argument.gen_expr(p, self.precedence(), ctx); }); @@ -1975,7 +1911,6 @@ impl<'a, const MINIFY: bool> GenExpr for ChainExpression<'a> { impl<'a, const MINIFY: bool> GenExpr for NewExpression<'a> { fn gen_expr(&self, p: &mut Codegen<{ MINIFY }>, precedence: Precedence, ctx: Context) { p.wrap(precedence > self.precedence(), |p| { - p.add_source_mapping(self.span.start); p.print_str(b"new "); self.callee.gen_expr(p, Precedence::NewWithoutArgs, ctx.and_forbid_call(true)); p.wrap(true, |p| { @@ -1987,7 +1922,6 @@ impl<'a, const MINIFY: bool> GenExpr for NewExpression<'a> { impl<'a, const MINIFY: bool> Gen for MetaProperty<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - p.add_source_mapping(self.span.start); self.meta.gen(p, ctx); p.print(b'.'); self.property.gen(p, ctx); @@ -1996,7 +1930,6 @@ impl<'a, const MINIFY: bool> Gen for MetaProperty<'a> { impl<'a, const MINIFY: bool> Gen for Class<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - p.add_source_mapping(self.span.start); if !p.options.enable_typescript && self.is_declare() { return; } @@ -2017,7 +1950,7 @@ impl<'a, const MINIFY: bool> Gen for Class<'a> { super_class.gen_expr(p, Precedence::Call, Context::default()); } p.print_soft_space(); - p.print_block_start(self.body.span.start); + p.print_block_start(); for item in &self.body.body { if !p.options.enable_typescript && item.is_typescript_syntax() { continue; @@ -2035,7 +1968,7 @@ impl<'a, const MINIFY: bool> Gen for Class<'a> { } p.print_soft_newline(); } - p.print_block_end(self.body.span.end); + p.print_block_end(); p.needs_semicolon = false; }); } @@ -2055,7 +1988,6 @@ impl<'a, const MINIFY: bool> Gen for ClassElement<'a> { impl<'a, const MINIFY: bool> Gen for JSXIdentifier<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, _ctx: Context) { - p.add_source_mapping_for_name(self.span.start, &self.name); p.print_str(self.name.as_bytes()); } } @@ -2165,7 +2097,6 @@ impl<'a, const MINIFY: bool> Gen for JSXAttributeItem<'a> { impl<'a, const MINIFY: bool> Gen for JSXOpeningElement<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - p.add_source_mapping(self.span.start); p.print_str(b"<"); self.name.gen(p, ctx); for attr in &self.attributes { @@ -2182,7 +2113,6 @@ impl<'a, const MINIFY: bool> Gen for JSXOpeningElement<'a> { impl<'a, const MINIFY: bool> Gen for JSXClosingElement<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - p.add_source_mapping(self.span.start); p.print_str(b"'); @@ -2203,21 +2133,18 @@ impl<'a, const MINIFY: bool> Gen for JSXElement<'a> { impl Gen for JSXOpeningFragment { fn gen(&self, p: &mut Codegen<{ MINIFY }>, _ctx: Context) { - p.add_source_mapping(self.span.start); p.print_str(b"<>"); } } impl Gen for JSXClosingFragment { fn gen(&self, p: &mut Codegen<{ MINIFY }>, _ctx: Context) { - p.add_source_mapping(self.span.start); p.print_str(b""); } } impl<'a, const MINIFY: bool> Gen for JSXText<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, _ctx: Context) { - p.add_source_mapping(self.span.start); p.print_str(self.value.as_bytes()); } } @@ -2253,24 +2180,19 @@ impl<'a, const MINIFY: bool> Gen for JSXFragment<'a> { impl<'a, const MINIFY: bool> Gen for StaticBlock<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - p.add_source_mapping(self.span.start); p.print_str(b"static"); - p.print_block_start(self.span.start); + p.print_block_start(); for stmt in &self.body { p.print_semicolon_if_needed(); stmt.gen(p, ctx); } - p.print_block_end(self.span.end); + p.print_block_end(); p.needs_semicolon = false; } } impl<'a, const MINIFY: bool> Gen for MethodDefinition<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - if !p.options.enable_typescript && self.value.is_typescript_syntax() { - return; - } - p.add_source_mapping(self.span.start); self.decorators.gen(p, ctx); if p.options.enable_typescript @@ -2285,12 +2207,8 @@ impl<'a, const MINIFY: bool> Gen for MethodDefinition<'a> { match &self.kind { MethodDefinitionKind::Constructor | MethodDefinitionKind::Method => {} - MethodDefinitionKind::Get => { - p.print_str(b"get "); - } - MethodDefinitionKind::Set => { - p.print_str(b"set "); - } + MethodDefinitionKind::Get => p.print_str(b"get "), + MethodDefinitionKind::Set => p.print_str(b"set "), } if self.value.r#async { @@ -2329,7 +2247,6 @@ impl<'a, const MINIFY: bool> Gen for MethodDefinition<'a> { impl<'a, const MINIFY: bool> Gen for PropertyDefinition<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - p.add_source_mapping(self.span.start); self.decorators.gen(p, ctx); if p.options.enable_typescript { if self.r#type == PropertyDefinitionType::TSAbstractPropertyDefinition { @@ -2375,7 +2292,6 @@ impl<'a, const MINIFY: bool> Gen for PropertyDefinition<'a> { impl<'a, const MINIFY: bool> Gen for AccessorProperty<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - p.add_source_mapping(self.span.start); if self.r#static { p.print_str(b"static "); } @@ -2396,7 +2312,6 @@ impl<'a, const MINIFY: bool> Gen for AccessorProperty<'a> { impl<'a, const MINIFY: bool> Gen for PrivateIdentifier<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, _ctx: Context) { - p.add_source_mapping_for_name(self.span.start, &self.name); p.print(b'#'); p.print_str(self.name.as_bytes()); } @@ -2425,7 +2340,6 @@ impl<'a, const MINIFY: bool> Gen for BindingPattern<'a> { impl<'a, const MINIFY: bool> Gen for ObjectPattern<'a> { fn gen(&self, p: &mut Codegen, ctx: Context) { - p.add_source_mapping(self.span.start); p.print(b'{'); p.print_list(&self.properties, ctx); if let Some(rest) = &self.rest { @@ -2435,13 +2349,11 @@ impl<'a, const MINIFY: bool> Gen for ObjectPattern<'a> { rest.gen(p, ctx); } p.print(b'}'); - p.add_source_mapping(self.span.end); } } impl<'a, const MINIFY: bool> Gen for BindingProperty<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - p.add_source_mapping(self.span.start); if self.computed { p.print(b'['); } @@ -2460,7 +2372,6 @@ impl<'a, const MINIFY: bool> Gen for BindingProperty<'a> { impl<'a, const MINIFY: bool> Gen for BindingRestElement<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - p.add_source_mapping(self.span.start); p.print_ellipsis(); self.argument.gen(p, ctx); } @@ -2468,7 +2379,6 @@ impl<'a, const MINIFY: bool> Gen for BindingRestElement<'a> { impl<'a, const MINIFY: bool> Gen for ArrayPattern<'a> { fn gen(&self, p: &mut Codegen<{ MINIFY }>, ctx: Context) { - p.add_source_mapping(self.span.start); p.print(b'['); for (index, item) in self.elements.iter().enumerate() { if index != 0 { @@ -2485,7 +2395,6 @@ impl<'a, const MINIFY: bool> Gen for ArrayPattern<'a> { rest.gen(p, ctx); } p.print(b']'); - p.add_source_mapping(self.span.end); } } @@ -2524,7 +2433,6 @@ impl<'a, const MINIFY: bool> Gen for Decorator<'a> { } } - p.add_source_mapping(self.span.start); p.print(b'@'); let wrap = need_wrap(&self.expression); p.wrap(wrap, |p| { diff --git a/crates/oxc_codegen/src/gen_ts.rs b/crates/oxc_codegen/src/gen_ts.rs index 314a6073d5de0..ead7bcfaab03d 100644 --- a/crates/oxc_codegen/src/gen_ts.rs +++ b/crates/oxc_codegen/src/gen_ts.rs @@ -519,18 +519,18 @@ impl<'a, const MINIFY: bool> Gen for TSModuleDeclaration<'a> { p.print_hard_space(); match &self.body { TSModuleDeclarationBody::TSModuleDeclaration(body) => { - p.print_block_start(body.span.start); + p.print_block_start(); body.gen(p, ctx); - p.print_block_end(body.span.end); + p.print_block_end(); } TSModuleDeclarationBody::TSModuleBlock(body) => { - p.print_block_start(body.span.start); + p.print_block_start(); for item in &body.body { p.print_semicolon_if_needed(); item.gen(p, ctx); } p.print_semicolon_if_needed(); - p.print_block_end(body.span.end); + p.print_block_end(); } } if MINIFY { @@ -560,14 +560,14 @@ impl<'a, const MINIFY: bool> Gen for TSInterfaceDeclaration<'a> { } } p.print_soft_space(); - p.print_block_start(self.body.span.start); + p.print_block_start(); for item in &self.body.body { p.print_indent(); p.print_semicolon_if_needed(); item.gen(p, ctx); p.print_semicolon_after_statement(); } - p.print_block_end(self.body.span.end); + p.print_block_end(); if MINIFY { p.print_hard_space(); } @@ -605,9 +605,9 @@ impl<'a, const MINIFY: bool> Gen for TSEnumDeclaration<'a> { p.print_str(b"enum "); self.id.gen(p, ctx); p.print_space_before_identifier(); - p.print_block_start(self.span.start); + p.print_block_start(); p.print_list(&self.members, ctx); - p.print_block_end(self.span.end); + p.print_block_end(); p.print_hard_space(); } } diff --git a/crates/oxc_codegen/src/lib.rs b/crates/oxc_codegen/src/lib.rs index a1941b7d8c8aa..e963eba297531 100644 --- a/crates/oxc_codegen/src/lib.rs +++ b/crates/oxc_codegen/src/lib.rs @@ -12,20 +12,18 @@ mod context; mod gen; mod gen_ts; mod operator; -mod sourcemap_builder; use std::str::from_utf8_unchecked; #[allow(clippy::wildcard_imports)] use oxc_ast::ast::*; -use oxc_span::{Atom, Span}; +use oxc_span::Atom; use oxc_syntax::{ identifier::is_identifier_part, operator::{BinaryOperator, UnaryOperator, UpdateOperator}, precedence::Precedence, symbol::SymbolId, }; -use sourcemap_builder::SourcemapBuilder; pub use crate::{ context::Context, @@ -63,9 +61,6 @@ pub struct Codegen { /// Track the current indentation level indentation: u8, - - // sourcemap - sourcemap_builder: SourcemapBuilder, } #[derive(Debug, Clone, Copy)] @@ -93,7 +88,6 @@ impl Codegen { start_of_arrow_expr: 0, start_of_default_export: 0, indentation: 0, - sourcemap_builder: SourcemapBuilder::default(), } } @@ -101,25 +95,14 @@ impl Codegen { // self.mangler = Some(mangler); // } - pub fn with_sourcemap(&mut self, source: &str, source_name: &str) -> &mut Self { - self.sourcemap_builder - .with_enable_sourcemap(true) - .with_source_and_name(source, source_name); - self - } - - pub fn build(&mut self, program: &Program<'_>) -> String { - program.gen(self, Context::default()); + pub fn build(mut self, program: &Program<'_>) -> String { + program.gen(&mut self, Context::default()); self.into_code() } - pub fn into_code(&mut self) -> String { + pub fn into_code(self) -> String { // SAFETY: criteria of `from_utf8_unchecked`.are met. - unsafe { String::from_utf8_unchecked(std::mem::take(&mut self.code)) } - } - - pub fn into_sourcemap(self) -> sourcemap::SourceMap { - self.sourcemap_builder.into_sourcemap() + unsafe { String::from_utf8_unchecked(self.code) } } fn code(&self) -> &Vec { @@ -238,37 +221,29 @@ impl Codegen { } } - fn print_block_start(&mut self, position: u32) { - self.add_source_mapping(position); + fn print_block_start(&mut self) { self.print(b'{'); self.print_soft_newline(); self.indent(); } - fn print_block_end(&mut self, position: u32) { + fn print_block_end(&mut self) { self.dedent(); self.print_indent(); - self.add_source_mapping(position); self.print(b'}'); } fn print_block1(&mut self, stmt: &BlockStatement<'_>, ctx: Context) { - self.print_block_start(stmt.span.start); + self.print_block_start(); self.print_directives_and_statements_with_semicolon_order(None, &stmt.body, ctx, true); - self.print_block_end(stmt.span.end); + self.print_block_end(); self.needs_semicolon = false; } - fn print_block>( - &mut self, - items: &[T], - separator: Separator, - ctx: Context, - span: Span, - ) { - self.print_block_start(span.start); + fn print_block>(&mut self, items: &[T], separator: Separator, ctx: Context) { + self.print_block_start(); self.print_sequence(items, separator, ctx); - self.print_block_end(span.end); + self.print_block_end(); } fn print_list>(&mut self, items: &[T], ctx: Context) { @@ -299,7 +274,7 @@ impl Codegen { } } - fn print_symbol(&mut self, start: u32, _symbol_id: Option, fallback: &Atom) { + fn print_symbol(&mut self, _symbol_id: Option, fallback: &Atom) { // if let Some(mangler) = &self.mangler { // if let Some(symbol_id) = symbol_id { // let name = mangler.get_symbol_name(symbol_id); @@ -307,7 +282,6 @@ impl Codegen { // return; // } // } - self.add_source_mapping_for_name(start, fallback); self.print_str(fallback.as_bytes()); } @@ -403,14 +377,6 @@ impl Codegen { } } } - - fn add_source_mapping(&mut self, position: u32) { - self.sourcemap_builder.add_source_mapping(&self.code, position, None); - } - - fn add_source_mapping_for_name(&mut self, position: u32, name: &str) { - self.sourcemap_builder.add_source_mapping(&self.code, position, Some(name)); - } } fn choose_quote(s: &str) -> char { diff --git a/crates/oxc_codegen/src/sourcemap_builder.rs b/crates/oxc_codegen/src/sourcemap_builder.rs deleted file mode 100644 index 9afa86526cfb7..0000000000000 --- a/crates/oxc_codegen/src/sourcemap_builder.rs +++ /dev/null @@ -1,189 +0,0 @@ -use oxc_syntax::identifier::{LS, PS}; - -/// Line offset table -/// -/// Used for tracking lines and columns from byte offsets via binary search. -/// -/// Code is adapted from [esbuild](https://github.com/evanw/esbuild/blob/cc74e6042a9f573bf58e1e3f165ebda70af4ad3b/internal/js_printer/js_printer.go#L4806-L4808) -#[derive(Debug)] -pub struct LineOffsetTable { - columns: Option>, - byte_offset_to_first: usize, - byte_offset_to_start_of_line: usize, -} - -#[allow(clippy::struct_field_names)] -pub struct SourcemapBuilder { - enable_sourcemap: bool, - source_id: u32, - last_generated_update: usize, - last_position: Option, - line_offset_tables: Vec, - sourcemap_builder: sourcemap::SourceMapBuilder, - generated_line: u32, - generated_column: u32, -} - -impl Default for SourcemapBuilder { - fn default() -> Self { - Self { - enable_sourcemap: false, - source_id: 0, - last_generated_update: 0, - last_position: None, - line_offset_tables: vec![], - sourcemap_builder: sourcemap::SourceMapBuilder::new(None), - generated_line: 0, - generated_column: 0, - } - } -} - -impl SourcemapBuilder { - pub fn with_enable_sourcemap(&mut self, enable_sourcemap: bool) -> &mut Self { - self.enable_sourcemap = enable_sourcemap; - self - } - - pub fn with_source_and_name(&mut self, source: &str, name: &str) -> &mut Self { - self.line_offset_tables = Self::generate_line_offset_tables(source); - self.source_id = self.sourcemap_builder.add_source(name); - self.sourcemap_builder.set_source_contents(self.source_id, Some(source)); - self - } - - pub fn into_sourcemap(self) -> sourcemap::SourceMap { - self.sourcemap_builder.into_sourcemap() - } - - pub fn add_source_mapping(&mut self, output: &Vec, position: u32, name: Option<&str>) { - if self.enable_sourcemap { - if matches!(self.last_position, Some(last_position) if last_position >= position) { - return; - } - let (original_line, original_column) = self.search_original_line_and_column(position); - self.update_generated_line_and_column(output); - let name_id = name.map(|s| self.sourcemap_builder.add_name(s)); - self.sourcemap_builder.add_raw( - self.generated_line, - self.generated_column, - original_line, - original_column, - Some(self.source_id), - name_id, - ); - self.last_position = Some(position); - } - } - - #[allow(clippy::cast_possible_truncation)] - fn search_original_line_and_column(&self, position: u32) -> (u32, u32) { - let result = self - .line_offset_tables - .partition_point(|table| table.byte_offset_to_start_of_line <= position as usize); - let original_line = if result > 0 { result - 1 } else { 0 }; - let line = &self.line_offset_tables[original_line]; - let mut original_column = (position as usize) - line.byte_offset_to_start_of_line; - if original_column >= line.byte_offset_to_first { - if let Some(cols) = &line.columns { - original_column = cols[original_column - line.byte_offset_to_first]; - } - } - (original_line as u32, original_column as u32) - } - - #[allow(clippy::cast_possible_truncation)] - fn update_generated_line_and_column(&mut self, output: &Vec) { - // SAFETY: criteria of `from_utf8_unchecked` are met - let s = unsafe { std::str::from_utf8_unchecked(&output[self.last_generated_update..]) }; - for (i, ch) in s.char_indices() { - match ch { - '\r' | '\n' | LS | PS => { - // Handle Windows-specific "\r\n" newlines - if ch == '\r' && output[self.last_generated_update + i + 1] == b'\n' { - continue; - } - self.generated_line += 1; - self.generated_column = 0; - } - _ => { - // Mozilla's "source-map" library counts columns using UTF-16 code units - self.generated_column += ch.len_utf16() as u32; - } - } - } - self.last_generated_update = output.len(); - } - - fn generate_line_offset_tables(content: &str) -> Vec { - let mut tables = vec![]; - let mut columns = None; - let mut column = 0; - let mut column_byte_offset = 0; - let mut line_byte_offset = 0; - let mut byte_offset_to_first = 0; - for (i, ch) in content.char_indices() { - // Mark the start of the next line - if column == 0 { - line_byte_offset = i; - } - - // Start the mapping if this character is non-ASCII - if !ch.is_ascii() && columns.is_none() { - column_byte_offset = i - line_byte_offset; - byte_offset_to_first = column_byte_offset; - columns = Some(vec![]); - } - - // Update the per-byte column offsets - if let Some(columns) = &mut columns { - for _ in column_byte_offset..=(i - line_byte_offset) { - columns.push(column); - } - } - - match ch { - '\r' | '\n' | LS | PS => { - // Handle Windows-specific "\r\n" newlines - if ch == '\r' && content.chars().nth(i + 1) == Some('\n') { - column += 1; - continue; - } - - tables.push(LineOffsetTable { - columns, - byte_offset_to_first, - byte_offset_to_start_of_line: line_byte_offset, - }); - column = 0; - columns = None; - byte_offset_to_first = 0; - column_byte_offset = 0; - } - _ => { - // Mozilla's "source-map" library counts columns using UTF-16 code units - column += ch.len_utf16(); - } - } - } - // Mark the start of the next line - if column == 0 { - line_byte_offset = content.len(); - } - - // Do one last update for the column at the end of the file - if let Some(columns) = &mut columns { - for _ in column_byte_offset..=(content.len() - line_byte_offset) { - columns.push(column); - } - } - - tables.push(LineOffsetTable { - columns, - byte_offset_to_first, - byte_offset_to_start_of_line: line_byte_offset, - }); - - tables - } -} diff --git a/crates/oxc_language_server/src/main.rs b/crates/oxc_language_server/src/main.rs index 8596990c73ffc..c6c820c063d05 100644 --- a/crates/oxc_language_server/src/main.rs +++ b/crates/oxc_language_server/src/main.rs @@ -44,7 +44,6 @@ enum Run { OnType, } #[derive(Debug, Serialize, Deserialize, Clone)] -#[serde(rename_all = "camelCase")] struct Options { run: Run, enable: bool, @@ -89,6 +88,7 @@ impl LanguageServer for Backend { async fn initialize(&self, params: InitializeParams) -> Result { self.init(params.root_uri)?; self.init_ignore_glob().await; + self.init_linter_config().await; let options = params.initialization_options.and_then(|mut value| { let settings = value.get_mut("settings")?.take(); serde_json::from_value::(settings).ok() @@ -99,7 +99,6 @@ impl LanguageServer for Backend { info!("language server version: {:?}", env!("CARGO_PKG_VERSION")); *self.options.lock().await = value; } - self.init_linter_config().await; Ok(InitializeResult { server_info: Some(ServerInfo { name: "oxc".into(), version: None }), offset_encoding: None, diff --git a/crates/oxc_linter/src/context.rs b/crates/oxc_linter/src/context.rs index e69ddbaa8577b..a5678e81db911 100644 --- a/crates/oxc_linter/src/context.rs +++ b/crates/oxc_linter/src/context.rs @@ -2,7 +2,7 @@ use std::{cell::RefCell, path::Path, rc::Rc, sync::Arc}; use oxc_codegen::{Codegen, CodegenOptions}; use oxc_diagnostics::Error; -use oxc_semantic::{AstNodes, JSDocFinder, ScopeTree, Semantic, SymbolTable}; +use oxc_semantic::{AstNodes, JSDoc, ScopeTree, Semantic, SymbolTable}; use oxc_span::SourceType; use crate::{ @@ -155,7 +155,7 @@ impl<'a> LintContext<'a> { } /* JSDoc */ - pub fn jsdoc(&self) -> &JSDocFinder<'a> { + pub fn jsdoc(&self) -> &JSDoc<'a> { self.semantic().jsdoc() } } diff --git a/crates/oxc_linter/src/rules/eslint/getter_return.rs b/crates/oxc_linter/src/rules/eslint/getter_return.rs index dc27bfc39bbf8..24c6ce800a196 100644 --- a/crates/oxc_linter/src/rules/eslint/getter_return.rs +++ b/crates/oxc_linter/src/rules/eslint/getter_return.rs @@ -108,7 +108,6 @@ impl GetterReturn { } } - /// Checks whether it is necessary to check the node fn is_wanted_node(node: &AstNode, ctx: &LintContext<'_>) -> bool { if let Some(parent) = ctx.nodes().parent_node(node.id()) { match parent.kind() { @@ -193,7 +192,7 @@ impl GetterReturn { // // We stop this path on a ::Yes because if it was a ::No, // we would have already returned early before exploring more edges - => Some(DefinitelyReturnsOrThrowsOrUnreachable::Yes), + => Some(DefinitelyReturnsOrThrows::Yes), }, // We ignore the state going into this rule because we only care whether // or not this path definitely returns or throws. @@ -202,29 +201,6 @@ impl GetterReturn { // or No (when we see this, we immediately stop walking). Other rules that require knowing // previous such as [`no_this_before_super`] we would want to observe this value. &mut |basic_block_id, _state_going_into_this_rule| { - // The expression is the equivalent of return. - // Therefore, if a function is an expression, it always returns its value. - // - // Example expression: - // ```js - // const fn = () => 1; - // ``` - if let AstKind::ArrowFunctionExpression(arrow_expr) = node.kind() { - if arrow_expr.expression { - return (DefinitelyReturnsOrThrowsOrUnreachable::Yes, false); - } - } - - // If the signature of function supports the return of the `undefined` value, - // you do not need to check this rule - if let AstKind::Function(func) = node.kind() { - if let Some(ref ret) = func.return_type { - if ret.type_annotation.is_maybe_undefined() { - return (DefinitelyReturnsOrThrowsOrUnreachable::Yes, false); - } - } - } - // Scan through the values in this basic block. for entry in cfg.basic_block_by_index(*basic_block_id) { match entry { @@ -254,7 +230,7 @@ impl GetterReturn { // Return false as the second argument to signify we should // not continue walking this branch, as we know a return // is the end of this path. - return (DefinitelyReturnsOrThrowsOrUnreachable::No, false); + return (DefinitelyReturnsOrThrows::No, false); } // Otherwise, we definitely returned since we assigned // to the return register. @@ -262,36 +238,32 @@ impl GetterReturn { // Return false as the second argument to signify we should // not continue walking this branch, as we know a return // is the end of this path. - return (DefinitelyReturnsOrThrowsOrUnreachable::Yes, false); + return (DefinitelyReturnsOrThrows::Yes, false); } } - // Throws are classified as returning. - // - // todo: test with catching... - BasicBlockElement::Throw(_) | - // Although the unreachable code is not returned, it will never be executed. - // There is no point in checking it for return. - // - // An example in such cases: - // ```js - // switch (val) { - // default: return 1; - // } - // return -1; - // ``` - // Make return useless. + BasicBlockElement::Throw(_) => { + // Throws are classified as returning. + // + // todo: test with catching... + return (DefinitelyReturnsOrThrows::Yes, false); + } BasicBlockElement::Unreachable => { - - return (DefinitelyReturnsOrThrowsOrUnreachable::Yes, false); + // Unreachable signifies the last element of this basic block and + // this path that will be observed by javascript, therefore if we + // haven't returned yet we won't after this. + // + // Return false as the second argument to signify we should + // not continue walking this branch, as we know a return + // is the end of this path. + return (DefinitelyReturnsOrThrows::No, false); } } } - // Return true as the second argument to signify we should // continue walking this branch, as we haven't seen anything // that will signify to us that this path of the program will // definitely return or throw. - (DefinitelyReturnsOrThrowsOrUnreachable::No, true) + (DefinitelyReturnsOrThrows::No, true) }, ); @@ -299,7 +271,7 @@ impl GetterReturn { // codepaths is as simple as seeing if each individual codepath // definitely returns or throws. let definitely_returns_in_all_codepaths = - output.into_iter().all(|y| matches!(y, DefinitelyReturnsOrThrowsOrUnreachable::Yes)); + output.into_iter().all(|y| matches!(y, DefinitelyReturnsOrThrows::Yes)); // If not, flag it as a diagnostic. if !definitely_returns_in_all_codepaths { @@ -309,7 +281,7 @@ impl GetterReturn { } #[derive(Default, Copy, Clone, Debug)] -enum DefinitelyReturnsOrThrowsOrUnreachable { +enum DefinitelyReturnsOrThrows { #[default] No, Yes, @@ -393,41 +365,6 @@ fn test() { ("foo.create(null, { bar: { get() {} } });", None), ("var foo = { get willThrowSoValid() { throw MyException() } };", None), ("export abstract class Foo { protected abstract get foobar(): number; }", None), - ("class T { - theme: number; - get type(): number { - switch (theme) { - case 1: return 1; - case 2: return 2; - default: return 3; - } - throw new Error('test') - } - }", None), - ("class T { - theme: number; - get type(): number { - switch (theme) { - case 1: return 1; - case 2: return 2; - default: return 3; - } - } - }", None), - ("const originalClearTimeout = targetWindow.clearTimeout; - Object.defineProperty(targetWindow, 'vscodeOriginalClearTimeout', { get: () => originalClearTimeout }); - ", None), - ("class T { - get width(): number | undefined { - const val = undefined - if (!val) { - return; - } - - return val * val; - } - }", None), - ("function fn(): void { console.log('test') }", None) ]; let fail = vec![ diff --git a/crates/oxc_linter/src/rules/import/namespace.rs b/crates/oxc_linter/src/rules/import/namespace.rs index 42e87eecaa520..5f66578ff238f 100644 --- a/crates/oxc_linter/src/rules/import/namespace.rs +++ b/crates/oxc_linter/src/rules/import/namespace.rs @@ -1,27 +1,16 @@ -use oxc_ast::AstKind; use oxc_diagnostics::{ miette::{self, Diagnostic}, thiserror::Error, }; use oxc_macros::declare_oxc_lint; -use oxc_span::{CompactString, GetSpan, Span}; -use oxc_syntax::module_record::ImportImportName; +use oxc_span::{CompactString, Span}; use crate::{context::LintContext, rule::Rule}; #[derive(Debug, Error, Diagnostic)] -enum NamespaceDiagnostic { - #[error("eslint-plugin-import(namespace): {1:?} not found in imported namespace {2:?}.")] - #[diagnostic(severity(warning))] - NoExport(#[label] Span, CompactString, CompactString), - #[error("eslint-plugin-import(namespace): Unable to validate computed reference to imported namespace {1:?} - .")] - #[diagnostic(severity(warning))] - ComputedReference(#[label] Span, CompactString), - #[error("eslint-plugin-import(namespace): Assignment to member of namespace {1:?}.'")] - #[diagnostic(severity(warning))] - Assignment(#[label] Span, CompactString), -} +#[error("eslint-plugin-import(namespace): ")] +#[diagnostic(severity(warning), help(""))] +struct NamespaceDiagnostic(CompactString, #[label] pub Span); /// #[derive(Debug, Default, Clone)] @@ -29,85 +18,13 @@ pub struct Namespace; declare_oxc_lint!( /// ### What it does - /// Enforces names exist at the time they are dereferenced, when imported as a full namespace (i.e. import * as foo from './foo'; foo.bar(); will report if bar is not exported by ./foo.). - /// Will report at the import declaration if there are no exported names found. - /// Also, will report for computed references (i.e. foo["bar"]()). - /// Reports on assignment to a member of an imported namespace. + /// TODO Namespace, nursery ); impl Rule for Namespace { - fn run_once(&self, ctx: &LintContext<'_>) { - ctx.semantic().module_record().import_entries.iter().for_each(|entry| { - if !matches!(entry.import_name, ImportImportName::NamespaceObject) { - return; - } - let source = entry.module_request.name(); - let module_record = ctx.semantic().module_record(); - let Some(module) = module_record.loaded_modules.get(source) else { - return; - }; - - if module.not_esm { - return; - } - - let Some(symbol_id) = - ctx.semantic().symbols().get_symbol_id_from_span(&entry.local_name.span()) - else { - return; - }; - - let check_binding_exported = |name: &str, span| { - if module.exported_bindings.get(name).is_some() { - return; - } - ctx.diagnostic(NamespaceDiagnostic::NoExport(span, name.into(), source.clone())); - }; - - ctx.symbols().get_resolved_references(symbol_id).for_each(|reference| { - if let Some(node) = ctx.nodes().parent_node(reference.node_id()) { - let name = entry.local_name.name(); - - match node.kind() { - AstKind::MemberExpression(member) => { - if matches!( - ctx.nodes().parent_kind(node.id()), - Some(AstKind::SimpleAssignmentTarget(_)) - ) { - ctx.diagnostic(NamespaceDiagnostic::Assignment( - member.span(), - name.clone(), - )); - }; - - // TODO: Support allow_computed option - if member.is_computed() { - return ctx.diagnostic(NamespaceDiagnostic::ComputedReference( - member.span(), - name.clone(), - )); - } - - if let Some((span, name)) = member.static_property_info() { - check_binding_exported(name, span); - } - } - - AstKind::JSXMemberExpressionObject(_) => { - if let Some(AstKind::JSXMemberExpression(expr)) = - ctx.nodes().parent_kind(node.id()) - { - check_binding_exported(&expr.property.name, expr.property.span); - } - } - _ => {} - } - } - }); - }); - } + fn run_once(&self, _ctx: &LintContext<'_>) {} } #[test] @@ -116,11 +33,11 @@ fn test() { let pass = vec![ r#"import "./malformed.js""#, - r"import * as foo from './empty-folder';", - r#"import * as names from "./named-exports"; console.log((names.b).c);"#, - r#"import * as names from "./named-exports"; console.log(names.a);"#, + // r#"import * as foo from './empty-folder';"#, + // r#"import * as names from "./named-exports"; console.log((names.b).c);"#, + // r#"import * as names from "./named-exports"; console.log(names.a);"#, // r#"import * as names from "./re-export-names"; console.log(names.foo);"#, - r"import * as elements from './jsx';", + // r#"import * as elements from './jsx';"#, // r#"import * as foo from "./jsx/re-export.js"; // console.log(foo.jsxFoo);"#, // r#"import * as foo from "./jsx/bar/index.js"; @@ -201,10 +118,10 @@ fn test() { ]; let fail = vec![ - r"import * as names from './named-exports'; console.log(names.c)", - r"import * as names from './named-exports'; console.log(names['a']);", - r"import * as foo from './bar'; foo.foo = 'y';", - r"import * as foo from './bar'; foo.x = 'y';", + // r#"import * as names from './named-exports'; console.log(names.c)"#, + // r#"import * as names from './named-exports'; console.log(names['a']);"#, + // r#"import * as foo from './bar'; foo.foo = 'y';"#, + // r#"import * as foo from './bar'; foo.x = 'y';"#, // r#"import * as names from "./named-exports"; const { c } = names"#, // r#"import * as names from "./named-exports"; function b() { const { c } = names }"#, // r#"import * as names from "./named-exports"; const { c: d } = names"#, @@ -212,10 +129,10 @@ fn test() { // r#"import * as Endpoints from "./issue-195/Endpoints"; console.log(Endpoints.Foo)"#, // r#"import * as namespace from './malformed.js';"#, // r#"import b from './deep/default'; console.log(b.e)"#, - r"console.log(names.c); import * as names from './named-exports';", - r"function x() { console.log(names.c) } import * as names from './named-exports';", + // r#"console.log(names.c); import * as names from './named-exports';"#, + // r#"function x() { console.log(names.c) } import * as names from './named-exports';"#, // r#"import * as ree from "./re-export"; console.log(ree.default)"#, - r#"import * as Names from "./named-exports"; const Foo = "#, + // r#"import * as Names from "./named-exports"; const Foo = "#, // r#"import { "b" as b } from "./deep/a"; console.log(b.e)"#, // r#"import { "b" as b } from "./deep/a"; console.log(b.c.e)"#, // r#"import * as a from "./deep/a"; console.log(a.b.e)"#, diff --git a/crates/oxc_linter/src/rules/nextjs/inline_script_id.rs b/crates/oxc_linter/src/rules/nextjs/inline_script_id.rs index b6de30d3394e5..1cfa8286f3991 100644 --- a/crates/oxc_linter/src/rules/nextjs/inline_script_id.rs +++ b/crates/oxc_linter/src/rules/nextjs/inline_script_id.rs @@ -51,7 +51,7 @@ impl Rule for InlineScriptId { 'references_loop: for reference in ctx.semantic().symbol_references(specifier.local.symbol_id.get().unwrap()) { - let Some(node) = ctx.nodes().parent_node(reference.node_id()) else { return }; + let node = ctx.nodes().get_node(reference.node_id()); let AstKind::JSXElementName(_) = node.kind() else { continue }; let parent_node = ctx.nodes().parent_node(node.id()).unwrap(); diff --git a/crates/oxc_linter/src/rules/nextjs/no_script_component_in_head.rs b/crates/oxc_linter/src/rules/nextjs/no_script_component_in_head.rs index bf93d9944719e..c9d350b775d76 100644 --- a/crates/oxc_linter/src/rules/nextjs/no_script_component_in_head.rs +++ b/crates/oxc_linter/src/rules/nextjs/no_script_component_in_head.rs @@ -65,7 +65,7 @@ impl Rule for NoScriptComponentInHead { for reference in ctx.semantic().symbol_references(default_import.local.symbol_id.get().unwrap()) { - let Some(node) = ctx.nodes().parent_node(reference.node_id()) else { return }; + let node = ctx.nodes().get_node(reference.node_id()); let AstKind::JSXElementName(_) = node.kind() else { continue }; let parent_node = ctx.nodes().parent_node(node.id()).unwrap(); diff --git a/crates/oxc_linter/src/rules/nextjs/no_title_in_document_head.rs b/crates/oxc_linter/src/rules/nextjs/no_title_in_document_head.rs index 11c83760c39bf..ee8dce6fa93a2 100644 --- a/crates/oxc_linter/src/rules/nextjs/no_title_in_document_head.rs +++ b/crates/oxc_linter/src/rules/nextjs/no_title_in_document_head.rs @@ -65,7 +65,7 @@ impl Rule for NoTitleInDocumentHead { for reference in ctx.semantic().symbol_references(default_import.local.symbol_id.get().unwrap()) { - let Some(node) = ctx.nodes().parent_node(reference.node_id()) else { return }; + let node = ctx.nodes().get_node(reference.node_id()); let AstKind::JSXElementName(_) = node.kind() else { continue }; let parent_node = ctx.nodes().parent_node(node.id()).unwrap(); diff --git a/crates/oxc_linter/src/snapshots/namespace.snap b/crates/oxc_linter/src/snapshots/namespace.snap index 25f0eb1da13bb..b52f169a8ddc7 100644 --- a/crates/oxc_linter/src/snapshots/namespace.snap +++ b/crates/oxc_linter/src/snapshots/namespace.snap @@ -2,51 +2,4 @@ source: crates/oxc_linter/src/tester.rs expression: namespace --- - ⚠ eslint-plugin-import(namespace): "c" not found in imported namespace "./named-exports". - ╭─[index.js:1:61] - 1 │ import * as names from './named-exports'; console.log(names.c) - · ─ - ╰──── - ⚠ eslint-plugin-import(namespace): Unable to validate computed reference to imported namespace "names" - │ . - ╭─[index.js:1:55] - 1 │ import * as names from './named-exports'; console.log(names['a']); - · ────────── - ╰──── - - ⚠ eslint-plugin-import(namespace): Assignment to member of namespace "foo".' - ╭─[index.js:1:31] - 1 │ import * as foo from './bar'; foo.foo = 'y'; - · ─────── - ╰──── - - ⚠ eslint-plugin-import(namespace): Assignment to member of namespace "foo".' - ╭─[index.js:1:31] - 1 │ import * as foo from './bar'; foo.x = 'y'; - · ───── - ╰──── - - ⚠ eslint-plugin-import(namespace): "x" not found in imported namespace "./bar". - ╭─[index.js:1:35] - 1 │ import * as foo from './bar'; foo.x = 'y'; - · ─ - ╰──── - - ⚠ eslint-plugin-import(namespace): "c" not found in imported namespace "./named-exports". - ╭─[index.js:1:19] - 1 │ console.log(names.c); import * as names from './named-exports'; - · ─ - ╰──── - - ⚠ eslint-plugin-import(namespace): "c" not found in imported namespace "./named-exports". - ╭─[index.js:1:34] - 1 │ function x() { console.log(names.c) } import * as names from './named-exports'; - · ─ - ╰──── - - ⚠ eslint-plugin-import(namespace): "e" not found in imported namespace "./named-exports". - ╭─[index.js:1:62] - 1 │ import * as Names from "./named-exports"; const Foo = - · ─ - ╰──── diff --git a/crates/oxc_parser/src/js/function.rs b/crates/oxc_parser/src/js/function.rs index ec75f9c561b59..bdca5c77e3006 100644 --- a/crates/oxc_parser/src/js/function.rs +++ b/crates/oxc_parser/src/js/function.rs @@ -105,22 +105,16 @@ impl<'a> ParserImpl<'a> { return Err(self.unexpected()); } - let function_type = match func_kind { - FunctionKind::Declaration { .. } | FunctionKind::DefaultExport => { - if body.is_none() { - FunctionType::TSDeclareFunction - } else { + let function_type = if body.is_none() { + FunctionType::TSDeclareFunction + } else { + match func_kind { + FunctionKind::Declaration { .. } | FunctionKind::DefaultExport => { FunctionType::FunctionDeclaration } + FunctionKind::Expression { .. } => FunctionType::FunctionExpression, + FunctionKind::TSDeclaration { .. } => FunctionType::TSDeclareFunction, } - FunctionKind::Expression { .. } => { - if body.is_none() { - FunctionType::TSEmptyBodyFunctionExpression - } else { - FunctionType::FunctionExpression - } - } - FunctionKind::TSDeclaration { .. } => FunctionType::TSDeclareFunction, }; if FunctionType::TSDeclareFunction == function_type { @@ -233,7 +227,6 @@ impl<'a> ParserImpl<'a> { pattern, None, false, - false, AstBuilder::new_vec(&self.ast), ); let params = self.ast.formal_parameters( diff --git a/crates/oxc_parser/src/js/list.rs b/crates/oxc_parser/src/js/list.rs index 06d67f6866a46..55b548fe0ed1b 100644 --- a/crates/oxc_parser/src/js/list.rs +++ b/crates/oxc_parser/src/js/list.rs @@ -258,7 +258,6 @@ impl<'a> SeparatedList<'a> for FormalParameterList<'a> { let modifiers = p.parse_class_element_modifiers(true); let accessibility = modifiers.accessibility(); let readonly = modifiers.readonly(); - let r#override = modifiers.r#override(); match p.cur_kind() { Kind::This if p.ts_enabled() => { @@ -279,7 +278,6 @@ impl<'a> SeparatedList<'a> for FormalParameterList<'a> { pattern, accessibility, readonly, - r#override, decorators, ); self.elements.push(formal_parameter); diff --git a/crates/oxc_parser/src/lexer/comment.rs b/crates/oxc_parser/src/lexer/comment.rs index 8122dfd1e6dab..5212bfdc614f0 100644 --- a/crates/oxc_parser/src/lexer/comment.rs +++ b/crates/oxc_parser/src/lexer/comment.rs @@ -27,7 +27,7 @@ impl<'a> Lexer<'a> { byte_search! { lexer: self, table: LINE_BREAK_TABLE, - continue_if: (next_byte, pos) { + continue_if: |next_byte, pos| { // Match found. Decide whether to continue searching. // If this is end of comment, create trivia, and advance `pos` to after line break. // Do that here rather than in `handle_match`, to avoid branching twice on value of @@ -38,7 +38,7 @@ impl<'a> Lexer<'a> { self.trivia_builder .add_single_line_comment(self.token.start, self.source.offset_of(pos)); // SAFETY: Safe to consume `\r` or `\n` as both are ASCII - pos = unsafe { pos.add(1) }; + unsafe { pos = pos.add(1) }; // We've found the end. Do not continue searching. false } else { @@ -48,14 +48,14 @@ impl<'a> Lexer<'a> { // SAFETY: Next byte is `0xE2` which is always 1st byte of a 3-byte UTF-8 char. // So safe to advance `pos` by 1 and read 2 bytes. let next2 = unsafe { pos.add(1).read2() }; - if matches!(next2, LS_BYTES_2_AND_3 | PS_BYTES_2_AND_3) { + if next2 == LS_BYTES_2_AND_3 || next2 == PS_BYTES_2_AND_3 { // Irregular line break self.trivia_builder .add_single_line_comment(self.token.start, self.source.offset_of(pos)); // Advance `pos` to after this char. // SAFETY: `0xE2` is always 1st byte of a 3-byte UTF-8 char, // so consuming 3 bytes will place `pos` on next UTF-8 char boundary. - pos = unsafe { pos.add(3) }; + unsafe { pos = pos.add(3) }; // We've found the end. Do not continue searching. false } else { @@ -63,20 +63,21 @@ impl<'a> Lexer<'a> { // Skip 3 bytes (macro skips 1 already, so skip 2 here), and continue searching. // SAFETY: `0xE2` is always 1st byte of a 3-byte UTF-8 char, // so consuming 3 bytes will place `pos` on next UTF-8 char boundary. - pos = unsafe { pos.add(2) }; + unsafe { pos = pos.add(2) }; true } }) } }, - handle_eof: { + handle_match: |_next_byte, _start| { + self.token.is_on_new_line = true; + Kind::Skip + }, + handle_eof: |_start| { self.trivia_builder.add_single_line_comment(self.token.start, self.offset()); - return Kind::Skip; + Kind::Skip }, }; - - self.token.is_on_new_line = true; - Kind::Skip } /// Section 12.4 Multi Line Comment @@ -89,18 +90,16 @@ impl<'a> Lexer<'a> { byte_search! { lexer: self, table: MULTILINE_COMMENT_START_TABLE, - continue_if: (next_byte, pos) { + continue_if: |next_byte, pos| { // Match found. Decide whether to continue searching. if next_byte == b'*' { - // SAFETY: Next byte is `*` (ASCII) so after it is UTF-8 char boundary - let after_star = unsafe { pos.add(1) }; - if after_star.addr() < self.source.end_addr() { + if pos.addr() < self.source.end_addr() - 1 { // If next byte isn't `/`, continue // SAFETY: Have checked there's at least 1 further byte to read - if unsafe { after_star.read() } == b'/' { + if unsafe { pos.add(1).read() } == b'/' { // Consume `*/` // SAFETY: Consuming `*/` leaves `pos` on a UTF-8 char boundary - pos = unsafe { pos.add(2) }; + unsafe { pos = pos.add(2) }; false } else { true @@ -116,11 +115,8 @@ impl<'a> Lexer<'a> { cold_branch(|| { // SAFETY: Next byte is `0xE2` which is always 1st byte of a 3-byte UTF-8 char. // So safe to advance `pos` by 1 and read 2 bytes. - let next2 = unsafe { - pos = pos.add(1); - pos.read2() - }; - if matches!(next2, LS_BYTES_2_AND_3 | PS_BYTES_2_AND_3) { + let next2 = unsafe { pos.add(1).read2() }; + if next2 == LS_BYTES_2_AND_3 || next2 == PS_BYTES_2_AND_3 { // Irregular line break self.token.is_on_new_line = true; // Ideally we'd go on to `skip_multi_line_comment_after_line_break` here @@ -128,11 +124,10 @@ impl<'a> Lexer<'a> { // But irregular line breaks are rare anyway. } // Either way, continue searching. - // Skip 3 bytes (skipped 1 byte above, macro skips 1 more, so skip 1 more here - // to make 3), and continue searching. + // Skip 3 bytes (macro skips 1 already, so skip 2 here), and continue searching. // SAFETY: `0xE2` is always 1st byte of a 3-byte UTF-8 char, // so consuming 3 bytes will place `pos` on next UTF-8 char boundary. - pos = unsafe { pos.add(1) }; + unsafe { pos = pos.add(2) }; true }) } else { @@ -144,14 +139,15 @@ impl<'a> Lexer<'a> { return self.skip_multi_line_comment_after_line_break(after_line_break); } }, - handle_eof: { + handle_match: |_next_byte, _start| { + self.trivia_builder.add_multi_line_comment(self.token.start, self.offset()); + Kind::Skip + }, + handle_eof: |_start| { self.error(diagnostics::UnterminatedMultiLineComment(self.unterminated_range())); - return Kind::Eof; + Kind::Eof }, }; - - self.trivia_builder.add_multi_line_comment(self.token.start, self.offset()); - Kind::Skip } fn skip_multi_line_comment_after_line_break(&mut self, pos: SourcePosition) -> Kind { diff --git a/crates/oxc_parser/src/lexer/identifier.rs b/crates/oxc_parser/src/lexer/identifier.rs index 312fa92ca06ff..30eadf41e0e57 100644 --- a/crates/oxc_parser/src/lexer/identifier.rs +++ b/crates/oxc_parser/src/lexer/identifier.rs @@ -54,44 +54,45 @@ impl<'a> Lexer<'a> { let after_first = self.source.position().add(1); // Consume bytes which are part of identifier - let next_byte = byte_search! { + byte_search! { lexer: self, table: NOT_ASCII_ID_CONTINUE_TABLE, start: after_first, - handle_eof: { + handle_match: |next_byte| { + // Found a matching byte. + // Either end of identifier found, or a Unicode char, or `\` escape. + // Handle uncommon cases in cold branches to keep the common ASCII path + // as fast as possible. + if !next_byte.is_ascii() { + return cold_branch(|| { + // SAFETY: `after_first` is position after consuming 1 byte, so subtracting 1 + // makes `start_pos` `source`'s position as it was at start of this function + let start_pos = unsafe { after_first.sub(1) }; + &self.identifier_tail_unicode(start_pos)[1..] + }); + } + if next_byte == b'\\' { + return cold_branch(|| { + // SAFETY: `after_first` is position after consuming 1 byte, so subtracting 1 + // makes `start_pos` `source`'s position as it was at start of this function + let start_pos = unsafe { after_first.sub(1) }; + &self.identifier_backslash(start_pos, false)[1..] + }); + } + + // Return identifier minus its first char. + // SAFETY: `after_first` was position of `lexer.source` at start of this search. + // Searching only proceeds in forwards direction, so `lexer.source.position()` + // cannot be before `after_first`. + unsafe { self.source.str_from_pos_to_current_unchecked(after_first) } + }, + handle_eof: || { // Return identifier minus its first char. // SAFETY: `lexer.source` is positioned at EOF, so there is no valid value // of `after_first` which could be after current position. - return unsafe { self.source.str_from_pos_to_current_unchecked(after_first) }; + unsafe { self.source.str_from_pos_to_current_unchecked(after_first) } }, }; - - // Found a matching byte. - // Either end of identifier found, or a Unicode char, or `\` escape. - // Handle uncommon cases in cold branches to keep the common ASCII path - // as fast as possible. - if !next_byte.is_ascii() { - return cold_branch(|| { - // SAFETY: `after_first` is position after consuming 1 byte, so subtracting 1 - // makes `start_pos` `source`'s position as it was at start of this function - let start_pos = unsafe { after_first.sub(1) }; - &self.identifier_tail_unicode(start_pos)[1..] - }); - } - if next_byte == b'\\' { - return cold_branch(|| { - // SAFETY: `after_first` is position after consuming 1 byte, so subtracting 1 - // makes `start_pos` `source`'s position as it was at start of this function - let start_pos = unsafe { after_first.sub(1) }; - &self.identifier_backslash(start_pos, false)[1..] - }); - } - - // Return identifier minus its first char. - // SAFETY: `after_first` was position of `lexer.source` at start of this search. - // Searching only proceeds in forwards direction, so `lexer.source.position()` - // cannot be before `after_first`. - unsafe { self.source.str_from_pos_to_current_unchecked(after_first) } } /// Handle rest of identifier after first byte of a multi-byte Unicode char found. @@ -232,39 +233,40 @@ impl<'a> Lexer<'a> { let after_first = unsafe { start_pos.add(1) }; // Consume bytes which are part of identifier - let next_byte = byte_search! { + byte_search! { lexer: self, table: NOT_ASCII_ID_CONTINUE_TABLE, start: after_first, - handle_eof: { - return Kind::PrivateIdentifier; - }, - }; + handle_match: |next_byte| { + // Found a matching byte. + // Either end of identifier found, or a Unicode char, or `\` escape. + // Handle uncommon cases in cold branches to keep the common ASCII path + // as fast as possible. + if !next_byte.is_ascii() { + return cold_branch(|| { + // SAFETY: `after_first` is position after consuming 1 byte, so subtracting 1 + // makes `start_pos` `source`'s position as it was at start of this function + let start_pos = unsafe { after_first.sub(1) }; + self.identifier_tail_unicode(start_pos); + Kind::PrivateIdentifier + }); + } + if next_byte == b'\\' { + return cold_branch(|| { + // SAFETY: `after_first` is position after consuming 1 byte, so subtracting 1 + // makes `start_pos` `source`'s position as it was at start of this function + let start_pos = unsafe { after_first.sub(1) }; + self.identifier_backslash(start_pos, false); + Kind::PrivateIdentifier + }); + } - // Found a matching byte. - // Either end of identifier found, or a Unicode char, or `\` escape. - // Handle uncommon cases in cold branches to keep the common ASCII path - // as fast as possible. - if !next_byte.is_ascii() { - return cold_branch(|| { - // SAFETY: `after_first` is position after consuming 1 byte, so subtracting 1 - // makes `start_pos` `source`'s position as it was at start of this function - let start_pos = unsafe { after_first.sub(1) }; - self.identifier_tail_unicode(start_pos); Kind::PrivateIdentifier - }); - } - if next_byte == b'\\' { - return cold_branch(|| { - // SAFETY: `after_first` is position after consuming 1 byte, so subtracting 1 - // makes `start_pos` `source`'s position as it was at start of this function - let start_pos = unsafe { after_first.sub(1) }; - self.identifier_backslash(start_pos, false); + }, + handle_eof: || { Kind::PrivateIdentifier - }); - } - - Kind::PrivateIdentifier + }, + }; } /// Handle private identifier whose first byte is not an ASCII identifier start byte. diff --git a/crates/oxc_parser/src/lexer/jsx.rs b/crates/oxc_parser/src/lexer/jsx.rs index 7be58232f5760..c1c506fefc989 100644 --- a/crates/oxc_parser/src/lexer/jsx.rs +++ b/crates/oxc_parser/src/lexer/jsx.rs @@ -1,7 +1,7 @@ use super::{Kind, Lexer, Token}; use crate::diagnostics; -use memchr::{memchr, memchr2}; +use memchr::memchr; use oxc_syntax::identifier::{is_identifier_part, is_identifier_start}; impl<'a> Lexer<'a> { @@ -71,18 +71,17 @@ impl<'a> Lexer<'a> { Kind::LCurly } Some(_) => { - // The tokens `{`, `<`, `>` and `}` cannot appear in JSX text. - // The TypeScript compiler raises the error "Unexpected token. Did you mean `{'>'}` or `>`?". - // Where as the Babel compiler does not raise any errors. - // The following check omits `>` and `}` so that more Babel tests can be passed. - let len = memchr2(b'{', b'<', self.remaining().as_bytes()); - if let Some(len) = len { - // SAFETY: `memchr2` guarantees `len` will be offset from current position - // of a `{` or `<` byte. So must be a valid UTF-8 boundary, and within bounds of source. - let end = unsafe { self.source.position().add(len) }; - self.source.set_position(end); - } else { - self.source.advance_to_end(); + loop { + // The tokens `{`, `<`, `>` and `}` cannot appear in a jsx text. + // The TypeScript compiler raises the error "Unexpected token. Did you mean `{'>'}` or `>`?". + // Where as the Babel compiler does not raise any errors. + // The following check omits `>` and `}` so that more Babel tests can be passed. + if self.peek().is_some_and(|c| c == '{' || c == '<') { + break; + } + if self.next_char().is_none() { + break; + } } Kind::JSXText } diff --git a/crates/oxc_parser/src/lexer/search.rs b/crates/oxc_parser/src/lexer/search.rs index 40f116b16bf42..77f43401f2ac5 100644 --- a/crates/oxc_parser/src/lexer/search.rs +++ b/crates/oxc_parser/src/lexer/search.rs @@ -250,9 +250,10 @@ pub(crate) use safe_byte_match_table; /// Search processes source in batches of `SEARCH_BATCH_SIZE` bytes for speed. /// When not enough bytes remaining in source for a batch, search source byte by byte. /// -/// This is a macro rather than a function because searching is a bit faster when all the code -/// is in a single function, and some parts (e.g. `continue_if`) can be statically removed by -/// the compiler if they're not used. +/// This is a macro rather than a function for 2 reasons: +/// 1. Searching is a bit faster when all the code is in a single function. +/// 2. The `handle_match` section has to be repeated twice. +/// This macro does that, so code using the macro can be DRY-er. /// /// Used as follows: /// @@ -261,24 +262,30 @@ pub(crate) use safe_byte_match_table; /// /// impl<'a> Lexer<'a> { /// fn eat_stuff(&mut self) -> bool { -/// let matched_byte = byte_search! { +/// byte_search! { /// lexer: self, /// table: NOT_STUFF_TABLE, -/// handle_eof: { +/// handle_match: |matched_byte, start| { +/// // Matching byte has been found. +/// // `matched_byte` is `u8` value of first byte which matched the table. +/// // `start` is `SourcePosition` where search began. +/// // `lexer.source` is now positioned on first matching byte. +/// // Handle the next matching byte (deal with any special cases). +/// // Value this block evaluates to will be returned from enclosing function. +/// matched_byte == b'X' +/// }, +/// handle_eof: |start| { /// // No bytes from start position to end of source matched the table. +/// // `start` is `SourcePosition` where search began. /// // `lexer.source` is now positioned at EOF. -/// // Evaluate to a `u8` which macro call will evaluate to. -/// 0xFF -/// // Or can `return` from enclosing function e.g. `return false;` +/// // Handle EOF in some way. +/// // Value this block evaluates to will be returned from enclosing function. +/// false /// }, /// }; /// -/// // Matching byte has been found. -/// // `matched_byte` is `u8` value of first byte which matched the table -/// // (or `0xFF` if EOF, because `handle_eof` evaluates to `0xFF`). -/// // `lexer.source` is now positioned on first matching byte. -/// // Handle the next matching byte (deal with any special cases). -/// matched_byte == b'X' +/// // This is unreachable. +/// // Macro always exits current function with a `return` statement. /// } /// } /// ``` @@ -289,65 +296,79 @@ pub(crate) use safe_byte_match_table; /// impl<'a> Lexer<'a> { /// fn eat_stuff(&mut self) -> bool { /// let start = unsafe { self.source.position().add(1) }; -/// let matched_byte = byte_search! { +/// byte_search! { /// lexer: self, /// table: NOT_STUFF_TABLE, /// start: start, -/// handle_eof: { +/// handle_match: |matched_byte| { +/// // Matching byte has been found. +/// // `matched_byte` is `u8` value of first byte which matched the table. +/// // `lexer.source` is now positioned on first matching byte. +/// // Handle the next matching byte (deal with any special cases). +/// // Value this block evaluates to will be returned from enclosing function. +/// true +/// }, +/// handle_eof: || { /// // No bytes from start position to end of source matched the table. /// // `lexer.source` is now positioned at EOF. -/// return false; +/// // Handle EOF in some way. +/// // Value this block evaluates to will be returned from enclosing function. +/// false /// }, /// }; /// -/// // Matching byte has been found. -/// // `matched_byte` is `u8` value of first byte which matched the table. -/// // `lexer.source` is now positioned on first matching byte. -/// // Handle the next matching byte (deal with any special cases). -/// matched_byte == b'X' +/// // This is unreachable. +/// // Macro always exits current function with a `return` statement. /// } /// } /// ``` /// /// Can also add a block to decide whether to continue searching for some matches: /// -/// ``` +/// ```text /// impl<'a> Lexer<'a> { /// fn eat_stuff(&mut self) -> bool { -/// let matched_byte = byte_search! { +/// byte_search! { /// lexer: self, /// table: NOT_STUFF_TABLE, -/// continue_if: (matched_byte, pos) { +/// continue_if: |matched_byte, pos| { /// // Matching byte found. Decide whether it's really a match. -/// // Return `true` to continue searching, or `false` to end search. /// // NB: `lexer.source` has NOT been updated at this point. /// if matched_byte == 0xE2 { /// // Only match a specific Unicode char (in this case 0xE2, 0x80, 0xA8) -/// // NB: We don't need to check if `pos` is at EOF here, as 0xE2 is always 1st byte -/// // of a 3-byte Unicode char, but if matching an ASCII char, would need to make sure -/// // don't read out of bounds. -/// unsafe { pos.add(1).read() != 0x80 || pos.add(2).read() != 0xA8 } +/// unsafe { pos.add(1).read() != 0x80 || pos.add(2).read() != 0xA8) } /// } else { -/// // End search for all other possibilities +/// // All others do match. `handle_match` is executed. /// false /// } /// }, -/// handle_eof: { +/// handle_match: |matched_byte| { +/// // Matching byte has been found and `continue_if` returned `false` for it. +/// // `matched_byte` is `u8` value of first byte which matched the table. +/// // `lexer.source` is now positioned on first matching byte. +/// // Handle the next matching byte (deal with any special cases). +/// // Value this block evaluates to will be returned from enclosing function. +/// true +/// }, +/// handle_eof: || { /// // No bytes from start position to end of source matched the table. /// // `lexer.source` is now positioned at EOF. -/// return false; +/// // Handle EOF in some way. +/// // Value this block evaluates to will be returned from enclosing function. +/// false /// }, /// }; /// -/// // Matching byte has been found. -/// // `matched_byte` is `u8` value of first byte which matched the table. -/// // `lexer.source` is now positioned on first matching byte. -/// // Handle the next matching byte (deal with any special cases). -/// matched_byte == b'X' +/// // This is unreachable. +/// // Macro always exits current function with a `return` statement. /// } /// } /// ``` /// +/// NB: The macro always causes enclosing function to return. +/// It creates `return` statements with the value that `handle_match` / `handle_eof` blocks evaluate to. +/// After the `byte_search!` macro is unreachable. +/// /// # SAFETY /// /// This macro will consume bytes from `lexer.source` according to the `ByteMatchTable` @@ -361,64 +382,90 @@ pub(crate) use safe_byte_match_table; /// It is caller's responsibility to ensure that `lexer.source` is moved onto a UTF-8 character boundary. /// This is similar to the contract's of `Source`'s unsafe methods. macro_rules! byte_search { - // Simple version. + // Standard version. // `start` is calculated from current position of `lexer.source`. ( lexer: $lexer:ident, table: $table:ident, - handle_eof: $eof_handler:expr, + handle_match: |$match_byte:ident, $match_start:ident| $match_handler:expr, + handle_eof: |$eof_start:ident| $eof_handler:expr, ) => {{ let start = $lexer.source.position(); byte_search! { lexer: $lexer, table: $table, start: start, - continue_if: (byte, pos) false, - handle_eof: $eof_handler, + continue_if: |__byte, pos| false, + handle_match: |$match_byte, $match_start| $match_handler, + handle_eof: |$eof_start| $eof_handler, } }}; - // With `continue_if`. + // Standard version with `continue_if`. // `start` is calculated from current position of `lexer.source`. ( lexer: $lexer:ident, table: $table:ident, - continue_if: ($byte:ident, $pos:ident) $should_continue:expr, - handle_eof: $eof_handler:expr, + continue_if: |$continue_byte:ident, $pos:ident| $should_continue:expr, + handle_match: |$match_byte:ident, $match_start:ident| $match_handler:expr, + handle_eof: |$eof_start:ident| $eof_handler:expr, ) => {{ let start = $lexer.source.position(); byte_search! { lexer: $lexer, table: $table, start: start, - continue_if: ($byte, $pos) $should_continue, - handle_eof: $eof_handler, + continue_if: |$continue_byte, $pos| $should_continue, + handle_match: |$match_byte, $match_start| $match_handler, + handle_eof: |$eof_start| $eof_handler, } }}; - // With provided `start` position + // Provide your own `start` position ( lexer: $lexer:ident, table: $table:ident, start: $start:ident, - handle_eof: $eof_handler:expr, + handle_match: |$match_byte:ident| $match_handler:expr, + handle_eof: || $eof_handler:expr, ) => { byte_search! { lexer: $lexer, table: $table, start: $start, - continue_if: (byte, pos) false, - handle_eof: $eof_handler, + continue_if: |__byte, pos| false, + handle_match: |$match_byte, __start| $match_handler, + handle_eof: |__start| $eof_handler, } }; - // Actual implementation - with both `start` and `continue_if` + // Provide your own `start` position, and `continue_if` + ( + lexer: $lexer:ident, + table: $table:ident, + start: $start:ident, + continue_if: |$continue_byte:ident, $pos:ident| $should_continue:expr, + handle_match: |$match_byte:ident| $match_handler:expr, + handle_eof: || $eof_handler:expr, + ) => {{ + byte_search! { + lexer: $lexer, + table: $table, + start: $start, + continue_if: |$continue_byte, $pos| $should_continue, + handle_match: |$match_byte, __start| $match_handler, + handle_eof: |__start| $eof_handler, + } + }}; + + // Actual implementation ( lexer: $lexer:ident, table: $table:ident, start: $start:ident, - continue_if: ($byte:ident, $pos:ident) $should_continue:expr, - handle_eof: $eof_handler:expr, + continue_if: |$continue_byte:ident, $pos:ident| $should_continue:expr, + handle_match: |$match_byte:ident, $match_start:ident| $match_handler:expr, + handle_eof: |$eof_start:ident| $eof_handler:expr, ) => {{ // SAFETY: // If `$table` is a `SafeByteMatchTable`, it's guaranteed that `lexer.source` @@ -433,7 +480,8 @@ macro_rules! byte_search { let mut $pos = $start; #[allow(unused_unsafe)] // Silence warnings if macro called in unsafe code 'outer: loop { - let $byte = if $pos.addr() <= $lexer.source.end_for_batch_search_addr() { + #[allow(clippy::redundant_else)] + if $pos.addr() <= $lexer.source.end_for_batch_search_addr() { // Search a batch of `SEARCH_BATCH_SIZE` bytes. // // `'inner: loop {}` is not a real loop - it always exits on first turn. @@ -446,7 +494,7 @@ macro_rules! byte_search { // `$pos.addr() <= lexer.source.end_for_batch_search_addr()` check above ensures // there are at least `SEARCH_BATCH_SIZE` bytes remaining in `lexer.source`. // So calls to `$pos.read()` and `$pos.add(1)` in this loop cannot go out of bounds. - 'inner: loop { + let $match_byte = 'inner: loop { for _i in 0..crate::lexer::search::SEARCH_BATCH_SIZE { // SAFETY: `$pos` cannot go out of bounds in this loop (see above) let byte = unsafe { $pos.read() }; @@ -461,17 +509,57 @@ macro_rules! byte_search { } // No match in batch - search next batch continue 'outer; + }; + + // Found match. Check if should continue. + { + let $continue_byte = $match_byte; + if $should_continue { + // Not a match after all - continue searching. + // SAFETY: `pos` is not at end of source, so safe to advance 1 byte. + // See above about UTF-8 character boundaries invariant. + $pos = unsafe { $pos.add(1) }; + continue; + } } + + // Advance `lexer.source`'s position up to `$pos`, consuming unmatched bytes. + // SAFETY: See above about UTF-8 character boundaries invariant. + $lexer.source.set_position($pos); + + let $match_start = $start; + return $match_handler; } else { - // Not enough bytes remaining for a batch. Process byte-by-byte. - // Same as above, `'inner: loop {}` is not a real loop here - always exits on first turn. - let end_addr = $lexer.source.end_addr(); - 'inner: loop { + // Not enough bytes remaining to process as a batch. + // This branch marked `#[cold]` as should be very uncommon in normal-length JS files. + // Very short JS files will be penalized, but they'll be very fast to parse anyway. + // TODO: Could extend very short files with padding during parser initialization + // to remove that problem. + return crate::lexer::cold_branch(|| { + let end_addr = $lexer.source.end_addr(); while $pos.addr() < end_addr { // SAFETY: `pos` is not at end of source, so safe to read a byte - let byte = unsafe { $pos.read() }; - if $table.matches(byte) { - break 'inner byte; + let $match_byte = unsafe { $pos.read() }; + if $table.matches($match_byte) { + // Found match. + // Check if should continue. + { + let $continue_byte = $match_byte; + if $should_continue { + // Not a match after all - continue searching. + // SAFETY: `pos` is not at end of source, so safe to advance 1 byte. + // See above about UTF-8 character boundaries invariant. + $pos = unsafe { $pos.add(1) }; + continue; + } + } + + // Advance `lexer.source`'s position up to `pos`, consuming unmatched bytes. + // SAFETY: See above about UTF-8 character boundaries invariant. + $lexer.source.set_position($pos); + + let $match_start = $start; + return $match_handler; } // No match - continue searching @@ -484,30 +572,10 @@ macro_rules! byte_search { // Advance `lexer.source`'s position to end of file. $lexer.source.set_position($pos); - // Avoid lint errors if `$eof_handler` contains `return` statement - #[allow(unused_variables, unreachable_code, clippy::diverging_sub_expression)] - { - let eof_ret = $eof_handler; - break 'outer eof_ret; - } - } - }; - - // Found match. Check if should continue. - if $should_continue { - // Not a match after all - continue searching. - // SAFETY: `pos` is not at end of source, so safe to advance 1 byte. - // See above about UTF-8 character boundaries invariant. - $pos = unsafe { $pos.add(1) }; - continue; + let $eof_start = $start; + $eof_handler + }); } - - // Match confirmed. - // Advance `lexer.source`'s position up to `$pos`, consuming unmatched bytes. - // SAFETY: See above about UTF-8 character boundaries invariant. - $lexer.source.set_position($pos); - - break $byte; } }}; } diff --git a/crates/oxc_parser/src/lexer/string.rs b/crates/oxc_parser/src/lexer/string.rs index 0af68bf4a8549..a37aee0995c5f 100644 --- a/crates/oxc_parser/src/lexer/string.rs +++ b/crates/oxc_parser/src/lexer/string.rs @@ -37,38 +37,43 @@ macro_rules! handle_string_literal { let after_opening_quote = $lexer.source.position().add(1); // Consume bytes which are part of identifier - let next_byte = byte_search! { + byte_search! { lexer: $lexer, table: $table, start: after_opening_quote, - handle_eof: { + handle_match: |next_byte| { + // Found a matching byte. + // Either end of string found, or a line break, or `\` escape. + match next_byte { + $delimiter => { + // SAFETY: `handle_match` is only called if there's a byte to consume, + // and `next_byte` is the next byte in `lexer.source`. + // Macro user guarantees delimiter is ASCII, so consuming it cannot move + // `lexer.source` off a UTF-8 character boundary. + $lexer.source.next_byte_unchecked(); + Kind::Str + }, + b'\\' => { + cold_branch(|| { + handle_string_literal_escape!($lexer, $delimiter, $table, after_opening_quote) + }) + }, + _ => { + // Line break. This is impossible in valid JS, so cold path. + cold_branch(|| { + debug_assert!(matches!(next_byte, b'\r' | b'\n')); + $lexer.consume_char(); + $lexer.error(diagnostics::UnterminatedString($lexer.unterminated_range())); + Kind::Undetermined + }) + } + } + }, + handle_eof: || { $lexer.error(diagnostics::UnterminatedString($lexer.unterminated_range())); - return Kind::Undetermined; + Kind::Undetermined }, }; - - // Found a matching byte. - // Either end of string found, or a line break, or `\` escape. - match next_byte { - $delimiter => { - // SAFETY: Macro user guarantees delimiter is ASCII, so consuming it cannot move - // `lexer.source` off a UTF-8 character boundary. - $lexer.source.next_byte_unchecked(); - Kind::Str - } - b'\\' => cold_branch(|| { - handle_string_literal_escape!($lexer, $delimiter, $table, after_opening_quote) - }), - _ => { - // Line break. This is impossible in valid JS, so cold path. - cold_branch(|| { - debug_assert!(matches!(next_byte, b'\r' | b'\n')); - $lexer.consume_char(); - $lexer.error(diagnostics::UnterminatedString($lexer.unterminated_range())); - Kind::Undetermined - }) - } - } }}; } @@ -107,7 +112,7 @@ macro_rules! handle_string_literal_escape { // `Source`'s invariant temporarily, but the guarantees of `SafeByteMatchTable` // mean `!table.matches(b)` on this branch prevents exiting this loop until // `source` is positioned on a UTF-8 character boundary again. - $lexer.source.next_byte_unchecked(); + unsafe { $lexer.source.next_byte_unchecked() }; continue; } b if b == $delimiter => { @@ -127,15 +132,16 @@ macro_rules! handle_string_literal_escape { str.push_str(chunk); continue 'outer; } - _ => { - // Line break. This is impossible in valid JS, so cold path. + b'\r' | b'\n' => { + // This is impossible in valid JS, so cold path return cold_branch(|| { - debug_assert!(matches!(b, b'\r' | b'\n')); $lexer.consume_char(); $lexer.error(diagnostics::UnterminatedString($lexer.unterminated_range())); Kind::Undetermined }); } + // SAFETY: Caller guarantees `table` does not match any other bytes + _ => assert_unchecked::unreachable_unchecked!(), } } diff --git a/crates/oxc_parser/src/lexer/template.rs b/crates/oxc_parser/src/lexer/template.rs index 462d7b81b1315..550061f601205 100644 --- a/crates/oxc_parser/src/lexer/template.rs +++ b/crates/oxc_parser/src/lexer/template.rs @@ -29,7 +29,7 @@ impl<'a> Lexer<'a> { byte_search! { lexer: self, table: TEMPLATE_LITERAL_TABLE, - continue_if: (next_byte, pos) { + continue_if: |next_byte, pos| { match next_byte { b'$' => { // SAFETY: Next byte is `$` which is ASCII, so after it is a UTF-8 char boundary @@ -73,13 +73,14 @@ impl<'a> Lexer<'a> { } } }, - handle_eof: { + handle_match: |_next_byte, _start| { + ret + }, + handle_eof: |_start| { self.error(diagnostics::UnterminatedString(self.unterminated_range())); - return Kind::Undetermined; + Kind::Undetermined }, }; - - ret } /// Consume rest of template literal after a `\r` is found. @@ -194,7 +195,7 @@ impl<'a> Lexer<'a> { lexer: self, table: TEMPLATE_LITERAL_TABLE, start: pos, - continue_if: (next_byte, pos) { + continue_if: |next_byte, pos| { if next_byte == b'$' { // SAFETY: Next byte is `$` which is ASCII, so after it is a UTF-8 char boundary let after_dollar = pos.add(1); @@ -294,15 +295,18 @@ impl<'a> Lexer<'a> { } } }, - handle_eof: { + handle_match: |_next_byte, _start| { + self.save_template_string( + is_valid_escape_sequence, + str.into_bump_str(), + ); + ret + }, + handle_eof: |_start| { self.error(diagnostics::UnterminatedString(self.unterminated_range())); - return Kind::Undetermined; + Kind::Undetermined }, }; - - self.save_template_string(is_valid_escape_sequence, str.into_bump_str()); - - ret } /// Re-tokenize the current `}` token for `TemplateSubstitutionTail` diff --git a/crates/oxc_parser/src/lexer/whitespace.rs b/crates/oxc_parser/src/lexer/whitespace.rs index 577c12aec2bb3..1f6300341e846 100644 --- a/crates/oxc_parser/src/lexer/whitespace.rs +++ b/crates/oxc_parser/src/lexer/whitespace.rs @@ -17,9 +17,12 @@ impl<'a> Lexer<'a> { byte_search! { lexer: self, table: NOT_REGULAR_WHITESPACE_OR_LINE_BREAK_TABLE, - handle_eof: 0, // Fall through to below + handle_match: |_next_byte, _start| { + Kind::Skip + }, + handle_eof: |_start| { + Kind::Skip + }, }; - - Kind::Skip } } diff --git a/crates/oxc_parser/src/lib.rs b/crates/oxc_parser/src/lib.rs index 6e92ae3f42904..75cd065e41a47 100644 --- a/crates/oxc_parser/src/lib.rs +++ b/crates/oxc_parser/src/lib.rs @@ -122,13 +122,6 @@ pub struct ParserReturn<'a> { #[derive(Clone, Copy)] struct ParserOptions { pub allow_return_outside_function: bool, - /// Emit `ParenthesizedExpression` in AST. - /// - /// If this option is true, parenthesized expressions are represented by - /// (non-standard) `ParenthesizedExpression` nodes that have a single `expression` property - /// containing the expression inside parentheses. - /// - /// Default: true pub preserve_parens: bool, } diff --git a/crates/oxc_parser/src/ts/statement.rs b/crates/oxc_parser/src/ts/statement.rs index 0887b1dedd474..cddc4e5725e03 100644 --- a/crates/oxc_parser/src/ts/statement.rs +++ b/crates/oxc_parser/src/ts/statement.rs @@ -34,7 +34,6 @@ impl<'a> ParserImpl<'a> { let id = self.parse_binding_identifier()?; let members = TSEnumMemberList::parse(self)?.members; - let span = self.end_span(span); Ok(self.ast.ts_enum_declaration(span, id, members, modifiers)) } diff --git a/crates/oxc_parser/src/ts/types.rs b/crates/oxc_parser/src/ts/types.rs index 8f68b6852ef45..fded11897cfec 100644 --- a/crates/oxc_parser/src/ts/types.rs +++ b/crates/oxc_parser/src/ts/types.rs @@ -2,7 +2,6 @@ use bitflags::bitflags; use oxc_allocator::{Box, Vec}; use oxc_ast::ast::*; use oxc_diagnostics::Result; -use oxc_span::Span; use oxc_syntax::operator::UnaryOperator; use super::list::{ @@ -117,10 +116,9 @@ impl<'a> ParserImpl<'a> { return self.parse_ts_function_type(); } - let left_span = self.start_span(); let left = self.parse_ts_union_type()?; - self.parse_ts_conditional_type(left_span, left) + self.parse_ts_conditional_type(left) } pub(crate) fn parse_ts_type_parameters( @@ -211,11 +209,8 @@ impl<'a> ParserImpl<'a> { Ok(Some(self.parse_ts_type()?)) } - fn parse_ts_conditional_type( - &mut self, - left_span: Span, - left: TSType<'a>, - ) -> Result> { + fn parse_ts_conditional_type(&mut self, left: TSType<'a>) -> Result> { + let span = self.start_span(); if !self.ctx.has_disallow_conditional_types() && !self.cur_token().is_on_new_line && self.eat(Kind::Extends) @@ -234,7 +229,7 @@ impl<'a> ParserImpl<'a> { self.without_context(Context::DisallowConditionalTypes, Self::parse_ts_type)?; return Ok(self.ast.ts_conditional_type( - self.end_span(left_span), + self.end_span(span), left, extends_type, true_type, @@ -402,8 +397,7 @@ impl<'a> ParserImpl<'a> { Kind::Import => self.parse_ts_import_type(), Kind::Minus if self.peek_kind().is_number() => self.parse_ts_literal_type(), Kind::Question => self.parse_js_doc_unknown_or_nullable_type(), - // null should not be parsed as a literal type - kind if kind.is_literal() && kind != Kind::Null => self.parse_ts_literal_type(), + kind if kind.is_literal() => self.parse_ts_literal_type(), _ => { if !self.peek_at(Kind::Dot) { let keyword = self.parse_ts_keyword_type(); @@ -662,7 +656,7 @@ impl<'a> ParserImpl<'a> { _ => TSMappedTypeModifierOperator::None, }; - let type_annotation = self.eat(Kind::Colon).then(|| self.parse_ts_type()).transpose()?; + let type_annotation = self.parse_ts_type_annotation()?; self.bump(Kind::Semicolon); self.expect(Kind::RCurly)?; @@ -1077,11 +1071,8 @@ impl<'a> ParserImpl<'a> { pub(crate) fn parse_ts_index_signature_member(&mut self) -> Result> { let span = self.start_span(); - let mut readonly = false; while self.is_nth_at_modifier(0, false) { - if self.eat(Kind::Readonly) { - readonly = true; - } else { + if !self.eat(Kind::Readonly) { return Err(self.unexpected()); } } @@ -1096,12 +1087,7 @@ impl<'a> ParserImpl<'a> { if let Some(type_annotation) = type_annotation { self.bump(Kind::Comma); self.bump(Kind::Semicolon); - Ok(self.ast.ts_index_signature( - self.end_span(span), - parameters, - type_annotation, - readonly, - )) + Ok(self.ast.ts_index_signature(self.end_span(span), parameters, type_annotation)) } else { Err(self.unexpected()) } diff --git a/crates/oxc_semantic/src/builder.rs b/crates/oxc_semantic/src/builder.rs index 2863b6b457070..d6294397b8b68 100644 --- a/crates/oxc_semantic/src/builder.rs +++ b/crates/oxc_semantic/src/builder.rs @@ -1748,9 +1748,6 @@ impl<'a> SemanticBuilder<'a> { AstKind::IdentifierReference(ident) => { self.reference_identifier(ident); } - AstKind::JSXIdentifier(ident) => { - self.reference_jsx_identifier(ident); - } AstKind::UpdateExpression(_) => { if self.is_not_expression_statement_parent() { self.current_reference_flag |= ReferenceFlag::Read; @@ -1770,6 +1767,9 @@ impl<'a> SemanticBuilder<'a> { AstKind::AssignmentTarget(_) => { self.current_reference_flag |= ReferenceFlag::Write; } + AstKind::JSXElementName(elem) => { + self.reference_jsx_element_name(elem); + } AstKind::LabeledStatement(stmt) => { self.label_builder.enter(stmt, self.current_node_id); } @@ -1872,23 +1872,29 @@ impl<'a> SemanticBuilder<'a> { } } - fn reference_jsx_identifier(&mut self, ident: &JSXIdentifier) { - match self.nodes.parent_kind(self.current_node_id) { - Some(AstKind::JSXElementName(_)) => { - if !ident.name.chars().next().is_some_and(char::is_uppercase) { - return; + fn reference_jsx_element_name(&mut self, elem: &JSXElementName) { + if matches!( + self.nodes.parent_kind(self.current_node_id), + Some(AstKind::JSXOpeningElement(_)) + ) { + if let Some(ident) = match elem { + JSXElementName::Identifier(ident) + if ident.name.chars().next().is_some_and(char::is_uppercase) => + { + Some(ident) } + JSXElementName::MemberExpression(expr) => Some(expr.get_object_identifier()), + _ => None, + } { + let reference = Reference::new( + ident.span, + ident.name.to_compact_string(), + self.current_node_id, + ReferenceFlag::read(), + ); + self.declare_reference(reference); } - Some(AstKind::JSXMemberExpressionObject(_)) => {} - _ => return, } - let reference = Reference::new( - ident.span, - ident.name.to_compact_string(), - self.current_node_id, - ReferenceFlag::read(), - ); - self.declare_reference(reference); } fn is_not_expression_statement_parent(&self) -> bool { diff --git a/crates/oxc_semantic/src/jsdoc/builder.rs b/crates/oxc_semantic/src/jsdoc/builder.rs index f70524bdfe7b9..966a7d7d31da8 100644 --- a/crates/oxc_semantic/src/jsdoc/builder.rs +++ b/crates/oxc_semantic/src/jsdoc/builder.rs @@ -1,16 +1,16 @@ use std::collections::BTreeMap; use std::rc::Rc; -use super::parser::JSDoc; -use crate::jsdoc::JSDocFinder; use oxc_ast::{AstKind, Comment, TriviasMap}; use oxc_span::{GetSpan, Span}; use rustc_hash::FxHashSet; +use super::{JSDoc, JSDocComment}; + pub struct JSDocBuilder<'a> { source_text: &'a str, trivias: Rc, - attached_docs: BTreeMap>>, + attached_docs: BTreeMap>>, leading_comments_seen: FxHashSet, } @@ -24,7 +24,7 @@ impl<'a> JSDocBuilder<'a> { } } - pub fn build(self) -> JSDocFinder<'a> { + pub fn build(self) -> JSDoc<'a> { let not_attached_docs = self .trivias .comments() @@ -33,7 +33,7 @@ impl<'a> JSDocBuilder<'a> { .filter_map(|(start, comment)| self.parse_if_jsdoc_comment(*start, *comment)) .collect::>(); - JSDocFinder::new(self.attached_docs, not_attached_docs) + JSDoc::new(self.attached_docs, not_attached_docs) } // This process is done in conjunction with the `semantic.build()`. @@ -55,9 +55,6 @@ impl<'a> JSDocBuilder<'a> { // (But, default is only about function related nodes.) // > https://github.com/gajus/eslint-plugin-jsdoc/blob/e948bee821e964a92fbabc01574eca226e9e1252/src/iterateJsdoc.js#L2517-L2536 // - // `eslint-plugin-import` does the similar but more casual way. - // > https://github.com/import-js/eslint-plugin-import/blob/df751e0d004aacc34f975477163fb221485a85f6/src/ExportMap.js#L211 - // // Q. How do we attach JSDoc to that node? // A. Also depends on the implementation. // @@ -73,7 +70,6 @@ impl<'a> JSDocBuilder<'a> { // // Of course, this can be changed in the future. pub fn retrieve_attached_jsdoc(&mut self, kind: &AstKind<'a>) -> bool { - // For perf reasons, we should limit the target nodes to attach JSDoc // This may be diffed compare to TypeScript's `canHaveJSDoc()`, should adjust if needed if !(kind.is_statement() || kind.is_declaration() @@ -107,7 +103,11 @@ impl<'a> JSDocBuilder<'a> { false } - fn parse_if_jsdoc_comment(&self, span_start: u32, comment: Comment) -> Option> { + fn parse_if_jsdoc_comment( + &self, + span_start: u32, + comment: Comment, + ) -> Option> { if !comment.is_multi_line() { return None; } @@ -120,8 +120,8 @@ impl<'a> JSDocBuilder<'a> { return None; } - // Remove the very first `*` - Some(JSDoc::new(&comment_content[1..])) + // Should remove the very first `*`? + Some(JSDocComment::new(comment_content)) } } @@ -131,8 +131,7 @@ mod test { use oxc_parser::Parser; use oxc_span::{SourceType, Span}; - use super::JSDoc; - use crate::{Semantic, SemanticBuilder}; + use crate::{jsdoc::JSDocComment, Semantic, SemanticBuilder}; fn build_semantic<'a>( allocator: &'a Allocator, @@ -155,7 +154,7 @@ mod test { source_text: &'a str, symbol: &'a str, source_type: Option, - ) -> Option>> { + ) -> Option>> { let semantic = build_semantic(allocator, source_text, source_type); let start = source_text.find(symbol).unwrap_or(0) as u32; let span = Span::new(start, start + symbol.len() as u32); @@ -188,7 +187,6 @@ mod test { ("/** test */ ; function foo() {}", "function foo() {}"), ("/** test */ function foo1() {} function foo() {}", "function foo() {}"), ("function foo() {} /** test */", "function foo() {}"), - ("/** test */ (() => {})", "() => {}"), ]; for (source_text, target) in source_texts { test_jsdoc_not_found(source_text, target); @@ -238,9 +236,6 @@ mod test { "function foo() {}", ), ("/** foo1 */ function foo1() {} /** test */ function foo() {}", "function foo() {}"), - ("/** test */ 1", "1"), - ("/** test */ (1)", "(1)"), - ("/** test */ (() => {})", "(() => {})"), ]; for (source_text, target) in source_texts { test_jsdoc_found(source_text, target, None); @@ -287,10 +282,10 @@ mod test { // Should be [farthest, ..., nearest] let mut iter = jsdocs.iter(); let c1 = iter.next().unwrap(); - assert!(c1.comment().contains("c1")); + assert!(c1.comment.contains("c1")); let _c2 = iter.next().unwrap(); let c3 = iter.next().unwrap(); - assert!(c3.comment().contains("c3")); + assert!(c3.comment.contains("c3")); } #[test] @@ -314,8 +309,6 @@ mod test { let x; - /**/ // noop and noop - /** 7. Not attached but collected! */ ", Some(SourceType::default()), diff --git a/crates/oxc_semantic/src/jsdoc/finder.rs b/crates/oxc_semantic/src/jsdoc/finder.rs deleted file mode 100644 index 75a51c3dbd493..0000000000000 --- a/crates/oxc_semantic/src/jsdoc/finder.rs +++ /dev/null @@ -1,47 +0,0 @@ -use super::parser::JSDoc; -use crate::AstNode; -use oxc_span::{GetSpan, Span}; -use std::collections::BTreeMap; - -#[derive(Debug)] -pub struct JSDocFinder<'a> { - /// JSDocs by Span - attached: BTreeMap>>, - not_attached: Vec>, -} - -// NOTE: We may need to provide `get_jsdoc_comments(node)`, and also `get_jsdoc_tags(node)`. -// But, how to get parent here...? Leave it to utils/jsdoc? -// Refs: https://github.com/microsoft/TypeScript/issues/7393#issuecomment-413285773 -impl<'a> JSDocFinder<'a> { - pub fn new(attached: BTreeMap>>, not_attached: Vec>) -> Self { - Self { attached, not_attached } - } - - pub fn get_one_by_node<'b>(&'b self, node: &AstNode<'a>) -> Option> { - let Some(jsdocs) = self.get_all_by_node(node) else { - return None; - }; - - // If flagged, at least 1 JSDoc is attached - // If multiple JSDocs are attached, return the last = nearest - jsdocs.last().cloned() - } - - pub fn get_all_by_node<'b>(&'b self, node: &AstNode<'a>) -> Option>> { - if !node.flags().has_jsdoc() { - return None; - } - - let span = node.kind().span(); - self.get_all_by_span(span) - } - - pub fn get_all_by_span<'b>(&'b self, span: Span) -> Option>> { - self.attached.get(&span).cloned() - } - - pub fn iter_all<'b>(&'b self) -> impl Iterator> + 'b { - self.attached.values().flatten().chain(self.not_attached.iter()) - } -} diff --git a/crates/oxc_semantic/src/jsdoc/mod.rs b/crates/oxc_semantic/src/jsdoc/mod.rs index 0caa878fbd7a1..d87c52ee9c349 100644 --- a/crates/oxc_semantic/src/jsdoc/mod.rs +++ b/crates/oxc_semantic/src/jsdoc/mod.rs @@ -1,6 +1,72 @@ mod builder; -mod finder; -mod parser; + +use std::{cell::OnceCell, collections::BTreeMap}; pub use builder::JSDocBuilder; -pub use finder::JSDocFinder; +use oxc_span::{GetSpan, Span}; + +use self::parser::JSDocParser; +pub use self::parser::JSDocTag; +use crate::AstNode; + +mod parser; + +#[derive(Debug)] +pub struct JSDoc<'a> { + /// JSDocs by Span + attached: BTreeMap>>, + not_attached: Vec>, +} + +#[derive(Debug, Clone)] +pub struct JSDocComment<'a> { + comment: &'a str, + /// Cached JSDocTags + tags: OnceCell>>, +} + +impl<'a> JSDoc<'a> { + pub fn new( + attached: BTreeMap>>, + not_attached: Vec>, + ) -> Self { + Self { attached, not_attached } + } + + pub fn get_one_by_node<'b>(&'b self, node: &AstNode<'a>) -> Option> { + let Some(jsdocs) = self.get_all_by_node(node) else { + return None; + }; + + // If flagged, at least 1 JSDoc is attached + // If multiple JSDocs are attached, return the last = nearest + jsdocs.last().cloned() + } + + pub fn get_all_by_node<'b>(&'b self, node: &AstNode<'a>) -> Option>> { + if !node.flags().has_jsdoc() { + return None; + } + + let span = node.kind().span(); + self.get_all_by_span(span) + } + + pub fn get_all_by_span<'b>(&'b self, span: Span) -> Option>> { + self.attached.get(&span).cloned() + } + + pub fn iter_all<'b>(&'b self) -> impl Iterator> + 'b { + self.attached.values().flatten().chain(self.not_attached.iter()) + } +} + +impl<'a> JSDocComment<'a> { + pub fn new(comment: &'a str) -> JSDocComment<'a> { + Self { comment, tags: OnceCell::new() } + } + + pub fn tags<'b>(&'b self) -> &'b Vec> { + self.tags.get_or_init(|| JSDocParser::new(self.comment).parse()) + } +} diff --git a/crates/oxc_semantic/src/jsdoc/parser.rs b/crates/oxc_semantic/src/jsdoc/parser.rs new file mode 100644 index 0000000000000..7a24848cc97aa --- /dev/null +++ b/crates/oxc_semantic/src/jsdoc/parser.rs @@ -0,0 +1,306 @@ +use std::str::FromStr; + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum ParamTypeKind { + Any, + Repeated, +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub struct ParamType<'a> { + value: &'a str, +} + +impl<'a> ParamType<'a> { + #[allow(unused)] + pub fn kind(&self) -> Option { + ParamTypeKind::from_str(self.value).map(Option::Some).unwrap_or_default() + } +} + +impl FromStr for ParamTypeKind { + type Err = (); + + fn from_str(s: &str) -> Result { + // TODO: This might be inaccurate if the type is listed as {....string} or some variant + if s.len() > 3 && &s[0..3] == "..." { + return Ok(Self::Repeated); + } + + if s == "*" { + return Ok(Self::Any); + } + + Err(()) + } +} + +#[derive(Default, Debug, Clone, Copy, PartialEq, Eq)] +pub struct Param<'a> { + name: &'a str, + r#type: Option>, +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum JSDocTagKind<'a> { + Deprecated, + Param(Param<'a>), +} + +impl<'a> FromStr for JSDocTagKind<'a> { + type Err = (); + + fn from_str(s: &str) -> Result { + match s { + "deprecated" => Ok(Self::Deprecated), + "param" => Ok(Self::Param(Param::default())), + _ => Err(()), + } + } +} + +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct JSDocTag<'a> { + pub kind: JSDocTagKind<'a>, + pub description: &'a str, +} + +impl<'a> JSDocTag<'a> { + pub fn is_deprecated(&self) -> bool { + matches!(self.kind, JSDocTagKind::Deprecated) + } +} + +#[derive(Debug)] +pub struct JSDocParser<'a> { + source_text: &'a str, + current: usize, +} + +impl<'a> JSDocParser<'a> { + pub fn new(source_text: &'a str) -> Self { + Self { source_text, current: 0 } + } + + pub fn parse(mut self) -> Vec> { + self.parse_comment(self.source_text) + } + + fn advance(&mut self) { + if self.current < self.source_text.len() { + self.current += 1; + } + } + + fn at(&mut self, c: char) -> bool { + let Some(ch) = self.source_text.chars().nth(self.current) else { return false }; + if ch == c { + self.advance(); + true + } else { + false + } + } + + fn take_until(&mut self, s: &'a str, predicate: fn(char) -> bool) -> &'a str { + let start = self.current; + while let Some(c) = s.chars().nth(self.current) { + if predicate(c) { + break; + } + self.current += 1; + } + &s[start..self.current] + } + + fn skip_whitespace(&mut self, s: &'a str) { + while let Some(c) = s.chars().nth(self.current) { + if c != ' ' { + break; + } + self.current += 1; + } + } + + fn parse_comment(&mut self, comment: &'a str) -> Vec> { + let mut tags = vec![]; + + while let Some(c) = comment.chars().nth(self.current) { + match c { + '@' => { + self.current += 1; + let Some(tag) = self.parse_tag(comment) else { break }; + self.current += tag.description.len(); + tags.push(tag); + } + _ => { + self.current += 1; + } + } + } + + tags + } + + fn parse_tag(&mut self, comment: &'a str) -> Option> { + let tag = self.take_until(comment, |c| c == ' ' || c == '\n'); + JSDocTagKind::from_str(tag).map_or(None, |kind| match kind { + JSDocTagKind::Deprecated => Some(self.parse_deprecated_tag(comment)), + JSDocTagKind::Param { .. } => Some(self.parse_param_tag(comment)), + }) + } + + fn parse_deprecated_tag(&mut self, comment: &'a str) -> JSDocTag<'a> { + self.skip_whitespace(comment); + let description = self.take_until(comment, |c| c == '\n' || c == '*'); + JSDocTag { kind: JSDocTagKind::Deprecated, description } + } + + fn parse_param_tag(&mut self, comment: &'a str) -> JSDocTag<'a> { + self.skip_whitespace(comment); + + let mut r#type = None; + + if self.at('{') { + // If we hit a space, then treat it as the end of the type annotation. + let type_annotation = self.take_until(comment, |c| c == '}' || c == ' '); + r#type = Some(ParamType { value: type_annotation }); + if self.at('}') { + self.skip_whitespace(comment); + } + self.skip_whitespace(comment); + } + + let name = self.take_until(comment, |c| c == ' ' || c == '\n'); + + self.skip_whitespace(comment); + if self.at('-') { + self.skip_whitespace(comment); + } + + let description = self.take_until(comment, |c| c == '\n' || c == '*'); + + JSDocTag { kind: JSDocTagKind::Param(Param { name, r#type }), description } + } +} + +#[cfg(test)] +mod test { + use super::JSDocParser; + use crate::jsdoc::parser::{JSDocTag, JSDocTagKind, Param, ParamType, ParamTypeKind}; + + #[test] + fn deduces_correct_param_kind() { + let param = Param { name: "a", r#type: Some(ParamType { value: "string" }) }; + assert_eq!(param.r#type.and_then(|t| t.kind()), None); + + let param = Param { name: "a", r#type: Some(ParamType { value: "...string" }) }; + assert_eq!(param.r#type.and_then(|t| t.kind()), Some(ParamTypeKind::Repeated)); + + let param = Param { name: "a", r#type: Some(ParamType { value: "*" }) }; + assert_eq!(param.r#type.and_then(|t| t.kind()), Some(ParamTypeKind::Any)); + } + + #[test] + fn parses_single_line_jsdoc() { + let source = "/** @deprecated */"; + + let tags = JSDocParser::new(source).parse(); + assert_eq!(tags.len(), 1); + assert_eq!(tags, vec![JSDocTag { kind: JSDocTagKind::Deprecated, description: "" }]); + } + + #[test] + fn parses_multi_line_disjoint_jsdoc() { + let source = r"/** @deprecated + */ + "; + + let tags = JSDocParser::new(source).parse(); + assert_eq!(tags.len(), 1); + assert_eq!(tags, vec![JSDocTag { kind: JSDocTagKind::Deprecated, description: "" }]); + } + + #[test] + fn parses_multiline_jsdoc() { + let source = r"/** + * @param a + * @deprecated + */ + "; + + let tags = JSDocParser::new(source).parse(); + assert_eq!(tags.len(), 2); + assert_eq!( + tags, + vec![ + JSDocTag { + kind: JSDocTagKind::Param(Param { name: "a", r#type: None }), + description: "" + }, + JSDocTag { kind: JSDocTagKind::Deprecated, description: "" }, + ] + ); + } + + #[test] + fn parses_multiline_jsdoc_with_descriptions() { + let source = r"/** + * @param a + * @deprecated since version 1.0 + */ + "; + + let tags = JSDocParser::new(source).parse(); + assert_eq!(tags.len(), 2); + assert_eq!( + tags, + vec![ + JSDocTag { + kind: JSDocTagKind::Param(Param { name: "a", r#type: None }), + description: "" + }, + JSDocTag { kind: JSDocTagKind::Deprecated, description: "since version 1.0" }, + ] + ); + } + + #[test] + fn parses_param_type_annotation() { + let source = r"/** + * @param {string} a + * @param {string b + * @param {string} c - description + */ + "; + + let tags = JSDocParser::new(source).parse(); + assert_eq!(tags.len(), 3); + assert_eq!( + tags, + vec![ + JSDocTag { + kind: JSDocTagKind::Param(Param { + name: "a", + r#type: Some(ParamType { value: "string" }) + }), + description: "" + }, + JSDocTag { + kind: JSDocTagKind::Param(Param { + name: "b", + r#type: Some(ParamType { value: "string" }) + }), + description: "" + }, + JSDocTag { + kind: JSDocTagKind::Param(Param { + name: "c", + r#type: Some(ParamType { value: "string" }) + }), + description: "description" + }, + ] + ); + } +} diff --git a/crates/oxc_semantic/src/jsdoc/parser/jsdoc.rs b/crates/oxc_semantic/src/jsdoc/parser/jsdoc.rs deleted file mode 100644 index 91c59de22c133..0000000000000 --- a/crates/oxc_semantic/src/jsdoc/parser/jsdoc.rs +++ /dev/null @@ -1,27 +0,0 @@ -use super::jsdoc_tag::JSDocTag; -use super::parse::JSDocParser; -use std::cell::OnceCell; - -#[derive(Debug, Clone)] -pub struct JSDoc<'a> { - raw: &'a str, - /// Cached+parsed JSDoc comment and tags - cached: OnceCell<(String, Vec>)>, -} - -impl<'a> JSDoc<'a> { - /// comment_content: Inside of /**HERE*/, not include `/**` and `*/` - pub fn new(comment_content: &'a str) -> JSDoc<'a> { - Self { raw: comment_content, cached: OnceCell::new() } - } - - pub fn comment(&self) -> &str { - let cache = self.cached.get_or_init(|| JSDocParser::new(self.raw).parse()); - &cache.0 - } - - pub fn tags<'b>(&'b self) -> &'b Vec> { - let cache = self.cached.get_or_init(|| JSDocParser::new(self.raw).parse()); - &cache.1 - } -} diff --git a/crates/oxc_semantic/src/jsdoc/parser/jsdoc_tag.rs b/crates/oxc_semantic/src/jsdoc/parser/jsdoc_tag.rs deleted file mode 100644 index e815531088a90..0000000000000 --- a/crates/oxc_semantic/src/jsdoc/parser/jsdoc_tag.rs +++ /dev/null @@ -1,95 +0,0 @@ -use std::str::FromStr; - -// -// JSDocTypeExpression -// - -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub enum ParamTypeKind { - Any, - Repeated, -} - -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub struct ParamType<'a> { - pub value: &'a str, -} - -impl<'a> ParamType<'a> { - #[allow(unused)] - pub fn kind(&self) -> Option { - ParamTypeKind::from_str(self.value).map(Option::Some).unwrap_or_default() - } -} - -impl FromStr for ParamTypeKind { - type Err = (); - - fn from_str(s: &str) -> Result { - // TODO: This might be inaccurate if the type is listed as {....string} or some variant - if s.len() > 3 && &s[0..3] == "..." { - return Ok(Self::Repeated); - } - - if s == "*" { - return Ok(Self::Any); - } - - Err(()) - } -} - -#[derive(Default, Debug, Clone, Copy, PartialEq, Eq)] -pub struct Param<'a> { - pub name: &'a str, - pub r#type: Option>, -} - -// -// Structs -// - -// See https://github.com/microsoft/TypeScript/blob/2d70b57df4b64a3daef252abb014562e6ccc8f3c/src/compiler/types.ts#L397 -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub enum JSDocTagKind<'a> { - Deprecated, // JSDocDeprecatedTag - Parameter(Param<'a>), // JSDocParameterTag - Unknown(&'a str), // JSDocTag -} - -#[derive(Debug, Clone, PartialEq, Eq)] -pub struct JSDocTag<'a> { - pub kind: JSDocTagKind<'a>, - pub comment: String, -} - -impl<'a> JSDocTag<'a> { - pub fn tag_name(&self) -> &'a str { - match self.kind { - JSDocTagKind::Deprecated => "deprecated", - JSDocTagKind::Parameter(_) => "param", - JSDocTagKind::Unknown(tag_name) => tag_name, - } - } - - pub fn is_deprecated(&self) -> bool { - self.kind == JSDocTagKind::Deprecated - } -} - -#[cfg(test)] -mod test { - use super::{Param, ParamType, ParamTypeKind}; - - #[test] - fn deduces_correct_param_kind() { - let param = Param { name: "a", r#type: Some(ParamType { value: "string" }) }; - assert_eq!(param.r#type.and_then(|t| t.kind()), None); - - let param = Param { name: "a", r#type: Some(ParamType { value: "...string" }) }; - assert_eq!(param.r#type.and_then(|t| t.kind()), Some(ParamTypeKind::Repeated)); - - let param = Param { name: "a", r#type: Some(ParamType { value: "*" }) }; - assert_eq!(param.r#type.and_then(|t| t.kind()), Some(ParamTypeKind::Any)); - } -} diff --git a/crates/oxc_semantic/src/jsdoc/parser/mod.rs b/crates/oxc_semantic/src/jsdoc/parser/mod.rs deleted file mode 100644 index 56999c1d52fa5..0000000000000 --- a/crates/oxc_semantic/src/jsdoc/parser/mod.rs +++ /dev/null @@ -1,6 +0,0 @@ -mod jsdoc; -mod jsdoc_tag; -mod parse; -mod utils; - -pub use jsdoc::JSDoc; diff --git a/crates/oxc_semantic/src/jsdoc/parser/parse.rs b/crates/oxc_semantic/src/jsdoc/parser/parse.rs deleted file mode 100644 index cc159ea10bcd1..0000000000000 --- a/crates/oxc_semantic/src/jsdoc/parser/parse.rs +++ /dev/null @@ -1,448 +0,0 @@ -use super::jsdoc_tag::{JSDocTag, JSDocTagKind}; -use super::jsdoc_tag::{Param, ParamType}; -use super::utils; - -#[derive(Debug)] -pub struct JSDocParser<'a> { - source_text: &'a str, - current: usize, -} - -// Refs: `parseJSDocCommentWorker()` and `doJSDocScan()` from TypeScript -// https://github.com/microsoft/TypeScript/blob/df8d755c1d76eaf0a8f1c1046a46061b53315718/src/compiler/parser.ts#L8814 -impl<'a> JSDocParser<'a> { - /// source_text: Inside of /**HERE*/, NOT includes `/**` and `*/` - pub fn new(source_text: &'a str) -> Self { - // Outer spaces can be trimmed - Self { source_text: source_text.trim(), current: 0 } - } - - pub fn parse(mut self) -> (String, Vec>) { - let comment = self.parse_comment(); - let tags = self.parse_tags(); - - (comment, tags) - } - - // JSDoc comment starts with description comment until the first `@` appears - fn parse_comment(&mut self) -> String { - // TODO: Should ignore inside of inline tags like `{@link}`? - let comment = self.take_until(|c| c == '@'); - utils::trim_multiline_comment(comment) - } - - fn parse_tags(&mut self) -> Vec> { - let mut tags = vec![]; - - // Let's start with the first `@` - while let Some(c) = self.source_text.chars().nth(self.current) { - match c { - '@' => { - self.current += 1; - tags.push(self.parse_tag()); - } - _ => { - self.current += 1; - } - } - } - - tags - } - - fn parse_tag(&mut self) -> JSDocTag<'a> { - let tag_name = self.take_until(|c| c == ' ' || c == '\n' || c == '@'); - match tag_name { - // TODO: Add more tags - "arg" | "argument" | "param" => self.parse_parameter_tag(), - "deprecated" => self.parse_simple_tag(JSDocTagKind::Deprecated), - _ => self.parse_simple_tag(JSDocTagKind::Unknown(tag_name)), - } - } - - // @tag_name [] - fn parse_simple_tag(&mut self, kind: JSDocTagKind<'a>) -> JSDocTag<'a> { - let comment = self.take_until(|c| c == '@'); - let comment = utils::trim_multiline_comment(comment); - JSDocTag { kind, comment } - } - - // @param name - // @param {type} name - // @param {type} name comment - // @param {type} name - comment - fn parse_parameter_tag(&mut self) -> JSDocTag<'a> { - self.skip_whitespace(); - - let mut r#type = None; - if self.at('{') { - // If we hit a space, then treat it as the end of the type annotation. - let type_annotation = self.take_until(|c| c == '}' || c == ' ' || c == '@'); - r#type = Some(ParamType { value: type_annotation }); - if self.at('}') { - self.skip_whitespace(); - } - self.skip_whitespace(); - } - - let name = self.take_until(|c| c == ' ' || c == '\n' || c == '@'); - let param = Param { name, r#type }; - - self.skip_whitespace(); - - // JSDoc.app ignores `-` char between name and comment, but TS doesn't - if self.at('-') { - self.skip_whitespace(); - } - - let comment = self.take_until(|c| c == '@'); - let comment = utils::trim_multiline_comment(comment); - JSDocTag { kind: JSDocTagKind::Parameter(param), comment } - } - - // - // Parser utils - // - - fn skip_whitespace(&mut self) { - while let Some(c) = self.source_text.chars().nth(self.current) { - if c != ' ' { - break; - } - self.current += 1; - } - } - - fn advance(&mut self) { - if self.current < self.source_text.len() { - self.current += 1; - } - } - - fn at(&mut self, c: char) -> bool { - let Some(ch) = self.source_text.chars().nth(self.current) else { return false }; - if ch == c { - self.advance(); - true - } else { - false - } - } - - fn take_until(&mut self, predicate: fn(char) -> bool) -> &'a str { - let start = self.current; - while let Some(c) = self.source_text.chars().nth(self.current) { - if predicate(c) { - break; - } - self.current += 1; - } - &self.source_text[start..self.current] - } -} - -#[cfg(test)] -mod test { - use super::JSDocParser; - use super::{JSDocTag, JSDocTagKind}; - use super::{Param, ParamType}; - - fn parse_from_full_text(full_text: &str) -> (String, Vec) { - // Outside of markers can be trimmed - let source_text = full_text.trim().trim_start_matches("/**").trim_end_matches("*/"); - JSDocParser::new(source_text).parse() - } - - #[test] - fn parses_jsdoc_comment() { - assert_eq!(JSDocParser::new("hello source").parse().0, "hello source"); - assert_eq!(parse_from_full_text("/** hello full */").0, "hello full"); - - assert_eq!(JSDocParser::new(" <- trim -> ").parse().0, "<- trim ->"); - assert_eq!( - parse_from_full_text( - " - /** - * <- omit this, keep this -> * - */ - " - ) - .0, - "<- omit this, keep this -> *" - ); - - assert_eq!( - parse_from_full_text( - "/** -this is comment -@x -*/" - ) - .0, - "this is comment" - ); - } - - #[test] - fn parses_single_line_1_jsdoc() { - assert_eq!( - JSDocParser::new("@deprecated").parse().1, - parse_from_full_text("/** @deprecated */").1, - ); - assert_eq!( - JSDocParser::new("@deprecated").parse().1, - vec![JSDocTag { kind: JSDocTagKind::Deprecated, comment: String::new() }] - ); - - assert_eq!( - parse_from_full_text("/**@foo since 2024 */").1, - vec![JSDocTag { - kind: JSDocTagKind::Unknown("foo"), - comment: "since 2024".to_string() - }] - ); - assert_eq!( - parse_from_full_text("/**@*/").1, - vec![JSDocTag { kind: JSDocTagKind::Unknown(""), comment: String::new() }] - ); - } - - #[test] - fn parses_single_line_n_jsdocs() { - assert_eq!( - parse_from_full_text("/** @foo @bar */").1, - vec![ - JSDocTag { kind: JSDocTagKind::Unknown("foo"), comment: String::new() }, - JSDocTag { kind: JSDocTagKind::Unknown("bar"), comment: String::new() } - ] - ); - assert_eq!( - parse_from_full_text("/** @a @@ @d */").1, - vec![ - JSDocTag { kind: JSDocTagKind::Unknown("a"), comment: String::new() }, - JSDocTag { kind: JSDocTagKind::Unknown(""), comment: String::new() }, - JSDocTag { kind: JSDocTagKind::Unknown(""), comment: String::new() }, - JSDocTag { kind: JSDocTagKind::Unknown("d"), comment: String::new() } - ] - ); - } - - #[test] - fn parses_multiline_1_jsdoc() { - assert_eq!( - parse_from_full_text( - "/** @yo -*/" - ) - .1, - vec![JSDocTag { kind: JSDocTagKind::Unknown("yo"), comment: String::new() }] - ); - assert_eq!( - parse_from_full_text( - "/** - * @foo - */" - ) - .1, - vec![JSDocTag { kind: JSDocTagKind::Unknown("foo"), comment: String::new() }] - ); - assert_eq!( - parse_from_full_text( - " - /** - * @x with asterisk - */ - " - ) - .1, - vec![JSDocTag { - kind: JSDocTagKind::Unknown("x"), - comment: "with asterisk".to_string() - }] - ); - assert_eq!( - parse_from_full_text( - " - /** - @y without -asterisk - */ - " - ) - .1, - vec![JSDocTag { - kind: JSDocTagKind::Unknown("y"), - comment: "without\nasterisk".to_string() - }] - ); - } - - #[test] - fn parses_multiline_n_jsdocs() { - assert_eq!( - parse_from_full_text( - " - /** - @foo @bar - * @baz - */ - " - ) - .1, - vec![ - JSDocTag { kind: JSDocTagKind::Unknown("foo"), comment: String::new() }, - JSDocTag { kind: JSDocTagKind::Unknown("bar"), comment: String::new() }, - JSDocTag { kind: JSDocTagKind::Unknown("baz"), comment: String::new() }, - ] - ); - assert_eq!( - parse_from_full_text( - "/** - * @one - * - * ... - * - * @two - */" - ) - .1, - vec![ - JSDocTag { kind: JSDocTagKind::Unknown("one"), comment: "...".to_string() }, - JSDocTag { kind: JSDocTagKind::Unknown("two"), comment: String::new() }, - ] - ); - assert_eq!( - parse_from_full_text( - "/** - * ... - * @hey you! - * Are you OK? - * @yes I'm fine - */" - ) - .1, - vec![ - JSDocTag { - kind: JSDocTagKind::Unknown("hey"), - comment: "you!\nAre you OK?".to_string() - }, - JSDocTag { kind: JSDocTagKind::Unknown("yes"), comment: "I'm fine".to_string() }, - ] - ); - } - - #[test] - fn parses_parameter_tag() { - assert_eq!( - parse_from_full_text("/** @param */").1, - vec![JSDocTag { - kind: JSDocTagKind::Parameter(Param { name: "", r#type: None }), - comment: String::new(), - },] - ); - assert_eq!( - parse_from_full_text("/** @param @noop */").1, - vec![ - JSDocTag { - kind: JSDocTagKind::Parameter(Param { name: "", r#type: None }), - comment: String::new(), - }, - JSDocTag { kind: JSDocTagKind::Unknown("noop"), comment: String::new() }, - ] - ); - assert_eq!( - parse_from_full_text("/** @param name */").1, - vec![JSDocTag { - kind: JSDocTagKind::Parameter(Param { name: "name", r#type: None }), - comment: String::new(), - },] - ); - assert_eq!( - parse_from_full_text("/** @param {str} name */").1, - vec![JSDocTag { - kind: JSDocTagKind::Parameter(Param { - name: "name", - r#type: Some(ParamType { value: "str" }) - }), - comment: String::new(), - },] - ); - assert_eq!( - parse_from_full_text("/** @param {str} name comment */").1, - vec![JSDocTag { - kind: JSDocTagKind::Parameter(Param { - name: "name", - r#type: Some(ParamType { value: "str" }) - }), - comment: "comment".to_string(), - },] - ); - assert_eq!( - parse_from_full_text("/** @param {str} name comment */"), - parse_from_full_text("/** @param {str} name - comment */"), - ); - assert_eq!( - parse_from_full_text("/** @param {str} name comment */"), - parse_from_full_text( - "/** @param {str} name -comment */" - ), - ); - assert_eq!( - parse_from_full_text( - "/** @param {str} name -comment */" - ), - parse_from_full_text( - "/** - * @param {str} name - * comment - */" - ), - ); - - assert_eq!( - parse_from_full_text( - " - /** - * @param {boolean} a - * @param {string b - * @param {string} c comment - * @param {Num} d - comment2 - */ - " - ) - .1, - vec![ - JSDocTag { - kind: JSDocTagKind::Parameter(Param { - name: "a", - r#type: Some(ParamType { value: "boolean" }) - }), - comment: String::new(), - }, - JSDocTag { - kind: JSDocTagKind::Parameter(Param { - name: "b", - r#type: Some(ParamType { value: "string" }) - }), - comment: String::new(), - }, - JSDocTag { - kind: JSDocTagKind::Parameter(Param { - name: "c", - r#type: Some(ParamType { value: "string" }) - }), - comment: "comment".to_string(), - }, - JSDocTag { - kind: JSDocTagKind::Parameter(Param { - name: "d", - r#type: Some(ParamType { value: "Num" }) - }), - comment: "comment2".to_string(), - }, - ] - ); - } -} diff --git a/crates/oxc_semantic/src/jsdoc/parser/utils.rs b/crates/oxc_semantic/src/jsdoc/parser/utils.rs deleted file mode 100644 index 893c8f78cbced..0000000000000 --- a/crates/oxc_semantic/src/jsdoc/parser/utils.rs +++ /dev/null @@ -1,58 +0,0 @@ -pub fn trim_multiline_comment(s: &str) -> String { - s.trim() - .split('\n') - .map(|line| line.trim().trim_start_matches('*').trim()) - .filter(|line| !line.is_empty()) - .collect::>() - .join("\n") -} - -#[cfg(test)] -mod test { - use super::trim_multiline_comment; - - #[test] - fn trim_multiline_jsdoc_comments() { - for (actual, expect) in [ - ("hello", "hello"), - ( - " - trim -", "trim", - ), - ( - " - * asterisk -", - "asterisk", - ), - ( - " - * * li - * * li -", - "* li\n* li", - ), - ( - " -* list -* list -", - "list\nlist", - ), - ( - " -1 - -2 - - -3 - ", - "1\n2\n3", - ), - ] { - assert_eq!(trim_multiline_comment(actual), expect); - } - } -} diff --git a/crates/oxc_semantic/src/lib.rs b/crates/oxc_semantic/src/lib.rs index b043c8e41c56b..a04a8cf595da9 100644 --- a/crates/oxc_semantic/src/lib.rs +++ b/crates/oxc_semantic/src/lib.rs @@ -19,7 +19,7 @@ pub use petgraph; pub use builder::{SemanticBuilder, SemanticBuilderReturn}; use class::ClassTable; -pub use jsdoc::JSDocFinder; +pub use jsdoc::{JSDoc, JSDocComment, JSDocTag}; use oxc_ast::{ast::IdentifierReference, AstKind, TriviasMap}; use oxc_span::SourceType; pub use oxc_syntax::{ @@ -60,7 +60,7 @@ pub struct Semantic<'a> { module_record: Arc, - jsdoc: JSDocFinder<'a>, + jsdoc: JSDoc<'a>, unused_labels: FxHashSet, @@ -102,7 +102,7 @@ impl<'a> Semantic<'a> { &self.trivias } - pub fn jsdoc(&self) -> &JSDocFinder<'a> { + pub fn jsdoc(&self) -> &JSDoc<'a> { &self.jsdoc } diff --git a/crates/oxc_transformer/src/lib.rs b/crates/oxc_transformer/src/lib.rs index 5d50d5e09305f..a4d6e73ad276a 100644 --- a/crates/oxc_transformer/src/lib.rs +++ b/crates/oxc_transformer/src/lib.rs @@ -313,25 +313,4 @@ impl<'a> VisitMut<'a> for Transformer<'a> { .as_mut() .map(|t: &mut JsonStrings| t.transform_string_literal(lit)); } - - fn visit_method_definition(&mut self, def: &mut MethodDefinition<'a>) { - let kind = AstKind::MethodDefinition(self.alloc(def)); - self.enter_node(kind); - - self.typescript.as_mut().map(|t| t.transform_method_definition(def)); - - for decorator in def.decorators.iter_mut() { - self.visit_decorator(decorator); - } - - let flags = match def.kind { - MethodDefinitionKind::Get => ScopeFlags::GetAccessor, - MethodDefinitionKind::Set => ScopeFlags::SetAccessor, - MethodDefinitionKind::Constructor => ScopeFlags::Constructor, - MethodDefinitionKind::Method => ScopeFlags::empty(), - }; - self.visit_property_key(&mut def.key); - self.visit_function(&mut def.value, Some(flags)); - self.leave_node(kind); - } } diff --git a/crates/oxc_transformer/src/proposals/decorators.rs b/crates/oxc_transformer/src/proposals/decorators.rs index 9b816c1dbf8e0..7124e3d8eb2c3 100644 --- a/crates/oxc_transformer/src/proposals/decorators.rs +++ b/crates/oxc_transformer/src/proposals/decorators.rs @@ -96,7 +96,6 @@ enum Version { #[default] Year202305, } - impl Version { fn is_legacy(self) -> bool { matches!(self, Self::Legacy) @@ -480,7 +479,6 @@ impl<'a> Decorators<'a> { ), None, false, - false, self.ast.new_vec(), )), None, @@ -557,7 +555,6 @@ impl<'a> Decorators<'a> { ), None, false, - false, self.ast.new_vec(), )) } else { @@ -912,7 +909,6 @@ impl<'a> Decorators<'a> { ), None, false, - false, self.ast.new_vec(), )); let private_field = self.ast.private_field( @@ -963,7 +959,6 @@ impl<'a> Decorators<'a> { ), None, false, - false, self.ast.new_vec(), )); diff --git a/crates/oxc_transformer/src/typescript/mod.rs b/crates/oxc_transformer/src/typescript/mod.rs index 44e7117863e20..3faee536c9d6c 100644 --- a/crates/oxc_transformer/src/typescript/mod.rs +++ b/crates/oxc_transformer/src/typescript/mod.rs @@ -487,7 +487,7 @@ impl<'a> TypeScript<'a> { let mut params = self.ast.new_vec(); // ((Foo) => { - params.push(self.ast.formal_parameter(SPAN, id, None, false, false, self.ast.new_vec())); + params.push(self.ast.formal_parameter(SPAN, id, None, false, self.ast.new_vec())); let params = self.ast.formal_parameters( SPAN, @@ -680,7 +680,6 @@ impl<'a> TypeScript<'a> { ), None, false, - false, self.ast.new_vec(), )), None, @@ -729,62 +728,4 @@ impl<'a> TypeScript<'a> { let expr = self.ast.call_expression(SPAN, callee, arguments, false, None); self.ast.expression_statement(SPAN, expr) } - - /// Transform constructor method - /// ```typescript - /// - /// constructor(public x) { - /// super(); - /// } - /// // to - /// constructor(x) { - /// super(); - /// this.x = x; - /// } - /// ``` - pub fn transform_method_definition(&mut self, def: &mut MethodDefinition<'a>) { - if !def.kind.is_constructor() { - return; - } - - let mut params_name = vec![]; - def.value.params.items.iter().for_each(|param| { - if !param.accessibility.is_some_and(|a| matches!(a, TSAccessibility::Public)) { - return; - } - match ¶m.pattern.kind { - BindingPatternKind::BindingIdentifier(ident) => { - params_name.push(ident.name.clone()); - } - BindingPatternKind::AssignmentPattern(pattern) => { - if let BindingPatternKind::BindingIdentifier(ident) = &pattern.left.kind { - params_name.push(ident.name.clone()); - } - } - _ => {} - } - }); - - let Some(body) = &mut def.value.body else { - return; - }; - - for name in params_name { - // TODO: We should push it before the super call - body.statements.push(self.ast.expression_statement( - SPAN, - self.ast.assignment_expression( - SPAN, - AssignmentOperator::Assign, - self.ast.simple_assignment_target_member_expression(self.ast.static_member( - SPAN, - self.ast.this_expression(SPAN), - IdentifierName::new(SPAN, name.clone()), - false, - )), - self.ast.identifier_reference_expression(IdentifierReference::new(SPAN, name)), - ), - )); - } - } } diff --git a/editors/vscode/pnpm-lock.yaml b/editors/vscode/pnpm-lock.yaml index ccecb436c0199..09f2cf8cea3d8 100644 --- a/editors/vscode/pnpm-lock.yaml +++ b/editors/vscode/pnpm-lock.yaml @@ -12,7 +12,7 @@ dependencies: devDependencies: '@types/node': specifier: ^20.11.5 - version: 20.11.24 + version: 20.11.20 '@types/vscode': specifier: 1.80.0 version: 1.80.0 @@ -244,8 +244,8 @@ packages: dev: true optional: true - /@types/node@20.11.24: - resolution: {integrity: sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==} + /@types/node@20.11.20: + resolution: {integrity: sha512-7/rR21OS+fq8IyHTgtLkDK949uzsa6n8BkziAKtPVpugIkO6D+/ooXMvzXxDnZrmtXVfjb1bKQafYpb8s89LOg==} dependencies: undici-types: 5.26.5 dev: true diff --git a/napi/parser/src/lib.rs b/napi/parser/src/lib.rs index 3db2b8e9fa12d..f4c5d15cc520a 100644 --- a/napi/parser/src/lib.rs +++ b/napi/parser/src/lib.rs @@ -23,14 +23,6 @@ pub struct ParserOptions { #[napi(ts_type = "'script' | 'module' | 'unambiguous' | undefined")] pub source_type: Option, pub source_filename: Option, - /// Emit `ParenthesizedExpression` in AST. - /// - /// If this option is true, parenthesized expressions are represented by - /// (non-standard) `ParenthesizedExpression` nodes that have a single `expression` property - /// containing the expression inside parentheses. - /// - /// Default: true - pub preserve_parens: Option, } #[napi(object)] @@ -64,9 +56,7 @@ fn parse<'a>( Some("module") => source_type.with_module(true), _ => source_type, }; - Parser::new(allocator, source_text, source_type) - .preserve_parens(options.preserve_parens.unwrap_or(true)) - .parse() + Parser::new(allocator, source_text, source_type).parse() } /// Parse without returning anything. diff --git a/tasks/benchmark/Cargo.toml b/tasks/benchmark/Cargo.toml index df0431c131562..fcf4861dac945 100644 --- a/tasks/benchmark/Cargo.toml +++ b/tasks/benchmark/Cargo.toml @@ -38,10 +38,6 @@ harness = false name = "linter" harness = false -[[bench]] -name = "codegen_sourcemap" -harness = false - # Broken # [[bench]] # name = "prettier" @@ -61,7 +57,6 @@ oxc_semantic = { workspace = true } oxc_span = { workspace = true } oxc_tasks_common = { workspace = true } oxc_transformer = { workspace = true } -oxc_codegen = { workspace = true } criterion = { workspace = true } codspeed-criterion-compat = { workspace = true, optional = true } diff --git a/tasks/benchmark/benches/codegen_sourcemap.rs b/tasks/benchmark/benches/codegen_sourcemap.rs deleted file mode 100644 index 1ee60bcb03f31..0000000000000 --- a/tasks/benchmark/benches/codegen_sourcemap.rs +++ /dev/null @@ -1,30 +0,0 @@ -use oxc_allocator::Allocator; -use oxc_benchmark::{criterion_group, criterion_main, BenchmarkId, Criterion}; -use oxc_codegen::{Codegen, CodegenOptions}; -use oxc_parser::Parser; -use oxc_span::SourceType; -use oxc_tasks_common::TestFiles; - -fn bench_codegen_sourcemap(criterion: &mut Criterion) { - let mut group = criterion.benchmark_group("codegen_sourcemap"); - - for file in TestFiles::minimal().files() { - let id = BenchmarkId::from_parameter(&file.file_name); - let source_type = SourceType::from_path(&file.file_name).unwrap(); - group.bench_with_input(id, &file.source_text, |b, source_text| { - let allocator = Allocator::default(); - let program = Parser::new(&allocator, source_text, source_type).parse().program; - let codegen_options = CodegenOptions::default(); - b.iter_with_large_drop(|| { - let mut codegen = Codegen::::new(source_text.len(), codegen_options); - codegen.with_sourcemap(source_text, "").build(&program); - codegen.into_sourcemap(); - }); - }); - } - - group.finish(); -} - -criterion_group!(codegen_sourcemap, bench_codegen_sourcemap); -criterion_main!(codegen_sourcemap); diff --git a/tasks/coverage/codegen_sourcemap.snap b/tasks/coverage/codegen_sourcemap.snap deleted file mode 100644 index 75a05f244309e..0000000000000 --- a/tasks/coverage/codegen_sourcemap.snap +++ /dev/null @@ -1,4979 +0,0 @@ -- ClassBody-StaticBlock/input.js -(0:0-0:6) "class " --> (0:0-0:6) "class " -(0:6-0:10) "Foo " --> (0:6-0:10) "Foo " -(0:10-1:2) "{" --> (0:10-1:1) "{" -(1:2-1:11) " static {" --> (1:1-2:1) "\tstatic{" -(1:11-2:1) "}" --> (2:1-3:0) "\t}" -(2:1-4:0) "}\n" --> (3:0-4:0) "\n}" -(4:0-4:6) "\nclass" --> (4:0-4:6) "\nclass" -(4:6-4:9) " A1" --> (4:6-4:9) " A1" -(4:9-5:2) " {" --> (4:9-5:1) " {" -(5:2-6:4) " static{" --> (5:1-6:0) "\tstatic{" -(6:4-7:3) " foo;" --> (6:0-7:1) "\n\t\tfoo;" -(7:3-8:1) "}" --> (7:1-8:0) "\t}" -(8:1-10:0) "}\n" --> (8:0-9:0) "\n}" -(10:0-10:6) "\nclass" --> (9:0-9:6) "\nclass" -(10:6-10:9) " A2" --> (9:6-9:9) " A2" -(10:9-11:2) " {" --> (9:9-10:1) " {" -(11:2-12:4) " static {" --> (10:1-11:0) "\tstatic{" -(12:4-12:8) " foo" --> (11:0-12:0) "\n\t\tfoo;" -(12:8-13:3) ";bar;" --> (12:0-13:1) "\n\t\tbar;" -(13:3-14:1) "}" --> (13:1-14:0) "\t}" - - - -- ModuleExpression/input.js -Expected a semicolon or an implicit semicolon after a statement, but found none - - -- arrow-function/input.js -(0:0-0:1) "(" --> (0:0-0:0) "" -(0:1-0:7) "() => " --> (0:0-0:6) "() => " -(0:7-0:9) "{ " --> (0:6-1:0) "{" -(0:9-0:16) "return " --> (1:0-1:8) "\n\treturn" -(0:16-0:21) "42; }" --> (1:8-2:0) " 42;" - - - -- arrow-function-compact/input.js -(0:0-0:1) "(" --> (0:0-0:0) "" -(0:1-0:7) "() => " --> (0:0-0:6) "() => " -(0:7-0:9) "{ " --> (0:6-1:0) "{" -(0:9-0:16) "return " --> (1:0-1:8) "\n\treturn" -(0:16-0:21) "42; }" --> (1:8-2:0) " 42;" - - - -- bar-record-tuple/input.js -Unexpected token - - -- call-identifiers/input.js -(0:0-1:0) "foo;" --> (0:0-1:0) "foo;" -(1:0-2:0) "\nfoo();" --> (1:0-2:0) "\nfoo();" -(2:0-2:6) "\nfoo()" --> (2:0-2:6) "\nfoo()" -(2:6-3:0) ".bar;" --> (2:6-3:0) ".bar;" -(3:0-3:4) "\nobj" --> (3:0-3:4) "\nobj" -(3:4-4:0) ".foo;" --> (3:4-4:0) ".foo;" -(4:0-4:4) "\nobj" --> (4:0-4:4) "\nobj" -(4:4-5:0) ".foo();" --> (4:4-5:0) ".foo();" -(5:0-5:4) "\nobj" --> (5:0-5:4) "\nobj" -(5:4-5:8) ".foo" --> (5:4-5:8) ".foo" -(5:8-6:0) ".bar;" --> (5:8-6:0) ".bar;" -(6:0-6:4) "\nobj" --> (6:0-6:4) "\nobj" -(6:4-6:10) ".foo()" --> (6:4-6:10) ".foo()" -(6:10-7:0) ".bar;" --> (6:10-7:0) ".bar;" -(7:0-8:2) "\n{" --> (7:0-8:0) "\n{" -(8:2-9:2) " foo;" --> (8:0-9:0) "\n\tfoo;" -(9:2-10:2) " foo();" --> (9:0-10:0) "\n\tfoo();" -(10:2-10:8) " foo()" --> (10:0-10:7) "\n\tfoo()" -(10:8-11:2) ".bar;" --> (10:7-11:0) ".bar;" -(11:2-11:6) " obj" --> (11:0-11:5) "\n\tobj" -(11:6-12:2) ".foo;" --> (11:5-12:0) ".foo;" -(12:2-12:6) " obj" --> (12:0-12:5) "\n\tobj" -(12:6-13:2) ".foo();" --> (12:5-13:0) ".foo();" -(13:2-13:6) " obj" --> (13:0-13:5) "\n\tobj" -(13:6-13:10) ".foo" --> (13:5-13:9) ".foo" -(13:10-14:2) ".bar;" --> (13:9-14:0) ".bar;" -(14:2-14:6) " obj" --> (14:0-14:5) "\n\tobj" -(14:6-14:12) ".foo()" --> (14:5-14:11) ".foo()" -(14:12-15:1) ".bar;" --> (14:11-15:0) ".bar;" - - - -- comment-before-parentheses-return-arg/input.js -(0:0-0:9) "function " --> (0:0-0:9) "function " -(0:9-0:23) "assertElement(" --> (0:9-0:23) "assertElement(" -(0:23-0:33) "assertFn, " --> (0:23-0:33) "assertFn, " -(0:33-0:50) "shouldBeElement, " --> (0:33-0:50) "shouldBeElement, " -(0:50-0:63) "opt_message) " --> (0:50-0:63) "opt_message) " -(0:63-1:2) "{" --> (0:63-1:0) "{" -(1:2-2:3) " return /** @type {!Ele\tment} */ (" --> (1:0-1:8) "\n\treturn" -(2:3-3:5) " assertType_(" --> (1:8-1:20) " assertType_" -(3:5-4:4) " assertFn," --> (1:20-1:30) "(assertFn," -(4:4-5:4) " shouldBeElement," --> (1:30-1:47) " shouldBeElement," -(5:4-5:14) " isElement" --> (1:47-1:57) " isElement" -(5:14-6:4) "(shouldBeElement)," --> (1:57-1:75) "(shouldBeElement)," -(6:4-7:4) " 'Element expected'," --> (1:75-1:95) " 'Element expected'," -(7:4-10:1) " opt_message\n\t )\n\t);" --> (1:95-2:0) " opt_message);" -(10:1-12:0) "}\n" --> (2:0-3:0) "\n}" -(12:0-12:6) "\nconst" --> (3:0-3:6) "\nconst" -(12:6-12:46) " slot = /** @type {!HTMLSlotElement} */ " --> (3:6-3:13) " slot =" -(12:46-12:48) "(e" --> (3:13-3:15) " e" -(12:48-14:0) ".target);\n" --> (3:15-4:0) ".target;" -(14:0-15:26) "\nassertElement(" --> (4:0-4:14) "\nassertElement" - - - -- comment-before-parentheses-return-arg-createParenthesizedExpressions/input.js -(0:0-0:9) "function " --> (0:0-0:9) "function " -(0:9-0:23) "assertElement(" --> (0:9-0:23) "assertElement(" -(0:23-0:33) "assertFn, " --> (0:23-0:33) "assertFn, " -(0:33-0:50) "shouldBeElement, " --> (0:33-0:50) "shouldBeElement, " -(0:50-0:63) "opt_message) " --> (0:50-0:63) "opt_message) " -(0:63-1:2) "{" --> (0:63-1:0) "{" -(1:2-2:3) " return /** @type {!Ele\tment} */ (" --> (1:0-1:8) "\n\treturn" -(2:3-3:5) " assertType_(" --> (1:8-1:20) " assertType_" -(3:5-4:4) " assertFn," --> (1:20-1:30) "(assertFn," -(4:4-5:4) " shouldBeElement," --> (1:30-1:47) " shouldBeElement," -(5:4-5:14) " isElement" --> (1:47-1:57) " isElement" -(5:14-6:4) "(shouldBeElement)," --> (1:57-1:75) "(shouldBeElement)," -(6:4-7:4) " 'Element expected'," --> (1:75-1:95) " 'Element expected'," -(7:4-10:1) " opt_message\n\t )\n\t);" --> (1:95-2:0) " opt_message);" -(10:1-12:0) "}\n" --> (2:0-3:0) "\n}" -(12:0-12:6) "\nconst" --> (3:0-3:6) "\nconst" -(12:6-12:46) " slot = /** @type {!HTMLSlotElement} */ " --> (3:6-3:13) " slot =" -(12:46-12:48) "(e" --> (3:13-3:15) " e" -(12:48-14:0) ".target);\n" --> (3:15-4:0) ".target;" -(14:0-15:26) "\nassertElement(" --> (4:0-4:14) "\nassertElement" - - - -- function-identifier-name/input.js -(0:0-0:9) "function " --> (0:0-0:9) "function " -(0:9-0:14) "fn() " --> (0:9-0:14) "fn() " -(0:14-0:16) "{}" --> (0:14-1:0) "{" -(0:16-2:0) "\n" --> (1:0-2:0) "\n}" -(2:0-2:15) "\nexport default" --> (2:0-2:15) "\nexport default" -(2:15-2:27) " function ()" --> (2:15-2:26) " function()" -(2:27-2:29) " {" --> (2:26-3:0) " {" -(2:29-4:0) "}\n" --> (3:0-3:1) "\n" -(4:0-4:4) "\nvar" --> (3:1-3:5) "}var" -(4:4-4:8) " a =" --> (3:5-3:9) " a =" -(4:8-5:2) " {" --> (3:9-4:1) " {" -(5:2-5:7) " fn()" --> (4:1-4:5) "\tfn(" -(5:7-5:9) " {" --> (4:5-5:1) "){" -(5:9-6:2) "}," --> (5:1-6:1) "\t}," -(6:2-6:5) " fn" --> (6:1-6:4) "\tfn" -(6:5-6:16) ":function()" --> (6:4-6:15) ":function()" -(6:16-6:18) " {" --> (6:15-7:1) " {" -(6:18-7:2) "}," --> (7:1-8:1) "\t}," -(7:2-7:3) " " --> (8:1-8:2) "\t" -(7:3-7:7) "[fn]" --> (8:2-8:6) "[fn]" -(7:7-7:18) ":function()" --> (8:6-8:17) ":function()" -(7:18-7:20) " {" --> (8:17-9:1) " {" -(7:20-8:2) "}," --> (9:1-10:1) "\t}," -(8:2-8:3) " " --> (10:1-10:2) "\t" -(8:3-8:9) "[\"fn\"]" --> (10:2-10:8) "['fn']" -(8:9-8:20) ":function()" --> (10:8-10:19) ":function()" -(8:20-8:22) " {" --> (10:19-11:1) " {" -(8:22-9:2) "}," --> (11:1-12:1) "\t}," -(9:2-9:3) " " --> (12:1-12:2) "\t" -(9:3-9:14) "[function()" --> (12:2-12:13) "[function()" -(9:14-9:16) " {" --> (12:13-13:1) " {" -(9:16-9:18) "}]" --> (13:1-13:4) "\t}]" -(9:18-9:29) ":function()" --> (13:4-13:15) ":function()" -(9:29-9:31) " {" --> (13:15-14:1) " {" -(9:31-10:2) "}," --> (14:1-15:1) "\t}," -(10:2-10:3) " " --> (15:1-15:2) "\t" -(10:3-10:8) "[()=>" --> (15:2-15:8) "[() =>" -(10:8-10:10) " {" --> (15:8-16:1) " {" -(10:10-10:12) "}]" --> (16:1-16:4) "\t}]" -(10:12-10:23) ":function()" --> (16:4-16:15) ":function()" -(10:23-10:25) " {" --> (16:15-17:1) " {" -(10:25-11:2) "}," --> (17:1-18:1) "\t}," -(11:2-11:3) " " --> (18:1-18:2) "\t" -(11:3-11:9) "[fn]()" --> (18:2-18:7) "[fn](" -(11:9-11:12) " { " --> (18:7-19:1) "){" -(11:12-12:2) "}," --> (19:1-20:1) "\t}," -(12:2-12:3) " " --> (20:1-20:2) "\t" -(12:3-12:11) "[\"fn\"]()" --> (20:2-20:9) "['fn'](" -(12:11-12:14) " { " --> (20:9-21:1) "){" -(12:14-13:2) "}," --> (21:1-22:1) "\t}," -(13:2-13:3) " " --> (22:1-22:2) "\t" -(13:3-13:14) "[function()" --> (22:2-22:13) "[function()" -(13:14-13:16) " {" --> (22:13-23:1) " {" -(13:16-13:20) "}]()" --> (23:1-23:5) "\t}](" -(13:20-13:23) " { " --> (23:5-24:1) "){" -(13:23-14:2) "}," --> (24:1-25:1) "\t}," -(14:2-14:3) " " --> (25:1-25:2) "\t" -(14:3-14:8) "[()=>" --> (25:2-25:8) "[() =>" -(14:8-14:10) " {" --> (25:8-26:1) " {" -(14:10-14:14) "}]()" --> (26:1-26:5) "\t}](" -(14:14-14:17) " { " --> (26:5-27:1) "){" -(14:17-15:1) "}" --> (27:1-28:1) "\t}" -(15:1-17:0) "}\n" --> (28:1-29:0) "};" -(17:0-17:6) "\nclass" --> (29:0-29:6) "\nclass" -(17:6-17:8) " b" --> (29:6-29:8) " b" -(17:8-18:2) " {" --> (29:8-30:1) " {" -(18:2-18:7) " fn()" --> (30:1-30:5) "\tfn(" -(18:7-18:9) " {" --> (30:5-31:1) "){" -(18:9-19:2) "};" --> (31:1-32:1) "\t}" -(19:2-19:5) " fn" --> (32:1-32:4) "\tfn" -(19:5-19:16) "=function()" --> (32:4-32:15) "=function()" -(19:16-19:18) " {" --> (32:15-33:1) " {" -(19:18-20:2) "};" --> (33:1-35:1) "\t};\n" -(20:2-20:3) " " --> (35:1-35:2) "\t" -(20:3-20:7) "[fn]" --> (35:2-35:6) "[fn]" -(20:7-20:18) "=function()" --> (35:6-35:17) "=function()" -(20:18-20:20) " {" --> (35:17-36:1) " {" -(20:20-21:2) "};" --> (36:1-38:1) "\t};\n" -(21:2-21:3) " " --> (38:1-38:2) "\t" -(21:3-21:9) "[\"fn\"]" --> (38:2-38:8) "['fn']" -(21:9-21:20) "=function()" --> (38:8-38:19) "=function()" -(21:20-21:22) " {" --> (38:19-39:1) " {" -(21:22-22:2) "};" --> (39:1-41:1) "\t};\n" -(22:2-22:3) " " --> (41:1-41:2) "\t" -(22:3-22:14) "[function()" --> (41:2-41:13) "[function()" -(22:14-22:16) " {" --> (41:13-42:1) " {" -(22:16-22:18) "}]" --> (42:1-42:4) "\t}]" -(22:18-22:29) "=function()" --> (42:4-42:15) "=function()" -(22:29-22:31) " {" --> (42:15-43:1) " {" -(22:31-23:2) "};" --> (43:1-45:1) "\t};\n" -(23:2-23:3) " " --> (45:1-45:2) "\t" -(23:3-23:8) "[()=>" --> (45:2-45:8) "[() =>" -(23:8-23:10) " {" --> (45:8-46:1) " {" -(23:10-23:12) "}]" --> (46:1-46:4) "\t}]" -(23:12-23:23) "=function()" --> (46:4-46:15) "=function()" -(23:23-23:25) " {" --> (46:15-47:1) " {" -(23:25-24:2) "};" --> (47:1-49:1) "\t};\n" -(24:2-24:3) " " --> (49:1-49:2) "\t" -(24:3-24:9) "[fn]()" --> (49:2-49:7) "[fn](" -(24:9-24:12) " { " --> (49:7-50:1) "){" -(24:12-25:2) "};" --> (50:1-51:1) "\t}" -(25:2-25:3) " " --> (51:1-51:2) "\t" -(25:3-25:11) "[\"fn\"]()" --> (51:2-51:9) "['fn'](" -(25:11-25:14) " { " --> (51:9-52:1) "){" -(25:14-26:2) "};" --> (52:1-53:1) "\t}" -(26:2-26:3) " " --> (53:1-53:2) "\t" -(26:3-26:14) "[function()" --> (53:2-53:13) "[function()" -(26:14-26:16) " {" --> (53:13-54:1) " {" -(26:16-26:20) "}]()" --> (54:1-54:5) "\t}](" -(26:20-26:23) " { " --> (54:5-55:1) "){" -(26:23-27:2) "};" --> (55:1-56:1) "\t}" -(27:2-27:3) " " --> (56:1-56:2) "\t" -(27:3-27:8) "[()=>" --> (56:2-56:8) "[() =>" -(27:8-27:10) " {" --> (56:8-57:1) " {" -(27:10-27:14) "}]()" --> (57:1-57:5) "\t}](" -(27:14-27:17) " { " --> (57:5-58:1) "){" -(27:17-28:2) "};" --> (58:1-59:1) "\t}" -(28:2-28:7) " #x =" --> (59:1-59:4) "\t#x" -(28:7-28:18) " function()" --> (59:4-59:15) "=function()" -(28:18-28:20) " {" --> (59:15-60:1) " {" -(28:20-29:2) "};" --> (60:1-62:1) "\t};\n" -(29:2-29:11) " accessor" --> (62:1-62:10) "\taccessor" -(29:11-29:15) " y =" --> (62:10-62:12) " y" -(29:15-29:26) " function()" --> (62:12-62:23) "=function()" -(29:26-29:28) " {" --> (62:23-63:1) " {" -(29:28-30:1) "}" --> (63:1-65:0) "\t};\n" -(30:1-32:0) "}\n" --> (65:0-66:0) "\n}" -(32:0-32:4) "\nvar" --> (66:0-66:4) "\nvar" -(32:4-32:9) " aa =" --> (66:4-66:9) " aa =" -(32:9-33:2) " {" --> (66:9-67:1) " {" -(33:2-33:5) " fn" --> (67:1-67:4) "\tfn" -(33:5-33:14) ":function" --> (67:4-67:13) ":function" -(33:14-33:18) " a()" --> (67:13-67:17) " a()" -(33:18-33:20) " {" --> (67:17-68:1) " {" -(33:20-34:2) "}," --> (68:1-69:1) "\t}," -(34:2-34:3) " " --> (69:1-69:2) "\t" -(34:3-34:7) "[fn]" --> (69:2-69:6) "[fn]" -(34:7-34:16) ":function" --> (69:6-69:15) ":function" -(34:16-34:20) " a()" --> (69:15-69:19) " a()" -(34:20-34:22) " {" --> (69:19-70:1) " {" -(34:22-35:2) "}," --> (70:1-71:1) "\t}," -(35:2-35:3) " " --> (71:1-71:2) "\t" -(35:3-35:9) "[\"fn\"]" --> (71:2-71:8) "['fn']" -(35:9-35:18) ":function" --> (71:8-71:17) ":function" -(35:18-35:22) " a()" --> (71:17-71:21) " a()" -(35:22-35:24) " {" --> (71:21-72:1) " {" -(35:24-36:2) "}," --> (72:1-73:1) "\t}," -(36:2-36:3) " " --> (73:1-73:2) "\t" -(36:3-36:14) "[function()" --> (73:2-73:13) "[function()" -(36:14-36:16) " {" --> (73:13-74:1) " {" -(36:16-36:18) "}]" --> (74:1-74:4) "\t}]" -(36:18-36:27) ":function" --> (74:4-74:13) ":function" -(36:27-36:31) " a()" --> (74:13-74:17) " a()" -(36:31-36:33) " {" --> (74:17-75:1) " {" -(36:33-37:2) "}," --> (75:1-76:1) "\t}," -(37:2-37:3) " " --> (76:1-76:2) "\t" -(37:3-37:8) "[()=>" --> (76:2-76:8) "[() =>" -(37:8-37:10) " {" --> (76:8-77:1) " {" -(37:10-37:12) "}]" --> (77:1-77:4) "\t}]" -(37:12-37:21) ":function" --> (77:4-77:13) ":function" -(37:21-37:25) " a()" --> (77:13-77:17) " a()" -(37:25-37:27) " {" --> (77:17-78:1) " {" -(37:27-38:1) "}," --> (78:1-79:1) "\t}" -(38:1-40:0) "}\n" --> (79:1-80:0) "};" -(40:0-40:6) "\nclass" --> (80:0-80:6) "\nclass" -(40:6-40:9) " bb" --> (80:6-80:9) " bb" -(40:9-41:2) " {" --> (80:9-81:1) " {" -(41:2-41:5) " fn" --> (81:1-81:4) "\tfn" -(41:5-41:14) "=function" --> (81:4-81:13) "=function" -(41:14-41:18) " a()" --> (81:13-81:17) " a()" -(41:18-41:20) " {" --> (81:17-82:1) " {" -(41:20-42:2) "};" --> (82:1-84:1) "\t};\n" -(42:2-42:3) " " --> (84:1-84:2) "\t" -(42:3-42:7) "[fn]" --> (84:2-84:6) "[fn]" -(42:7-42:16) "=function" --> (84:6-84:15) "=function" -(42:16-42:20) " a()" --> (84:15-84:19) " a()" -(42:20-42:22) " {" --> (84:19-85:1) " {" -(42:22-43:2) "};" --> (85:1-87:1) "\t};\n" -(43:2-43:3) " " --> (87:1-87:2) "\t" -(43:3-43:9) "[\"fn\"]" --> (87:2-87:8) "['fn']" -(43:9-43:18) "=function" --> (87:8-87:17) "=function" -(43:18-43:22) " a()" --> (87:17-87:21) " a()" -(43:22-43:24) " {" --> (87:21-88:1) " {" -(43:24-44:2) "};" --> (88:1-90:1) "\t};\n" -(44:2-44:3) " " --> (90:1-90:2) "\t" -(44:3-44:14) "[function()" --> (90:2-90:13) "[function()" -(44:14-44:16) " {" --> (90:13-91:1) " {" -(44:16-44:18) "}]" --> (91:1-91:4) "\t}]" -(44:18-44:27) "=function" --> (91:4-91:13) "=function" -(44:27-44:31) " a()" --> (91:13-91:17) " a()" -(44:31-44:33) " {" --> (91:17-92:1) " {" -(44:33-45:2) "};" --> (92:1-94:1) "\t};\n" -(45:2-45:3) " " --> (94:1-94:2) "\t" -(45:3-45:8) "[()=>" --> (94:2-94:8) "[() =>" -(45:8-45:10) " {" --> (94:8-95:1) " {" -(45:10-45:12) "}]" --> (95:1-95:4) "\t}]" -(45:12-45:21) "=function" --> (95:4-95:13) "=function" -(45:21-45:25) " a()" --> (95:13-95:17) " a()" -(45:25-45:27) " {" --> (95:17-96:1) " {" -(45:27-46:1) "};" --> (96:1-98:0) "\t};\n" -(46:1-48:0) "}\n" --> (98:0-99:0) "\n}" -(48:0-48:4) "\nvar" --> (99:0-99:4) "\nvar" -(48:4-48:8) " x =" --> (99:4-99:8) " x =" -(48:8-48:17) " function" --> (99:8-99:17) " function" -(48:17-48:22) " fn()" --> (99:17-99:22) " fn()" -(48:22-48:24) " {" --> (99:22-100:0) " {" -(48:24-49:0) "};" --> (100:0-101:0) "\n};" -(49:0-49:4) "\nvar" --> (101:0-101:4) "\nvar" -(49:4-49:8) " x =" --> (101:4-101:8) " x =" -(49:8-49:20) " function ()" --> (101:8-101:19) " function()" -(49:20-49:22) " {" --> (101:19-102:0) " {" -(49:22-51:0) "};\n" --> (102:0-103:0) "\n};" -(51:0-51:1) "\n" --> (103:0-103:0) "" -(51:1-51:10) "(function" --> (103:0-103:10) "\n(function" -(51:10-51:15) " fn()" --> (103:10-103:15) " fn()" -(51:15-51:17) " {" --> (103:15-104:0) " {" -(51:17-53:0) "});\n" --> (104:0-105:0) "\n});" -(53:0-53:4) "\nvar" --> (105:0-105:4) "\nvar" -(53:4-53:8) " z =" --> (105:4-105:8) " z =" -(53:8-53:14) " () =>" --> (105:8-105:14) " () =>" -(53:14-53:16) " {" --> (105:14-106:0) " {" -(53:16-54:0) "};" --> (106:0-107:0) "\n};" -(54:0-54:4) "\nvar" --> (107:0-107:4) "\nvar" -(54:4-54:8) " z =" --> (107:4-107:8) " z =" -(54:8-54:13) " x =>" --> (107:8-107:13) " x =>" -(54:13-54:15) " {" --> (107:13-108:0) " {" -(54:15-55:0) "};" --> (108:0-109:0) "\n};" -(55:0-55:4) "\nvar" --> (109:0-109:4) "\nvar" -(55:4-55:9) " z = " --> (109:4-109:8) " z =" -(55:9-55:15) "(x) =>" --> (109:8-109:13) " x =>" -(55:15-55:17) " {" --> (109:13-110:0) " {" -(55:17-56:0) "};" --> (110:0-111:0) "\n};" -(56:0-56:4) "\nvar" --> (111:0-111:4) "\nvar" -(56:4-56:8) " z =" --> (111:4-111:8) " z =" -(56:8-56:9) " " --> (111:8-111:9) " " -(56:9-56:12) "(x," --> (111:9-111:12) "(x," -(56:12-56:15) " y," --> (111:12-111:15) " y," -(56:15-56:21) " z) =>" --> (111:15-111:21) " z) =>" -(56:21-56:23) " {" --> (111:21-112:0) " {" -(56:23-58:0) "};\n" --> (112:0-113:0) "\n};" -(58:0-58:4) "\nx =" --> (113:0-113:4) "\nx =" -(58:4-58:15) " function()" --> (113:4-113:15) " function()" -(58:15-58:17) " {" --> (113:15-114:0) " {" -(58:17-60:0) "};\n" --> (114:0-115:0) "\n};" -(60:0-60:2) "\n(" --> (115:0-115:1) "\n" -(60:2-60:4) " {" --> (115:1-115:2) "(" -(60:4-60:8) " x =" --> (115:2-115:4) "{x" -(60:8-60:19) " function()" --> (115:4-115:15) "=function()" -(60:19-60:21) " {" --> (115:15-116:0) " {" -(60:21-60:23) "} " --> (116:0-116:2) "\n}" -(60:23-60:26) "} =" --> (116:2-116:5) "} =" -(60:26-60:28) " {" --> (116:5-116:7) " {" - - - -- hash-record-tuple/input.js -Invalid Character `[` - - -- react.development.js -(9:0-11:0) "\n'use strict';\n" --> (0:0-1:0) "'use strict';" -(11:0-11:4) "\nif " --> (1:0-1:4) "\nif " -(11:4-11:12) "(process" --> (1:4-1:12) "(process" -(11:12-11:16) ".env" --> (1:12-1:16) ".env" -(11:16-11:29) ".NODE_ENV !==" --> (1:16-1:29) ".NODE_ENV !==" -(11:29-11:43) " \"production\")" --> (1:29-1:43) " 'production')" -(11:43-12:2) " {" --> (1:43-2:0) " {" -(12:2-12:3) " " --> (2:0-2:1) "\n" -(12:3-12:14) "(function()" --> (2:1-2:13) "\t(function()" -(12:14-13:0) " {" --> (2:13-3:0) " {" -(13:0-15:0) "\n'use strict';\n" --> (3:0-4:2) "\n'use strict';" -(15:0-15:4) "\nvar" --> (4:2-4:6) "\tvar" -(15:4-15:14) " _assign =" --> (4:6-4:16) " _assign =" -(15:14-15:22) " require" --> (4:16-4:24) " require" -(15:22-18:0) "('object-assign');\n\n// TODO: this is special because it gets imported during build." --> (4:24-5:2) "('object-assign');" -(18:0-18:4) "\nvar" --> (5:2-5:6) "\tvar" -(18:4-18:19) " ReactVersion =" --> (5:6-5:21) " ReactVersion =" -(18:19-25:0) " '17.0.2';\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance." --> (5:21-6:2) " '17.0.2';" -(25:0-25:4) "\nvar" --> (6:2-6:6) "\tvar" -(25:4-25:25) " REACT_ELEMENT_TYPE =" --> (6:6-6:27) " REACT_ELEMENT_TYPE =" -(25:25-26:0) " 0xeac7;" --> (6:27-7:2) " 0xeac7;" -(26:0-26:4) "\nvar" --> (7:2-7:6) "\tvar" -(26:4-26:24) " REACT_PORTAL_TYPE =" --> (7:6-7:26) " REACT_PORTAL_TYPE =" -(26:24-27:0) " 0xeaca;" --> (7:26-8:0) " 0xeaca;" -(27:0-27:8) "\nexports" --> (8:0-8:10) "\n\t\texports" -(27:8-27:19) ".Fragment =" --> (8:10-8:21) ".Fragment =" -(27:19-28:0) " 0xeacb;" --> (8:21-9:0) " 0xeacb;" -(28:0-28:8) "\nexports" --> (9:0-9:10) "\n\t\texports" -(28:8-28:21) ".StrictMode =" --> (9:10-9:23) ".StrictMode =" -(28:21-29:0) " 0xeacc;" --> (9:23-10:0) " 0xeacc;" -(29:0-29:8) "\nexports" --> (10:0-10:10) "\n\t\texports" -(29:8-29:19) ".Profiler =" --> (10:10-10:21) ".Profiler =" -(29:19-30:0) " 0xead2;" --> (10:21-11:2) " 0xead2;" -(30:0-30:4) "\nvar" --> (11:2-11:6) "\tvar" -(30:4-30:26) " REACT_PROVIDER_TYPE =" --> (11:6-11:28) " REACT_PROVIDER_TYPE =" -(30:26-31:0) " 0xeacd;" --> (11:28-12:2) " 0xeacd;" -(31:0-31:4) "\nvar" --> (12:2-12:6) "\tvar" -(31:4-31:25) " REACT_CONTEXT_TYPE =" --> (12:6-12:27) " REACT_CONTEXT_TYPE =" -(31:25-32:0) " 0xeace;" --> (12:27-13:2) " 0xeace;" -(32:0-32:4) "\nvar" --> (13:2-13:6) "\tvar" -(32:4-32:29) " REACT_FORWARD_REF_TYPE =" --> (13:6-13:31) " REACT_FORWARD_REF_TYPE =" -(32:29-33:0) " 0xead0;" --> (13:31-14:0) " 0xead0;" -(33:0-33:8) "\nexports" --> (14:0-14:10) "\n\t\texports" -(33:8-33:19) ".Suspense =" --> (14:10-14:21) ".Suspense =" -(33:19-34:0) " 0xead1;" --> (14:21-15:2) " 0xead1;" -(34:0-34:4) "\nvar" --> (15:2-15:6) "\tvar" -(34:4-34:31) " REACT_SUSPENSE_LIST_TYPE =" --> (15:6-15:33) " REACT_SUSPENSE_LIST_TYPE =" -(34:31-35:0) " 0xead8;" --> (15:33-16:2) " 0xead8;" -(35:0-35:4) "\nvar" --> (16:2-16:6) "\tvar" -(35:4-35:22) " REACT_MEMO_TYPE =" --> (16:6-16:24) " REACT_MEMO_TYPE =" -(35:22-36:0) " 0xead3;" --> (16:24-17:2) " 0xead3;" -(36:0-36:4) "\nvar" --> (17:2-17:6) "\tvar" -(36:4-36:22) " REACT_LAZY_TYPE =" --> (17:6-17:24) " REACT_LAZY_TYPE =" -(36:22-37:0) " 0xead4;" --> (17:24-18:2) " 0xead4;" -(37:0-37:4) "\nvar" --> (18:2-18:6) "\tvar" -(37:4-37:23) " REACT_BLOCK_TYPE =" --> (18:6-18:25) " REACT_BLOCK_TYPE =" -(37:23-38:0) " 0xead9;" --> (18:25-19:2) " 0xead9;" -(38:0-38:4) "\nvar" --> (19:2-19:6) "\tvar" -(38:4-38:30) " REACT_SERVER_BLOCK_TYPE =" --> (19:6-19:32) " REACT_SERVER_BLOCK_TYPE =" -(38:30-39:0) " 0xeada;" --> (19:32-20:2) " 0xeada;" -(39:0-39:4) "\nvar" --> (20:2-20:6) "\tvar" -(39:4-39:29) " REACT_FUNDAMENTAL_TYPE =" --> (20:6-20:31) " REACT_FUNDAMENTAL_TYPE =" -(39:29-40:0) " 0xead5;" --> (20:31-21:2) " 0xead5;" -(40:0-40:4) "\nvar" --> (21:2-21:6) "\tvar" -(40:4-40:23) " REACT_SCOPE_TYPE =" --> (21:6-21:25) " REACT_SCOPE_TYPE =" -(40:23-41:0) " 0xead7;" --> (21:25-22:2) " 0xead7;" -(41:0-41:4) "\nvar" --> (22:2-22:6) "\tvar" -(41:4-41:27) " REACT_OPAQUE_ID_TYPE =" --> (22:6-22:29) " REACT_OPAQUE_ID_TYPE =" -(41:27-42:0) " 0xeae0;" --> (22:29-23:2) " 0xeae0;" -(42:0-42:4) "\nvar" --> (23:2-23:6) "\tvar" -(42:4-42:36) " REACT_DEBUG_TRACING_MODE_TYPE =" --> (23:6-23:38) " REACT_DEBUG_TRACING_MODE_TYPE =" -(42:36-43:0) " 0xeae1;" --> (23:38-24:2) " 0xeae1;" -(43:0-43:4) "\nvar" --> (24:2-24:6) "\tvar" -(43:4-43:27) " REACT_OFFSCREEN_TYPE =" --> (24:6-24:29) " REACT_OFFSCREEN_TYPE =" -(43:27-44:0) " 0xeae2;" --> (24:29-25:2) " 0xeae2;" -(44:0-44:4) "\nvar" --> (25:2-25:6) "\tvar" -(44:4-44:31) " REACT_LEGACY_HIDDEN_TYPE =" --> (25:6-25:33) " REACT_LEGACY_HIDDEN_TYPE =" -(44:31-46:0) " 0xeae3;\n" --> (25:33-26:0) " 0xeae3;" -(46:0-46:11) "\nif (typeof" --> (26:0-26:13) "\n\t\tif (typeof" -(46:11-46:22) " Symbol ===" --> (26:13-26:24) " Symbol ===" -(46:22-46:36) " 'function' &&" --> (26:24-26:38) " 'function' &&" -(46:36-46:43) " Symbol" --> (26:38-26:45) " Symbol" -(46:43-46:48) ".for)" --> (26:45-26:50) ".for)" -(46:48-47:2) " {" --> (26:50-27:3) " {" -(47:2-47:6) " var" --> (27:3-27:7) "\tvar" -(47:6-47:18) " symbolFor =" --> (27:7-27:19) " symbolFor =" -(47:18-47:25) " Symbol" --> (27:19-27:26) " Symbol" -(47:25-48:2) ".for;" --> (27:26-28:0) ".for;" -(48:2-48:23) " REACT_ELEMENT_TYPE =" --> (28:0-28:24) "\n\t\t\tREACT_ELEMENT_TYPE =" -(48:23-48:33) " symbolFor" --> (28:24-28:34) " symbolFor" -(48:33-49:2) "('react.element');" --> (28:34-29:0) "('react.element');" -(49:2-49:22) " REACT_PORTAL_TYPE =" --> (29:0-29:23) "\n\t\t\tREACT_PORTAL_TYPE =" -(49:22-49:32) " symbolFor" --> (29:23-29:33) " symbolFor" -(49:32-50:2) "('react.portal');" --> (29:33-30:0) "('react.portal');" -(50:2-50:10) " exports" --> (30:0-30:11) "\n\t\t\texports" -(50:10-50:21) ".Fragment =" --> (30:11-30:22) ".Fragment =" -(50:21-50:31) " symbolFor" --> (30:22-30:32) " symbolFor" -(50:31-51:2) "('react.fragment');" --> (30:32-31:0) "('react.fragment');" -(51:2-51:10) " exports" --> (31:0-31:11) "\n\t\t\texports" -(51:10-51:23) ".StrictMode =" --> (31:11-31:24) ".StrictMode =" -(51:23-51:33) " symbolFor" --> (31:24-31:34) " symbolFor" -(51:33-52:2) "('react.strict_mode');" --> (31:34-32:0) "('react.strict_mode');" -(52:2-52:10) " exports" --> (32:0-32:11) "\n\t\t\texports" -(52:10-52:21) ".Profiler =" --> (32:11-32:22) ".Profiler =" -(52:21-52:31) " symbolFor" --> (32:22-32:32) " symbolFor" -(52:31-53:2) "('react.profiler');" --> (32:32-33:0) "('react.profiler');" -(53:2-53:24) " REACT_PROVIDER_TYPE =" --> (33:0-33:25) "\n\t\t\tREACT_PROVIDER_TYPE =" -(53:24-53:34) " symbolFor" --> (33:25-33:35) " symbolFor" -(53:34-54:2) "('react.provider');" --> (33:35-34:0) "('react.provider');" -(54:2-54:23) " REACT_CONTEXT_TYPE =" --> (34:0-34:24) "\n\t\t\tREACT_CONTEXT_TYPE =" -(54:23-54:33) " symbolFor" --> (34:24-34:34) " symbolFor" -(54:33-55:2) "('react.context');" --> (34:34-35:0) "('react.context');" -(55:2-55:27) " REACT_FORWARD_REF_TYPE =" --> (35:0-35:28) "\n\t\t\tREACT_FORWARD_REF_TYPE =" -(55:27-55:37) " symbolFor" --> (35:28-35:38) " symbolFor" -(55:37-56:2) "('react.forward_ref');" --> (35:38-36:0) "('react.forward_ref');" -(56:2-56:10) " exports" --> (36:0-36:11) "\n\t\t\texports" -(56:10-56:21) ".Suspense =" --> (36:11-36:22) ".Suspense =" -(56:21-56:31) " symbolFor" --> (36:22-36:32) " symbolFor" -(56:31-57:2) "('react.suspense');" --> (36:32-37:0) "('react.suspense');" -(57:2-57:29) " REACT_SUSPENSE_LIST_TYPE =" --> (37:0-37:30) "\n\t\t\tREACT_SUSPENSE_LIST_TYPE =" -(57:29-57:39) " symbolFor" --> (37:30-37:40) " symbolFor" -(57:39-58:2) "('react.suspense_list');" --> (37:40-38:0) "('react.suspense_list');" -(58:2-58:20) " REACT_MEMO_TYPE =" --> (38:0-38:21) "\n\t\t\tREACT_MEMO_TYPE =" -(58:20-58:30) " symbolFor" --> (38:21-38:31) " symbolFor" -(58:30-59:2) "('react.memo');" --> (38:31-39:0) "('react.memo');" -(59:2-59:20) " REACT_LAZY_TYPE =" --> (39:0-39:21) "\n\t\t\tREACT_LAZY_TYPE =" -(59:20-59:30) " symbolFor" --> (39:21-39:31) " symbolFor" -(59:30-60:2) "('react.lazy');" --> (39:31-40:0) "('react.lazy');" -(60:2-60:21) " REACT_BLOCK_TYPE =" --> (40:0-40:22) "\n\t\t\tREACT_BLOCK_TYPE =" -(60:21-60:31) " symbolFor" --> (40:22-40:32) " symbolFor" -(60:31-61:2) "('react.block');" --> (40:32-41:0) "('react.block');" -(61:2-61:28) " REACT_SERVER_BLOCK_TYPE =" --> (41:0-41:29) "\n\t\t\tREACT_SERVER_BLOCK_TYPE =" -(61:28-61:38) " symbolFor" --> (41:29-41:39) " symbolFor" -(61:38-62:2) "('react.server.block');" --> (41:39-42:0) "('react.server.block');" -(62:2-62:27) " REACT_FUNDAMENTAL_TYPE =" --> (42:0-42:28) "\n\t\t\tREACT_FUNDAMENTAL_TYPE =" -(62:27-62:37) " symbolFor" --> (42:28-42:38) " symbolFor" -(62:37-63:2) "('react.fundamental');" --> (42:38-43:0) "('react.fundamental');" -(63:2-63:21) " REACT_SCOPE_TYPE =" --> (43:0-43:22) "\n\t\t\tREACT_SCOPE_TYPE =" -(63:21-63:31) " symbolFor" --> (43:22-43:32) " symbolFor" -(63:31-64:2) "('react.scope');" --> (43:32-44:0) "('react.scope');" -(64:2-64:25) " REACT_OPAQUE_ID_TYPE =" --> (44:0-44:26) "\n\t\t\tREACT_OPAQUE_ID_TYPE =" -(64:25-64:35) " symbolFor" --> (44:26-44:36) " symbolFor" -(64:35-65:2) "('react.opaque.id');" --> (44:36-45:0) "('react.opaque.id');" -(65:2-65:34) " REACT_DEBUG_TRACING_MODE_TYPE =" --> (45:0-45:35) "\n\t\t\tREACT_DEBUG_TRACING_MODE_TYPE =" -(65:34-65:44) " symbolFor" --> (45:35-45:45) " symbolFor" -(65:44-66:2) "('react.debug_trace_mode');" --> (45:45-46:0) "('react.debug_trace_mode');" -(66:2-66:25) " REACT_OFFSCREEN_TYPE =" --> (46:0-46:26) "\n\t\t\tREACT_OFFSCREEN_TYPE =" -(66:25-66:35) " symbolFor" --> (46:26-46:36) " symbolFor" -(66:35-67:2) "('react.offscreen');" --> (46:36-47:0) "('react.offscreen');" -(67:2-67:29) " REACT_LEGACY_HIDDEN_TYPE =" --> (47:0-47:30) "\n\t\t\tREACT_LEGACY_HIDDEN_TYPE =" -(67:29-67:39) " symbolFor" --> (47:30-47:40) " symbolFor" -(67:39-68:1) "('react.legacy_hidden');" --> (47:40-48:2) "('react.legacy_hidden');" -(68:1-70:0) "}\n" --> (48:2-49:2) "\t}" -(70:0-70:4) "\nvar" --> (49:2-49:6) "\tvar" -(70:4-70:35) " MAYBE_ITERATOR_SYMBOL = typeof" --> (49:6-49:37) " MAYBE_ITERATOR_SYMBOL = typeof" -(70:35-70:46) " Symbol ===" --> (49:37-49:48) " Symbol ===" -(70:46-70:60) " 'function' &&" --> (49:48-49:62) " 'function' &&" -(70:60-70:67) " Symbol" --> (49:62-49:69) " Symbol" -(70:67-71:0) ".iterator;" --> (49:69-50:2) ".iterator;" -(71:0-71:4) "\nvar" --> (50:2-50:6) "\tvar" -(71:4-71:27) " FAUX_ITERATOR_SYMBOL =" --> (50:6-50:29) " FAUX_ITERATOR_SYMBOL =" -(71:27-72:0) " '@@iterator';" --> (50:29-51:2) " '@@iterator';" -(72:0-72:9) "\nfunction" --> (51:2-51:11) "\tfunction" -(72:9-72:23) " getIteratorFn" --> (51:11-51:25) " getIteratorFn" -(72:23-72:38) "(maybeIterable)" --> (51:25-51:40) "(maybeIterable)" -(72:38-73:2) " {" --> (51:40-52:0) " {" -(73:2-73:6) " if " --> (52:0-52:7) "\n\t\t\tif " -(73:6-73:24) "(maybeIterable ===" --> (52:7-52:25) "(maybeIterable ===" -(73:24-73:39) " null || typeof" --> (52:25-52:40) " null || typeof" -(73:39-73:57) " maybeIterable !==" --> (52:40-52:58) " maybeIterable !==" -(73:57-73:67) " 'object')" --> (52:58-52:68) " 'object')" -(73:67-74:4) " {" --> (52:68-53:0) " {" -(74:4-74:11) " return" --> (53:0-53:11) "\n\t\t\t\treturn" -(74:11-75:3) " null;" --> (53:11-54:3) " null;" -(75:3-77:2) "}\n" --> (54:3-55:3) "\t}" -(77:2-77:6) " var" --> (55:3-55:7) "\tvar" -(77:6-77:22) " maybeIterator =" --> (55:7-55:23) " maybeIterator =" -(77:22-77:47) " MAYBE_ITERATOR_SYMBOL &&" --> (55:23-55:48) " MAYBE_ITERATOR_SYMBOL &&" -(77:47-77:61) " maybeIterable" --> (55:48-55:62) " maybeIterable" -(77:61-77:87) "[MAYBE_ITERATOR_SYMBOL] ||" --> (55:62-55:88) "[MAYBE_ITERATOR_SYMBOL] ||" -(77:87-77:101) " maybeIterable" --> (55:88-55:102) " maybeIterable" -(77:101-79:2) "[FAUX_ITERATOR_SYMBOL];\n" --> (55:102-56:0) "[FAUX_ITERATOR_SYMBOL];" -(79:2-79:13) " if (typeof" --> (56:0-56:14) "\n\t\t\tif (typeof" -(79:13-79:31) " maybeIterator ===" --> (56:14-56:32) " maybeIterator ===" -(79:31-79:43) " 'function')" --> (56:32-56:44) " 'function')" -(79:43-80:4) " {" --> (56:44-57:0) " {" -(80:4-80:11) " return" --> (57:0-57:11) "\n\t\t\t\treturn" -(80:11-81:3) " maybeIterator;" --> (57:11-58:3) " maybeIterator;" -(81:3-83:2) "}\n" --> (58:3-59:0) "\t}" -(83:2-83:9) " return" --> (59:0-59:10) "\n\t\t\treturn" -(83:9-84:1) " null;" --> (59:10-60:2) " null;" -(84:1-89:0) "}\n\n/**\n * Keeps track of the current dispatcher.\n */" --> (60:2-61:2) "\t}" -(89:0-89:4) "\nvar" --> (61:2-61:6) "\tvar" -(89:4-89:29) " ReactCurrentDispatcher =" --> (61:6-61:31) " ReactCurrentDispatcher =" -(89:29-94:2) " {\n /**\n * @internal\n * @type {ReactComponent}\n */" --> (61:31-62:3) " {" -(94:2-94:11) " current:" --> (62:3-62:11) "\tcurrent" -(94:11-95:1) " null" --> (62:11-63:3) ":null" -(95:1-101:0) "};\n\n/**\n * Keeps track of the current batch's configuration such as how long an update\n * should suspend for if it needs to.\n */" --> (63:3-64:2) "};" -(101:0-101:4) "\nvar" --> (64:2-64:6) "\tvar" -(101:4-101:30) " ReactCurrentBatchConfig =" --> (64:6-64:32) " ReactCurrentBatchConfig =" -(101:30-102:2) " {" --> (64:32-65:3) " {" -(102:2-102:14) " transition:" --> (65:3-65:14) "\ttransition" -(102:14-103:1) " 0" --> (65:14-66:3) ":0" -(103:1-111:0) "};\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n */" --> (66:3-67:2) "};" -(111:0-111:4) "\nvar" --> (67:2-67:6) "\tvar" -(111:4-111:24) " ReactCurrentOwner =" --> (67:6-67:26) " ReactCurrentOwner =" -(111:24-116:2) " {\n /**\n * @internal\n * @type {ReactComponent}\n */" --> (67:26-68:3) " {" -(116:2-116:11) " current:" --> (68:3-68:11) "\tcurrent" -(116:11-117:1) " null" --> (68:11-69:3) ":null" -(117:1-119:0) "};\n" --> (69:3-70:2) "};" -(119:0-119:4) "\nvar" --> (70:2-70:6) "\tvar" -(119:4-119:29) " ReactDebugCurrentFrame =" --> (70:6-70:31) " ReactDebugCurrentFrame =" -(119:29-119:31) " {" --> (70:31-70:33) " {" -(119:31-120:0) "};" --> (70:33-71:2) "};" -(120:0-120:4) "\nvar" --> (71:2-71:6) "\tvar" -(120:4-120:29) " currentExtraStackFrame =" --> (71:6-71:31) " currentExtraStackFrame =" -(120:29-121:0) " null;" --> (71:31-72:2) " null;" -(121:0-121:9) "\nfunction" --> (72:2-72:11) "\tfunction" -(121:9-121:28) " setExtraStackFrame" --> (72:11-72:30) " setExtraStackFrame" -(121:28-121:35) "(stack)" --> (72:30-72:37) "(stack)" -(121:35-122:2) " {" --> (72:37-73:3) " {" -(122:2-123:4) " {" --> (73:3-74:0) "\t{" -(123:4-123:29) " currentExtraStackFrame =" --> (74:0-74:29) "\n\t\t\t\tcurrentExtraStackFrame =" -(123:29-124:3) " stack;" --> (74:29-75:3) " stack;" -(124:3-125:1) "}" --> (75:3-76:2) "\t}" -(125:1-127:0) "}\n" --> (76:2-77:2) "\t}" -(127:0-128:2) "\n{" --> (77:2-78:0) "\t{" -(128:2-128:25) " ReactDebugCurrentFrame" --> (78:0-78:26) "\n\t\t\tReactDebugCurrentFrame" -(128:25-128:46) ".setExtraStackFrame =" --> (78:26-78:47) ".setExtraStackFrame =" -(128:46-128:56) " function " --> (78:47-78:56) " function" -(128:56-128:63) "(stack)" --> (78:56-78:63) "(stack)" -(128:63-129:4) " {" --> (78:63-79:4) " {" -(129:4-130:6) " {" --> (79:4-80:0) "\t{" -(130:6-130:31) " currentExtraStackFrame =" --> (80:0-80:30) "\n\t\t\t\t\tcurrentExtraStackFrame =" -(130:31-131:5) " stack;" --> (80:30-81:4) " stack;" -(131:5-132:3) "}" --> (81:4-82:3) "\t}" -(132:3-135:2) "}; // Stack implementation injected by the current renderer.\n\n" --> (82:3-83:0) "\t};" -(135:2-135:25) " ReactDebugCurrentFrame" --> (83:0-83:26) "\n\t\t\tReactDebugCurrentFrame" -(135:25-135:43) ".getCurrentStack =" --> (83:26-83:44) ".getCurrentStack =" -(135:43-137:2) " null;\n" --> (83:44-84:0) " null;" -(137:2-137:25) " ReactDebugCurrentFrame" --> (84:0-84:26) "\n\t\t\tReactDebugCurrentFrame" -(137:25-137:44) ".getStackAddendum =" --> (84:26-84:45) ".getStackAddendum =" -(137:44-137:56) " function ()" --> (84:45-84:56) " function()" -(137:56-138:4) " {" --> (84:56-85:4) " {" -(138:4-138:8) " var" --> (85:4-85:8) "\tvar" -(138:8-138:16) " stack =" --> (85:8-85:16) " stack =" -(138:16-140:4) " ''; // Add an extra top frame while an element is being validated\n" --> (85:16-86:0) " '';" -(140:4-140:8) " if " --> (86:0-86:8) "\n\t\t\t\tif " -(140:8-140:32) "(currentExtraStackFrame)" --> (86:8-86:32) "(currentExtraStackFrame)" -(140:32-141:6) " {" --> (86:32-87:0) " {" -(141:6-141:15) " stack +=" --> (87:0-87:14) "\n\t\t\t\t\tstack +=" -(141:15-142:5) " currentExtraStackFrame;" --> (87:14-88:4) " currentExtraStackFrame;" -(142:5-145:4) "} // Delegate to the injected renderer-specific implementation\n\n" --> (88:4-89:4) "\t}" -(145:4-145:8) " var" --> (89:4-89:8) "\tvar" -(145:8-145:15) " impl =" --> (89:8-89:15) " impl =" -(145:15-145:38) " ReactDebugCurrentFrame" --> (89:15-89:38) " ReactDebugCurrentFrame" -(145:38-147:4) ".getCurrentStack;\n" --> (89:38-90:0) ".getCurrentStack;" -(147:4-147:8) " if " --> (90:0-90:8) "\n\t\t\t\tif " -(147:8-147:14) "(impl)" --> (90:8-90:14) "(impl)" -(147:14-148:6) " {" --> (90:14-91:0) " {" -(148:6-148:15) " stack +=" --> (91:0-91:14) "\n\t\t\t\t\tstack +=" -(148:15-148:25) " impl() ||" --> (91:14-91:24) " impl() ||" -(148:25-149:5) " '';" --> (91:24-92:4) " '';" -(149:5-151:4) "}\n" --> (92:4-93:0) "\t}" -(151:4-151:11) " return" --> (93:0-93:11) "\n\t\t\t\treturn" -(151:11-152:3) " stack;" --> (93:11-94:3) " stack;" -(152:3-153:1) "};" --> (94:3-95:2) "\t};" -(153:1-158:0) "}\n\n/**\n * Used by act() to track whether you're inside an act() scope.\n */" --> (95:2-96:2) "\t}" -(158:0-158:4) "\nvar" --> (96:2-96:6) "\tvar" -(158:4-158:27) " IsSomeRendererActing =" --> (96:6-96:29) " IsSomeRendererActing =" -(158:27-159:2) " {" --> (96:29-97:3) " {" -(159:2-159:11) " current:" --> (97:3-97:11) "\tcurrent" -(159:11-160:1) " false" --> (97:11-98:3) ":false" -(160:1-162:0) "};\n" --> (98:3-99:2) "};" -(162:0-162:4) "\nvar" --> (99:2-99:6) "\tvar" -(162:4-162:27) " ReactSharedInternals =" --> (99:6-99:29) " ReactSharedInternals =" -(162:27-163:2) " {" --> (99:29-100:3) " {" -(163:2-163:26) " ReactCurrentDispatcher:" --> (100:3-100:26) "\tReactCurrentDispatcher" -(163:26-164:2) " ReactCurrentDispatcher," --> (100:26-101:3) ":ReactCurrentDispatcher," -(164:2-164:27) " ReactCurrentBatchConfig:" --> (101:3-101:27) "\tReactCurrentBatchConfig" -(164:27-165:2) " ReactCurrentBatchConfig," --> (101:27-102:3) ":ReactCurrentBatchConfig," -(165:2-165:21) " ReactCurrentOwner:" --> (102:3-102:21) "\tReactCurrentOwner" -(165:21-166:2) " ReactCurrentOwner," --> (102:21-103:3) ":ReactCurrentOwner," -(166:2-166:24) " IsSomeRendererActing:" --> (103:3-103:24) "\tIsSomeRendererActing" -(166:24-168:2) " IsSomeRendererActing,\n // Used by renderers to avoid bundling object-assign twice in UMD bundles:" --> (103:24-104:3) ":IsSomeRendererActing," -(168:2-168:10) " assign:" --> (104:3-104:10) "\tassign" -(168:10-169:1) " _assign" --> (104:10-105:3) ":_assign" -(169:1-171:0) "};\n" --> (105:3-106:2) "};" -(171:0-172:2) "\n{" --> (106:2-107:0) "\t{" -(172:2-172:23) " ReactSharedInternals" --> (107:0-107:24) "\n\t\t\tReactSharedInternals" -(172:23-172:48) ".ReactDebugCurrentFrame =" --> (107:24-107:49) ".ReactDebugCurrentFrame =" -(172:48-173:1) " ReactDebugCurrentFrame;" --> (107:49-108:2) " ReactDebugCurrentFrame;" -(173:1-180:0) "}\n\n// by calls to these methods by a Babel plugin.\n//\n// In PROD (or in packages without access to React internals),\n// they are left as they are instead.\n" --> (108:2-109:2) "\t}" -(180:0-180:9) "\nfunction" --> (109:2-109:11) "\tfunction" -(180:9-180:14) " warn" --> (109:11-109:16) " warn" -(180:14-180:22) "(format)" --> (109:16-109:24) "(format)" -(180:22-181:2) " {" --> (109:24-110:3) " {" -(181:2-182:4) " {" --> (110:3-111:0) "\t{" -(182:4-182:9) " for " --> (111:0-111:9) "\n\t\t\t\tfor " -(182:9-182:13) "(var" --> (111:9-111:13) "(var" -(182:13-182:20) " _len =" --> (111:13-111:20) " _len =" -(182:20-182:30) " arguments" --> (111:20-111:30) " arguments" -(182:30-182:38) ".length," --> (111:30-111:38) ".length," -(182:38-182:45) " args =" --> (111:38-111:45) " args =" -(182:45-182:49) " new" --> (111:45-111:49) " new" -(182:49-182:55) " Array" --> (111:49-111:55) " Array" -(182:55-182:62) "(_len >" --> (111:55-111:62) "(_len >" -(182:62-182:66) " 1 ?" --> (111:62-111:66) " 1 ?" -(182:66-182:73) " _len -" --> (111:66-111:73) " _len -" -(182:73-182:77) " 1 :" --> (111:73-111:77) " 1 :" -(182:77-182:81) " 0)," --> (111:77-111:81) " 0)," -(182:81-182:88) " _key =" --> (111:81-111:88) " _key =" -(182:88-182:91) " 1;" --> (111:88-111:91) " 1;" -(182:91-182:98) " _key <" --> (111:91-111:98) " _key <" -(182:98-182:104) " _len;" --> (111:98-111:104) " _len;" -(182:104-182:112) " _key++)" --> (111:104-111:115) " _key++)\t\t\t" -(182:112-183:6) " {" --> (111:115-112:0) "\t{" -(183:6-183:11) " args" --> (112:0-112:10) "\n\t\t\t\t\targs" -(183:11-183:18) "[_key -" --> (112:10-112:17) "[_key -" -(183:18-183:23) " 1] =" --> (112:17-112:22) " 1] =" -(183:23-183:33) " arguments" --> (112:22-112:32) " arguments" -(183:33-184:5) "[_key];" --> (112:32-113:4) "[_key];" -(184:5-186:4) "}\n" --> (113:4-114:0) "\t}" -(186:4-186:17) " printWarning" --> (114:0-114:17) "\n\t\t\t\tprintWarning" -(186:17-186:25) "('warn'," --> (114:17-114:25) "('warn'," -(186:25-186:33) " format," --> (114:25-114:33) " format," -(186:33-187:3) " args);" --> (114:33-115:3) " args);" -(187:3-188:1) "}" --> (115:3-116:2) "\t}" -(188:1-189:0) "}" --> (116:2-117:2) "\t}" -(189:0-189:9) "\nfunction" --> (117:2-117:11) "\tfunction" -(189:9-189:15) " error" --> (117:11-117:17) " error" -(189:15-189:23) "(format)" --> (117:17-117:25) "(format)" -(189:23-190:2) " {" --> (117:25-118:3) " {" -(190:2-191:4) " {" --> (118:3-119:0) "\t{" -(191:4-191:9) " for " --> (119:0-119:9) "\n\t\t\t\tfor " -(191:9-191:13) "(var" --> (119:9-119:13) "(var" -(191:13-191:21) " _len2 =" --> (119:13-119:21) " _len2 =" -(191:21-191:31) " arguments" --> (119:21-119:31) " arguments" -(191:31-191:39) ".length," --> (119:31-119:39) ".length," -(191:39-191:46) " args =" --> (119:39-119:46) " args =" -(191:46-191:50) " new" --> (119:46-119:50) " new" -(191:50-191:56) " Array" --> (119:50-119:56) " Array" -(191:56-191:64) "(_len2 >" --> (119:56-119:64) "(_len2 >" -(191:64-191:68) " 1 ?" --> (119:64-119:68) " 1 ?" -(191:68-191:76) " _len2 -" --> (119:68-119:76) " _len2 -" -(191:76-191:80) " 1 :" --> (119:76-119:80) " 1 :" -(191:80-191:84) " 0)," --> (119:80-119:84) " 0)," -(191:84-191:92) " _key2 =" --> (119:84-119:92) " _key2 =" -(191:92-191:95) " 1;" --> (119:92-119:95) " 1;" -(191:95-191:103) " _key2 <" --> (119:95-119:103) " _key2 <" -(191:103-191:110) " _len2;" --> (119:103-119:110) " _len2;" -(191:110-191:119) " _key2++)" --> (119:110-119:122) " _key2++)\t\t\t" -(191:119-192:6) " {" --> (119:122-120:0) "\t{" -(192:6-192:11) " args" --> (120:0-120:10) "\n\t\t\t\t\targs" -(192:11-192:19) "[_key2 -" --> (120:10-120:18) "[_key2 -" -(192:19-192:24) " 1] =" --> (120:18-120:23) " 1] =" -(192:24-192:34) " arguments" --> (120:23-120:33) " arguments" -(192:34-193:5) "[_key2];" --> (120:33-121:4) "[_key2];" -(193:5-195:4) "}\n" --> (121:4-122:0) "\t}" -(195:4-195:17) " printWarning" --> (122:0-122:17) "\n\t\t\t\tprintWarning" -(195:17-195:26) "('error'," --> (122:17-122:26) "('error'," -(195:26-195:34) " format," --> (122:26-122:34) " format," -(195:34-196:3) " args);" --> (122:34-123:3) " args);" -(196:3-197:1) "}" --> (123:3-124:2) "\t}" -(197:1-199:0) "}\n" --> (124:2-125:2) "\t}" -(199:0-199:9) "\nfunction" --> (125:2-125:11) "\tfunction" -(199:9-199:22) " printWarning" --> (125:11-125:24) " printWarning" -(199:22-199:29) "(level," --> (125:24-125:31) "(level," -(199:29-199:37) " format," --> (125:31-125:39) " format," -(199:37-199:43) " args)" --> (125:39-125:45) " args)" -(199:43-202:2) " {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well." --> (125:45-126:3) " {" -(202:2-203:4) " {" --> (126:3-127:4) "\t{" -(203:4-203:8) " var" --> (127:4-127:8) "\tvar" -(203:8-203:33) " ReactDebugCurrentFrame =" --> (127:8-127:33) " ReactDebugCurrentFrame =" -(203:33-203:54) " ReactSharedInternals" --> (127:33-127:54) " ReactSharedInternals" -(203:54-204:4) ".ReactDebugCurrentFrame;" --> (127:54-128:4) ".ReactDebugCurrentFrame;" -(204:4-204:8) " var" --> (128:4-128:8) "\tvar" -(204:8-204:16) " stack =" --> (128:8-128:16) " stack =" -(204:16-204:39) " ReactDebugCurrentFrame" --> (128:16-128:39) " ReactDebugCurrentFrame" -(204:39-206:4) ".getStackAddendum();\n" --> (128:39-129:0) ".getStackAddendum();" -(206:4-206:8) " if " --> (129:0-129:8) "\n\t\t\t\tif " -(206:8-206:18) "(stack !==" --> (129:8-129:18) "(stack !==" -(206:18-206:22) " '')" --> (129:18-129:22) " '')" -(206:22-207:6) " {" --> (129:22-130:0) " {" -(207:6-207:16) " format +=" --> (130:0-130:15) "\n\t\t\t\t\tformat +=" -(207:16-208:6) " '%s';" --> (130:15-131:0) " '%s';" -(208:6-208:13) " args =" --> (131:0-131:12) "\n\t\t\t\t\targs =" -(208:13-208:18) " args" --> (131:12-131:17) " args" -(208:18-208:25) ".concat" --> (131:17-131:24) ".concat" -(208:25-208:26) "(" --> (131:24-131:25) "(" -(208:26-208:32) "[stack" --> (131:25-131:31) "[stack" -(208:32-209:5) "]);" --> (131:31-132:4) "]);" -(209:5-211:4) "}\n" --> (132:4-133:4) "\t}" -(211:4-211:8) " var" --> (133:4-133:8) "\tvar" -(211:8-211:25) " argsWithFormat =" --> (133:8-133:25) " argsWithFormat =" -(211:25-211:30) " args" --> (133:25-133:30) " args" -(211:30-211:34) ".map" --> (133:30-133:34) ".map" -(211:34-211:44) "(function " --> (133:34-133:43) "(function" -(211:44-211:50) "(item)" --> (133:43-133:49) "(item)" -(211:50-212:6) " {" --> (133:49-134:0) " {" -(212:6-212:13) " return" --> (134:0-134:12) "\n\t\t\t\t\treturn" -(212:13-212:18) " '' +" --> (134:12-134:17) " '' +" -(212:18-213:5) " item;" --> (134:17-135:4) " item;" -(213:5-215:4) "}); // Careful: RN currently depends on this prefix\n" --> (135:4-136:0) "\t});" -(215:4-215:19) " argsWithFormat" --> (136:0-136:19) "\n\t\t\t\targsWithFormat" -(215:19-215:27) ".unshift" --> (136:19-136:27) ".unshift" -(215:27-215:41) "('Warning: ' +" --> (136:27-136:41) "('Warning: ' +" -(215:41-219:4) " format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n" --> (136:41-137:0) " format);" -(219:4-219:13) " Function" --> (137:0-137:13) "\n\t\t\t\tFunction" -(219:13-219:23) ".prototype" --> (137:13-137:23) ".prototype" -(219:23-219:29) ".apply" --> (137:23-137:29) ".apply" -(219:29-219:34) ".call" --> (137:29-137:34) ".call" -(219:34-219:42) "(console" --> (137:34-137:42) "(console" -(219:42-219:50) "[level]," --> (137:42-137:50) "[level]," -(219:50-219:59) " console," --> (137:50-137:59) " console," -(219:59-220:3) " argsWithFormat);" --> (137:59-138:3) " argsWithFormat);" -(220:3-221:1) "}" --> (138:3-139:2) "\t}" -(221:1-223:0) "}\n" --> (139:2-140:2) "\t}" -(223:0-223:4) "\nvar" --> (140:2-140:6) "\tvar" -(223:4-223:46) " didWarnStateUpdateForUnmountedComponent =" --> (140:6-140:48) " didWarnStateUpdateForUnmountedComponent =" -(223:46-223:48) " {" --> (140:48-140:50) " {" -(223:48-225:0) "};\n" --> (140:50-141:2) "};" -(225:0-225:9) "\nfunction" --> (141:2-141:11) "\tfunction" -(225:9-225:18) " warnNoop" --> (141:11-141:20) " warnNoop" -(225:18-225:34) "(publicInstance," --> (141:20-141:36) "(publicInstance," -(225:34-225:46) " callerName)" --> (141:36-141:48) " callerName)" -(225:46-226:2) " {" --> (141:48-142:3) " {" -(226:2-227:4) " {" --> (142:3-143:4) "\t{" -(227:4-227:8) " var" --> (143:4-143:8) "\tvar" -(227:8-227:23) " _constructor =" --> (143:8-143:23) " _constructor =" -(227:23-227:38) " publicInstance" --> (143:23-143:38) " publicInstance" -(227:38-228:4) ".constructor;" --> (143:38-144:4) ".constructor;" -(228:4-228:8) " var" --> (144:4-144:8) "\tvar" -(228:8-228:24) " componentName =" --> (144:8-144:24) " componentName =" -(228:24-228:41) " _constructor && " --> (144:24-144:41) " _constructor && " -(228:41-228:54) "(_constructor" --> (144:41-144:54) "(_constructor" -(228:54-228:69) ".displayName ||" --> (144:54-144:69) ".displayName ||" -(228:69-228:82) " _constructor" --> (144:69-144:82) " _constructor" -(228:82-228:91) ".name) ||" --> (144:82-144:91) ".name) ||" -(228:91-229:4) " 'ReactClass';" --> (144:91-145:4) " 'ReactClass';" -(229:4-229:8) " var" --> (145:4-145:8) "\tvar" -(229:8-229:21) " warningKey =" --> (145:8-145:21) " warningKey =" -(229:21-229:37) " componentName +" --> (145:21-145:37) " componentName +" -(229:37-229:43) " \".\" +" --> (145:37-145:43) " '.' +" -(229:43-231:4) " callerName;\n" --> (145:43-146:0) " callerName;" -(231:4-231:8) " if " --> (146:0-146:8) "\n\t\t\t\tif " -(231:8-231:48) "(didWarnStateUpdateForUnmountedComponent" --> (146:8-146:48) "(didWarnStateUpdateForUnmountedComponent" -(231:48-231:61) "[warningKey])" --> (146:48-146:61) "[warningKey])" -(231:61-232:6) " {" --> (146:61-147:0) " {" -(232:6-233:5) " return;" --> (147:0-148:4) "\n\t\t\t\t\treturn;" -(233:5-235:4) "}\n" --> (148:4-149:0) "\t}" -(235:4-235:10) " error" --> (149:0-149:10) "\n\t\t\t\terror" -(235:10-235:69) "(\"Can't call %s on a component that is not yet mounted. \" +" --> (149:10-149:69) "(\"Can't call %s on a component that is not yet mounted. \" +" -(235:69-235:140) " 'This is a no-op, but it might indicate a bug in your application. ' +" --> (149:69-149:140) " 'This is a no-op, but it might indicate a bug in your application. ' +" -(235:140-235:212) " 'Instead, assign to `this.state` directly or define a `state = {};` ' +" --> (149:140-149:212) " 'Instead, assign to `this.state` directly or define a `state = {};` ' +" -(235:212-235:274) " 'class property with the desired state in the %s component.'," --> (149:212-149:274) " 'class property with the desired state in the %s component.'," -(235:274-235:286) " callerName," --> (149:274-149:286) " callerName," -(235:286-237:4) " componentName);\n" --> (149:286-150:0) " componentName);" -(237:4-237:44) " didWarnStateUpdateForUnmountedComponent" --> (150:0-150:44) "\n\t\t\t\tdidWarnStateUpdateForUnmountedComponent" -(237:44-237:58) "[warningKey] =" --> (150:44-150:58) "[warningKey] =" -(237:58-238:3) " true;" --> (150:58-151:3) " true;" -(238:3-239:1) "}" --> (151:3-152:2) "\t}" -(239:1-245:0) "}\n/**\n * This is the abstract API for an update queue.\n */\n\n" --> (152:2-153:2) "\t}" -(245:0-245:4) "\nvar" --> (153:2-153:6) "\tvar" -(245:4-245:27) " ReactNoopUpdateQueue =" --> (153:6-153:29) " ReactNoopUpdateQueue =" -(245:27-253:2) " {\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */" --> (153:29-154:3) " {" -(253:2-253:13) " isMounted:" --> (154:3-154:13) "\tisMounted" -(253:13-253:23) " function " --> (154:13-154:22) ":function" -(253:23-253:39) "(publicInstance)" --> (154:22-154:38) "(publicInstance)" -(253:39-254:4) " {" --> (154:38-155:0) " {" -(254:4-254:11) " return" --> (155:0-155:11) "\n\t\t\t\treturn" -(254:11-255:3) " false;" --> (155:11-156:3) " false;" -(255:3-272:2) "},\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */" --> (156:3-157:3) "\t}," -(272:2-272:22) " enqueueForceUpdate:" --> (157:3-157:22) "\tenqueueForceUpdate" -(272:22-272:32) " function " --> (157:22-157:31) ":function" -(272:32-272:48) "(publicInstance," --> (157:31-157:47) "(publicInstance," -(272:48-272:58) " callback," --> (157:47-157:57) " callback," -(272:58-272:70) " callerName)" --> (157:57-157:69) " callerName)" -(272:70-273:4) " {" --> (157:69-158:0) " {" -(273:4-273:13) " warnNoop" --> (158:0-158:13) "\n\t\t\t\twarnNoop" -(273:13-273:29) "(publicInstance," --> (158:13-158:29) "(publicInstance," -(273:29-274:3) " 'forceUpdate');" --> (158:29-159:3) " 'forceUpdate');" -(274:3-289:2) "},\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */" --> (159:3-160:3) "\t}," -(289:2-289:23) " enqueueReplaceState:" --> (160:3-160:23) "\tenqueueReplaceState" -(289:23-289:33) " function " --> (160:23-160:32) ":function" -(289:33-289:49) "(publicInstance," --> (160:32-160:48) "(publicInstance," -(289:49-289:64) " completeState," --> (160:48-160:63) " completeState," -(289:64-289:74) " callback," --> (160:63-160:73) " callback," -(289:74-289:86) " callerName)" --> (160:73-160:85) " callerName)" -(289:86-290:4) " {" --> (160:85-161:0) " {" -(290:4-290:13) " warnNoop" --> (161:0-161:13) "\n\t\t\t\twarnNoop" -(290:13-290:29) "(publicInstance," --> (161:13-161:29) "(publicInstance," -(290:29-291:3) " 'replaceState');" --> (161:29-162:3) " 'replaceState');" -(291:3-305:2) "},\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} Name of the calling function in the public API.\n * @internal\n */" --> (162:3-163:3) "\t}," -(305:2-305:19) " enqueueSetState:" --> (163:3-163:19) "\tenqueueSetState" -(305:19-305:29) " function " --> (163:19-163:28) ":function" -(305:29-305:45) "(publicInstance," --> (163:28-163:44) "(publicInstance," -(305:45-305:59) " partialState," --> (163:44-163:58) " partialState," -(305:59-305:69) " callback," --> (163:58-163:68) " callback," -(305:69-305:81) " callerName)" --> (163:68-163:80) " callerName)" -(305:81-306:4) " {" --> (163:80-164:0) " {" -(306:4-306:13) " warnNoop" --> (164:0-164:13) "\n\t\t\t\twarnNoop" -(306:13-306:29) "(publicInstance," --> (164:13-164:29) "(publicInstance," -(306:29-307:3) " 'setState');" --> (164:29-165:3) " 'setState');" -(307:3-308:1) "}" --> (165:3-166:3) "\t}" -(308:1-310:0) "};\n" --> (166:3-167:2) "};" -(310:0-310:4) "\nvar" --> (167:2-167:6) "\tvar" -(310:4-310:18) " emptyObject =" --> (167:6-167:20) " emptyObject =" -(310:18-310:20) " {" --> (167:20-167:22) " {" -(310:20-312:0) "};\n" --> (167:22-168:2) "};" -(312:0-313:2) "\n{" --> (168:2-169:0) "\t{" -(313:2-313:9) " Object" --> (169:0-169:10) "\n\t\t\tObject" -(313:9-313:16) ".freeze" --> (169:10-169:17) ".freeze" -(313:16-314:1) "(emptyObject);" --> (169:17-170:2) "(emptyObject);" -(314:1-320:0) "}\n/**\n * Base class helpers for the updating state of a component.\n */\n\n" --> (170:2-171:2) "\t}" -(320:0-320:9) "\nfunction" --> (171:2-171:11) "\tfunction" -(320:9-320:19) " Component" --> (171:11-171:21) " Component" -(320:19-320:26) "(props," --> (171:21-171:28) "(props," -(320:26-320:35) " context," --> (171:28-171:37) " context," -(320:35-320:44) " updater)" --> (171:37-171:46) " updater)" -(320:44-321:2) " {" --> (171:46-172:0) " {" -(321:2-321:7) " this" --> (172:0-172:8) "\n\t\t\tthis" -(321:7-321:15) ".props =" --> (172:8-172:16) ".props =" -(321:15-322:2) " props;" --> (172:16-173:0) " props;" -(322:2-322:7) " this" --> (173:0-173:8) "\n\t\t\tthis" -(322:7-322:17) ".context =" --> (173:8-173:18) ".context =" -(322:17-324:2) " context; // If a component has string refs, we will assign a different object later.\n" --> (173:18-174:0) " context;" -(324:2-324:7) " this" --> (174:0-174:8) "\n\t\t\tthis" -(324:7-324:14) ".refs =" --> (174:8-174:15) ".refs =" -(324:14-327:2) " emptyObject; // We initialize the default updater but the real one gets injected by the\n // renderer.\n" --> (174:15-175:0) " emptyObject;" -(327:2-327:7) " this" --> (175:0-175:8) "\n\t\t\tthis" -(327:7-327:17) ".updater =" --> (175:8-175:18) ".updater =" -(327:17-327:28) " updater ||" --> (175:18-175:29) " updater ||" -(327:28-328:1) " ReactNoopUpdateQueue;" --> (175:29-176:2) " ReactNoopUpdateQueue;" -(328:1-330:0) "}\n" --> (176:2-177:0) "\t}" -(330:0-330:10) "\nComponent" --> (177:0-177:12) "\n\t\tComponent" -(330:10-330:20) ".prototype" --> (177:12-177:22) ".prototype" -(330:20-330:39) ".isReactComponent =" --> (177:22-177:41) ".isReactComponent =" -(330:39-330:41) " {" --> (177:41-177:43) " {" -(330:41-357:0) "};\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\n" --> (177:43-178:0) "};" -(357:0-357:10) "\nComponent" --> (178:0-178:12) "\n\t\tComponent" -(357:10-357:20) ".prototype" --> (178:12-178:22) ".prototype" -(357:20-357:31) ".setState =" --> (178:22-178:33) ".setState =" -(357:31-357:41) " function " --> (178:33-178:42) " function" -(357:41-357:55) "(partialState," --> (178:42-178:56) "(partialState," -(357:55-357:65) " callback)" --> (178:56-178:66) " callback)" -(357:65-358:2) " {" --> (178:66-179:0) " {" -(358:2-358:15) " if (!(typeof" --> (179:0-179:17) "\n\t\t\tif ( !(typeof" -(358:15-358:32) " partialState ===" --> (179:17-179:34) " partialState ===" -(358:32-358:51) " 'object' || typeof" --> (179:34-179:53) " 'object' || typeof" -(358:51-358:68) " partialState ===" --> (179:53-179:70) " partialState ===" -(358:68-358:82) " 'function' ||" --> (179:70-179:84) " 'function' ||" -(358:82-358:98) " partialState ==" --> (179:84-179:100) " partialState ==" -(358:98-358:105) " null))" --> (179:100-179:107) " null))" -(358:105-359:4) " {" --> (179:107-180:4) " {" -(359:4-360:6) " {" --> (180:4-181:0) "\t{" -(360:6-360:12) " throw" --> (181:0-181:11) "\n\t\t\t\t\tthrow" -(360:12-360:19) " Error(" --> (181:11-181:17) " Error" -(360:19-361:5) " \"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\" );" --> (181:17-182:4) "('setState(...): takes an object of state variables to update or a function which returns an object of state variables.');" -(361:5-362:3) "}" --> (182:4-183:3) "\t}" -(362:3-364:2) "}\n" --> (183:3-184:0) "\t}" -(364:2-364:7) " this" --> (184:0-184:8) "\n\t\t\tthis" -(364:7-364:15) ".updater" --> (184:8-184:16) ".updater" -(364:15-364:31) ".enqueueSetState" --> (184:16-184:32) ".enqueueSetState" -(364:31-364:37) "(this," --> (184:32-184:38) "(this," -(364:37-364:51) " partialState," --> (184:38-184:52) " partialState," -(364:51-364:61) " callback," --> (184:52-184:62) " callback," -(364:61-365:1) " 'setState');" --> (184:62-185:2) " 'setState');" -(365:1-382:0) "};\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\n\n" --> (185:2-186:0) "\t};" -(382:0-382:10) "\nComponent" --> (186:0-186:12) "\n\t\tComponent" -(382:10-382:20) ".prototype" --> (186:12-186:22) ".prototype" -(382:20-382:34) ".forceUpdate =" --> (186:22-186:36) ".forceUpdate =" -(382:34-382:44) " function " --> (186:36-186:45) " function" -(382:44-382:54) "(callback)" --> (186:45-186:55) "(callback)" -(382:54-383:2) " {" --> (186:55-187:0) " {" -(383:2-383:7) " this" --> (187:0-187:8) "\n\t\t\tthis" -(383:7-383:15) ".updater" --> (187:8-187:16) ".updater" -(383:15-383:34) ".enqueueForceUpdate" --> (187:16-187:35) ".enqueueForceUpdate" -(383:34-383:40) "(this," --> (187:35-187:41) "(this," -(383:40-383:50) " callback," --> (187:41-187:51) " callback," -(383:50-384:1) " 'forceUpdate');" --> (187:51-188:2) " 'forceUpdate');" -(384:1-392:0) "};\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\n\n" --> (188:2-189:2) "\t};" -(392:0-393:2) "\n{" --> (189:2-190:3) "\t{" -(393:2-393:6) " var" --> (190:3-190:7) "\tvar" -(393:6-393:23) " deprecatedAPIs =" --> (190:7-190:24) " deprecatedAPIs =" -(393:23-394:4) " {" --> (190:24-191:4) " {" -(394:4-394:15) " isMounted:" --> (191:4-191:14) "\tisMounted" -(394:15-394:16) " " --> (191:14-191:15) ":" -(394:16-394:29) "['isMounted'," --> (191:15-191:28) "['isMounted'," -(394:29-394:103) " 'Instead, make sure to clean up subscriptions and pending requests in ' +" --> (191:28-191:102) " 'Instead, make sure to clean up subscriptions and pending requests in ' +" -(394:103-394:151) " 'componentWillUnmount to prevent memory leaks.'" --> (191:102-191:150) " 'componentWillUnmount to prevent memory leaks.'" -(394:151-395:4) "]," --> (191:150-192:4) "]," -(395:4-395:18) " replaceState:" --> (192:4-192:17) "\treplaceState" -(395:18-395:19) " " --> (192:17-192:18) ":" -(395:19-395:35) "['replaceState'," --> (192:18-192:34) "['replaceState'," -(395:35-395:88) " 'Refactor your code to use setState instead (see ' +" --> (192:34-192:87) " 'Refactor your code to use setState instead (see ' +" -(395:88-395:138) " 'https://github.com/facebook/react/issues/3236).'" --> (192:87-192:137) " 'https://github.com/facebook/react/issues/3236).'" -(395:138-396:3) "]" --> (192:137-193:4) "]" -(396:3-398:2) "};\n" --> (193:4-194:3) "};" -(398:2-398:6) " var" --> (194:3-194:7) "\tvar" -(398:6-398:33) " defineDeprecationWarning =" --> (194:7-194:34) " defineDeprecationWarning =" -(398:33-398:43) " function " --> (194:34-194:43) " function" -(398:43-398:55) "(methodName," --> (194:43-194:55) "(methodName," -(398:55-398:61) " info)" --> (194:55-194:61) " info)" -(398:61-399:4) " {" --> (194:61-195:0) " {" -(399:4-399:11) " Object" --> (195:0-195:11) "\n\t\t\t\tObject" -(399:11-399:26) ".defineProperty" --> (195:11-195:26) ".defineProperty" -(399:26-399:36) "(Component" --> (195:26-195:36) "(Component" -(399:36-399:47) ".prototype," --> (195:36-195:47) ".prototype," -(399:47-399:59) " methodName," --> (195:47-195:59) " methodName," -(399:59-400:6) " {" --> (195:59-196:5) " {" -(400:6-400:11) " get:" --> (196:5-196:9) "\tget" -(400:11-400:23) " function ()" --> (196:9-196:20) ":function()" -(400:23-401:8) " {" --> (196:20-197:0) " {" -(401:8-401:13) " warn" --> (197:0-197:11) "\n\t\t\t\t\t\twarn" -(401:13-401:76) "('%s(...) is deprecated in plain JavaScript React classes. %s'," --> (197:11-197:74) "('%s(...) is deprecated in plain JavaScript React classes. %s'," -(401:76-401:81) " info" --> (197:74-197:79) " info" -(401:81-401:85) "[0]," --> (197:79-197:83) "[0]," -(401:85-401:90) " info" --> (197:83-197:88) " info" -(401:90-403:8) "[1]);\n" --> (197:88-198:0) "[1]);" -(403:8-403:15) " return" --> (198:0-198:13) "\n\t\t\t\t\t\treturn" -(403:15-404:7) " undefined;" --> (198:13-199:5) " undefined;" -(404:7-405:5) "}" --> (199:5-200:5) "\t}" -(405:5-406:3) "});" --> (200:5-201:3) "});" -(406:3-408:2) "};\n" --> (201:3-202:0) "\t};" -(408:2-408:7) " for " --> (202:0-202:8) "\n\t\t\tfor " -(408:7-408:11) "(var" --> (202:8-202:12) "(var" -(408:11-408:21) " fnName in" --> (202:12-202:22) " fnName in" -(408:21-408:37) " deprecatedAPIs)" --> (202:22-202:41) " deprecatedAPIs) \t\t" -(408:37-409:4) " {" --> (202:41-203:0) "\t{" -(409:4-409:8) " if " --> (203:0-203:8) "\n\t\t\t\tif " -(409:8-409:23) "(deprecatedAPIs" --> (203:8-203:23) "(deprecatedAPIs" -(409:23-409:38) ".hasOwnProperty" --> (203:23-203:38) ".hasOwnProperty" -(409:38-409:47) "(fnName))" --> (203:38-203:47) "(fnName))" -(409:47-410:6) " {" --> (203:47-204:0) " {" -(410:6-410:31) " defineDeprecationWarning" --> (204:0-204:30) "\n\t\t\t\t\tdefineDeprecationWarning" -(410:31-410:39) "(fnName," --> (204:30-204:38) "(fnName," -(410:39-410:54) " deprecatedAPIs" --> (204:38-204:53) " deprecatedAPIs" -(410:54-411:5) "[fnName]);" --> (204:53-205:4) "[fnName]);" -(411:5-412:3) "}" --> (205:4-206:3) "\t}" -(412:3-413:1) "}" --> (206:3-207:2) "\t}" -(413:1-415:0) "}\n" --> (207:2-208:2) "\t}" -(415:0-415:9) "\nfunction" --> (208:2-208:11) "\tfunction" -(415:9-415:26) " ComponentDummy()" --> (208:11-208:28) " ComponentDummy()" -(415:26-415:28) " {" --> (208:28-209:2) " {" -(415:28-417:0) "}\n" --> (209:2-210:0) "\t}" -(417:0-417:15) "\nComponentDummy" --> (210:0-210:17) "\n\t\tComponentDummy" -(417:15-417:27) ".prototype =" --> (210:17-210:29) ".prototype =" -(417:27-417:37) " Component" --> (210:29-210:39) " Component" -(417:37-422:0) ".prototype;\n/**\n * Convenience component with default shallow equality check for sCU.\n */\n" --> (210:39-211:2) ".prototype;" -(422:0-422:9) "\nfunction" --> (211:2-211:11) "\tfunction" -(422:9-422:23) " PureComponent" --> (211:11-211:25) " PureComponent" -(422:23-422:30) "(props," --> (211:25-211:32) "(props," -(422:30-422:39) " context," --> (211:32-211:41) " context," -(422:39-422:48) " updater)" --> (211:41-211:50) " updater)" -(422:48-423:2) " {" --> (211:50-212:0) " {" -(423:2-423:7) " this" --> (212:0-212:8) "\n\t\t\tthis" -(423:7-423:15) ".props =" --> (212:8-212:16) ".props =" -(423:15-424:2) " props;" --> (212:16-213:0) " props;" -(424:2-424:7) " this" --> (213:0-213:8) "\n\t\t\tthis" -(424:7-424:17) ".context =" --> (213:8-213:18) ".context =" -(424:17-426:2) " context; // If a component has string refs, we will assign a different object later.\n" --> (213:18-214:0) " context;" -(426:2-426:7) " this" --> (214:0-214:8) "\n\t\t\tthis" -(426:7-426:14) ".refs =" --> (214:8-214:15) ".refs =" -(426:14-427:2) " emptyObject;" --> (214:15-215:0) " emptyObject;" -(427:2-427:7) " this" --> (215:0-215:8) "\n\t\t\tthis" -(427:7-427:17) ".updater =" --> (215:8-215:18) ".updater =" -(427:17-427:28) " updater ||" --> (215:18-215:29) " updater ||" -(427:28-428:1) " ReactNoopUpdateQueue;" --> (215:29-216:2) " ReactNoopUpdateQueue;" -(428:1-430:0) "}\n" --> (216:2-217:2) "\t}" -(430:0-430:4) "\nvar" --> (217:2-217:6) "\tvar" -(430:4-430:29) " pureComponentPrototype =" --> (217:6-217:31) " pureComponentPrototype =" -(430:29-430:43) " PureComponent" --> (217:31-217:45) " PureComponent" -(430:43-430:55) ".prototype =" --> (217:45-217:57) ".prototype =" -(430:55-430:59) " new" --> (217:57-217:61) " new" -(430:59-431:0) " ComponentDummy();" --> (217:61-218:0) " ComponentDummy();" -(431:0-431:23) "\npureComponentPrototype" --> (218:0-218:26) "\n\t\t(pureComponentPrototype" -(431:23-431:37) ".constructor =" --> (218:26-218:40) ".constructor =" -(431:37-433:0) " PureComponent; // Avoid an extra prototype jump for these methods.\n" --> (218:40-219:0) " PureComponent);" -(433:0-433:8) "\n_assign" --> (219:0-219:10) "\n\t\t_assign" -(433:8-433:32) "(pureComponentPrototype," --> (219:10-219:34) "(pureComponentPrototype," -(433:32-433:42) " Component" --> (219:34-219:44) " Component" -(433:42-435:0) ".prototype);\n" --> (219:44-220:0) ".prototype);" -(435:0-435:23) "\npureComponentPrototype" --> (220:0-220:25) "\n\t\tpureComponentPrototype" -(435:23-435:46) ".isPureReactComponent =" --> (220:25-220:48) ".isPureReactComponent =" -(435:46-438:0) " true;\n\n// an immutable object with a single mutable value" --> (220:48-221:2) " true;" -(438:0-438:9) "\nfunction" --> (221:2-221:11) "\tfunction" -(438:9-438:21) " createRef()" --> (221:11-221:23) " createRef()" -(438:21-439:2) " {" --> (221:23-222:3) " {" -(439:2-439:6) " var" --> (222:3-222:7) "\tvar" -(439:6-439:18) " refObject =" --> (222:7-222:19) " refObject =" -(439:18-440:4) " {" --> (222:19-223:4) " {" -(440:4-440:13) " current:" --> (223:4-223:12) "\tcurrent" -(440:13-441:3) " null" --> (223:12-224:4) ":null" -(441:3-443:2) "};\n" --> (224:4-225:3) "};" -(443:2-444:4) " {" --> (225:3-226:0) "\t{" -(444:4-444:11) " Object" --> (226:0-226:11) "\n\t\t\t\tObject" -(444:11-444:16) ".seal" --> (226:11-226:16) ".seal" -(444:16-445:3) "(refObject);" --> (226:16-227:3) "(refObject);" -(445:3-447:2) "}\n" --> (227:3-228:0) "\t}" -(447:2-447:9) " return" --> (228:0-228:10) "\n\t\t\treturn" -(447:9-448:1) " refObject;" --> (228:10-229:2) " refObject;" -(448:1-450:0) "}\n" --> (229:2-230:2) "\t}" -(450:0-450:9) "\nfunction" --> (230:2-230:11) "\tfunction" -(450:9-450:24) " getWrappedName" --> (230:11-230:26) " getWrappedName" -(450:24-450:35) "(outerType," --> (230:26-230:37) "(outerType," -(450:35-450:46) " innerType," --> (230:37-230:48) " innerType," -(450:46-450:59) " wrapperName)" --> (230:48-230:61) " wrapperName)" -(450:59-451:2) " {" --> (230:61-231:3) " {" -(451:2-451:6) " var" --> (231:3-231:7) "\tvar" -(451:6-451:21) " functionName =" --> (231:7-231:22) " functionName =" -(451:21-451:31) " innerType" --> (231:22-231:32) " innerType" -(451:31-451:46) ".displayName ||" --> (231:32-231:47) ".displayName ||" -(451:46-451:56) " innerType" --> (231:47-231:57) " innerType" -(451:56-451:64) ".name ||" --> (231:57-231:65) ".name ||" -(451:64-452:2) " '';" --> (231:65-232:0) " '';" -(452:2-452:9) " return" --> (232:0-232:10) "\n\t\t\treturn" -(452:9-452:19) " outerType" --> (232:10-232:20) " outerType" -(452:19-452:35) ".displayName || " --> (232:20-232:36) ".displayName || " -(452:35-452:52) "(functionName !==" --> (232:36-232:53) "(functionName !==" -(452:52-452:57) " '' ?" --> (232:53-232:58) " '' ?" -(452:57-452:71) " wrapperName +" --> (232:58-232:72) " wrapperName +" -(452:71-452:77) " \"(\" +" --> (232:72-232:78) " '(' +" -(452:77-452:92) " functionName +" --> (232:78-232:93) " functionName +" -(452:92-452:98) " \")\" :" --> (232:93-232:99) " ')' :" -(452:98-453:1) " wrapperName);" --> (232:99-233:2) " wrapperName);" -(453:1-455:0) "}\n" --> (233:2-234:2) "\t}" -(455:0-455:9) "\nfunction" --> (234:2-234:11) "\tfunction" -(455:9-455:24) " getContextName" --> (234:11-234:26) " getContextName" -(455:24-455:30) "(type)" --> (234:26-234:32) "(type)" -(455:30-456:2) " {" --> (234:32-235:0) " {" -(456:2-456:9) " return" --> (235:0-235:10) "\n\t\t\treturn" -(456:9-456:14) " type" --> (235:10-235:15) " type" -(456:14-456:29) ".displayName ||" --> (235:15-235:30) ".displayName ||" -(456:29-457:1) " 'Context';" --> (235:30-236:2) " 'Context';" -(457:1-459:0) "}\n" --> (236:2-237:2) "\t}" -(459:0-459:9) "\nfunction" --> (237:2-237:11) "\tfunction" -(459:9-459:26) " getComponentName" --> (237:11-237:28) " getComponentName" -(459:26-459:32) "(type)" --> (237:28-237:34) "(type)" -(459:32-460:2) " {" --> (237:34-238:0) " {" -(460:2-460:6) " if " --> (238:0-238:7) "\n\t\t\tif " -(460:6-460:14) "(type ==" --> (238:7-238:15) "(type ==" -(460:14-460:20) " null)" --> (238:15-238:21) " null)" -(460:20-462:4) " {\n // Host root, text node or just invalid type." --> (238:21-239:0) " {" -(462:4-462:11) " return" --> (239:0-239:11) "\n\t\t\t\treturn" -(462:11-463:3) " null;" --> (239:11-240:3) " null;" -(463:3-465:2) "}\n" --> (240:3-241:3) "\t}" -(465:2-466:4) " {" --> (241:3-242:0) "\t{" -(466:4-466:15) " if (typeof" --> (242:0-242:15) "\n\t\t\t\tif (typeof" -(466:15-466:20) " type" --> (242:15-242:20) " type" -(466:20-466:28) ".tag ===" --> (242:20-242:28) ".tag ===" -(466:28-466:38) " 'number')" --> (242:28-242:38) " 'number')" -(466:38-467:6) " {" --> (242:38-243:0) " {" -(467:6-467:12) " error" --> (243:0-243:11) "\n\t\t\t\t\terror" -(467:12-467:70) "('Received an unexpected object in getComponentName(). ' +" --> (243:11-243:69) "('Received an unexpected object in getComponentName(). ' +" -(467:70-468:5) " 'This is likely a bug in React. Please file an issue.');" --> (243:69-244:4) " 'This is likely a bug in React. Please file an issue.');" -(468:5-469:3) "}" --> (244:4-245:3) "\t}" -(469:3-471:2) "}\n" --> (245:3-246:0) "\t}" -(471:2-471:13) " if (typeof" --> (246:0-246:14) "\n\t\t\tif (typeof" -(471:13-471:22) " type ===" --> (246:14-246:23) " type ===" -(471:22-471:34) " 'function')" --> (246:23-246:35) " 'function')" -(471:34-472:4) " {" --> (246:35-247:0) " {" -(472:4-472:11) " return" --> (247:0-247:11) "\n\t\t\t\treturn" -(472:11-472:16) " type" --> (247:11-247:16) " type" -(472:16-472:31) ".displayName ||" --> (247:16-247:31) ".displayName ||" -(472:31-472:36) " type" --> (247:31-247:36) " type" -(472:36-472:44) ".name ||" --> (247:36-247:44) ".name ||" -(472:44-473:3) " null;" --> (247:44-248:3) " null;" -(473:3-475:2) "}\n" --> (248:3-249:0) "\t}" -(475:2-475:13) " if (typeof" --> (249:0-249:14) "\n\t\t\tif (typeof" -(475:13-475:22) " type ===" --> (249:14-249:23) " type ===" -(475:22-475:32) " 'string')" --> (249:23-249:33) " 'string')" -(475:32-476:4) " {" --> (249:33-250:0) " {" -(476:4-476:11) " return" --> (250:0-250:11) "\n\t\t\t\treturn" -(476:11-477:3) " type;" --> (250:11-251:3) " type;" -(477:3-479:2) "}\n" --> (251:3-252:0) "\t}" -(479:2-479:10) " switch " --> (252:0-252:10) "\n\t\t\tswitch" -(479:10-480:4) "(type) {" --> (252:10-253:0) "(type){" -(480:4-480:9) " case" --> (253:0-253:9) "\n\t\t\t\tcase" -(480:9-480:17) " exports" --> (253:9-253:17) " exports" -(480:17-481:6) ".Fragment:" --> (253:17-254:0) ".Fragment:" -(481:6-481:13) " return" --> (254:0-254:12) "\n\t\t\t\t\treturn" -(481:13-483:4) " 'Fragment';\n" --> (254:12-255:0) " 'Fragment';" -(483:4-483:9) " case" --> (255:0-255:9) "\n\t\t\t\tcase" -(483:9-484:6) " REACT_PORTAL_TYPE:" --> (255:9-256:0) " REACT_PORTAL_TYPE:" -(484:6-484:13) " return" --> (256:0-256:12) "\n\t\t\t\t\treturn" -(484:13-486:4) " 'Portal';\n" --> (256:12-257:0) " 'Portal';" -(486:4-486:9) " case" --> (257:0-257:9) "\n\t\t\t\tcase" -(486:9-486:17) " exports" --> (257:9-257:17) " exports" -(486:17-487:6) ".Profiler:" --> (257:17-258:0) ".Profiler:" -(487:6-487:13) " return" --> (258:0-258:12) "\n\t\t\t\t\treturn" -(487:13-489:4) " 'Profiler';\n" --> (258:12-259:0) " 'Profiler';" -(489:4-489:9) " case" --> (259:0-259:9) "\n\t\t\t\tcase" -(489:9-489:17) " exports" --> (259:9-259:17) " exports" -(489:17-490:6) ".StrictMode:" --> (259:17-260:0) ".StrictMode:" -(490:6-490:13) " return" --> (260:0-260:12) "\n\t\t\t\t\treturn" -(490:13-492:4) " 'StrictMode';\n" --> (260:12-261:0) " 'StrictMode';" -(492:4-492:9) " case" --> (261:0-261:9) "\n\t\t\t\tcase" -(492:9-492:17) " exports" --> (261:9-261:17) " exports" -(492:17-493:6) ".Suspense:" --> (261:17-262:0) ".Suspense:" -(493:6-493:13) " return" --> (262:0-262:12) "\n\t\t\t\t\treturn" -(493:13-495:4) " 'Suspense';\n" --> (262:12-263:0) " 'Suspense';" -(495:4-495:9) " case" --> (263:0-263:9) "\n\t\t\t\tcase" -(495:9-496:6) " REACT_SUSPENSE_LIST_TYPE:" --> (263:9-264:0) " REACT_SUSPENSE_LIST_TYPE:" -(496:6-496:13) " return" --> (264:0-264:12) "\n\t\t\t\t\treturn" -(496:13-497:3) " 'SuspenseList';" --> (264:12-265:3) " 'SuspenseList';" -(497:3-499:2) "}\n" --> (265:3-266:0) "\t}" -(499:2-499:13) " if (typeof" --> (266:0-266:14) "\n\t\t\tif (typeof" -(499:13-499:22) " type ===" --> (266:14-266:23) " type ===" -(499:22-499:32) " 'object')" --> (266:23-266:33) " 'object')" -(499:32-500:4) " {" --> (266:33-267:0) " {" -(500:4-500:12) " switch " --> (267:0-267:11) "\n\t\t\t\tswitch" -(500:12-500:17) "(type" --> (267:11-267:16) "(type" -(500:17-501:6) ".$$typeof) {" --> (267:16-268:0) ".$$typeof){" -(501:6-501:11) " case" --> (268:0-268:10) "\n\t\t\t\t\tcase" -(501:11-502:8) " REACT_CONTEXT_TYPE:" --> (268:10-269:6) " REACT_CONTEXT_TYPE:" -(502:8-502:12) " var" --> (269:6-269:10) "\tvar" -(502:12-502:22) " context =" --> (269:10-269:20) " context =" -(502:22-503:8) " type;" --> (269:20-270:0) " type;" -(503:8-503:15) " return" --> (270:0-270:13) "\n\t\t\t\t\t\treturn" -(503:15-503:30) " getContextName" --> (270:13-270:28) " getContextName" -(503:30-503:41) "(context) +" --> (270:28-270:39) "(context) +" -(503:41-505:6) " '.Consumer';\n" --> (270:39-271:0) " '.Consumer';" -(505:6-505:11) " case" --> (271:0-271:10) "\n\t\t\t\t\tcase" -(505:11-506:8) " REACT_PROVIDER_TYPE:" --> (271:10-272:6) " REACT_PROVIDER_TYPE:" -(506:8-506:12) " var" --> (272:6-272:10) "\tvar" -(506:12-506:23) " provider =" --> (272:10-272:21) " provider =" -(506:23-507:8) " type;" --> (272:21-273:0) " type;" -(507:8-507:15) " return" --> (273:0-273:13) "\n\t\t\t\t\t\treturn" -(507:15-507:30) " getContextName" --> (273:13-273:28) " getContextName" -(507:30-507:39) "(provider" --> (273:28-273:37) "(provider" -(507:39-507:51) "._context) +" --> (273:37-273:49) "._context) +" -(507:51-509:6) " '.Provider';\n" --> (273:49-274:0) " '.Provider';" -(509:6-509:11) " case" --> (274:0-274:10) "\n\t\t\t\t\tcase" -(509:11-510:8) " REACT_FORWARD_REF_TYPE:" --> (274:10-275:0) " REACT_FORWARD_REF_TYPE:" -(510:8-510:15) " return" --> (275:0-275:13) "\n\t\t\t\t\t\treturn" -(510:15-510:30) " getWrappedName" --> (275:13-275:28) " getWrappedName" -(510:30-510:36) "(type," --> (275:28-275:34) "(type," -(510:36-510:41) " type" --> (275:34-275:39) " type" -(510:41-510:49) ".render," --> (275:39-275:47) ".render," -(510:49-512:6) " 'ForwardRef');\n" --> (275:47-276:0) " 'ForwardRef');" -(512:6-512:11) " case" --> (276:0-276:10) "\n\t\t\t\t\tcase" -(512:11-513:8) " REACT_MEMO_TYPE:" --> (276:10-277:0) " REACT_MEMO_TYPE:" -(513:8-513:15) " return" --> (277:0-277:13) "\n\t\t\t\t\t\treturn" -(513:15-513:32) " getComponentName" --> (277:13-277:30) " getComponentName" -(513:32-513:37) "(type" --> (277:30-277:35) "(type" -(513:37-515:6) ".type);\n" --> (277:35-278:0) ".type);" -(515:6-515:11) " case" --> (278:0-278:10) "\n\t\t\t\t\tcase" -(515:11-516:8) " REACT_BLOCK_TYPE:" --> (278:10-279:0) " REACT_BLOCK_TYPE:" -(516:8-516:15) " return" --> (279:0-279:13) "\n\t\t\t\t\t\treturn" -(516:15-516:32) " getComponentName" --> (279:13-279:30) " getComponentName" -(516:32-516:37) "(type" --> (279:30-279:35) "(type" -(516:37-518:6) "._render);\n" --> (279:35-280:0) "._render);" -(518:6-518:11) " case" --> (280:0-280:10) "\n\t\t\t\t\tcase" -(518:11-519:8) " REACT_LAZY_TYPE:" --> (280:10-281:6) " REACT_LAZY_TYPE:" -(519:8-520:10) " {" --> (281:6-282:7) "\t{" -(520:10-520:14) " var" --> (282:7-282:11) "\tvar" -(520:14-520:30) " lazyComponent =" --> (282:11-282:27) " lazyComponent =" -(520:30-521:10) " type;" --> (282:27-283:7) " type;" -(521:10-521:14) " var" --> (283:7-283:11) "\tvar" -(521:14-521:24) " payload =" --> (283:11-283:21) " payload =" -(521:24-521:38) " lazyComponent" --> (283:21-283:35) " lazyComponent" -(521:38-522:10) "._payload;" --> (283:35-284:7) "._payload;" -(522:10-522:14) " var" --> (284:7-284:11) "\tvar" -(522:14-522:21) " init =" --> (284:11-284:18) " init =" -(522:21-522:35) " lazyComponent" --> (284:18-284:32) " lazyComponent" -(522:35-524:10) "._init;\n" --> (284:32-285:0) "._init;" -(524:10-524:14) " try" --> (285:0-285:10) "\n\t\t\t\t\t\t\ttr" -(524:14-525:12) " {" --> (285:10-286:0) "y{" -(525:12-525:19) " return" --> (286:0-286:15) "\n\t\t\t\t\t\t\t\treturn" -(525:19-525:36) " getComponentName" --> (286:15-286:32) " getComponentName" -(525:36-525:41) "(init" --> (286:32-286:37) "(init" -(525:41-526:11) "(payload));" --> (286:37-287:7) "(payload));" -(526:11-526:19) "} catch " --> (287:7-287:14) "\t}catch" -(526:19-526:22) "(x)" --> (287:14-287:16) "(x" -(526:22-527:12) " {" --> (287:16-288:0) "){" -(527:12-527:19) " return" --> (288:0-288:15) "\n\t\t\t\t\t\t\t\treturn" -(527:19-528:11) " null;" --> (288:15-289:7) " null;" -(528:11-529:9) "}" --> (289:7-289:14) "\t}\t\t\t\t\t" -(529:9-530:5) "}" --> (289:14-290:4) "\t}" -(530:5-531:3) "}" --> (290:4-291:3) "\t}" -(531:3-533:2) "}\n" --> (291:3-292:0) "\t}" -(533:2-533:9) " return" --> (292:0-292:10) "\n\t\t\treturn" -(533:9-534:1) " null;" --> (292:10-293:2) " null;" -(534:1-536:0) "}\n" --> (293:2-294:2) "\t}" -(536:0-536:4) "\nvar" --> (294:2-294:6) "\tvar" -(536:4-536:21) " hasOwnProperty =" --> (294:6-294:23) " hasOwnProperty =" -(536:21-536:28) " Object" --> (294:23-294:30) " Object" -(536:28-536:38) ".prototype" --> (294:30-294:40) ".prototype" -(536:38-537:0) ".hasOwnProperty;" --> (294:40-295:2) ".hasOwnProperty;" -(537:0-537:4) "\nvar" --> (295:2-295:6) "\tvar" -(537:4-537:21) " RESERVED_PROPS =" --> (295:6-295:23) " RESERVED_PROPS =" -(537:21-538:2) " {" --> (295:23-296:3) " {" -(538:2-538:7) " key:" --> (296:3-296:7) "\tkey" -(538:7-539:2) " true," --> (296:7-297:3) ":true," -(539:2-539:7) " ref:" --> (297:3-297:7) "\tref" -(539:7-540:2) " true," --> (297:7-298:3) ":true," -(540:2-540:10) " __self:" --> (298:3-298:10) "\t__self" -(540:10-541:2) " true," --> (298:10-299:3) ":true," -(541:2-541:12) " __source:" --> (299:3-299:12) "\t__source" -(541:12-542:1) " true" --> (299:12-300:3) ":true" -(542:1-543:0) "};" --> (300:3-301:2) "};" -(543:0-543:4) "\nvar" --> (301:2-301:6) "\tvar" -(543:4-543:32) " specialPropKeyWarningShown," --> (301:6-301:34) " specialPropKeyWarningShown," -(543:32-543:60) " specialPropRefWarningShown," --> (301:34-301:62) " specialPropRefWarningShown," -(543:60-545:0) " didWarnAboutStringRefs;\n" --> (301:62-302:2) " didWarnAboutStringRefs;" -(545:0-546:2) "\n{" --> (302:2-303:0) "\t{" -(546:2-546:27) " didWarnAboutStringRefs =" --> (303:0-303:28) "\n\t\t\tdidWarnAboutStringRefs =" -(546:27-546:29) " {" --> (303:28-303:30) " {" -(546:29-547:1) "};" --> (303:30-304:2) "};" -(547:1-549:0) "}\n" --> (304:2-305:2) "\t}" -(549:0-549:9) "\nfunction" --> (305:2-305:11) "\tfunction" -(549:9-549:21) " hasValidRef" --> (305:11-305:23) " hasValidRef" -(549:21-549:29) "(config)" --> (305:23-305:31) "(config)" -(549:29-550:2) " {" --> (305:31-306:3) " {" -(550:2-551:4) " {" --> (306:3-307:0) "\t{" -(551:4-551:8) " if " --> (307:0-307:8) "\n\t\t\t\tif " -(551:8-551:23) "(hasOwnProperty" --> (307:8-307:23) "(hasOwnProperty" -(551:23-551:28) ".call" --> (307:23-307:28) ".call" -(551:28-551:36) "(config," --> (307:28-307:36) "(config," -(551:36-551:44) " 'ref'))" --> (307:36-307:44) " 'ref'))" -(551:44-552:6) " {" --> (307:44-308:5) " {" -(552:6-552:10) " var" --> (308:5-308:9) "\tvar" -(552:10-552:19) " getter =" --> (308:9-308:18) " getter =" -(552:19-552:26) " Object" --> (308:18-308:25) " Object" -(552:26-552:51) ".getOwnPropertyDescriptor" --> (308:25-308:50) ".getOwnPropertyDescriptor" -(552:51-552:59) "(config," --> (308:50-308:58) "(config," -(552:59-552:66) " 'ref')" --> (308:58-308:65) " 'ref')" -(552:66-554:6) ".get;\n" --> (308:65-309:0) ".get;" -(554:6-554:10) " if " --> (309:0-309:9) "\n\t\t\t\t\tif " -(554:10-554:20) "(getter &&" --> (309:9-309:19) "(getter &&" -(554:20-554:27) " getter" --> (309:19-309:26) " getter" -(554:27-554:43) ".isReactWarning)" --> (309:26-309:42) ".isReactWarning)" -(554:43-555:8) " {" --> (309:42-310:0) " {" -(555:8-555:15) " return" --> (310:0-310:13) "\n\t\t\t\t\t\treturn" -(555:15-556:7) " false;" --> (310:13-311:5) " false;" -(556:7-557:5) "}" --> (311:5-312:4) "\t}" -(557:5-558:3) "}" --> (312:4-313:3) "\t}" -(558:3-560:2) "}\n" --> (313:3-314:0) "\t}" -(560:2-560:9) " return" --> (314:0-314:10) "\n\t\t\treturn" -(560:9-560:16) " config" --> (314:10-314:17) " config" -(560:16-560:24) ".ref !==" --> (314:17-314:25) ".ref !==" -(560:24-561:1) " undefined;" --> (314:25-315:2) " undefined;" -(561:1-563:0) "}\n" --> (315:2-316:2) "\t}" -(563:0-563:9) "\nfunction" --> (316:2-316:11) "\tfunction" -(563:9-563:21) " hasValidKey" --> (316:11-316:23) " hasValidKey" -(563:21-563:29) "(config)" --> (316:23-316:31) "(config)" -(563:29-564:2) " {" --> (316:31-317:3) " {" -(564:2-565:4) " {" --> (317:3-318:0) "\t{" -(565:4-565:8) " if " --> (318:0-318:8) "\n\t\t\t\tif " -(565:8-565:23) "(hasOwnProperty" --> (318:8-318:23) "(hasOwnProperty" -(565:23-565:28) ".call" --> (318:23-318:28) ".call" -(565:28-565:36) "(config," --> (318:28-318:36) "(config," -(565:36-565:44) " 'key'))" --> (318:36-318:44) " 'key'))" -(565:44-566:6) " {" --> (318:44-319:5) " {" -(566:6-566:10) " var" --> (319:5-319:9) "\tvar" -(566:10-566:19) " getter =" --> (319:9-319:18) " getter =" -(566:19-566:26) " Object" --> (319:18-319:25) " Object" -(566:26-566:51) ".getOwnPropertyDescriptor" --> (319:25-319:50) ".getOwnPropertyDescriptor" -(566:51-566:59) "(config," --> (319:50-319:58) "(config," -(566:59-566:66) " 'key')" --> (319:58-319:65) " 'key')" -(566:66-568:6) ".get;\n" --> (319:65-320:0) ".get;" -(568:6-568:10) " if " --> (320:0-320:9) "\n\t\t\t\t\tif " -(568:10-568:20) "(getter &&" --> (320:9-320:19) "(getter &&" -(568:20-568:27) " getter" --> (320:19-320:26) " getter" -(568:27-568:43) ".isReactWarning)" --> (320:26-320:42) ".isReactWarning)" -(568:43-569:8) " {" --> (320:42-321:0) " {" -(569:8-569:15) " return" --> (321:0-321:13) "\n\t\t\t\t\t\treturn" -(569:15-570:7) " false;" --> (321:13-322:5) " false;" -(570:7-571:5) "}" --> (322:5-323:4) "\t}" -(571:5-572:3) "}" --> (323:4-324:3) "\t}" -(572:3-574:2) "}\n" --> (324:3-325:0) "\t}" -(574:2-574:9) " return" --> (325:0-325:10) "\n\t\t\treturn" -(574:9-574:16) " config" --> (325:10-325:17) " config" -(574:16-574:24) ".key !==" --> (325:17-325:25) ".key !==" -(574:24-575:1) " undefined;" --> (325:25-326:2) " undefined;" -(575:1-577:0) "}\n" --> (326:2-327:2) "\t}" -(577:0-577:9) "\nfunction" --> (327:2-327:11) "\tfunction" -(577:9-577:36) " defineKeyPropWarningGetter" --> (327:11-327:38) " defineKeyPropWarningGetter" -(577:36-577:43) "(props," --> (327:38-327:45) "(props," -(577:43-577:56) " displayName)" --> (327:45-327:58) " displayName)" -(577:56-578:2) " {" --> (327:58-328:3) " {" -(578:2-578:6) " var" --> (328:3-328:7) "\tvar" -(578:6-578:30) " warnAboutAccessingKey =" --> (328:7-328:31) " warnAboutAccessingKey =" -(578:30-578:42) " function ()" --> (328:31-328:42) " function()" -(578:42-579:4) " {" --> (328:42-329:4) " {" -(579:4-580:6) " {" --> (329:4-330:0) "\t{" -(580:6-580:11) " if (" --> (330:0-330:11) "\n\t\t\t\t\tif ( " -(580:11-580:39) "!specialPropKeyWarningShown)" --> (330:11-330:39) "!specialPropKeyWarningShown)" -(580:39-581:8) " {" --> (330:39-331:0) " {" -(581:8-581:37) " specialPropKeyWarningShown =" --> (331:0-331:35) "\n\t\t\t\t\t\tspecialPropKeyWarningShown =" -(581:37-583:8) " true;\n" --> (331:35-332:0) " true;" -(583:8-583:14) " error" --> (332:0-332:12) "\n\t\t\t\t\t\terror" -(583:14-583:76) "('%s: `key` is not a prop. Trying to access it will result ' +" --> (332:12-332:74) "('%s: `key` is not a prop. Trying to access it will result ' +" -(583:76-583:143) " 'in `undefined` being returned. If you need to access the same ' +" --> (332:74-332:141) " 'in `undefined` being returned. If you need to access the same ' +" -(583:143-583:216) " 'value within the child component, you should pass it as a different ' +" --> (332:141-332:214) " 'value within the child component, you should pass it as a different ' +" -(583:216-583:266) " 'prop. (https://reactjs.org/link/special-props)'," --> (332:214-332:264) " 'prop. (https://reactjs.org/link/special-props)'," -(583:266-584:7) " displayName);" --> (332:264-333:5) " displayName);" -(584:7-585:5) "}" --> (333:5-334:4) "\t}" -(585:5-586:3) "}" --> (334:4-335:3) "\t}" -(586:3-588:2) "};\n" --> (335:3-336:0) "\t};" -(588:2-588:24) " warnAboutAccessingKey" --> (336:0-336:25) "\n\t\t\twarnAboutAccessingKey" -(588:24-588:41) ".isReactWarning =" --> (336:25-336:42) ".isReactWarning =" -(588:41-589:2) " true;" --> (336:42-337:0) " true;" -(589:2-589:9) " Object" --> (337:0-337:10) "\n\t\t\tObject" -(589:9-589:24) ".defineProperty" --> (337:10-337:25) ".defineProperty" -(589:24-589:31) "(props," --> (337:25-337:32) "(props," -(589:31-589:38) " 'key'," --> (337:32-337:39) " 'key'," -(589:38-590:4) " {" --> (337:39-338:4) " {" -(590:4-590:9) " get:" --> (338:4-338:8) "\tget" -(590:9-591:4) " warnAboutAccessingKey," --> (338:8-339:4) ":warnAboutAccessingKey," -(591:4-591:18) " configurable:" --> (339:4-339:17) "\tconfigurable" -(591:18-592:3) " true" --> (339:17-340:4) ":true" -(592:3-593:1) "});" --> (340:4-341:2) "});" -(593:1-595:0) "}\n" --> (341:2-342:2) "\t}" -(595:0-595:9) "\nfunction" --> (342:2-342:11) "\tfunction" -(595:9-595:36) " defineRefPropWarningGetter" --> (342:11-342:38) " defineRefPropWarningGetter" -(595:36-595:43) "(props," --> (342:38-342:45) "(props," -(595:43-595:56) " displayName)" --> (342:45-342:58) " displayName)" -(595:56-596:2) " {" --> (342:58-343:3) " {" -(596:2-596:6) " var" --> (343:3-343:7) "\tvar" -(596:6-596:30) " warnAboutAccessingRef =" --> (343:7-343:31) " warnAboutAccessingRef =" -(596:30-596:42) " function ()" --> (343:31-343:42) " function()" -(596:42-597:4) " {" --> (343:42-344:4) " {" -(597:4-598:6) " {" --> (344:4-345:0) "\t{" -(598:6-598:11) " if (" --> (345:0-345:11) "\n\t\t\t\t\tif ( " -(598:11-598:39) "!specialPropRefWarningShown)" --> (345:11-345:39) "!specialPropRefWarningShown)" -(598:39-599:8) " {" --> (345:39-346:0) " {" -(599:8-599:37) " specialPropRefWarningShown =" --> (346:0-346:35) "\n\t\t\t\t\t\tspecialPropRefWarningShown =" -(599:37-601:8) " true;\n" --> (346:35-347:0) " true;" -(601:8-601:14) " error" --> (347:0-347:12) "\n\t\t\t\t\t\terror" -(601:14-601:76) "('%s: `ref` is not a prop. Trying to access it will result ' +" --> (347:12-347:74) "('%s: `ref` is not a prop. Trying to access it will result ' +" -(601:76-601:143) " 'in `undefined` being returned. If you need to access the same ' +" --> (347:74-347:141) " 'in `undefined` being returned. If you need to access the same ' +" -(601:143-601:216) " 'value within the child component, you should pass it as a different ' +" --> (347:141-347:214) " 'value within the child component, you should pass it as a different ' +" -(601:216-601:266) " 'prop. (https://reactjs.org/link/special-props)'," --> (347:214-347:264) " 'prop. (https://reactjs.org/link/special-props)'," -(601:266-602:7) " displayName);" --> (347:264-348:5) " displayName);" -(602:7-603:5) "}" --> (348:5-349:4) "\t}" -(603:5-604:3) "}" --> (349:4-350:3) "\t}" -(604:3-606:2) "};\n" --> (350:3-351:0) "\t};" -(606:2-606:24) " warnAboutAccessingRef" --> (351:0-351:25) "\n\t\t\twarnAboutAccessingRef" -(606:24-606:41) ".isReactWarning =" --> (351:25-351:42) ".isReactWarning =" -(606:41-607:2) " true;" --> (351:42-352:0) " true;" -(607:2-607:9) " Object" --> (352:0-352:10) "\n\t\t\tObject" -(607:9-607:24) ".defineProperty" --> (352:10-352:25) ".defineProperty" -(607:24-607:31) "(props," --> (352:25-352:32) "(props," -(607:31-607:38) " 'ref'," --> (352:32-352:39) " 'ref'," -(607:38-608:4) " {" --> (352:39-353:4) " {" -(608:4-608:9) " get:" --> (353:4-353:8) "\tget" -(608:9-609:4) " warnAboutAccessingRef," --> (353:8-354:4) ":warnAboutAccessingRef," -(609:4-609:18) " configurable:" --> (354:4-354:17) "\tconfigurable" -(609:18-610:3) " true" --> (354:17-355:4) ":true" -(610:3-611:1) "});" --> (355:4-356:2) "});" -(611:1-613:0) "}\n" --> (356:2-357:2) "\t}" -(613:0-613:9) "\nfunction" --> (357:2-357:11) "\tfunction" -(613:9-613:46) " warnIfStringRefCannotBeAutoConverted" --> (357:11-357:48) " warnIfStringRefCannotBeAutoConverted" -(613:46-613:54) "(config)" --> (357:48-357:56) "(config)" -(613:54-614:2) " {" --> (357:56-358:3) " {" -(614:2-615:4) " {" --> (358:3-359:0) "\t{" -(615:4-615:15) " if (typeof" --> (359:0-359:15) "\n\t\t\t\tif (typeof" -(615:15-615:22) " config" --> (359:15-359:22) " config" -(615:22-615:30) ".ref ===" --> (359:22-359:30) ".ref ===" -(615:30-615:42) " 'string' &&" --> (359:30-359:42) " 'string' &&" -(615:42-615:60) " ReactCurrentOwner" --> (359:42-359:60) " ReactCurrentOwner" -(615:60-615:71) ".current &&" --> (359:60-359:71) ".current &&" -(615:71-615:78) " config" --> (359:71-359:78) " config" -(615:78-615:88) ".__self &&" --> (359:78-359:88) ".__self &&" -(615:88-615:106) " ReactCurrentOwner" --> (359:88-359:106) " ReactCurrentOwner" -(615:106-615:114) ".current" --> (359:106-359:114) ".current" -(615:114-615:128) ".stateNode !==" --> (359:114-359:128) ".stateNode !==" -(615:128-615:135) " config" --> (359:128-359:135) " config" -(615:135-615:143) ".__self)" --> (359:135-359:143) ".__self)" -(615:143-616:6) " {" --> (359:143-360:5) " {" -(616:6-616:10) " var" --> (360:5-360:9) "\tvar" -(616:10-616:26) " componentName =" --> (360:9-360:25) " componentName =" -(616:26-616:43) " getComponentName" --> (360:25-360:42) " getComponentName" -(616:43-616:61) "(ReactCurrentOwner" --> (360:42-360:60) "(ReactCurrentOwner" -(616:61-616:69) ".current" --> (360:60-360:68) ".current" -(616:69-618:6) ".type);\n" --> (360:68-361:0) ".type);" -(618:6-618:11) " if (" --> (361:0-361:11) "\n\t\t\t\t\tif ( " -(618:11-618:34) "!didWarnAboutStringRefs" --> (361:11-361:34) "!didWarnAboutStringRefs" -(618:34-618:50) "[componentName])" --> (361:34-361:50) "[componentName])" -(618:50-619:8) " {" --> (361:50-362:0) " {" -(619:8-619:14) " error" --> (362:0-362:12) "\n\t\t\t\t\t\terror" -(619:14-619:64) "('Component \"%s\" contains the string ref \"%s\". ' +" --> (362:12-362:62) "('Component \"%s\" contains the string ref \"%s\". ' +" -(619:64-619:136) " 'Support for string refs will be removed in a future major release. ' +" --> (362:62-362:134) " 'Support for string refs will be removed in a future major release. ' +" -(619:136-619:207) " 'This case cannot be automatically converted to an arrow function. ' +" --> (362:134-362:205) " 'This case cannot be automatically converted to an arrow function. ' +" -(619:207-619:291) " 'We ask you to manually fix this case by using useRef() or createRef() instead. ' +" --> (362:205-362:289) " 'We ask you to manually fix this case by using useRef() or createRef() instead. ' +" -(619:291-619:337) " 'Learn more about using refs safely here: ' +" --> (362:289-362:335) " 'Learn more about using refs safely here: ' +" -(619:337-619:388) " 'https://reactjs.org/link/strict-mode-string-ref'," --> (362:335-362:386) " 'https://reactjs.org/link/strict-mode-string-ref'," -(619:388-619:403) " componentName," --> (362:386-362:401) " componentName," -(619:403-619:410) " config" --> (362:401-362:408) " config" -(619:410-621:8) ".ref);\n" --> (362:408-363:0) ".ref);" -(621:8-621:31) " didWarnAboutStringRefs" --> (363:0-363:29) "\n\t\t\t\t\t\tdidWarnAboutStringRefs" -(621:31-621:48) "[componentName] =" --> (363:29-363:46) "[componentName] =" -(621:48-622:7) " true;" --> (363:46-364:5) " true;" -(622:7-623:5) "}" --> (364:5-365:4) "\t}" -(623:5-624:3) "}" --> (365:4-366:3) "\t}" -(624:3-625:1) "}" --> (366:3-367:2) "\t}" -(625:1-648:0) "}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n" --> (367:2-368:2) "\t}" -(648:0-648:4) "\nvar" --> (368:2-368:6) "\tvar" -(648:4-648:19) " ReactElement =" --> (368:6-368:21) " ReactElement =" -(648:19-648:29) " function " --> (368:21-368:30) " function" -(648:29-648:35) "(type," --> (368:30-368:36) "(type," -(648:35-648:40) " key," --> (368:36-368:41) " key," -(648:40-648:45) " ref," --> (368:41-368:46) " ref," -(648:45-648:51) " self," --> (368:46-368:52) " self," -(648:51-648:59) " source," --> (368:52-368:60) " source," -(648:59-648:66) " owner," --> (368:60-368:67) " owner," -(648:66-648:73) " props)" --> (368:67-368:74) " props)" -(648:73-649:2) " {" --> (368:74-369:3) " {" -(649:2-649:6) " var" --> (369:3-369:7) "\tvar" -(649:6-649:16) " element =" --> (369:7-369:17) " element =" -(649:16-651:4) " {\n // This tag allows us to uniquely identify this as a React Element" --> (369:17-370:4) " {" -(651:4-651:14) " $$typeof:" --> (370:4-370:13) "\t$$typeof" -(651:14-653:4) " REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element" --> (370:13-371:4) ":REACT_ELEMENT_TYPE," -(653:4-653:10) " type:" --> (371:4-371:9) "\ttype" -(653:10-654:4) " type," --> (371:9-372:4) ":type," -(654:4-654:9) " key:" --> (372:4-372:8) "\tkey" -(654:9-655:4) " key," --> (372:8-373:4) ":key," -(655:4-655:9) " ref:" --> (373:4-373:8) "\tref" -(655:9-656:4) " ref," --> (373:8-374:4) ":ref," -(656:4-656:11) " props:" --> (374:4-374:10) "\tprops" -(656:11-658:4) " props,\n // Record the component responsible for creating this element." --> (374:10-375:4) ":props," -(658:4-658:12) " _owner:" --> (375:4-375:11) "\t_owner" -(658:12-659:3) " owner" --> (375:11-376:4) ":owner" -(659:3-661:2) "};\n" --> (376:4-377:3) "};" -(661:2-666:4) " {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments." --> (377:3-378:0) "\t{" -(666:4-666:12) " element" --> (378:0-378:12) "\n\t\t\t\telement" -(666:12-666:21) "._store =" --> (378:12-378:21) "._store =" -(666:21-666:23) " {" --> (378:21-378:23) " {" -(666:23-671:4) "}; // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n" --> (378:23-379:0) "};" -(671:4-671:11) " Object" --> (379:0-379:11) "\n\t\t\t\tObject" -(671:11-671:26) ".defineProperty" --> (379:11-379:26) ".defineProperty" -(671:26-671:34) "(element" --> (379:26-379:34) "(element" -(671:34-671:42) "._store," --> (379:34-379:42) "._store," -(671:42-671:55) " 'validated'," --> (379:42-379:55) " 'validated'," -(671:55-672:6) " {" --> (379:55-380:5) " {" -(672:6-672:20) " configurable:" --> (380:5-380:18) "\tconfigurable" -(672:20-673:6) " false," --> (380:18-381:5) ":false," -(673:6-673:18) " enumerable:" --> (381:5-381:16) "\tenumerable" -(673:18-674:6) " false," --> (381:16-382:5) ":false," -(674:6-674:16) " writable:" --> (382:5-382:14) "\twritable" -(674:16-675:6) " true," --> (382:14-383:5) ":true," -(675:6-675:13) " value:" --> (383:5-383:11) "\tvalue" -(675:13-676:5) " false" --> (383:11-384:5) ":false" -(676:5-678:4) "}); // self and source are DEV only properties.\n" --> (384:5-385:0) "});" -(678:4-678:11) " Object" --> (385:0-385:11) "\n\t\t\t\tObject" -(678:11-678:26) ".defineProperty" --> (385:11-385:26) ".defineProperty" -(678:26-678:35) "(element," --> (385:26-385:35) "(element," -(678:35-678:44) " '_self'," --> (385:35-385:44) " '_self'," -(678:44-679:6) " {" --> (385:44-386:5) " {" -(679:6-679:20) " configurable:" --> (386:5-386:18) "\tconfigurable" -(679:20-680:6) " false," --> (386:18-387:5) ":false," -(680:6-680:18) " enumerable:" --> (387:5-387:16) "\tenumerable" -(680:18-681:6) " false," --> (387:16-388:5) ":false," -(681:6-681:16) " writable:" --> (388:5-388:14) "\twritable" -(681:16-682:6) " false," --> (388:14-389:5) ":false," -(682:6-682:13) " value:" --> (389:5-389:11) "\tvalue" -(682:13-683:5) " self" --> (389:11-390:5) ":self" -(683:5-686:4) "}); // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n" --> (390:5-391:0) "});" -(686:4-686:11) " Object" --> (391:0-391:11) "\n\t\t\t\tObject" -(686:11-686:26) ".defineProperty" --> (391:11-391:26) ".defineProperty" -(686:26-686:35) "(element," --> (391:26-391:35) "(element," -(686:35-686:46) " '_source'," --> (391:35-391:46) " '_source'," -(686:46-687:6) " {" --> (391:46-392:5) " {" -(687:6-687:20) " configurable:" --> (392:5-392:18) "\tconfigurable" -(687:20-688:6) " false," --> (392:18-393:5) ":false," -(688:6-688:18) " enumerable:" --> (393:5-393:16) "\tenumerable" -(688:18-689:6) " false," --> (393:16-394:5) ":false," -(689:6-689:16) " writable:" --> (394:5-394:14) "\twritable" -(689:16-690:6) " false," --> (394:14-395:5) ":false," -(690:6-690:13) " value:" --> (395:5-395:11) "\tvalue" -(690:13-691:5) " source" --> (395:11-396:5) ":source" -(691:5-693:4) "});\n" --> (396:5-397:0) "});" -(693:4-693:8) " if " --> (397:0-397:8) "\n\t\t\t\tif " -(693:8-693:15) "(Object" --> (397:8-397:15) "(Object" -(693:15-693:23) ".freeze)" --> (397:15-397:23) ".freeze)" -(693:23-694:6) " {" --> (397:23-398:0) " {" -(694:6-694:13) " Object" --> (398:0-398:12) "\n\t\t\t\t\tObject" -(694:13-694:20) ".freeze" --> (398:12-398:19) ".freeze" -(694:20-694:28) "(element" --> (398:19-398:27) "(element" -(694:28-695:6) ".props);" --> (398:27-399:0) ".props);" -(695:6-695:13) " Object" --> (399:0-399:12) "\n\t\t\t\t\tObject" -(695:13-695:20) ".freeze" --> (399:12-399:19) ".freeze" -(695:20-696:5) "(element);" --> (399:19-400:4) "(element);" -(696:5-697:3) "}" --> (400:4-401:3) "\t}" -(697:3-699:2) "}\n" --> (401:3-402:0) "\t}" -(699:2-699:9) " return" --> (402:0-402:10) "\n\t\t\treturn" -(699:9-700:1) " element;" --> (402:10-403:2) " element;" -(700:1-706:0) "};\n/**\n * Create and return a new ReactElement of the given type.\n * See https://reactjs.org/docs/react-api.html#createelement\n */\n" --> (403:2-404:2) "\t};" -(706:0-706:9) "\nfunction" --> (404:2-404:11) "\tfunction" -(706:9-706:23) " createElement" --> (404:11-404:25) " createElement" -(706:23-706:29) "(type," --> (404:25-404:31) "(type," -(706:29-706:37) " config," --> (404:31-404:39) " config," -(706:37-706:47) " children)" --> (404:39-404:49) " children)" -(706:47-707:2) " {" --> (404:49-405:3) " {" -(707:2-707:6) " var" --> (405:3-405:7) "\tvar" -(707:6-709:2) " propName; // Reserved names are extracted\n" --> (405:7-406:3) " propName;" -(709:2-709:6) " var" --> (406:3-406:7) "\tvar" -(709:6-709:14) " props =" --> (406:7-406:15) " props =" -(709:14-709:16) " {" --> (406:15-406:17) " {" -(709:16-710:2) "};" --> (406:17-407:3) "};" -(710:2-710:6) " var" --> (407:3-407:7) "\tvar" -(710:6-710:12) " key =" --> (407:7-407:13) " key =" -(710:12-711:2) " null;" --> (407:13-408:3) " null;" -(711:2-711:6) " var" --> (408:3-408:7) "\tvar" -(711:6-711:12) " ref =" --> (408:7-408:13) " ref =" -(711:12-712:2) " null;" --> (408:13-409:3) " null;" -(712:2-712:6) " var" --> (409:3-409:7) "\tvar" -(712:6-712:13) " self =" --> (409:7-409:14) " self =" -(712:13-713:2) " null;" --> (409:14-410:3) " null;" -(713:2-713:6) " var" --> (410:3-410:7) "\tvar" -(713:6-713:15) " source =" --> (410:7-410:16) " source =" -(713:15-715:2) " null;\n" --> (410:16-411:0) " null;" -(715:2-715:6) " if " --> (411:0-411:7) "\n\t\t\tif " -(715:6-715:16) "(config !=" --> (411:7-411:17) "(config !=" -(715:16-715:22) " null)" --> (411:17-411:23) " null)" -(715:22-716:4) " {" --> (411:23-412:0) " {" -(716:4-716:8) " if " --> (412:0-412:8) "\n\t\t\t\tif " -(716:8-716:20) "(hasValidRef" --> (412:8-412:20) "(hasValidRef" -(716:20-716:29) "(config))" --> (412:20-412:29) "(config))" -(716:29-717:6) " {" --> (412:29-413:0) " {" -(717:6-717:12) " ref =" --> (413:0-413:11) "\n\t\t\t\t\tref =" -(717:12-717:19) " config" --> (413:11-413:18) " config" -(717:19-719:6) ".ref;\n" --> (413:18-414:5) ".ref;" -(719:6-720:8) " {" --> (414:5-415:0) "\t{" -(720:8-720:45) " warnIfStringRefCannotBeAutoConverted" --> (415:0-415:43) "\n\t\t\t\t\t\twarnIfStringRefCannotBeAutoConverted" -(720:45-721:7) "(config);" --> (415:43-416:5) "(config);" -(721:7-722:5) "}" --> (416:5-417:4) "\t}" -(722:5-724:4) "}\n" --> (417:4-418:0) "\t}" -(724:4-724:8) " if " --> (418:0-418:8) "\n\t\t\t\tif " -(724:8-724:20) "(hasValidKey" --> (418:8-418:20) "(hasValidKey" -(724:20-724:29) "(config))" --> (418:20-418:29) "(config))" -(724:29-725:6) " {" --> (418:29-419:0) " {" -(725:6-725:12) " key =" --> (419:0-419:11) "\n\t\t\t\t\tkey =" -(725:12-725:17) " '' +" --> (419:11-419:16) " '' +" -(725:17-725:24) " config" --> (419:16-419:23) " config" -(725:24-726:5) ".key;" --> (419:23-420:4) ".key;" -(726:5-728:4) "}\n" --> (420:4-421:0) "\t}" -(728:4-728:11) " self =" --> (421:0-421:11) "\n\t\t\t\tself =" -(728:11-728:18) " config" --> (421:11-421:18) " config" -(728:18-728:29) ".__self ===" --> (421:18-421:29) ".__self ===" -(728:29-728:41) " undefined ?" --> (421:29-421:41) " undefined ?" -(728:41-728:48) " null :" --> (421:41-421:48) " null :" -(728:48-728:55) " config" --> (421:48-421:55) " config" -(728:55-729:4) ".__self;" --> (421:55-422:0) ".__self;" -(729:4-729:13) " source =" --> (422:0-422:13) "\n\t\t\t\tsource =" -(729:13-729:20) " config" --> (422:13-422:20) " config" -(729:20-729:33) ".__source ===" --> (422:20-422:33) ".__source ===" -(729:33-729:45) " undefined ?" --> (422:33-422:45) " undefined ?" -(729:45-729:52) " null :" --> (422:45-422:52) " null :" -(729:52-729:59) " config" --> (422:52-422:59) " config" -(729:59-731:4) ".__source; // Remaining properties are added to a new props object\n" --> (422:59-423:0) ".__source;" -(731:4-731:9) " for " --> (423:0-423:9) "\n\t\t\t\tfor " -(731:9-731:21) "(propName in" --> (423:9-423:21) "(propName in" -(731:21-731:29) " config)" --> (423:21-423:33) " config) \t\t\t" -(731:29-732:6) " {" --> (423:33-424:0) "\t{" -(732:6-732:10) " if " --> (424:0-424:9) "\n\t\t\t\t\tif " -(732:10-732:25) "(hasOwnProperty" --> (424:9-424:24) "(hasOwnProperty" -(732:25-732:30) ".call" --> (424:24-424:29) ".call" -(732:30-732:38) "(config," --> (424:29-424:37) "(config," -(732:38-732:52) " propName) && " --> (424:37-424:52) " propName) && " -(732:52-732:67) "!RESERVED_PROPS" --> (424:52-424:67) "!RESERVED_PROPS" -(732:67-732:82) ".hasOwnProperty" --> (424:67-424:82) ".hasOwnProperty" -(732:82-732:93) "(propName))" --> (424:82-424:93) "(propName))" -(732:93-733:8) " {" --> (424:93-425:0) " {" -(733:8-733:14) " props" --> (425:0-425:12) "\n\t\t\t\t\t\tprops" -(733:14-733:26) "[propName] =" --> (425:12-425:24) "[propName] =" -(733:26-733:33) " config" --> (425:24-425:31) " config" -(733:33-734:7) "[propName];" --> (425:31-426:5) "[propName];" -(734:7-735:5) "}" --> (426:5-427:4) "\t}" -(735:5-736:3) "}" --> (427:4-428:3) "\t}" -(736:3-740:2) "} // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n\n" --> (428:3-429:3) "\t}" -(740:2-740:6) " var" --> (429:3-429:7) "\tvar" -(740:6-740:23) " childrenLength =" --> (429:7-429:24) " childrenLength =" -(740:23-740:33) " arguments" --> (429:24-429:34) " arguments" -(740:33-740:42) ".length -" --> (429:34-429:43) ".length -" -(740:42-742:2) " 2;\n" --> (429:43-430:0) " 2;" -(742:2-742:6) " if " --> (430:0-430:7) "\n\t\t\tif " -(742:6-742:25) "(childrenLength ===" --> (430:7-430:26) "(childrenLength ===" -(742:25-742:28) " 1)" --> (430:26-430:29) " 1)" -(742:28-743:4) " {" --> (430:29-431:0) " {" -(743:4-743:10) " props" --> (431:0-431:10) "\n\t\t\t\tprops" -(743:10-743:21) ".children =" --> (431:10-431:21) ".children =" -(743:21-744:3) " children;" --> (431:21-432:3) " children;" -(744:3-744:13) "} else if " --> (432:3-432:14) "\t} else if " -(744:13-744:30) "(childrenLength >" --> (432:14-432:31) "(childrenLength >" -(744:30-744:33) " 1)" --> (432:31-432:34) " 1)" -(744:33-745:4) " {" --> (432:34-433:4) " {" -(745:4-745:8) " var" --> (433:4-433:8) "\tvar" -(745:8-745:21) " childArray =" --> (433:8-433:21) " childArray =" -(745:21-745:27) " Array" --> (433:21-433:27) " Array" -(745:27-747:4) "(childrenLength);\n" --> (433:27-434:0) "(childrenLength);" -(747:4-747:9) " for " --> (434:0-434:9) "\n\t\t\t\tfor " -(747:9-747:13) "(var" --> (434:9-434:13) "(var" -(747:13-747:17) " i =" --> (434:13-434:17) " i =" -(747:17-747:20) " 0;" --> (434:17-434:20) " 0;" -(747:20-747:24) " i <" --> (434:20-434:24) " i <" -(747:24-747:40) " childrenLength;" --> (434:24-434:40) " childrenLength;" -(747:40-747:45) " i++)" --> (434:40-434:48) " i++)\t\t\t" -(747:45-748:6) " {" --> (434:48-435:0) "\t{" -(748:6-748:17) " childArray" --> (435:0-435:16) "\n\t\t\t\t\tchildArray" -(748:17-748:22) "[i] =" --> (435:16-435:21) "[i] =" -(748:22-748:32) " arguments" --> (435:21-435:31) " arguments" -(748:32-748:36) "[i +" --> (435:31-435:35) "[i +" -(748:36-749:5) " 2];" --> (435:35-436:4) " 2];" -(749:5-751:4) "}\n" --> (436:4-437:4) "\t}" -(751:4-752:6) " {" --> (437:4-438:0) "\t{" -(752:6-752:10) " if " --> (438:0-438:9) "\n\t\t\t\t\tif " -(752:10-752:17) "(Object" --> (438:9-438:16) "(Object" -(752:17-752:25) ".freeze)" --> (438:16-438:24) ".freeze)" -(752:25-753:8) " {" --> (438:24-439:0) " {" -(753:8-753:15) " Object" --> (439:0-439:13) "\n\t\t\t\t\t\tObject" -(753:15-753:22) ".freeze" --> (439:13-439:20) ".freeze" -(753:22-754:7) "(childArray);" --> (439:20-440:5) "(childArray);" -(754:7-755:5) "}" --> (440:5-441:4) "\t}" -(755:5-757:4) "}\n" --> (441:4-442:0) "\t}" -(757:4-757:10) " props" --> (442:0-442:10) "\n\t\t\t\tprops" -(757:10-757:21) ".children =" --> (442:10-442:21) ".children =" -(757:21-758:3) " childArray;" --> (442:21-443:3) " childArray;" -(758:3-761:2) "} // Resolve default props\n\n" --> (443:3-444:0) "\t}" -(761:2-761:6) " if " --> (444:0-444:7) "\n\t\t\tif " -(761:6-761:14) "(type &&" --> (444:7-444:15) "(type &&" -(761:14-761:19) " type" --> (444:15-444:20) " type" -(761:19-761:33) ".defaultProps)" --> (444:20-444:34) ".defaultProps)" -(761:33-762:4) " {" --> (444:34-445:4) " {" -(762:4-762:8) " var" --> (445:4-445:8) "\tvar" -(762:8-762:23) " defaultProps =" --> (445:8-445:23) " defaultProps =" -(762:23-762:28) " type" --> (445:23-445:28) " type" -(762:28-764:4) ".defaultProps;\n" --> (445:28-446:0) ".defaultProps;" -(764:4-764:9) " for " --> (446:0-446:9) "\n\t\t\t\tfor " -(764:9-764:21) "(propName in" --> (446:9-446:21) "(propName in" -(764:21-764:35) " defaultProps)" --> (446:21-446:39) " defaultProps) \t\t\t" -(764:35-765:6) " {" --> (446:39-447:0) "\t{" -(765:6-765:10) " if " --> (447:0-447:9) "\n\t\t\t\t\tif " -(765:10-765:16) "(props" --> (447:9-447:15) "(props" -(765:16-765:30) "[propName] ===" --> (447:15-447:29) "[propName] ===" -(765:30-765:41) " undefined)" --> (447:29-447:40) " undefined)" -(765:41-766:8) " {" --> (447:40-448:0) " {" -(766:8-766:14) " props" --> (448:0-448:12) "\n\t\t\t\t\t\tprops" -(766:14-766:26) "[propName] =" --> (448:12-448:24) "[propName] =" -(766:26-766:39) " defaultProps" --> (448:24-448:37) " defaultProps" -(766:39-767:7) "[propName];" --> (448:37-449:5) "[propName];" -(767:7-768:5) "}" --> (449:5-450:4) "\t}" -(768:5-769:3) "}" --> (450:4-451:3) "\t}" -(769:3-771:2) "}\n" --> (451:3-452:3) "\t}" -(771:2-772:4) " {" --> (452:3-453:0) "\t{" -(772:4-772:8) " if " --> (453:0-453:8) "\n\t\t\t\tif " -(772:8-772:15) "(key ||" --> (453:8-453:15) "(key ||" -(772:15-772:20) " ref)" --> (453:15-453:20) " ref)" -(772:20-773:6) " {" --> (453:20-454:5) " {" -(773:6-773:10) " var" --> (454:5-454:9) "\tvar" -(773:10-773:31) " displayName = typeof" --> (454:9-454:30) " displayName = typeof" -(773:31-773:40) " type ===" --> (454:30-454:39) " type ===" -(773:40-773:53) " 'function' ?" --> (454:39-454:52) " 'function' ?" -(773:53-773:58) " type" --> (454:52-454:57) " type" -(773:58-773:73) ".displayName ||" --> (454:57-454:72) ".displayName ||" -(773:73-773:78) " type" --> (454:72-454:77) " type" -(773:78-773:86) ".name ||" --> (454:77-454:85) ".name ||" -(773:86-773:98) " 'Unknown' :" --> (454:85-454:97) " 'Unknown' :" -(773:98-775:6) " type;\n" --> (454:97-455:0) " type;" -(775:6-775:10) " if " --> (455:0-455:9) "\n\t\t\t\t\tif " -(775:10-775:15) "(key)" --> (455:9-455:14) "(key)" -(775:15-776:8) " {" --> (455:14-456:0) " {" -(776:8-776:35) " defineKeyPropWarningGetter" --> (456:0-456:33) "\n\t\t\t\t\t\tdefineKeyPropWarningGetter" -(776:35-776:42) "(props," --> (456:33-456:40) "(props," -(776:42-777:7) " displayName);" --> (456:40-457:5) " displayName);" -(777:7-779:6) "}\n" --> (457:5-458:0) "\t}" -(779:6-779:10) " if " --> (458:0-458:9) "\n\t\t\t\t\tif " -(779:10-779:15) "(ref)" --> (458:9-458:14) "(ref)" -(779:15-780:8) " {" --> (458:14-459:0) " {" -(780:8-780:35) " defineRefPropWarningGetter" --> (459:0-459:33) "\n\t\t\t\t\t\tdefineRefPropWarningGetter" -(780:35-780:42) "(props," --> (459:33-459:40) "(props," -(780:42-781:7) " displayName);" --> (459:40-460:5) " displayName);" -(781:7-782:5) "}" --> (460:5-461:4) "\t}" -(782:5-783:3) "}" --> (461:4-462:3) "\t}" -(783:3-785:2) "}\n" --> (462:3-463:0) "\t}" -(785:2-785:9) " return" --> (463:0-463:10) "\n\t\t\treturn" -(785:9-785:22) " ReactElement" --> (463:10-463:23) " ReactElement" -(785:22-785:28) "(type," --> (463:23-463:29) "(type," -(785:28-785:33) " key," --> (463:29-463:34) " key," -(785:33-785:38) " ref," --> (463:34-463:39) " ref," -(785:38-785:44) " self," --> (463:39-463:45) " self," -(785:44-785:52) " source," --> (463:45-463:53) " source," -(785:52-785:70) " ReactCurrentOwner" --> (463:53-463:71) " ReactCurrentOwner" -(785:70-785:79) ".current," --> (463:71-463:80) ".current," -(785:79-786:1) " props);" --> (463:80-464:2) " props);" -(786:1-787:0) "}" --> (464:2-465:2) "\t}" -(787:0-787:9) "\nfunction" --> (465:2-465:11) "\tfunction" -(787:9-787:28) " cloneAndReplaceKey" --> (465:11-465:30) " cloneAndReplaceKey" -(787:28-787:40) "(oldElement," --> (465:30-465:42) "(oldElement," -(787:40-787:48) " newKey)" --> (465:42-465:50) " newKey)" -(787:48-788:2) " {" --> (465:50-466:3) " {" -(788:2-788:6) " var" --> (466:3-466:7) "\tvar" -(788:6-788:19) " newElement =" --> (466:7-466:20) " newElement =" -(788:19-788:32) " ReactElement" --> (466:20-466:33) " ReactElement" -(788:32-788:43) "(oldElement" --> (466:33-466:44) "(oldElement" -(788:43-788:49) ".type," --> (466:44-466:50) ".type," -(788:49-788:57) " newKey," --> (466:50-466:58) " newKey," -(788:57-788:68) " oldElement" --> (466:58-466:69) " oldElement" -(788:68-788:73) ".ref," --> (466:69-466:74) ".ref," -(788:73-788:84) " oldElement" --> (466:74-466:85) " oldElement" -(788:84-788:91) "._self," --> (466:85-466:92) "._self," -(788:91-788:102) " oldElement" --> (466:92-466:103) " oldElement" -(788:102-788:111) "._source," --> (466:103-466:112) "._source," -(788:111-788:122) " oldElement" --> (466:112-466:123) " oldElement" -(788:122-788:130) "._owner," --> (466:123-466:131) "._owner," -(788:130-788:141) " oldElement" --> (466:131-466:142) " oldElement" -(788:141-789:2) ".props);" --> (466:142-467:0) ".props);" -(789:2-789:9) " return" --> (467:0-467:10) "\n\t\t\treturn" -(789:9-790:1) " newElement;" --> (467:10-468:2) " newElement;" -(790:1-796:0) "}\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://reactjs.org/docs/react-api.html#cloneelement\n */\n" --> (468:2-469:2) "\t}" -(796:0-796:9) "\nfunction" --> (469:2-469:11) "\tfunction" -(796:9-796:22) " cloneElement" --> (469:11-469:24) " cloneElement" -(796:22-796:31) "(element," --> (469:24-469:33) "(element," -(796:31-796:39) " config," --> (469:33-469:41) " config," -(796:39-796:49) " children)" --> (469:41-469:51) " children)" -(796:49-797:2) " {" --> (469:51-470:0) " {" -(797:2-797:9) " if (!!" --> (470:0-470:12) "\n\t\t\tif ( ! !" -(797:9-797:21) "(element ===" --> (470:12-470:24) "(element ===" -(797:21-797:29) " null ||" --> (470:24-470:32) " null ||" -(797:29-797:41) " element ===" --> (470:32-470:44) " element ===" -(797:41-797:53) " undefined))" --> (470:44-470:56) " undefined))" -(797:53-798:4) " {" --> (470:56-471:4) " {" -(798:4-799:6) " {" --> (471:4-472:0) "\t{" -(799:6-799:12) " throw" --> (472:0-472:11) "\n\t\t\t\t\tthrow" -(799:12-799:19) " Error(" --> (472:11-472:17) " Error" -(799:19-799:102) " \"React.cloneElement(...): The argument must be a React element, but you passed \" +" --> (472:17-472:100) "('React.cloneElement(...): The argument must be a React element, but you passed ' +" -(799:102-799:112) " element +" --> (472:100-472:110) " element +" -(799:112-800:5) " \".\" );" --> (472:110-473:4) " '.');" -(800:5-801:3) "}" --> (473:4-474:3) "\t}" -(801:3-803:2) "}\n" --> (474:3-475:3) "\t}" -(803:2-803:6) " var" --> (475:3-475:7) "\tvar" -(803:6-805:2) " propName; // Original props are copied\n" --> (475:7-476:3) " propName;" -(805:2-805:6) " var" --> (476:3-476:7) "\tvar" -(805:6-805:14) " props =" --> (476:7-476:15) " props =" -(805:14-805:22) " _assign" --> (476:15-476:23) " _assign" -(805:22-805:24) "({" --> (476:23-476:25) "({" -(805:24-805:26) "}," --> (476:25-476:27) "}," -(805:26-805:34) " element" --> (476:27-476:35) " element" -(805:34-808:2) ".props); // Reserved names are extracted\n\n" --> (476:35-477:3) ".props);" -(808:2-808:6) " var" --> (477:3-477:7) "\tvar" -(808:6-808:12) " key =" --> (477:7-477:13) " key =" -(808:12-808:20) " element" --> (477:13-477:21) " element" -(808:20-809:2) ".key;" --> (477:21-478:3) ".key;" -(809:2-809:6) " var" --> (478:3-478:7) "\tvar" -(809:6-809:12) " ref =" --> (478:7-478:13) " ref =" -(809:12-809:20) " element" --> (478:13-478:21) " element" -(809:20-811:2) ".ref; // Self is preserved since the owner is preserved.\n" --> (478:21-479:3) ".ref;" -(811:2-811:6) " var" --> (479:3-479:7) "\tvar" -(811:6-811:13) " self =" --> (479:7-479:14) " self =" -(811:13-811:21) " element" --> (479:14-479:22) " element" -(811:21-815:2) "._self; // Source is preserved since cloneElement is unlikely to be targeted by a\n // transpiler, and the original source is probably a better indicator of the\n // true owner.\n" --> (479:22-480:3) "._self;" -(815:2-815:6) " var" --> (480:3-480:7) "\tvar" -(815:6-815:15) " source =" --> (480:7-480:16) " source =" -(815:15-815:23) " element" --> (480:16-480:24) " element" -(815:23-817:2) "._source; // Owner will be preserved, unless ref is overridden\n" --> (480:24-481:3) "._source;" -(817:2-817:6) " var" --> (481:3-481:7) "\tvar" -(817:6-817:14) " owner =" --> (481:7-481:15) " owner =" -(817:14-817:22) " element" --> (481:15-481:23) " element" -(817:22-819:2) "._owner;\n" --> (481:23-482:0) "._owner;" -(819:2-819:6) " if " --> (482:0-482:7) "\n\t\t\tif " -(819:6-819:16) "(config !=" --> (482:7-482:17) "(config !=" -(819:16-819:22) " null)" --> (482:17-482:23) " null)" -(819:22-820:4) " {" --> (482:23-483:0) " {" -(820:4-820:8) " if " --> (483:0-483:8) "\n\t\t\t\tif " -(820:8-820:20) "(hasValidRef" --> (483:8-483:20) "(hasValidRef" -(820:20-820:29) "(config))" --> (483:20-483:29) "(config))" -(820:29-822:6) " {\n // Silently steal the ref from the parent." --> (483:29-484:0) " {" -(822:6-822:12) " ref =" --> (484:0-484:11) "\n\t\t\t\t\tref =" -(822:12-822:19) " config" --> (484:11-484:18) " config" -(822:19-823:6) ".ref;" --> (484:18-485:0) ".ref;" -(823:6-823:14) " owner =" --> (485:0-485:13) "\n\t\t\t\t\towner =" -(823:14-823:32) " ReactCurrentOwner" --> (485:13-485:31) " ReactCurrentOwner" -(823:32-824:5) ".current;" --> (485:31-486:4) ".current;" -(824:5-826:4) "}\n" --> (486:4-487:0) "\t}" -(826:4-826:8) " if " --> (487:0-487:8) "\n\t\t\t\tif " -(826:8-826:20) "(hasValidKey" --> (487:8-487:20) "(hasValidKey" -(826:20-826:29) "(config))" --> (487:20-487:29) "(config))" -(826:29-827:6) " {" --> (487:29-488:0) " {" -(827:6-827:12) " key =" --> (488:0-488:11) "\n\t\t\t\t\tkey =" -(827:12-827:17) " '' +" --> (488:11-488:16) " '' +" -(827:17-827:24) " config" --> (488:16-488:23) " config" -(827:24-828:5) ".key;" --> (488:23-489:4) ".key;" -(828:5-831:4) "} // Remaining properties override existing props\n\n" --> (489:4-490:4) "\t}" -(831:4-831:8) " var" --> (490:4-490:8) "\tvar" -(831:8-833:4) " defaultProps;\n" --> (490:8-491:0) " defaultProps;" -(833:4-833:8) " if " --> (491:0-491:8) "\n\t\t\t\tif " -(833:8-833:16) "(element" --> (491:8-491:16) "(element" -(833:16-833:24) ".type &&" --> (491:16-491:24) ".type &&" -(833:24-833:32) " element" --> (491:24-491:32) " element" -(833:32-833:37) ".type" --> (491:32-491:37) ".type" -(833:37-833:51) ".defaultProps)" --> (491:37-491:51) ".defaultProps)" -(833:51-834:6) " {" --> (491:51-492:0) " {" -(834:6-834:21) " defaultProps =" --> (492:0-492:20) "\n\t\t\t\t\tdefaultProps =" -(834:21-834:29) " element" --> (492:20-492:28) " element" -(834:29-834:34) ".type" --> (492:28-492:33) ".type" -(834:34-835:5) ".defaultProps;" --> (492:33-493:4) ".defaultProps;" -(835:5-837:4) "}\n" --> (493:4-494:0) "\t}" -(837:4-837:9) " for " --> (494:0-494:9) "\n\t\t\t\tfor " -(837:9-837:21) "(propName in" --> (494:9-494:21) "(propName in" -(837:21-837:29) " config)" --> (494:21-494:33) " config) \t\t\t" -(837:29-838:6) " {" --> (494:33-495:0) "\t{" -(838:6-838:10) " if " --> (495:0-495:9) "\n\t\t\t\t\tif " -(838:10-838:25) "(hasOwnProperty" --> (495:9-495:24) "(hasOwnProperty" -(838:25-838:30) ".call" --> (495:24-495:29) ".call" -(838:30-838:38) "(config," --> (495:29-495:37) "(config," -(838:38-838:52) " propName) && " --> (495:37-495:52) " propName) && " -(838:52-838:67) "!RESERVED_PROPS" --> (495:52-495:67) "!RESERVED_PROPS" -(838:67-838:82) ".hasOwnProperty" --> (495:67-495:82) ".hasOwnProperty" -(838:82-838:93) "(propName))" --> (495:82-495:93) "(propName))" -(838:93-839:8) " {" --> (495:93-496:0) " {" -(839:8-839:12) " if " --> (496:0-496:10) "\n\t\t\t\t\t\tif " -(839:12-839:19) "(config" --> (496:10-496:17) "(config" -(839:19-839:33) "[propName] ===" --> (496:17-496:31) "[propName] ===" -(839:33-839:46) " undefined &&" --> (496:31-496:44) " undefined &&" -(839:46-839:63) " defaultProps !==" --> (496:44-496:61) " defaultProps !==" -(839:63-839:74) " undefined)" --> (496:61-496:72) " undefined)" -(839:74-841:10) " {\n // Resolve default props" --> (496:72-497:0) " {" -(841:10-841:16) " props" --> (497:0-497:13) "\n\t\t\t\t\t\t\tprops" -(841:16-841:28) "[propName] =" --> (497:13-497:25) "[propName] =" -(841:28-841:41) " defaultProps" --> (497:25-497:38) " defaultProps" -(841:41-842:9) "[propName];" --> (497:38-498:6) "[propName];" -(842:9-842:15) "} else" --> (498:6-498:13) "\t} else" -(842:15-843:10) " {" --> (498:13-499:0) " {" -(843:10-843:16) " props" --> (499:0-499:13) "\n\t\t\t\t\t\t\tprops" -(843:16-843:28) "[propName] =" --> (499:13-499:25) "[propName] =" -(843:28-843:35) " config" --> (499:25-499:32) " config" -(843:35-844:9) "[propName];" --> (499:32-500:6) "[propName];" -(844:9-845:7) "}" --> (500:6-501:5) "\t}" -(845:7-846:5) "}" --> (501:5-502:4) "\t}" -(846:5-847:3) "}" --> (502:4-503:3) "\t}" -(847:3-851:2) "} // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n\n" --> (503:3-504:3) "\t}" -(851:2-851:6) " var" --> (504:3-504:7) "\tvar" -(851:6-851:23) " childrenLength =" --> (504:7-504:24) " childrenLength =" -(851:23-851:33) " arguments" --> (504:24-504:34) " arguments" -(851:33-851:42) ".length -" --> (504:34-504:43) ".length -" -(851:42-853:2) " 2;\n" --> (504:43-505:0) " 2;" -(853:2-853:6) " if " --> (505:0-505:7) "\n\t\t\tif " -(853:6-853:25) "(childrenLength ===" --> (505:7-505:26) "(childrenLength ===" -(853:25-853:28) " 1)" --> (505:26-505:29) " 1)" -(853:28-854:4) " {" --> (505:29-506:0) " {" -(854:4-854:10) " props" --> (506:0-506:10) "\n\t\t\t\tprops" -(854:10-854:21) ".children =" --> (506:10-506:21) ".children =" -(854:21-855:3) " children;" --> (506:21-507:3) " children;" -(855:3-855:13) "} else if " --> (507:3-507:14) "\t} else if " -(855:13-855:30) "(childrenLength >" --> (507:14-507:31) "(childrenLength >" -(855:30-855:33) " 1)" --> (507:31-507:34) " 1)" -(855:33-856:4) " {" --> (507:34-508:4) " {" -(856:4-856:8) " var" --> (508:4-508:8) "\tvar" -(856:8-856:21) " childArray =" --> (508:8-508:21) " childArray =" -(856:21-856:27) " Array" --> (508:21-508:27) " Array" -(856:27-858:4) "(childrenLength);\n" --> (508:27-509:0) "(childrenLength);" -(858:4-858:9) " for " --> (509:0-509:9) "\n\t\t\t\tfor " -(858:9-858:13) "(var" --> (509:9-509:13) "(var" -(858:13-858:17) " i =" --> (509:13-509:17) " i =" -(858:17-858:20) " 0;" --> (509:17-509:20) " 0;" -(858:20-858:24) " i <" --> (509:20-509:24) " i <" -(858:24-858:40) " childrenLength;" --> (509:24-509:40) " childrenLength;" -(858:40-858:45) " i++)" --> (509:40-509:48) " i++)\t\t\t" -(858:45-859:6) " {" --> (509:48-510:0) "\t{" -(859:6-859:17) " childArray" --> (510:0-510:16) "\n\t\t\t\t\tchildArray" -(859:17-859:22) "[i] =" --> (510:16-510:21) "[i] =" -(859:22-859:32) " arguments" --> (510:21-510:31) " arguments" -(859:32-859:36) "[i +" --> (510:31-510:35) "[i +" -(859:36-860:5) " 2];" --> (510:35-511:4) " 2];" -(860:5-862:4) "}\n" --> (511:4-512:0) "\t}" -(862:4-862:10) " props" --> (512:0-512:10) "\n\t\t\t\tprops" -(862:10-862:21) ".children =" --> (512:10-512:21) ".children =" -(862:21-863:3) " childArray;" --> (512:21-513:3) " childArray;" -(863:3-865:2) "}\n" --> (513:3-514:0) "\t}" -(865:2-865:9) " return" --> (514:0-514:10) "\n\t\t\treturn" -(865:9-865:22) " ReactElement" --> (514:10-514:23) " ReactElement" -(865:22-865:30) "(element" --> (514:23-514:31) "(element" -(865:30-865:36) ".type," --> (514:31-514:37) ".type," -(865:36-865:41) " key," --> (514:37-514:42) " key," -(865:41-865:46) " ref," --> (514:42-514:47) " ref," -(865:46-865:52) " self," --> (514:47-514:53) " self," -(865:52-865:60) " source," --> (514:53-514:61) " source," -(865:60-865:67) " owner," --> (514:61-514:68) " owner," -(865:67-866:1) " props);" --> (514:68-515:2) " props);" -(866:1-875:0) "}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n" --> (515:2-516:2) "\t}" -(875:0-875:9) "\nfunction" --> (516:2-516:11) "\tfunction" -(875:9-875:24) " isValidElement" --> (516:11-516:26) " isValidElement" -(875:24-875:32) "(object)" --> (516:26-516:34) "(object)" -(875:32-876:2) " {" --> (516:34-517:0) " {" -(876:2-876:16) " return typeof" --> (517:0-517:17) "\n\t\t\treturn typeof" -(876:16-876:27) " object ===" --> (517:17-517:28) " object ===" -(876:27-876:39) " 'object' &&" --> (517:28-517:40) " 'object' &&" -(876:39-876:50) " object !==" --> (517:40-517:51) " object !==" -(876:50-876:58) " null &&" --> (517:51-517:59) " null &&" -(876:58-876:65) " object" --> (517:59-517:66) " object" -(876:65-876:78) ".$$typeof ===" --> (517:66-517:79) ".$$typeof ===" -(876:78-877:1) " REACT_ELEMENT_TYPE;" --> (517:79-518:2) " REACT_ELEMENT_TYPE;" -(877:1-879:0) "}\n" --> (518:2-519:2) "\t}" -(879:0-879:4) "\nvar" --> (519:2-519:6) "\tvar" -(879:4-879:16) " SEPARATOR =" --> (519:6-519:18) " SEPARATOR =" -(879:16-880:0) " '.';" --> (519:18-520:2) " '.';" -(880:0-880:4) "\nvar" --> (520:2-520:6) "\tvar" -(880:4-880:19) " SUBSEPARATOR =" --> (520:6-520:21) " SUBSEPARATOR =" -(880:19-888:0) " ':';\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n" --> (520:21-521:2) " ':';" -(888:0-888:9) "\nfunction" --> (521:2-521:11) "\tfunction" -(888:9-888:16) " escape" --> (521:11-521:18) " escape" -(888:16-888:21) "(key)" --> (521:18-521:23) "(key)" -(888:21-889:2) " {" --> (521:23-522:3) " {" -(889:2-889:6) " var" --> (522:3-522:7) "\tvar" -(889:6-889:20) " escapeRegex =" --> (522:7-522:21) " escapeRegex =" -(889:20-890:2) " /[=:]/g;" --> (522:21-523:3) " /[=:]/g;" -(890:2-890:6) " var" --> (523:3-523:7) "\tvar" -(890:6-890:22) " escaperLookup =" --> (523:7-523:23) " escaperLookup =" -(890:22-891:4) " {" --> (523:23-524:4) " {" -(891:4-891:9) " '=':" --> (524:4-524:8) "\t'='" -(891:9-892:4) " '=0'," --> (524:8-525:4) ":'=0'," -(892:4-892:9) " ':':" --> (525:4-525:8) "\t':'" -(892:9-893:3) " '=2'" --> (525:8-526:4) ":'=2'" -(893:3-894:2) "};" --> (526:4-527:3) "};" -(894:2-894:6) " var" --> (527:3-527:7) "\tvar" -(894:6-894:22) " escapedString =" --> (527:7-527:23) " escapedString =" -(894:22-894:26) " key" --> (527:23-527:27) " key" -(894:26-894:34) ".replace" --> (527:27-527:35) ".replace" -(894:34-894:47) "(escapeRegex," --> (527:35-527:48) "(escapeRegex," -(894:47-894:57) " function " --> (527:48-527:57) " function" -(894:57-894:64) "(match)" --> (527:57-527:64) "(match)" -(894:64-895:4) " {" --> (527:64-528:0) " {" -(895:4-895:11) " return" --> (528:0-528:11) "\n\t\t\t\treturn" -(895:11-895:25) " escaperLookup" --> (528:11-528:25) " escaperLookup" -(895:25-896:3) "[match];" --> (528:25-529:3) "[match];" -(896:3-897:2) "});" --> (529:3-530:0) "\t});" -(897:2-897:9) " return" --> (530:0-530:10) "\n\t\t\treturn" -(897:9-897:15) " '$' +" --> (530:10-530:16) " '$' +" -(897:15-898:1) " escapedString;" --> (530:16-531:2) " escapedString;" -(898:1-905:0) "}\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\n" --> (531:2-532:2) "\t}" -(905:0-905:4) "\nvar" --> (532:2-532:6) "\tvar" -(905:4-905:23) " didWarnAboutMaps =" --> (532:6-532:25) " didWarnAboutMaps =" -(905:23-906:0) " false;" --> (532:25-533:2) " false;" -(906:0-906:4) "\nvar" --> (533:2-533:6) "\tvar" -(906:4-906:33) " userProvidedKeyEscapeRegex =" --> (533:6-533:35) " userProvidedKeyEscapeRegex =" -(906:33-908:0) " /\\/+/g;\n" --> (533:35-534:2) " /\\/+/g;" -(908:0-908:9) "\nfunction" --> (534:2-534:11) "\tfunction" -(908:9-908:31) " escapeUserProvidedKey" --> (534:11-534:33) " escapeUserProvidedKey" -(908:31-908:37) "(text)" --> (534:33-534:39) "(text)" -(908:37-909:2) " {" --> (534:39-535:0) " {" -(909:2-909:9) " return" --> (535:0-535:10) "\n\t\t\treturn" -(909:9-909:14) " text" --> (535:10-535:15) " text" -(909:14-909:22) ".replace" --> (535:15-535:23) ".replace" -(909:22-909:50) "(userProvidedKeyEscapeRegex," --> (535:23-535:51) "(userProvidedKeyEscapeRegex," -(909:50-910:1) " '$&/');" --> (535:51-536:2) " '$&/');" -(910:1-920:0) "}\n/**\n * Generate a key string that identifies a element within a set.\n *\n * @param {*} element A element that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\n\n" --> (536:2-537:2) "\t}" -(920:0-920:9) "\nfunction" --> (537:2-537:11) "\tfunction" -(920:9-920:23) " getElementKey" --> (537:11-537:25) " getElementKey" -(920:23-920:32) "(element," --> (537:25-537:34) "(element," -(920:32-920:39) " index)" --> (537:34-537:41) " index)" -(920:39-923:2) " {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs." --> (537:41-538:0) " {" -(923:2-923:13) " if (typeof" --> (538:0-538:14) "\n\t\t\tif (typeof" -(923:13-923:25) " element ===" --> (538:14-538:26) " element ===" -(923:25-923:37) " 'object' &&" --> (538:26-538:38) " 'object' &&" -(923:37-923:49) " element !==" --> (538:38-538:50) " element !==" -(923:49-923:57) " null &&" --> (538:50-538:58) " null &&" -(923:57-923:65) " element" --> (538:58-538:66) " element" -(923:65-923:72) ".key !=" --> (538:66-538:73) ".key !=" -(923:72-923:78) " null)" --> (538:73-538:79) " null)" -(923:78-925:4) " {\n // Explicit key" --> (538:79-539:0) " {" -(925:4-925:11) " return" --> (539:0-539:11) "\n\t\t\t\treturn" -(925:11-925:18) " escape" --> (539:11-539:18) " escape" -(925:18-925:23) "('' +" --> (539:18-539:23) "('' +" -(925:23-925:31) " element" --> (539:23-539:31) " element" -(925:31-926:3) ".key);" --> (539:31-540:3) ".key);" -(926:3-929:2) "} // Implicit key determined by the index in the set\n\n" --> (540:3-541:0) "\t}" -(929:2-929:9) " return" --> (541:0-541:10) "\n\t\t\treturn" -(929:9-929:15) " index" --> (541:10-541:16) " index" -(929:15-929:24) ".toString" --> (541:16-541:25) ".toString" -(929:24-930:1) "(36);" --> (541:25-542:2) "(36);" -(930:1-932:0) "}\n" --> (542:2-543:2) "\t}" -(932:0-932:9) "\nfunction" --> (543:2-543:11) "\tfunction" -(932:9-932:22) " mapIntoArray" --> (543:11-543:24) " mapIntoArray" -(932:22-932:32) "(children," --> (543:24-543:34) "(children," -(932:32-932:39) " array," --> (543:34-543:41) " array," -(932:39-932:54) " escapedPrefix," --> (543:41-543:56) " escapedPrefix," -(932:54-932:65) " nameSoFar," --> (543:56-543:67) " nameSoFar," -(932:65-932:75) " callback)" --> (543:67-543:77) " callback)" -(932:75-933:2) " {" --> (543:77-544:3) " {" -(933:2-933:6) " var" --> (544:3-544:7) "\tvar" -(933:6-933:20) " type = typeof" --> (544:7-544:21) " type = typeof" -(933:20-935:2) " children;\n" --> (544:21-545:0) " children;" -(935:2-935:6) " if " --> (545:0-545:7) "\n\t\t\tif " -(935:6-935:15) "(type ===" --> (545:7-545:16) "(type ===" -(935:15-935:30) " 'undefined' ||" --> (545:16-545:31) " 'undefined' ||" -(935:30-935:39) " type ===" --> (545:31-545:40) " type ===" -(935:39-935:50) " 'boolean')" --> (545:40-545:51) " 'boolean')" -(935:50-937:4) " {\n // All of the above are perceived as null." --> (545:51-546:0) " {" -(937:4-937:15) " children =" --> (546:0-546:15) "\n\t\t\t\tchildren =" -(937:15-938:3) " null;" --> (546:15-547:3) " null;" -(938:3-940:2) "}\n" --> (547:3-548:3) "\t}" -(940:2-940:6) " var" --> (548:3-548:7) "\tvar" -(940:6-940:23) " invokeCallback =" --> (548:7-548:24) " invokeCallback =" -(940:23-942:2) " false;\n" --> (548:24-549:0) " false;" -(942:2-942:6) " if " --> (549:0-549:7) "\n\t\t\tif " -(942:6-942:19) "(children ===" --> (549:7-549:20) "(children ===" -(942:19-942:25) " null)" --> (549:20-549:26) " null)" -(942:25-943:4) " {" --> (549:26-550:0) " {" -(943:4-943:21) " invokeCallback =" --> (550:0-550:21) "\n\t\t\t\tinvokeCallback =" -(943:21-944:3) " true;" --> (550:21-551:3) " true;" -(944:3-944:9) "} else" --> (551:3-551:10) "\t} else" -(944:9-945:4) " {" --> (551:10-552:0) " {" -(945:4-945:12) " switch " --> (552:0-552:11) "\n\t\t\t\tswitch" -(945:12-946:6) "(type) {" --> (552:11-553:0) "(type){" -(946:6-946:11) " case" --> (553:0-553:10) "\n\t\t\t\t\tcase" -(946:11-947:6) " 'string':" --> (553:10-554:0) " 'string':" -(947:6-947:11) " case" --> (554:0-554:10) "\n\t\t\t\t\tcase" -(947:11-948:8) " 'number':" --> (554:10-555:0) " 'number':" -(948:8-948:25) " invokeCallback =" --> (555:0-555:23) "\n\t\t\t\t\t\tinvokeCallback =" -(948:25-949:8) " true;" --> (555:23-556:0) " true;" -(949:8-951:6) " break;\n" --> (556:0-557:0) "\n\t\t\t\t\t\tbreak;" -(951:6-951:11) " case" --> (557:0-557:10) "\n\t\t\t\t\tcase" -(951:11-952:8) " 'object':" --> (557:10-558:0) " 'object':" -(952:8-952:16) " switch " --> (558:0-558:13) "\n\t\t\t\t\t\tswitch" -(952:16-952:25) "(children" --> (558:13-558:22) "(children" -(952:25-953:10) ".$$typeof) {" --> (558:22-559:0) ".$$typeof){" -(953:10-953:15) " case" --> (559:0-559:12) "\n\t\t\t\t\t\t\tcase" -(953:15-954:10) " REACT_ELEMENT_TYPE:" --> (559:12-560:0) " REACT_ELEMENT_TYPE:" -(954:10-954:15) " case" --> (560:0-560:12) "\n\t\t\t\t\t\t\tcase" -(954:15-955:12) " REACT_PORTAL_TYPE:" --> (560:12-561:0) " REACT_PORTAL_TYPE:" -(955:12-955:29) " invokeCallback =" --> (561:0-561:25) "\n\t\t\t\t\t\t\t\tinvokeCallback =" -(955:29-956:9) " true;" --> (561:25-562:6) " true;" -(956:9-958:5) "}\n" --> (562:6-563:4) "\t}" -(958:5-959:3) "}" --> (563:4-564:3) "\t}" -(959:3-961:2) "}\n" --> (564:3-565:0) "\t}" -(961:2-961:6) " if " --> (565:0-565:7) "\n\t\t\tif " -(961:6-961:22) "(invokeCallback)" --> (565:7-565:23) "(invokeCallback)" -(961:22-962:4) " {" --> (565:23-566:4) " {" -(962:4-962:8) " var" --> (566:4-566:8) "\tvar" -(962:8-962:17) " _child =" --> (566:8-566:17) " _child =" -(962:17-963:4) " children;" --> (566:17-567:4) " children;" -(963:4-963:8) " var" --> (567:4-567:8) "\tvar" -(963:8-963:22) " mappedChild =" --> (567:8-567:22) " mappedChild =" -(963:22-963:31) " callback" --> (567:22-567:31) " callback" -(963:31-966:4) "(_child); // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows:\n" --> (567:31-568:4) "(_child);" -(966:4-966:8) " var" --> (568:4-568:8) "\tvar" -(966:8-966:19) " childKey =" --> (568:8-568:19) " childKey =" -(966:19-966:33) " nameSoFar ===" --> (568:19-568:33) " nameSoFar ===" -(966:33-966:38) " '' ?" --> (568:33-568:38) " '' ?" -(966:38-966:50) " SEPARATOR +" --> (568:38-568:50) " SEPARATOR +" -(966:50-966:64) " getElementKey" --> (568:50-568:64) " getElementKey" -(966:64-966:72) "(_child," --> (568:64-568:72) "(_child," -(966:72-966:77) " 0) :" --> (568:72-568:77) " 0) :" -(966:77-968:4) " nameSoFar;\n" --> (568:77-569:0) " nameSoFar;" -(968:4-968:8) " if " --> (569:0-569:8) "\n\t\t\t\tif " -(968:8-968:14) "(Array" --> (569:8-569:14) "(Array" -(968:14-968:22) ".isArray" --> (569:14-569:22) ".isArray" -(968:22-968:36) "(mappedChild))" --> (569:22-569:36) "(mappedChild))" -(968:36-969:6) " {" --> (569:36-570:5) " {" -(969:6-969:10) " var" --> (570:5-570:9) "\tvar" -(969:10-969:28) " escapedChildKey =" --> (570:9-570:27) " escapedChildKey =" -(969:28-971:6) " '';\n" --> (570:27-571:0) " '';" -(971:6-971:10) " if " --> (571:0-571:9) "\n\t\t\t\t\tif " -(971:10-971:22) "(childKey !=" --> (571:9-571:21) "(childKey !=" -(971:22-971:28) " null)" --> (571:21-571:27) " null)" -(971:28-972:8) " {" --> (571:27-572:0) " {" -(972:8-972:26) " escapedChildKey =" --> (572:0-572:24) "\n\t\t\t\t\t\tescapedChildKey =" -(972:26-972:48) " escapeUserProvidedKey" --> (572:24-572:46) " escapeUserProvidedKey" -(972:48-972:60) "(childKey) +" --> (572:46-572:58) "(childKey) +" -(972:60-973:7) " '/';" --> (572:58-573:5) " '/';" -(973:7-975:6) "}\n" --> (573:5-574:0) "\t}" -(975:6-975:19) " mapIntoArray" --> (574:0-574:18) "\n\t\t\t\t\tmapIntoArray" -(975:19-975:32) "(mappedChild," --> (574:18-574:31) "(mappedChild," -(975:32-975:39) " array," --> (574:31-574:38) " array," -(975:39-975:56) " escapedChildKey," --> (574:38-574:55) " escapedChildKey," -(975:56-975:60) " ''," --> (574:55-574:59) " ''," -(975:60-975:70) " function " --> (574:59-574:68) " function" -(975:70-975:73) "(c)" --> (574:68-574:71) "(c)" -(975:73-976:8) " {" --> (574:71-575:0) " {" -(976:8-976:15) " return" --> (575:0-575:13) "\n\t\t\t\t\t\treturn" -(976:15-977:7) " c;" --> (575:13-576:5) " c;" -(977:7-978:5) "});" --> (576:5-577:4) "\t});" -(978:5-978:15) "} else if " --> (577:4-577:15) "\t} else if " -(978:15-978:30) "(mappedChild !=" --> (577:15-577:30) "(mappedChild !=" -(978:30-978:36) " null)" --> (577:30-577:36) " null)" -(978:36-979:6) " {" --> (577:36-578:0) " {" -(979:6-979:10) " if " --> (578:0-578:9) "\n\t\t\t\t\tif " -(979:10-979:25) "(isValidElement" --> (578:9-578:24) "(isValidElement" -(979:25-979:39) "(mappedChild))" --> (578:24-578:38) "(mappedChild))" -(979:39-980:8) " {" --> (578:38-579:0) " {" -(980:8-980:22) " mappedChild =" --> (579:0-579:20) "\n\t\t\t\t\t\tmappedChild =" -(980:22-980:41) " cloneAndReplaceKey" --> (579:20-579:39) " cloneAndReplaceKey" -(980:41-982:8) "(mappedChild, // Keep both the (mapped) and old keys if they differ, just as\n // traverseAllChildren used to do for objects as children" --> (579:39-579:52) "(mappedChild," -(982:8-983:8) " escapedPrefix + ( // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key" --> (579:52-579:69) " escapedPrefix + " -(983:8-983:20) " mappedChild" --> (579:69-579:81) "(mappedChild" -(983:20-983:29) ".key && (" --> (579:81-579:91) ".key && ( " -(983:29-983:39) "!_child ||" --> (579:91-579:101) "!_child ||" -(983:39-983:46) " _child" --> (579:101-579:108) " _child" -(983:46-983:54) ".key !==" --> (579:108-579:116) ".key !==" -(983:54-983:66) " mappedChild" --> (579:116-579:128) " mappedChild" -(983:66-984:8) ".key) ? // $FlowFixMe Flow incorrectly thinks existing element's key can be a number" --> (579:128-579:135) ".key) ?" -(984:8-984:30) " escapeUserProvidedKey" --> (579:135-579:157) " escapeUserProvidedKey" -(984:30-984:35) "('' +" --> (579:157-579:162) "('' +" -(984:35-984:47) " mappedChild" --> (579:162-579:174) " mappedChild" -(984:47-984:54) ".key) +" --> (579:174-579:181) ".key) +" -(984:54-984:60) " '/' :" --> (579:181-579:187) " '/' :" -(984:60-984:66) " '') +" --> (579:187-579:193) " '') +" -(984:66-985:7) " childKey);" --> (579:193-580:5) " childKey);" -(985:7-987:6) "}\n" --> (580:5-581:0) "\t}" -(987:6-987:12) " array" --> (581:0-581:11) "\n\t\t\t\t\tarray" -(987:12-987:17) ".push" --> (581:11-581:16) ".push" -(987:17-988:5) "(mappedChild);" --> (581:16-582:4) "(mappedChild);" -(988:5-990:4) "}\n" --> (582:4-583:0) "\t}" -(990:4-990:11) " return" --> (583:0-583:11) "\n\t\t\t\treturn" -(990:11-991:3) " 1;" --> (583:11-584:3) " 1;" -(991:3-993:2) "}\n" --> (584:3-585:3) "\t}" -(993:2-993:6) " var" --> (585:3-585:7) "\tvar" -(993:6-994:2) " child;" --> (585:7-586:3) " child;" -(994:2-994:6) " var" --> (586:3-586:7) "\tvar" -(994:6-995:2) " nextName;" --> (586:7-587:3) " nextName;" -(995:2-995:6) " var" --> (587:3-587:7) "\tvar" -(995:6-995:21) " subtreeCount =" --> (587:7-587:22) " subtreeCount =" -(995:21-997:2) " 0; // Count of children found in the current subtree.\n" --> (587:22-588:3) " 0;" -(997:2-997:6) " var" --> (588:3-588:7) "\tvar" -(997:6-997:23) " nextNamePrefix =" --> (588:7-588:24) " nextNamePrefix =" -(997:23-997:37) " nameSoFar ===" --> (588:24-588:38) " nameSoFar ===" -(997:37-997:42) " '' ?" --> (588:38-588:43) " '' ?" -(997:42-997:54) " SEPARATOR :" --> (588:43-588:55) " SEPARATOR :" -(997:54-997:66) " nameSoFar +" --> (588:55-588:67) " nameSoFar +" -(997:66-999:2) " SUBSEPARATOR;\n" --> (588:67-589:0) " SUBSEPARATOR;" -(999:2-999:6) " if " --> (589:0-589:7) "\n\t\t\tif " -(999:6-999:12) "(Array" --> (589:7-589:13) "(Array" -(999:12-999:20) ".isArray" --> (589:13-589:21) ".isArray" -(999:20-999:31) "(children))" --> (589:21-589:32) "(children))" -(999:31-1000:4) " {" --> (589:32-590:0) " {" -(1000:4-1000:9) " for " --> (590:0-590:9) "\n\t\t\t\tfor " -(1000:9-1000:13) "(var" --> (590:9-590:13) "(var" -(1000:13-1000:17) " i =" --> (590:13-590:17) " i =" -(1000:17-1000:20) " 0;" --> (590:17-590:20) " 0;" -(1000:20-1000:24) " i <" --> (590:20-590:24) " i <" -(1000:24-1000:33) " children" --> (590:24-590:33) " children" -(1000:33-1000:41) ".length;" --> (590:33-590:41) ".length;" -(1000:41-1000:46) " i++)" --> (590:41-590:49) " i++)\t\t\t" -(1000:46-1001:6) " {" --> (590:49-591:0) "\t{" -(1001:6-1001:14) " child =" --> (591:0-591:13) "\n\t\t\t\t\tchild =" -(1001:14-1001:23) " children" --> (591:13-591:22) " children" -(1001:23-1002:6) "[i];" --> (591:22-592:0) "[i];" -(1002:6-1002:17) " nextName =" --> (592:0-592:16) "\n\t\t\t\t\tnextName =" -(1002:17-1002:34) " nextNamePrefix +" --> (592:16-592:33) " nextNamePrefix +" -(1002:34-1002:48) " getElementKey" --> (592:33-592:47) " getElementKey" -(1002:48-1002:55) "(child," --> (592:47-592:54) "(child," -(1002:55-1003:6) " i);" --> (592:54-593:0) " i);" -(1003:6-1003:22) " subtreeCount +=" --> (593:0-593:21) "\n\t\t\t\t\tsubtreeCount +=" -(1003:22-1003:35) " mapIntoArray" --> (593:21-593:34) " mapIntoArray" -(1003:35-1003:42) "(child," --> (593:34-593:41) "(child," -(1003:42-1003:49) " array," --> (593:41-593:48) " array," -(1003:49-1003:64) " escapedPrefix," --> (593:48-593:63) " escapedPrefix," -(1003:64-1003:74) " nextName," --> (593:63-593:73) " nextName," -(1003:74-1004:5) " callback);" --> (593:73-594:4) " callback);" -(1004:5-1005:3) "}" --> (594:4-595:3) "\t}" -(1005:3-1005:9) "} else" --> (595:3-595:10) "\t} else" -(1005:9-1006:4) " {" --> (595:10-596:4) " {" -(1006:4-1006:8) " var" --> (596:4-596:8) "\tvar" -(1006:8-1006:21) " iteratorFn =" --> (596:8-596:21) " iteratorFn =" -(1006:21-1006:35) " getIteratorFn" --> (596:21-596:35) " getIteratorFn" -(1006:35-1008:4) "(children);\n" --> (596:35-597:0) "(children);" -(1008:4-1008:15) " if (typeof" --> (597:0-597:15) "\n\t\t\t\tif (typeof" -(1008:15-1008:30) " iteratorFn ===" --> (597:15-597:30) " iteratorFn ===" -(1008:30-1008:42) " 'function')" --> (597:30-597:42) " 'function')" -(1008:42-1009:6) " {" --> (597:42-598:5) " {" -(1009:6-1009:10) " var" --> (598:5-598:9) "\tvar" -(1009:10-1009:29) " iterableChildren =" --> (598:9-598:28) " iterableChildren =" -(1009:29-1011:6) " children;\n" --> (598:28-599:5) " children;" -(1011:6-1013:8) " {\n // Warn about using Maps as children" --> (599:5-600:0) "\t{" -(1013:8-1013:12) " if " --> (600:0-600:10) "\n\t\t\t\t\t\tif " -(1013:12-1013:27) "(iteratorFn ===" --> (600:10-600:25) "(iteratorFn ===" -(1013:27-1013:44) " iterableChildren" --> (600:25-600:42) " iterableChildren" -(1013:44-1013:53) ".entries)" --> (600:42-600:51) ".entries)" -(1013:53-1014:10) " {" --> (600:51-601:0) " {" -(1014:10-1014:15) " if (" --> (601:0-601:13) "\n\t\t\t\t\t\t\tif ( " -(1014:15-1014:33) "!didWarnAboutMaps)" --> (601:13-601:31) "!didWarnAboutMaps)" -(1014:33-1015:12) " {" --> (601:31-602:0) " {" -(1015:12-1015:17) " warn" --> (602:0-602:13) "\n\t\t\t\t\t\t\t\twarn" -(1015:17-1015:63) "('Using Maps as children is not supported. ' +" --> (602:13-602:59) "('Using Maps as children is not supported. ' +" -(1015:63-1016:11) " 'Use an array of keyed ReactElements instead.');" --> (602:59-603:7) " 'Use an array of keyed ReactElements instead.');" -(1016:11-1018:10) "}\n" --> (603:7-604:0) "\t}" -(1018:10-1018:29) " didWarnAboutMaps =" --> (604:0-604:26) "\n\t\t\t\t\t\t\tdidWarnAboutMaps =" -(1018:29-1019:9) " true;" --> (604:26-605:6) " true;" -(1019:9-1020:7) "}" --> (605:6-606:5) "\t}" -(1020:7-1022:6) "}\n" --> (606:5-607:5) "\t}" -(1022:6-1022:10) " var" --> (607:5-607:9) "\tvar" -(1022:10-1022:21) " iterator =" --> (607:9-607:20) " iterator =" -(1022:21-1022:32) " iteratorFn" --> (607:20-607:31) " iteratorFn" -(1022:32-1022:37) ".call" --> (607:31-607:36) ".call" -(1022:37-1023:6) "(iterableChildren);" --> (607:36-608:5) "(iterableChildren);" -(1023:6-1023:10) " var" --> (608:5-608:9) "\tvar" -(1023:10-1024:6) " step;" --> (608:9-609:5) " step;" -(1024:6-1024:10) " var" --> (609:5-609:9) "\tvar" -(1024:10-1024:15) " ii =" --> (609:9-609:14) " ii =" -(1024:15-1026:6) " 0;\n" --> (609:14-610:0) " 0;" -(1026:6-1026:15) " while (!" --> (610:0-610:14) "\n\t\t\t\t\twhile( !" -(1026:15-1026:22) "(step =" --> (610:14-610:21) "(step =" -(1026:22-1026:31) " iterator" --> (610:21-610:30) " iterator" -(1026:31-1026:39) ".next())" --> (610:30-610:38) ".next())" -(1026:39-1026:45) ".done)" --> (610:38-610:48) ".done)\t\t\t\t" -(1026:45-1027:8) " {" --> (610:48-611:0) "\t{" -(1027:8-1027:16) " child =" --> (611:0-611:14) "\n\t\t\t\t\t\tchild =" -(1027:16-1027:21) " step" --> (611:14-611:19) " step" -(1027:21-1028:8) ".value;" --> (611:19-612:0) ".value;" -(1028:8-1028:19) " nextName =" --> (612:0-612:17) "\n\t\t\t\t\t\tnextName =" -(1028:19-1028:36) " nextNamePrefix +" --> (612:17-612:34) " nextNamePrefix +" -(1028:36-1028:50) " getElementKey" --> (612:34-612:48) " getElementKey" -(1028:50-1028:57) "(child," --> (612:48-612:55) "(child," -(1028:57-1029:8) " ii++);" --> (612:55-613:0) " ii++);" -(1029:8-1029:24) " subtreeCount +=" --> (613:0-613:22) "\n\t\t\t\t\t\tsubtreeCount +=" -(1029:24-1029:37) " mapIntoArray" --> (613:22-613:35) " mapIntoArray" -(1029:37-1029:44) "(child," --> (613:35-613:42) "(child," -(1029:44-1029:51) " array," --> (613:42-613:49) " array," -(1029:51-1029:66) " escapedPrefix," --> (613:49-613:64) " escapedPrefix," -(1029:66-1029:76) " nextName," --> (613:64-613:74) " nextName," -(1029:76-1030:7) " callback);" --> (613:74-614:5) " callback);" -(1030:7-1031:5) "}" --> (614:5-615:4) "\t}" -(1031:5-1031:15) "} else if " --> (615:4-615:15) "\t} else if " -(1031:15-1031:24) "(type ===" --> (615:15-615:24) "(type ===" -(1031:24-1031:34) " 'object')" --> (615:24-615:34) " 'object')" -(1031:34-1032:6) " {" --> (615:34-616:5) " {" -(1032:6-1032:10) " var" --> (616:5-616:9) "\tvar" -(1032:10-1032:27) " childrenString =" --> (616:9-616:26) " childrenString =" -(1032:27-1032:32) " '' +" --> (616:26-616:31) " '' +" -(1032:32-1034:6) " children;\n" --> (616:31-617:5) " children;" -(1034:6-1035:8) " {" --> (617:5-618:6) "\t{" -(1035:8-1036:10) " {" --> (618:6-619:0) "\t{" -(1036:10-1036:16) " throw" --> (619:0-619:13) "\n\t\t\t\t\t\t\tthrow" -(1036:16-1036:23) " Error(" --> (619:13-619:19) " Error" -(1036:23-1036:76) " \"Objects are not valid as a React child (found: \" + " --> (619:19-619:72) "('Objects are not valid as a React child (found: ' + " -(1036:76-1036:95) "(childrenString ===" --> (619:72-619:91) "(childrenString ===" -(1036:95-1036:115) " '[object Object]' ?" --> (619:91-619:111) " '[object Object]' ?" -(1036:115-1036:138) " 'object with keys {' +" --> (619:111-619:134) " 'object with keys {' +" -(1036:138-1036:145) " Object" --> (619:134-619:141) " Object" -(1036:145-1036:150) ".keys" --> (619:141-619:146) ".keys" -(1036:150-1036:160) "(children)" --> (619:146-619:156) "(children)" -(1036:160-1036:165) ".join" --> (619:156-619:161) ".join" -(1036:165-1036:173) "(', ') +" --> (619:161-619:169) "(', ') +" -(1036:173-1036:179) " '}' :" --> (619:169-619:175) " '}' :" -(1036:179-1036:197) " childrenString) +" --> (619:175-619:193) " childrenString) +" -(1036:197-1037:9) " \"). If you meant to render a collection of children, use an array instead.\" );" --> (619:193-620:6) " '). If you meant to render a collection of children, use an array instead.');" -(1037:9-1038:7) "}" --> (620:6-621:5) "\t}" -(1038:7-1039:5) "}" --> (621:5-622:4) "\t}" -(1039:5-1040:3) "}" --> (622:4-623:3) "\t}" -(1040:3-1042:2) "}\n" --> (623:3-624:0) "\t}" -(1042:2-1042:9) " return" --> (624:0-624:10) "\n\t\t\treturn" -(1042:9-1043:1) " subtreeCount;" --> (624:10-625:2) " subtreeCount;" -(1043:1-1058:0) "}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenmap\n *\n * The provided mapFunction(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */" --> (625:2-626:2) "\t}" -(1058:0-1058:9) "\nfunction" --> (626:2-626:11) "\tfunction" -(1058:9-1058:21) " mapChildren" --> (626:11-626:23) " mapChildren" -(1058:21-1058:31) "(children," --> (626:23-626:33) "(children," -(1058:31-1058:37) " func," --> (626:33-626:39) " func," -(1058:37-1058:46) " context)" --> (626:39-626:48) " context)" -(1058:46-1059:2) " {" --> (626:48-627:0) " {" -(1059:2-1059:6) " if " --> (627:0-627:7) "\n\t\t\tif " -(1059:6-1059:18) "(children ==" --> (627:7-627:19) "(children ==" -(1059:18-1059:24) " null)" --> (627:19-627:25) " null)" -(1059:24-1060:4) " {" --> (627:25-628:0) " {" -(1060:4-1060:11) " return" --> (628:0-628:11) "\n\t\t\t\treturn" -(1060:11-1061:3) " children;" --> (628:11-629:3) " children;" -(1061:3-1063:2) "}\n" --> (629:3-630:3) "\t}" -(1063:2-1063:6) " var" --> (630:3-630:7) "\tvar" -(1063:6-1063:15) " result =" --> (630:7-630:16) " result =" -(1063:15-1063:17) " [" --> (630:16-630:18) " [" -(1063:17-1064:2) "];" --> (630:18-631:3) "];" -(1064:2-1064:6) " var" --> (631:3-631:7) "\tvar" -(1064:6-1064:14) " count =" --> (631:7-631:15) " count =" -(1064:14-1065:2) " 0;" --> (631:15-632:0) " 0;" -(1065:2-1065:15) " mapIntoArray" --> (632:0-632:16) "\n\t\t\tmapIntoArray" -(1065:15-1065:25) "(children," --> (632:16-632:26) "(children," -(1065:25-1065:33) " result," --> (632:26-632:34) " result," -(1065:33-1065:37) " ''," --> (632:34-632:38) " ''," -(1065:37-1065:41) " ''," --> (632:38-632:42) " ''," -(1065:41-1065:51) " function " --> (632:42-632:51) " function" -(1065:51-1065:58) "(child)" --> (632:51-632:58) "(child)" -(1065:58-1066:4) " {" --> (632:58-633:0) " {" -(1066:4-1066:11) " return" --> (633:0-633:11) "\n\t\t\t\treturn" -(1066:11-1066:16) " func" --> (633:11-633:16) " func" -(1066:16-1066:21) ".call" --> (633:16-633:21) ".call" -(1066:21-1066:30) "(context," --> (633:21-633:30) "(context," -(1066:30-1066:37) " child," --> (633:30-633:37) " child," -(1066:37-1067:3) " count++);" --> (633:37-634:3) " count++);" -(1067:3-1068:2) "});" --> (634:3-635:0) "\t});" -(1068:2-1068:9) " return" --> (635:0-635:10) "\n\t\t\treturn" -(1068:9-1069:1) " result;" --> (635:10-636:2) " result;" -(1069:1-1081:0) "}\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrencount\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\n\n" --> (636:2-637:2) "\t}" -(1081:0-1081:9) "\nfunction" --> (637:2-637:11) "\tfunction" -(1081:9-1081:23) " countChildren" --> (637:11-637:25) " countChildren" -(1081:23-1081:33) "(children)" --> (637:25-637:35) "(children)" -(1081:33-1082:2) " {" --> (637:35-638:3) " {" -(1082:2-1082:6) " var" --> (638:3-638:7) "\tvar" -(1082:6-1082:10) " n =" --> (638:7-638:11) " n =" -(1082:10-1083:2) " 0;" --> (638:11-639:0) " 0;" -(1083:2-1083:14) " mapChildren" --> (639:0-639:15) "\n\t\t\tmapChildren" -(1083:14-1083:24) "(children," --> (639:15-639:25) "(children," -(1083:24-1083:36) " function ()" --> (639:25-639:36) " function()" -(1083:36-1084:4) " {" --> (639:36-640:0) " {" -(1084:4-1085:3) " n++; // Don't return anything" --> (640:0-641:3) "\n\t\t\t\tn++;" -(1085:3-1086:2) "});" --> (641:3-642:0) "\t});" -(1086:2-1086:9) " return" --> (642:0-642:10) "\n\t\t\treturn" -(1086:9-1087:1) " n;" --> (642:10-643:2) " n;" -(1087:1-1101:0) "}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenforeach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */" --> (643:2-644:2) "\t}" -(1101:0-1101:9) "\nfunction" --> (644:2-644:11) "\tfunction" -(1101:9-1101:25) " forEachChildren" --> (644:11-644:27) " forEachChildren" -(1101:25-1101:35) "(children," --> (644:27-644:37) "(children," -(1101:35-1101:48) " forEachFunc," --> (644:37-644:50) " forEachFunc," -(1101:48-1101:64) " forEachContext)" --> (644:50-644:66) " forEachContext)" -(1101:64-1102:2) " {" --> (644:66-645:0) " {" -(1102:2-1102:14) " mapChildren" --> (645:0-645:15) "\n\t\t\tmapChildren" -(1102:14-1102:24) "(children," --> (645:15-645:25) "(children," -(1102:24-1102:36) " function ()" --> (645:25-645:36) " function()" -(1102:36-1103:4) " {" --> (645:36-646:0) " {" -(1103:4-1103:16) " forEachFunc" --> (646:0-646:16) "\n\t\t\t\tforEachFunc" -(1103:16-1103:22) ".apply" --> (646:16-646:22) ".apply" -(1103:22-1103:28) "(this," --> (646:22-646:28) "(this," -(1103:28-1104:3) " arguments); // Don't return anything." --> (646:28-647:3) " arguments);" -(1104:3-1104:5) "}," --> (647:3-647:6) "\t}," -(1104:5-1105:1) " forEachContext);" --> (647:6-648:2) " forEachContext);" -(1105:1-1114:0) "}\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrentoarray\n */\n\n" --> (648:2-649:2) "\t}" -(1114:0-1114:9) "\nfunction" --> (649:2-649:11) "\tfunction" -(1114:9-1114:17) " toArray" --> (649:11-649:19) " toArray" -(1114:17-1114:27) "(children)" --> (649:19-649:29) "(children)" -(1114:27-1115:2) " {" --> (649:29-650:0) " {" -(1115:2-1115:9) " return" --> (650:0-650:10) "\n\t\t\treturn" -(1115:9-1115:21) " mapChildren" --> (650:10-650:22) " mapChildren" -(1115:21-1115:31) "(children," --> (650:22-650:32) "(children," -(1115:31-1115:41) " function " --> (650:32-650:41) " function" -(1115:41-1115:48) "(child)" --> (650:41-650:48) "(child)" -(1115:48-1116:4) " {" --> (650:48-651:0) " {" -(1116:4-1116:11) " return" --> (651:0-651:11) "\n\t\t\t\treturn" -(1116:11-1117:3) " child;" --> (651:11-652:3) " child;" -(1117:3-1117:8) "}) ||" --> (652:3-652:9) "\t}) ||" -(1117:8-1117:10) " [" --> (652:9-652:11) " [" -(1117:10-1118:1) "];" --> (652:11-653:2) "];" -(1118:1-1135:0) "}\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenonly\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\n\n" --> (653:2-654:2) "\t}" -(1135:0-1135:9) "\nfunction" --> (654:2-654:11) "\tfunction" -(1135:9-1135:19) " onlyChild" --> (654:11-654:21) " onlyChild" -(1135:19-1135:29) "(children)" --> (654:21-654:31) "(children)" -(1135:29-1136:2) " {" --> (654:31-655:0) " {" -(1136:2-1136:7) " if (" --> (655:0-655:9) "\n\t\t\tif ( " -(1136:7-1136:22) "!isValidElement" --> (655:9-655:24) "!isValidElement" -(1136:22-1136:33) "(children))" --> (655:24-655:35) "(children))" -(1136:33-1137:4) " {" --> (655:35-656:4) " {" -(1137:4-1138:6) " {" --> (656:4-657:0) "\t{" -(1138:6-1138:12) " throw" --> (657:0-657:11) "\n\t\t\t\t\tthrow" -(1138:12-1138:19) " Error(" --> (657:11-657:17) " Error" -(1138:19-1139:5) " \"React.Children.only expected to receive a single React element child.\" );" --> (657:17-658:4) "('React.Children.only expected to receive a single React element child.');" -(1139:5-1140:3) "}" --> (658:4-659:3) "\t}" -(1140:3-1142:2) "}\n" --> (659:3-660:0) "\t}" -(1142:2-1142:9) " return" --> (660:0-660:10) "\n\t\t\treturn" -(1142:9-1143:1) " children;" --> (660:10-661:2) " children;" -(1143:1-1145:0) "}\n" --> (661:2-662:2) "\t}" -(1145:0-1145:9) "\nfunction" --> (662:2-662:11) "\tfunction" -(1145:9-1145:23) " createContext" --> (662:11-662:25) " createContext" -(1145:23-1145:37) "(defaultValue," --> (662:25-662:39) "(defaultValue," -(1145:37-1145:59) " calculateChangedBits)" --> (662:39-662:61) " calculateChangedBits)" -(1145:59-1146:2) " {" --> (662:61-663:0) " {" -(1146:2-1146:6) " if " --> (663:0-663:7) "\n\t\t\tif " -(1146:6-1146:31) "(calculateChangedBits ===" --> (663:7-663:32) "(calculateChangedBits ===" -(1146:31-1146:42) " undefined)" --> (663:32-663:43) " undefined)" -(1146:42-1147:4) " {" --> (663:43-664:0) " {" -(1147:4-1147:27) " calculateChangedBits =" --> (664:0-664:27) "\n\t\t\t\tcalculateChangedBits =" -(1147:27-1148:3) " null;" --> (664:27-665:3) " null;" -(1148:3-1148:9) "} else" --> (665:3-665:10) "\t} else" -(1148:9-1149:4) " {" --> (665:10-666:4) " {" -(1149:4-1150:6) " {" --> (666:4-667:0) "\t{" -(1150:6-1150:10) " if " --> (667:0-667:9) "\n\t\t\t\t\tif " -(1150:10-1150:35) "(calculateChangedBits !==" --> (667:9-667:34) "(calculateChangedBits !==" -(1150:35-1150:50) " null && typeof" --> (667:34-667:49) " null && typeof" -(1150:50-1150:75) " calculateChangedBits !==" --> (667:49-667:74) " calculateChangedBits !==" -(1150:75-1150:87) " 'function')" --> (667:74-667:86) " 'function')" -(1150:87-1151:8) " {" --> (667:86-668:0) " {" -(1151:8-1151:14) " error" --> (668:0-668:12) "\n\t\t\t\t\t\terror" -(1151:14-1151:80) "('createContext: Expected the optional second argument to be a ' +" --> (668:12-668:78) "('createContext: Expected the optional second argument to be a ' +" -(1151:80-1151:114) " 'function. Instead received: %s'," --> (668:78-668:112) " 'function. Instead received: %s'," -(1151:114-1152:7) " calculateChangedBits);" --> (668:112-669:5) " calculateChangedBits);" -(1152:7-1153:5) "}" --> (669:5-670:4) "\t}" -(1153:5-1154:3) "}" --> (670:4-671:3) "\t}" -(1154:3-1156:2) "}\n" --> (671:3-672:3) "\t}" -(1156:2-1156:6) " var" --> (672:3-672:7) "\tvar" -(1156:6-1156:16) " context =" --> (672:7-672:17) " context =" -(1156:16-1157:4) " {" --> (672:17-673:4) " {" -(1157:4-1157:14) " $$typeof:" --> (673:4-673:13) "\t$$typeof" -(1157:14-1158:4) " REACT_CONTEXT_TYPE," --> (673:13-674:4) ":REACT_CONTEXT_TYPE," -(1158:4-1158:27) " _calculateChangedBits:" --> (674:4-674:26) "\t_calculateChangedBits" -(1158:27-1164:4) " calculateChangedBits,\n // As a workaround to support multiple concurrent renderers, we categorize\n // some renderers as primary and others as secondary. We only expect\n // there to be two concurrent renderers at most: React Native (primary) and\n // Fabric (secondary); React DOM (primary) and React ART (secondary).\n // Secondary renderers store their context values on separate fields." --> (674:26-675:4) ":calculateChangedBits," -(1164:4-1164:19) " _currentValue:" --> (675:4-675:18) "\t_currentValue" -(1164:19-1165:4) " defaultValue," --> (675:18-676:4) ":defaultValue," -(1165:4-1165:20) " _currentValue2:" --> (676:4-676:19) "\t_currentValue2" -(1165:20-1168:4) " defaultValue,\n // Used to track how many concurrent renderers this context currently\n // supports within in a single renderer. Such as parallel server rendering." --> (676:19-677:4) ":defaultValue," -(1168:4-1168:18) " _threadCount:" --> (677:4-677:17) "\t_threadCount" -(1168:18-1170:4) " 0,\n // These are circular" --> (677:17-678:4) ":0," -(1170:4-1170:14) " Provider:" --> (678:4-678:13) "\tProvider" -(1170:14-1171:4) " null," --> (678:13-679:4) ":null," -(1171:4-1171:14) " Consumer:" --> (679:4-679:13) "\tConsumer" -(1171:14-1172:3) " null" --> (679:13-680:4) ":null" -(1172:3-1173:2) "};" --> (680:4-681:0) "};" -(1173:2-1173:10) " context" --> (681:0-681:11) "\n\t\t\tcontext" -(1173:10-1173:21) ".Provider =" --> (681:11-681:22) ".Provider =" -(1173:21-1174:4) " {" --> (681:22-682:4) " {" -(1174:4-1174:14) " $$typeof:" --> (682:4-682:13) "\t$$typeof" -(1174:14-1175:4) " REACT_PROVIDER_TYPE," --> (682:13-683:4) ":REACT_PROVIDER_TYPE," -(1175:4-1175:14) " _context:" --> (683:4-683:13) "\t_context" -(1175:14-1176:3) " context" --> (683:13-684:4) ":context" -(1176:3-1177:2) "};" --> (684:4-685:3) "};" -(1177:2-1177:6) " var" --> (685:3-685:7) "\tvar" -(1177:6-1177:50) " hasWarnedAboutUsingNestedContextConsumers =" --> (685:7-685:51) " hasWarnedAboutUsingNestedContextConsumers =" -(1177:50-1178:2) " false;" --> (685:51-686:3) " false;" -(1178:2-1178:6) " var" --> (686:3-686:7) "\tvar" -(1178:6-1178:44) " hasWarnedAboutUsingConsumerProvider =" --> (686:7-686:45) " hasWarnedAboutUsingConsumerProvider =" -(1178:44-1179:2) " false;" --> (686:45-687:3) " false;" -(1179:2-1179:6) " var" --> (687:3-687:7) "\tvar" -(1179:6-1179:44) " hasWarnedAboutDisplayNameOnConsumer =" --> (687:7-687:45) " hasWarnedAboutDisplayNameOnConsumer =" -(1179:44-1181:2) " false;\n" --> (687:45-688:3) " false;" -(1181:2-1185:4) " {\n // A separate object, but proxies back to the original context object for\n // backwards compatibility. It has a different $$typeof, so we can properly\n // warn for the incorrect usage of Context as a Consumer." --> (688:3-689:4) "\t{" -(1185:4-1185:8) " var" --> (689:4-689:8) "\tvar" -(1185:8-1185:19) " Consumer =" --> (689:8-689:19) " Consumer =" -(1185:19-1186:6) " {" --> (689:19-690:5) " {" -(1186:6-1186:16) " $$typeof:" --> (690:5-690:14) "\t$$typeof" -(1186:16-1187:6) " REACT_CONTEXT_TYPE," --> (690:14-691:5) ":REACT_CONTEXT_TYPE," -(1187:6-1187:16) " _context:" --> (691:5-691:14) "\t_context" -(1187:16-1188:6) " context," --> (691:14-692:5) ":context," -(1188:6-1188:29) " _calculateChangedBits:" --> (692:5-692:27) "\t_calculateChangedBits" -(1188:29-1188:37) " context" --> (692:27-692:35) ":context" -(1188:37-1189:5) "._calculateChangedBits" --> (692:35-693:5) "._calculateChangedBits" -(1189:5-1191:4) "}; // $FlowFixMe: Flow complains about not setting a value, which is intentional here\n" --> (693:5-694:0) "};" -(1191:4-1191:11) " Object" --> (694:0-694:11) "\n\t\t\t\tObject" -(1191:11-1191:28) ".defineProperties" --> (694:11-694:28) ".defineProperties" -(1191:28-1191:38) "(Consumer," --> (694:28-694:38) "(Consumer," -(1191:38-1192:6) " {" --> (694:38-695:5) " {" -(1192:6-1192:16) " Provider:" --> (695:5-695:14) "\tProvider" -(1192:16-1193:8) " {" --> (695:14-696:6) ":{" -(1193:8-1193:13) " get:" --> (696:6-696:10) "\tget" -(1193:13-1193:25) " function ()" --> (696:10-696:21) ":function()" -(1193:25-1194:10) " {" --> (696:21-697:0) " {" -(1194:10-1194:15) " if (" --> (697:0-697:13) "\n\t\t\t\t\t\t\tif ( " -(1194:15-1194:52) "!hasWarnedAboutUsingConsumerProvider)" --> (697:13-697:50) "!hasWarnedAboutUsingConsumerProvider)" -(1194:52-1195:12) " {" --> (697:50-698:0) " {" -(1195:12-1195:50) " hasWarnedAboutUsingConsumerProvider =" --> (698:0-698:46) "\n\t\t\t\t\t\t\t\thasWarnedAboutUsingConsumerProvider =" -(1195:50-1197:12) " true;\n" --> (698:46-699:0) " true;" -(1197:12-1197:18) " error" --> (699:0-699:14) "\n\t\t\t\t\t\t\t\terror" -(1197:18-1197:101) "('Rendering is not supported and will be removed in ' +" --> (699:14-699:97) "('Rendering is not supported and will be removed in ' +" -(1197:101-1198:11) " 'a future major release. Did you mean to render instead?');" --> (699:97-700:7) " 'a future major release. Did you mean to render instead?');" -(1198:11-1200:10) "}\n" --> (700:7-701:0) "\t}" -(1200:10-1200:17) " return" --> (701:0-701:14) "\n\t\t\t\t\t\t\treturn" -(1200:17-1200:25) " context" --> (701:14-701:22) " context" -(1200:25-1201:9) ".Provider;" --> (701:22-702:6) ".Provider;" -(1201:9-1202:8) "}," --> (702:6-703:6) "\t}," -(1202:8-1202:13) " set:" --> (703:6-703:10) "\tset" -(1202:13-1202:23) " function " --> (703:10-703:19) ":function" -(1202:23-1202:34) "(_Provider)" --> (703:19-703:30) "(_Provider)" -(1202:34-1203:10) " {" --> (703:30-704:0) " {" -(1203:10-1203:18) " context" --> (704:0-704:15) "\n\t\t\t\t\t\t\tcontext" -(1203:18-1203:29) ".Provider =" --> (704:15-704:26) ".Provider =" -(1203:29-1204:9) " _Provider;" --> (704:26-705:6) " _Provider;" -(1204:9-1205:7) "}" --> (705:6-706:6) "\t}" -(1205:7-1206:6) "}," --> (706:6-707:5) "}," -(1206:6-1206:21) " _currentValue:" --> (707:5-707:19) "\t_currentValue" -(1206:21-1207:8) " {" --> (707:19-708:6) ":{" -(1207:8-1207:13) " get:" --> (708:6-708:10) "\tget" -(1207:13-1207:25) " function ()" --> (708:10-708:21) ":function()" -(1207:25-1208:10) " {" --> (708:21-709:0) " {" -(1208:10-1208:17) " return" --> (709:0-709:14) "\n\t\t\t\t\t\t\treturn" -(1208:17-1208:25) " context" --> (709:14-709:22) " context" -(1208:25-1209:9) "._currentValue;" --> (709:22-710:6) "._currentValue;" -(1209:9-1210:8) "}," --> (710:6-711:6) "\t}," -(1210:8-1210:13) " set:" --> (711:6-711:10) "\tset" -(1210:13-1210:23) " function " --> (711:10-711:19) ":function" -(1210:23-1210:38) "(_currentValue)" --> (711:19-711:34) "(_currentValue)" -(1210:38-1211:10) " {" --> (711:34-712:0) " {" -(1211:10-1211:18) " context" --> (712:0-712:15) "\n\t\t\t\t\t\t\tcontext" -(1211:18-1211:34) "._currentValue =" --> (712:15-712:31) "._currentValue =" -(1211:34-1212:9) " _currentValue;" --> (712:31-713:6) " _currentValue;" -(1212:9-1213:7) "}" --> (713:6-714:6) "\t}" -(1213:7-1214:6) "}," --> (714:6-715:5) "}," -(1214:6-1214:22) " _currentValue2:" --> (715:5-715:20) "\t_currentValue2" -(1214:22-1215:8) " {" --> (715:20-716:6) ":{" -(1215:8-1215:13) " get:" --> (716:6-716:10) "\tget" -(1215:13-1215:25) " function ()" --> (716:10-716:21) ":function()" -(1215:25-1216:10) " {" --> (716:21-717:0) " {" -(1216:10-1216:17) " return" --> (717:0-717:14) "\n\t\t\t\t\t\t\treturn" -(1216:17-1216:25) " context" --> (717:14-717:22) " context" -(1216:25-1217:9) "._currentValue2;" --> (717:22-718:6) "._currentValue2;" -(1217:9-1218:8) "}," --> (718:6-719:6) "\t}," -(1218:8-1218:13) " set:" --> (719:6-719:10) "\tset" -(1218:13-1218:23) " function " --> (719:10-719:19) ":function" -(1218:23-1218:39) "(_currentValue2)" --> (719:19-719:35) "(_currentValue2)" -(1218:39-1219:10) " {" --> (719:35-720:0) " {" -(1219:10-1219:18) " context" --> (720:0-720:15) "\n\t\t\t\t\t\t\tcontext" -(1219:18-1219:35) "._currentValue2 =" --> (720:15-720:32) "._currentValue2 =" -(1219:35-1220:9) " _currentValue2;" --> (720:32-721:6) " _currentValue2;" -(1220:9-1221:7) "}" --> (721:6-722:6) "\t}" -(1221:7-1222:6) "}," --> (722:6-723:5) "}," -(1222:6-1222:20) " _threadCount:" --> (723:5-723:18) "\t_threadCount" -(1222:20-1223:8) " {" --> (723:18-724:6) ":{" -(1223:8-1223:13) " get:" --> (724:6-724:10) "\tget" -(1223:13-1223:25) " function ()" --> (724:10-724:21) ":function()" -(1223:25-1224:10) " {" --> (724:21-725:0) " {" -(1224:10-1224:17) " return" --> (725:0-725:14) "\n\t\t\t\t\t\t\treturn" -(1224:17-1224:25) " context" --> (725:14-725:22) " context" -(1224:25-1225:9) "._threadCount;" --> (725:22-726:6) "._threadCount;" -(1225:9-1226:8) "}," --> (726:6-727:6) "\t}," -(1226:8-1226:13) " set:" --> (727:6-727:10) "\tset" -(1226:13-1226:23) " function " --> (727:10-727:19) ":function" -(1226:23-1226:37) "(_threadCount)" --> (727:19-727:33) "(_threadCount)" -(1226:37-1227:10) " {" --> (727:33-728:0) " {" -(1227:10-1227:18) " context" --> (728:0-728:15) "\n\t\t\t\t\t\t\tcontext" -(1227:18-1227:33) "._threadCount =" --> (728:15-728:30) "._threadCount =" -(1227:33-1228:9) " _threadCount;" --> (728:30-729:6) " _threadCount;" -(1228:9-1229:7) "}" --> (729:6-730:6) "\t}" -(1229:7-1230:6) "}," --> (730:6-731:5) "}," -(1230:6-1230:16) " Consumer:" --> (731:5-731:14) "\tConsumer" -(1230:16-1231:8) " {" --> (731:14-732:6) ":{" -(1231:8-1231:13) " get:" --> (732:6-732:10) "\tget" -(1231:13-1231:25) " function ()" --> (732:10-732:21) ":function()" -(1231:25-1232:10) " {" --> (732:21-733:0) " {" -(1232:10-1232:15) " if (" --> (733:0-733:13) "\n\t\t\t\t\t\t\tif ( " -(1232:15-1232:58) "!hasWarnedAboutUsingNestedContextConsumers)" --> (733:13-733:56) "!hasWarnedAboutUsingNestedContextConsumers)" -(1232:58-1233:12) " {" --> (733:56-734:0) " {" -(1233:12-1233:56) " hasWarnedAboutUsingNestedContextConsumers =" --> (734:0-734:52) "\n\t\t\t\t\t\t\t\thasWarnedAboutUsingNestedContextConsumers =" -(1233:56-1235:12) " true;\n" --> (734:52-735:0) " true;" -(1235:12-1235:18) " error" --> (735:0-735:14) "\n\t\t\t\t\t\t\t\terror" -(1235:18-1235:101) "('Rendering is not supported and will be removed in ' +" --> (735:14-735:97) "('Rendering is not supported and will be removed in ' +" -(1235:101-1236:11) " 'a future major release. Did you mean to render instead?');" --> (735:97-736:7) " 'a future major release. Did you mean to render instead?');" -(1236:11-1238:10) "}\n" --> (736:7-737:0) "\t}" -(1238:10-1238:17) " return" --> (737:0-737:14) "\n\t\t\t\t\t\t\treturn" -(1238:17-1238:25) " context" --> (737:14-737:22) " context" -(1238:25-1239:9) ".Consumer;" --> (737:22-738:6) ".Consumer;" -(1239:9-1240:7) "}" --> (738:6-739:6) "\t}" -(1240:7-1241:6) "}," --> (739:6-740:5) "}," -(1241:6-1241:19) " displayName:" --> (740:5-740:17) "\tdisplayName" -(1241:19-1242:8) " {" --> (740:17-741:6) ":{" -(1242:8-1242:13) " get:" --> (741:6-741:10) "\tget" -(1242:13-1242:25) " function ()" --> (741:10-741:21) ":function()" -(1242:25-1243:10) " {" --> (741:21-742:0) " {" -(1243:10-1243:17) " return" --> (742:0-742:14) "\n\t\t\t\t\t\t\treturn" -(1243:17-1243:25) " context" --> (742:14-742:22) " context" -(1243:25-1244:9) ".displayName;" --> (742:22-743:6) ".displayName;" -(1244:9-1245:8) "}," --> (743:6-744:6) "\t}," -(1245:8-1245:13) " set:" --> (744:6-744:10) "\tset" -(1245:13-1245:23) " function " --> (744:10-744:19) ":function" -(1245:23-1245:36) "(displayName)" --> (744:19-744:32) "(displayName)" -(1245:36-1246:10) " {" --> (744:32-745:0) " {" -(1246:10-1246:15) " if (" --> (745:0-745:13) "\n\t\t\t\t\t\t\tif ( " -(1246:15-1246:52) "!hasWarnedAboutDisplayNameOnConsumer)" --> (745:13-745:50) "!hasWarnedAboutDisplayNameOnConsumer)" -(1246:52-1247:12) " {" --> (745:50-746:0) " {" -(1247:12-1247:17) " warn" --> (746:0-746:13) "\n\t\t\t\t\t\t\t\twarn" -(1247:17-1247:79) "('Setting `displayName` on Context.Consumer has no effect. ' +" --> (746:13-746:75) "('Setting `displayName` on Context.Consumer has no effect. ' +" -(1247:79-1247:157) " \"You should set it directly on the context with Context.displayName = '%s'.\"," --> (746:75-746:153) " \"You should set it directly on the context with Context.displayName = '%s'.\"," -(1247:157-1249:12) " displayName);\n" --> (746:153-747:0) " displayName);" -(1249:12-1249:50) " hasWarnedAboutDisplayNameOnConsumer =" --> (747:0-747:46) "\n\t\t\t\t\t\t\t\thasWarnedAboutDisplayNameOnConsumer =" -(1249:50-1250:11) " true;" --> (747:46-748:7) " true;" -(1250:11-1251:9) "}" --> (748:7-749:6) "\t}" -(1251:9-1252:7) "}" --> (749:6-750:6) "\t}" -(1252:7-1253:5) "}" --> (750:6-751:5) "}" -(1253:5-1255:4) "}); // $FlowFixMe: Flow complains about missing properties because it doesn't understand defineProperty\n" --> (751:5-752:0) "});" -(1255:4-1255:12) " context" --> (752:0-752:12) "\n\t\t\t\tcontext" -(1255:12-1255:23) ".Consumer =" --> (752:12-752:23) ".Consumer =" -(1255:23-1256:3) " Consumer;" --> (752:23-753:3) " Consumer;" -(1256:3-1258:2) "}\n" --> (753:3-754:3) "\t}" -(1258:2-1259:4) " {" --> (754:3-755:0) "\t{" -(1259:4-1259:12) " context" --> (755:0-755:12) "\n\t\t\t\tcontext" -(1259:12-1259:31) "._currentRenderer =" --> (755:12-755:31) "._currentRenderer =" -(1259:31-1260:4) " null;" --> (755:31-756:0) " null;" -(1260:4-1260:12) " context" --> (756:0-756:12) "\n\t\t\t\tcontext" -(1260:12-1260:32) "._currentRenderer2 =" --> (756:12-756:32) "._currentRenderer2 =" -(1260:32-1261:3) " null;" --> (756:32-757:3) " null;" -(1261:3-1263:2) "}\n" --> (757:3-758:0) "\t}" -(1263:2-1263:9) " return" --> (758:0-758:10) "\n\t\t\treturn" -(1263:9-1264:1) " context;" --> (758:10-759:2) " context;" -(1264:1-1266:0) "}\n" --> (759:2-760:2) "\t}" -(1266:0-1266:4) "\nvar" --> (760:2-760:6) "\tvar" -(1266:4-1266:21) " Uninitialized = " --> (760:6-760:24) " Uninitialized = " -(1266:21-1267:0) "-1;" --> (760:24-761:2) "-1;" -(1267:0-1267:4) "\nvar" --> (761:2-761:6) "\tvar" -(1267:4-1267:14) " Pending =" --> (761:6-761:16) " Pending =" -(1267:14-1268:0) " 0;" --> (761:16-762:2) " 0;" -(1268:0-1268:4) "\nvar" --> (762:2-762:6) "\tvar" -(1268:4-1268:15) " Resolved =" --> (762:6-762:17) " Resolved =" -(1268:15-1269:0) " 1;" --> (762:17-763:2) " 1;" -(1269:0-1269:4) "\nvar" --> (763:2-763:6) "\tvar" -(1269:4-1269:15) " Rejected =" --> (763:6-763:17) " Rejected =" -(1269:15-1271:0) " 2;\n" --> (763:17-764:2) " 2;" -(1271:0-1271:9) "\nfunction" --> (764:2-764:11) "\tfunction" -(1271:9-1271:25) " lazyInitializer" --> (764:11-764:27) " lazyInitializer" -(1271:25-1271:34) "(payload)" --> (764:27-764:36) "(payload)" -(1271:34-1272:2) " {" --> (764:36-765:0) " {" -(1272:2-1272:6) " if " --> (765:0-765:7) "\n\t\t\tif " -(1272:6-1272:14) "(payload" --> (765:7-765:15) "(payload" -(1272:14-1272:26) "._status ===" --> (765:15-765:27) "._status ===" -(1272:26-1272:41) " Uninitialized)" --> (765:27-765:42) " Uninitialized)" -(1272:41-1273:4) " {" --> (765:42-766:4) " {" -(1273:4-1273:8) " var" --> (766:4-766:8) "\tvar" -(1273:8-1273:15) " ctor =" --> (766:8-766:15) " ctor =" -(1273:15-1273:23) " payload" --> (766:15-766:23) " payload" -(1273:23-1274:4) "._result;" --> (766:23-767:4) "._result;" -(1274:4-1274:8) " var" --> (767:4-767:8) "\tvar" -(1274:8-1274:19) " thenable =" --> (767:8-767:19) " thenable =" -(1274:19-1276:4) " ctor(); // Transition to the next state.\n" --> (767:19-768:4) " ctor();" -(1276:4-1276:8) " var" --> (768:4-768:8) "\tvar" -(1276:8-1276:18) " pending =" --> (768:8-768:18) " pending =" -(1276:18-1277:4) " payload;" --> (768:18-769:0) " payload;" -(1277:4-1277:12) " pending" --> (769:0-769:12) "\n\t\t\t\tpending" -(1277:12-1277:22) "._status =" --> (769:12-769:22) "._status =" -(1277:22-1278:4) " Pending;" --> (769:22-770:0) " Pending;" -(1278:4-1278:12) " pending" --> (770:0-770:12) "\n\t\t\t\tpending" -(1278:12-1278:22) "._result =" --> (770:12-770:22) "._result =" -(1278:22-1279:4) " thenable;" --> (770:22-771:0) " thenable;" -(1279:4-1279:13) " thenable" --> (771:0-771:13) "\n\t\t\t\tthenable" -(1279:13-1279:18) ".then" --> (771:13-771:18) ".then" -(1279:18-1279:28) "(function " --> (771:18-771:27) "(function" -(1279:28-1279:42) "(moduleObject)" --> (771:27-771:41) "(moduleObject)" -(1279:42-1280:6) " {" --> (771:41-772:0) " {" -(1280:6-1280:10) " if " --> (772:0-772:9) "\n\t\t\t\t\tif " -(1280:10-1280:18) "(payload" --> (772:9-772:17) "(payload" -(1280:18-1280:30) "._status ===" --> (772:17-772:29) "._status ===" -(1280:30-1280:39) " Pending)" --> (772:29-772:38) " Pending)" -(1280:39-1281:8) " {" --> (772:38-773:6) " {" -(1281:8-1281:12) " var" --> (773:6-773:10) "\tvar" -(1281:12-1281:28) " defaultExport =" --> (773:10-773:26) " defaultExport =" -(1281:28-1281:41) " moduleObject" --> (773:26-773:39) " moduleObject" -(1281:41-1283:8) ".default;\n" --> (773:39-774:6) ".default;" -(1283:8-1284:10) " {" --> (774:6-775:0) "\t{" -(1284:10-1284:14) " if " --> (775:0-775:11) "\n\t\t\t\t\t\t\tif " -(1284:14-1284:32) "(defaultExport ===" --> (775:11-775:29) "(defaultExport ===" -(1284:32-1284:43) " undefined)" --> (775:29-775:40) " undefined)" -(1284:43-1285:12) " {" --> (775:40-776:0) " {" -(1285:12-1285:18) " error" --> (776:0-776:14) "\n\t\t\t\t\t\t\t\terror" -(1285:18-1285:77) "('lazy: Expected the result of a dynamic import() call. ' +" --> (776:14-776:73) "('lazy: Expected the result of a dynamic import() call. ' +" -(1285:77-1286:12) " 'Instead received: %s\\n\\nYour code should look like: \\n ' + // Break up imports to avoid accidentally parsing them as dependencies." --> (776:73-776:134) " 'Instead received: %s\\n\\nYour code should look like: \\n ' +" -(1286:12-1286:51) " 'const MyComponent = lazy(() => imp' +" --> (776:134-776:173) " 'const MyComponent = lazy(() => imp' +" -(1286:51-1286:76) " \"ort('./MyComponent'))\"," --> (776:173-776:198) " \"ort('./MyComponent'))\"," -(1286:76-1287:11) " moduleObject);" --> (776:198-777:7) " moduleObject);" -(1287:11-1288:9) "}" --> (777:7-778:6) "\t}" -(1288:9-1291:8) "} // Transition to the next state.\n\n" --> (778:6-779:6) "\t}" -(1291:8-1291:12) " var" --> (779:6-779:10) "\tvar" -(1291:12-1291:23) " resolved =" --> (779:10-779:21) " resolved =" -(1291:23-1292:8) " payload;" --> (779:21-780:0) " payload;" -(1292:8-1292:17) " resolved" --> (780:0-780:15) "\n\t\t\t\t\t\tresolved" -(1292:17-1292:27) "._status =" --> (780:15-780:25) "._status =" -(1292:27-1293:8) " Resolved;" --> (780:25-781:0) " Resolved;" -(1293:8-1293:17) " resolved" --> (781:0-781:15) "\n\t\t\t\t\t\tresolved" -(1293:17-1293:27) "._result =" --> (781:15-781:25) "._result =" -(1293:27-1294:7) " defaultExport;" --> (781:25-782:5) " defaultExport;" -(1294:7-1295:5) "}" --> (782:5-783:4) "\t}" -(1295:5-1295:7) "}," --> (783:4-783:7) "\t}," -(1295:7-1295:17) " function " --> (783:7-783:16) " function" -(1295:17-1295:24) "(error)" --> (783:16-783:23) "(error)" -(1295:24-1296:6) " {" --> (783:23-784:0) " {" -(1296:6-1296:10) " if " --> (784:0-784:9) "\n\t\t\t\t\tif " -(1296:10-1296:18) "(payload" --> (784:9-784:17) "(payload" -(1296:18-1296:30) "._status ===" --> (784:17-784:29) "._status ===" -(1296:30-1296:39) " Pending)" --> (784:29-784:38) " Pending)" -(1296:39-1298:8) " {\n // Transition to the next state." --> (784:38-785:6) " {" -(1298:8-1298:12) " var" --> (785:6-785:10) "\tvar" -(1298:12-1298:23) " rejected =" --> (785:10-785:21) " rejected =" -(1298:23-1299:8) " payload;" --> (785:21-786:0) " payload;" -(1299:8-1299:17) " rejected" --> (786:0-786:15) "\n\t\t\t\t\t\trejected" -(1299:17-1299:27) "._status =" --> (786:15-786:25) "._status =" -(1299:27-1300:8) " Rejected;" --> (786:25-787:0) " Rejected;" -(1300:8-1300:17) " rejected" --> (787:0-787:15) "\n\t\t\t\t\t\trejected" -(1300:17-1300:27) "._result =" --> (787:15-787:25) "._result =" -(1300:27-1301:7) " error;" --> (787:25-788:5) " error;" -(1301:7-1302:5) "}" --> (788:5-789:4) "\t}" -(1302:5-1303:3) "});" --> (789:4-790:3) "\t});" -(1303:3-1305:2) "}\n" --> (790:3-791:0) "\t}" -(1305:2-1305:6) " if " --> (791:0-791:7) "\n\t\t\tif " -(1305:6-1305:14) "(payload" --> (791:7-791:15) "(payload" -(1305:14-1305:26) "._status ===" --> (791:15-791:27) "._status ===" -(1305:26-1305:36) " Resolved)" --> (791:27-791:37) " Resolved)" -(1305:36-1306:4) " {" --> (791:37-792:0) " {" -(1306:4-1306:11) " return" --> (792:0-792:11) "\n\t\t\t\treturn" -(1306:11-1306:19) " payload" --> (792:11-792:19) " payload" -(1306:19-1307:3) "._result;" --> (792:19-793:3) "._result;" -(1307:3-1307:9) "} else" --> (793:3-793:10) "\t} else" -(1307:9-1308:4) " {" --> (793:10-794:0) " {" -(1308:4-1308:10) " throw" --> (794:0-794:10) "\n\t\t\t\tthrow" -(1308:10-1308:18) " payload" --> (794:10-794:18) " payload" -(1308:18-1309:3) "._result;" --> (794:18-795:3) "._result;" -(1309:3-1310:1) "}" --> (795:3-796:2) "\t}" -(1310:1-1312:0) "}\n" --> (796:2-797:2) "\t}" -(1312:0-1312:9) "\nfunction" --> (797:2-797:11) "\tfunction" -(1312:9-1312:14) " lazy" --> (797:11-797:16) " lazy" -(1312:14-1312:20) "(ctor)" --> (797:16-797:22) "(ctor)" -(1312:20-1313:2) " {" --> (797:22-798:3) " {" -(1313:2-1313:6) " var" --> (798:3-798:7) "\tvar" -(1313:6-1313:16) " payload =" --> (798:7-798:17) " payload =" -(1313:16-1315:4) " {\n // We use these fields to store the result." --> (798:17-799:4) " {" -(1315:4-1315:14) " _status: " --> (799:4-799:14) "\t_status: " -(1315:14-1316:4) "-1," --> (799:14-800:4) "-1," -(1316:4-1316:13) " _result:" --> (800:4-800:12) "\t_result" -(1316:13-1317:3) " ctor" --> (800:12-801:4) ":ctor" -(1317:3-1318:2) "};" --> (801:4-802:3) "};" -(1318:2-1318:6) " var" --> (802:3-802:7) "\tvar" -(1318:6-1318:17) " lazyType =" --> (802:7-802:18) " lazyType =" -(1318:17-1319:4) " {" --> (802:18-803:4) " {" -(1319:4-1319:14) " $$typeof:" --> (803:4-803:13) "\t$$typeof" -(1319:14-1320:4) " REACT_LAZY_TYPE," --> (803:13-804:4) ":REACT_LAZY_TYPE," -(1320:4-1320:14) " _payload:" --> (804:4-804:13) "\t_payload" -(1320:14-1321:4) " payload," --> (804:13-805:4) ":payload," -(1321:4-1321:11) " _init:" --> (805:4-805:10) "\t_init" -(1321:11-1322:3) " lazyInitializer" --> (805:10-806:4) ":lazyInitializer" -(1322:3-1324:2) "};\n" --> (806:4-807:3) "};" -(1324:2-1326:4) " {\n // In production, this would just set it on the object." --> (807:3-808:4) "\t{" -(1326:4-1326:8) " var" --> (808:4-808:8) "\tvar" -(1326:8-1327:4) " defaultProps;" --> (808:8-809:4) " defaultProps;" -(1327:4-1327:8) " var" --> (809:4-809:8) "\tvar" -(1327:8-1329:4) " propTypes; // $FlowFixMe\n" --> (809:8-810:0) " propTypes;" -(1329:4-1329:11) " Object" --> (810:0-810:11) "\n\t\t\t\tObject" -(1329:11-1329:28) ".defineProperties" --> (810:11-810:28) ".defineProperties" -(1329:28-1329:38) "(lazyType," --> (810:28-810:38) "(lazyType," -(1329:38-1330:6) " {" --> (810:38-811:5) " {" -(1330:6-1330:20) " defaultProps:" --> (811:5-811:18) "\tdefaultProps" -(1330:20-1331:8) " {" --> (811:18-812:6) ":{" -(1331:8-1331:22) " configurable:" --> (812:6-812:19) "\tconfigurable" -(1331:22-1332:8) " true," --> (812:19-813:6) ":true," -(1332:8-1332:13) " get:" --> (813:6-813:10) "\tget" -(1332:13-1332:25) " function ()" --> (813:10-813:21) ":function()" -(1332:25-1333:10) " {" --> (813:21-814:0) " {" -(1333:10-1333:17) " return" --> (814:0-814:14) "\n\t\t\t\t\t\t\treturn" -(1333:17-1334:9) " defaultProps;" --> (814:14-815:6) " defaultProps;" -(1334:9-1335:8) "}," --> (815:6-816:6) "\t}," -(1335:8-1335:13) " set:" --> (816:6-816:10) "\tset" -(1335:13-1335:23) " function " --> (816:10-816:19) ":function" -(1335:23-1335:40) "(newDefaultProps)" --> (816:19-816:36) "(newDefaultProps)" -(1335:40-1336:10) " {" --> (816:36-817:0) " {" -(1336:10-1336:16) " error" --> (817:0-817:13) "\n\t\t\t\t\t\t\terror" -(1336:16-1336:86) "('React.lazy(...): It is not supported to assign `defaultProps` to ' +" --> (817:13-817:83) "('React.lazy(...): It is not supported to assign `defaultProps` to ' +" -(1336:86-1336:156) " 'a lazy component import. Either specify them where the component ' +" --> (817:83-817:153) " 'a lazy component import. Either specify them where the component ' +" -(1336:156-1338:10) " 'is defined, or create a wrapping component around it.');\n" --> (817:153-818:0) " 'is defined, or create a wrapping component around it.');" -(1338:10-1338:25) " defaultProps =" --> (818:0-818:22) "\n\t\t\t\t\t\t\tdefaultProps =" -(1338:25-1341:10) " newDefaultProps; // Match production behavior more closely:\n // $FlowFixMe\n" --> (818:22-819:0) " newDefaultProps;" -(1341:10-1341:17) " Object" --> (819:0-819:14) "\n\t\t\t\t\t\t\tObject" -(1341:17-1341:32) ".defineProperty" --> (819:14-819:29) ".defineProperty" -(1341:32-1341:42) "(lazyType," --> (819:29-819:39) "(lazyType," -(1341:42-1341:58) " 'defaultProps'," --> (819:39-819:55) " 'defaultProps'," -(1341:58-1342:12) " {" --> (819:55-820:8) " {" -(1342:12-1342:24) " enumerable:" --> (820:8-820:19) "\tenumerable" -(1342:24-1343:11) " true" --> (820:19-821:8) ":true" -(1343:11-1344:9) "});" --> (821:8-822:6) "});" -(1344:9-1345:7) "}" --> (822:6-823:6) "\t}" -(1345:7-1346:6) "}," --> (823:6-824:5) "}," -(1346:6-1346:17) " propTypes:" --> (824:5-824:15) "\tpropTypes" -(1346:17-1347:8) " {" --> (824:15-825:6) ":{" -(1347:8-1347:22) " configurable:" --> (825:6-825:19) "\tconfigurable" -(1347:22-1348:8) " true," --> (825:19-826:6) ":true," -(1348:8-1348:13) " get:" --> (826:6-826:10) "\tget" -(1348:13-1348:25) " function ()" --> (826:10-826:21) ":function()" -(1348:25-1349:10) " {" --> (826:21-827:0) " {" -(1349:10-1349:17) " return" --> (827:0-827:14) "\n\t\t\t\t\t\t\treturn" -(1349:17-1350:9) " propTypes;" --> (827:14-828:6) " propTypes;" -(1350:9-1351:8) "}," --> (828:6-829:6) "\t}," -(1351:8-1351:13) " set:" --> (829:6-829:10) "\tset" -(1351:13-1351:23) " function " --> (829:10-829:19) ":function" -(1351:23-1351:37) "(newPropTypes)" --> (829:19-829:33) "(newPropTypes)" -(1351:37-1352:10) " {" --> (829:33-830:0) " {" -(1352:10-1352:16) " error" --> (830:0-830:13) "\n\t\t\t\t\t\t\terror" -(1352:16-1352:83) "('React.lazy(...): It is not supported to assign `propTypes` to ' +" --> (830:13-830:80) "('React.lazy(...): It is not supported to assign `propTypes` to ' +" -(1352:83-1352:153) " 'a lazy component import. Either specify them where the component ' +" --> (830:80-830:150) " 'a lazy component import. Either specify them where the component ' +" -(1352:153-1354:10) " 'is defined, or create a wrapping component around it.');\n" --> (830:150-831:0) " 'is defined, or create a wrapping component around it.');" -(1354:10-1354:22) " propTypes =" --> (831:0-831:19) "\n\t\t\t\t\t\t\tpropTypes =" -(1354:22-1357:10) " newPropTypes; // Match production behavior more closely:\n // $FlowFixMe\n" --> (831:19-832:0) " newPropTypes;" -(1357:10-1357:17) " Object" --> (832:0-832:14) "\n\t\t\t\t\t\t\tObject" -(1357:17-1357:32) ".defineProperty" --> (832:14-832:29) ".defineProperty" -(1357:32-1357:42) "(lazyType," --> (832:29-832:39) "(lazyType," -(1357:42-1357:55) " 'propTypes'," --> (832:39-832:52) " 'propTypes'," -(1357:55-1358:12) " {" --> (832:52-833:8) " {" -(1358:12-1358:24) " enumerable:" --> (833:8-833:19) "\tenumerable" -(1358:24-1359:11) " true" --> (833:19-834:8) ":true" -(1359:11-1360:9) "});" --> (834:8-835:6) "});" -(1360:9-1361:7) "}" --> (835:6-836:6) "\t}" -(1361:7-1362:5) "}" --> (836:6-837:5) "}" -(1362:5-1363:3) "});" --> (837:5-838:3) "});" -(1363:3-1365:2) "}\n" --> (838:3-839:0) "\t}" -(1365:2-1365:9) " return" --> (839:0-839:10) "\n\t\t\treturn" -(1365:9-1366:1) " lazyType;" --> (839:10-840:2) " lazyType;" -(1366:1-1368:0) "}\n" --> (840:2-841:2) "\t}" -(1368:0-1368:9) "\nfunction" --> (841:2-841:11) "\tfunction" -(1368:9-1368:20) " forwardRef" --> (841:11-841:22) " forwardRef" -(1368:20-1368:28) "(render)" --> (841:22-841:30) "(render)" -(1368:28-1369:2) " {" --> (841:30-842:3) " {" -(1369:2-1370:4) " {" --> (842:3-843:0) "\t{" -(1370:4-1370:8) " if " --> (843:0-843:8) "\n\t\t\t\tif " -(1370:8-1370:18) "(render !=" --> (843:8-843:18) "(render !=" -(1370:18-1370:26) " null &&" --> (843:18-843:26) " null &&" -(1370:26-1370:33) " render" --> (843:26-843:33) " render" -(1370:33-1370:46) ".$$typeof ===" --> (843:33-843:46) ".$$typeof ===" -(1370:46-1370:63) " REACT_MEMO_TYPE)" --> (843:46-843:63) " REACT_MEMO_TYPE)" -(1370:63-1371:6) " {" --> (843:63-844:0) " {" -(1371:6-1371:12) " error" --> (844:0-844:11) "\n\t\t\t\t\terror" -(1371:12-1371:77) "('forwardRef requires a render function but received a `memo` ' +" --> (844:11-844:76) "('forwardRef requires a render function but received a `memo` ' +" -(1371:77-1371:131) " 'component. Instead of forwardRef(memo(...)), use ' +" --> (844:76-844:130) " 'component. Instead of forwardRef(memo(...)), use ' +" -(1371:131-1372:5) " 'memo(forwardRef(...)).');" --> (844:130-845:4) " 'memo(forwardRef(...)).');" -(1372:5-1372:22) "} else if (typeof" --> (845:4-845:22) "\t} else if (typeof" -(1372:22-1372:33) " render !==" --> (845:22-845:33) " render !==" -(1372:33-1372:45) " 'function')" --> (845:33-845:45) " 'function')" -(1372:45-1373:6) " {" --> (845:45-846:0) " {" -(1373:6-1373:12) " error" --> (846:0-846:11) "\n\t\t\t\t\terror" -(1373:12-1373:71) "('forwardRef requires a render function but was given %s.'," --> (846:11-846:70) "('forwardRef requires a render function but was given %s.'," -(1373:71-1373:82) " render ===" --> (846:70-846:81) " render ===" -(1373:82-1373:89) " null ?" --> (846:81-846:88) " null ?" -(1373:89-1373:105) " 'null' : typeof" --> (846:88-846:104) " 'null' : typeof" -(1373:105-1374:5) " render);" --> (846:104-847:4) " render);" -(1374:5-1374:11) "} else" --> (847:4-847:11) "\t} else" -(1374:11-1375:6) " {" --> (847:11-848:0) " {" -(1375:6-1375:10) " if " --> (848:0-848:9) "\n\t\t\t\t\tif " -(1375:10-1375:17) "(render" --> (848:9-848:16) "(render" -(1375:17-1375:28) ".length !==" --> (848:16-848:27) ".length !==" -(1375:28-1375:33) " 0 &&" --> (848:27-848:32) " 0 &&" -(1375:33-1375:40) " render" --> (848:32-848:39) " render" -(1375:40-1375:51) ".length !==" --> (848:39-848:50) ".length !==" -(1375:51-1375:54) " 2)" --> (848:50-848:53) " 2)" -(1375:54-1376:8) " {" --> (848:53-849:0) " {" -(1376:8-1376:14) " error" --> (849:0-849:12) "\n\t\t\t\t\t\terror" -(1376:14-1376:94) "('forwardRef render functions accept exactly two parameters: props and ref. %s'," --> (849:12-849:92) "('forwardRef render functions accept exactly two parameters: props and ref. %s'," -(1376:94-1376:101) " render" --> (849:92-849:99) " render" -(1376:101-1376:112) ".length ===" --> (849:99-849:110) ".length ===" -(1376:112-1376:116) " 1 ?" --> (849:110-849:114) " 1 ?" -(1376:116-1376:161) " 'Did you forget to use the ref parameter?' :" --> (849:114-849:159) " 'Did you forget to use the ref parameter?' :" -(1376:161-1377:7) " 'Any additional parameter will be undefined.');" --> (849:159-850:5) " 'Any additional parameter will be undefined.');" -(1377:7-1378:5) "}" --> (850:5-851:4) "\t}" -(1378:5-1380:4) "}\n" --> (851:4-852:0) "\t}" -(1380:4-1380:8) " if " --> (852:0-852:8) "\n\t\t\t\tif " -(1380:8-1380:18) "(render !=" --> (852:8-852:18) "(render !=" -(1380:18-1380:24) " null)" --> (852:18-852:24) " null)" -(1380:24-1381:6) " {" --> (852:24-853:0) " {" -(1381:6-1381:10) " if " --> (853:0-853:9) "\n\t\t\t\t\tif " -(1381:10-1381:17) "(render" --> (853:9-853:16) "(render" -(1381:17-1381:33) ".defaultProps !=" --> (853:16-853:32) ".defaultProps !=" -(1381:33-1381:41) " null ||" --> (853:32-853:40) " null ||" -(1381:41-1381:48) " render" --> (853:40-853:47) " render" -(1381:48-1381:61) ".propTypes !=" --> (853:47-853:60) ".propTypes !=" -(1381:61-1381:67) " null)" --> (853:60-853:66) " null)" -(1381:67-1382:8) " {" --> (853:66-854:0) " {" -(1382:8-1382:14) " error" --> (854:0-854:12) "\n\t\t\t\t\t\terror" -(1382:14-1382:89) "('forwardRef render functions do not support propTypes or defaultProps. ' +" --> (854:12-854:87) "('forwardRef render functions do not support propTypes or defaultProps. ' +" -(1382:89-1383:7) " 'Did you accidentally pass a React component?');" --> (854:87-855:5) " 'Did you accidentally pass a React component?');" -(1383:7-1384:5) "}" --> (855:5-856:4) "\t}" -(1384:5-1385:3) "}" --> (856:4-857:3) "\t}" -(1385:3-1387:2) "}\n" --> (857:3-858:3) "\t}" -(1387:2-1387:6) " var" --> (858:3-858:7) "\tvar" -(1387:6-1387:20) " elementType =" --> (858:7-858:21) " elementType =" -(1387:20-1388:4) " {" --> (858:21-859:4) " {" -(1388:4-1388:14) " $$typeof:" --> (859:4-859:13) "\t$$typeof" -(1388:14-1389:4) " REACT_FORWARD_REF_TYPE," --> (859:13-860:4) ":REACT_FORWARD_REF_TYPE," -(1389:4-1389:12) " render:" --> (860:4-860:11) "\trender" -(1389:12-1390:3) " render" --> (860:11-861:4) ":render" -(1390:3-1392:2) "};\n" --> (861:4-862:3) "};" -(1392:2-1393:4) " {" --> (862:3-863:4) "\t{" -(1393:4-1393:8) " var" --> (863:4-863:8) "\tvar" -(1393:8-1394:4) " ownName;" --> (863:8-864:0) " ownName;" -(1394:4-1394:11) " Object" --> (864:0-864:11) "\n\t\t\t\tObject" -(1394:11-1394:26) ".defineProperty" --> (864:11-864:26) ".defineProperty" -(1394:26-1394:39) "(elementType," --> (864:26-864:39) "(elementType," -(1394:39-1394:54) " 'displayName'," --> (864:39-864:54) " 'displayName'," -(1394:54-1395:6) " {" --> (864:54-865:5) " {" -(1395:6-1395:18) " enumerable:" --> (865:5-865:16) "\tenumerable" -(1395:18-1396:6) " false," --> (865:16-866:5) ":false," -(1396:6-1396:20) " configurable:" --> (866:5-866:18) "\tconfigurable" -(1396:20-1397:6) " true," --> (866:18-867:5) ":true," -(1397:6-1397:11) " get:" --> (867:5-867:9) "\tget" -(1397:11-1397:23) " function ()" --> (867:9-867:20) ":function()" -(1397:23-1398:8) " {" --> (867:20-868:0) " {" -(1398:8-1398:15) " return" --> (868:0-868:13) "\n\t\t\t\t\t\treturn" -(1398:15-1399:7) " ownName;" --> (868:13-869:5) " ownName;" -(1399:7-1400:6) "}," --> (869:5-870:5) "\t}," -(1400:6-1400:11) " set:" --> (870:5-870:9) "\tset" -(1400:11-1400:21) " function " --> (870:9-870:18) ":function" -(1400:21-1400:27) "(name)" --> (870:18-870:24) "(name)" -(1400:27-1401:8) " {" --> (870:24-871:0) " {" -(1401:8-1401:18) " ownName =" --> (871:0-871:16) "\n\t\t\t\t\t\townName =" -(1401:18-1403:8) " name;\n" --> (871:16-872:0) " name;" -(1403:8-1403:12) " if " --> (872:0-872:10) "\n\t\t\t\t\t\tif " -(1403:12-1403:19) "(render" --> (872:10-872:17) "(render" -(1403:19-1403:34) ".displayName ==" --> (872:17-872:32) ".displayName ==" -(1403:34-1403:40) " null)" --> (872:32-872:38) " null)" -(1403:40-1404:10) " {" --> (872:38-873:0) " {" -(1404:10-1404:17) " render" --> (873:0-873:14) "\n\t\t\t\t\t\t\trender" -(1404:17-1404:31) ".displayName =" --> (873:14-873:28) ".displayName =" -(1404:31-1405:9) " name;" --> (873:28-874:6) " name;" -(1405:9-1406:7) "}" --> (874:6-875:5) "\t}" -(1406:7-1407:5) "}" --> (875:5-876:5) "\t}" -(1407:5-1408:3) "});" --> (876:5-877:3) "});" -(1408:3-1410:2) "}\n" --> (877:3-878:0) "\t}" -(1410:2-1410:9) " return" --> (878:0-878:10) "\n\t\t\treturn" -(1410:9-1411:1) " elementType;" --> (878:10-879:2) " elementType;" -(1411:1-1415:0) "}\n\n// Filter certain DOM attributes (e.g. src, href) if their values are empty strings.\n" --> (879:2-880:2) "\t}" -(1415:0-1415:4) "\nvar" --> (880:2-880:6) "\tvar" -(1415:4-1415:21) " enableScopeAPI =" --> (880:6-880:23) " enableScopeAPI =" -(1415:21-1417:0) " false; // Experimental Create Event Handle API.\n" --> (880:23-881:2) " false;" -(1417:0-1417:9) "\nfunction" --> (881:2-881:11) "\tfunction" -(1417:9-1417:28) " isValidElementType" --> (881:11-881:30) " isValidElementType" -(1417:28-1417:34) "(type)" --> (881:30-881:36) "(type)" -(1417:34-1418:2) " {" --> (881:36-882:0) " {" -(1418:2-1418:13) " if (typeof" --> (882:0-882:14) "\n\t\t\tif (typeof" -(1418:13-1418:22) " type ===" --> (882:14-882:23) " type ===" -(1418:22-1418:41) " 'string' || typeof" --> (882:23-882:42) " 'string' || typeof" -(1418:41-1418:50) " type ===" --> (882:42-882:51) " type ===" -(1418:50-1418:62) " 'function')" --> (882:51-882:63) " 'function')" -(1418:62-1419:4) " {" --> (882:63-883:0) " {" -(1419:4-1419:11) " return" --> (883:0-883:11) "\n\t\t\t\treturn" -(1419:11-1420:3) " true;" --> (883:11-884:3) " true;" -(1420:3-1423:2) "} // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n" --> (884:3-885:0) "\t}" -(1423:2-1423:6) " if " --> (885:0-885:7) "\n\t\t\tif " -(1423:6-1423:15) "(type ===" --> (885:7-885:16) "(type ===" -(1423:15-1423:23) " exports" --> (885:16-885:24) " exports" -(1423:23-1423:35) ".Fragment ||" --> (885:24-885:36) ".Fragment ||" -(1423:35-1423:44) " type ===" --> (885:36-885:45) " type ===" -(1423:44-1423:52) " exports" --> (885:45-885:53) " exports" -(1423:52-1423:64) ".Profiler ||" --> (885:53-885:65) ".Profiler ||" -(1423:64-1423:73) " type ===" --> (885:65-885:74) " type ===" -(1423:73-1423:106) " REACT_DEBUG_TRACING_MODE_TYPE ||" --> (885:74-885:107) " REACT_DEBUG_TRACING_MODE_TYPE ||" -(1423:106-1423:115) " type ===" --> (885:107-885:116) " type ===" -(1423:115-1423:123) " exports" --> (885:116-885:124) " exports" -(1423:123-1423:137) ".StrictMode ||" --> (885:124-885:138) ".StrictMode ||" -(1423:137-1423:146) " type ===" --> (885:138-885:147) " type ===" -(1423:146-1423:154) " exports" --> (885:147-885:155) " exports" -(1423:154-1423:166) ".Suspense ||" --> (885:155-885:167) ".Suspense ||" -(1423:166-1423:175) " type ===" --> (885:167-885:176) " type ===" -(1423:175-1423:203) " REACT_SUSPENSE_LIST_TYPE ||" --> (885:176-885:204) " REACT_SUSPENSE_LIST_TYPE ||" -(1423:203-1423:212) " type ===" --> (885:204-885:213) " type ===" -(1423:212-1423:240) " REACT_LEGACY_HIDDEN_TYPE ||" --> (885:213-885:241) " REACT_LEGACY_HIDDEN_TYPE ||" -(1423:240-1423:257) " enableScopeAPI )" --> (885:241-885:257) " enableScopeAPI)" -(1423:257-1424:4) " {" --> (885:257-886:0) " {" -(1424:4-1424:11) " return" --> (886:0-886:11) "\n\t\t\t\treturn" -(1424:11-1425:3) " true;" --> (886:11-887:3) " true;" -(1425:3-1427:2) "}\n" --> (887:3-888:0) "\t}" -(1427:2-1427:13) " if (typeof" --> (888:0-888:14) "\n\t\t\tif (typeof" -(1427:13-1427:22) " type ===" --> (888:14-888:23) " type ===" -(1427:22-1427:34) " 'object' &&" --> (888:23-888:35) " 'object' &&" -(1427:34-1427:43) " type !==" --> (888:35-888:44) " type !==" -(1427:43-1427:49) " null)" --> (888:44-888:50) " null)" -(1427:49-1428:4) " {" --> (888:50-889:0) " {" -(1428:4-1428:8) " if " --> (889:0-889:8) "\n\t\t\t\tif " -(1428:8-1428:13) "(type" --> (889:8-889:13) "(type" -(1428:13-1428:26) ".$$typeof ===" --> (889:13-889:26) ".$$typeof ===" -(1428:26-1428:45) " REACT_LAZY_TYPE ||" --> (889:26-889:45) " REACT_LAZY_TYPE ||" -(1428:45-1428:50) " type" --> (889:45-889:50) " type" -(1428:50-1428:63) ".$$typeof ===" --> (889:50-889:63) ".$$typeof ===" -(1428:63-1428:82) " REACT_MEMO_TYPE ||" --> (889:63-889:82) " REACT_MEMO_TYPE ||" -(1428:82-1428:87) " type" --> (889:82-889:87) " type" -(1428:87-1428:100) ".$$typeof ===" --> (889:87-889:100) ".$$typeof ===" -(1428:100-1428:123) " REACT_PROVIDER_TYPE ||" --> (889:100-889:123) " REACT_PROVIDER_TYPE ||" -(1428:123-1428:128) " type" --> (889:123-889:128) " type" -(1428:128-1428:141) ".$$typeof ===" --> (889:128-889:141) ".$$typeof ===" -(1428:141-1428:163) " REACT_CONTEXT_TYPE ||" --> (889:141-889:163) " REACT_CONTEXT_TYPE ||" -(1428:163-1428:168) " type" --> (889:163-889:168) " type" -(1428:168-1428:181) ".$$typeof ===" --> (889:168-889:181) ".$$typeof ===" -(1428:181-1428:207) " REACT_FORWARD_REF_TYPE ||" --> (889:181-889:207) " REACT_FORWARD_REF_TYPE ||" -(1428:207-1428:212) " type" --> (889:207-889:212) " type" -(1428:212-1428:225) ".$$typeof ===" --> (889:212-889:225) ".$$typeof ===" -(1428:225-1428:251) " REACT_FUNDAMENTAL_TYPE ||" --> (889:225-889:251) " REACT_FUNDAMENTAL_TYPE ||" -(1428:251-1428:256) " type" --> (889:251-889:256) " type" -(1428:256-1428:269) ".$$typeof ===" --> (889:256-889:269) ".$$typeof ===" -(1428:269-1428:289) " REACT_BLOCK_TYPE ||" --> (889:269-889:289) " REACT_BLOCK_TYPE ||" -(1428:289-1428:294) " type" --> (889:289-889:294) " type" -(1428:294-1428:301) "[0] ===" --> (889:294-889:301) "[0] ===" -(1428:301-1428:326) " REACT_SERVER_BLOCK_TYPE)" --> (889:301-889:326) " REACT_SERVER_BLOCK_TYPE)" -(1428:326-1429:6) " {" --> (889:326-890:0) " {" -(1429:6-1429:13) " return" --> (890:0-890:12) "\n\t\t\t\t\treturn" -(1429:13-1430:5) " true;" --> (890:12-891:4) " true;" -(1430:5-1431:3) "}" --> (891:4-892:3) "\t}" -(1431:3-1433:2) "}\n" --> (892:3-893:0) "\t}" -(1433:2-1433:9) " return" --> (893:0-893:10) "\n\t\t\treturn" -(1433:9-1434:1) " false;" --> (893:10-894:2) " false;" -(1434:1-1436:0) "}\n" --> (894:2-895:2) "\t}" -(1436:0-1436:9) "\nfunction" --> (895:2-895:11) "\tfunction" -(1436:9-1436:14) " memo" --> (895:11-895:16) " memo" -(1436:14-1436:20) "(type," --> (895:16-895:22) "(type," -(1436:20-1436:29) " compare)" --> (895:22-895:31) " compare)" -(1436:29-1437:2) " {" --> (895:31-896:3) " {" -(1437:2-1438:4) " {" --> (896:3-897:0) "\t{" -(1438:4-1438:9) " if (" --> (897:0-897:10) "\n\t\t\t\tif ( " -(1438:9-1438:28) "!isValidElementType" --> (897:10-897:29) "!isValidElementType" -(1438:28-1438:35) "(type))" --> (897:29-897:36) "(type))" -(1438:35-1439:6) " {" --> (897:36-898:0) " {" -(1439:6-1439:12) " error" --> (898:0-898:11) "\n\t\t\t\t\terror" -(1439:12-1439:71) "('memo: The first argument must be a component. Instead ' +" --> (898:11-898:70) "('memo: The first argument must be a component. Instead ' +" -(1439:71-1439:87) " 'received: %s'," --> (898:70-898:86) " 'received: %s'," -(1439:87-1439:96) " type ===" --> (898:86-898:95) " type ===" -(1439:96-1439:103) " null ?" --> (898:95-898:102) " null ?" -(1439:103-1439:119) " 'null' : typeof" --> (898:102-898:118) " 'null' : typeof" -(1439:119-1440:5) " type);" --> (898:118-899:4) " type);" -(1440:5-1441:3) "}" --> (899:4-900:3) "\t}" -(1441:3-1443:2) "}\n" --> (900:3-901:3) "\t}" -(1443:2-1443:6) " var" --> (901:3-901:7) "\tvar" -(1443:6-1443:20) " elementType =" --> (901:7-901:21) " elementType =" -(1443:20-1444:4) " {" --> (901:21-902:4) " {" -(1444:4-1444:14) " $$typeof:" --> (902:4-902:13) "\t$$typeof" -(1444:14-1445:4) " REACT_MEMO_TYPE," --> (902:13-903:4) ":REACT_MEMO_TYPE," -(1445:4-1445:10) " type:" --> (903:4-903:9) "\ttype" -(1445:10-1446:4) " type," --> (903:9-904:4) ":type," -(1446:4-1446:13) " compare:" --> (904:4-904:12) "\tcompare" -(1446:13-1446:25) " compare ===" --> (904:12-904:24) ":compare ===" -(1446:25-1446:37) " undefined ?" --> (904:24-904:36) " undefined ?" -(1446:37-1446:44) " null :" --> (904:36-904:43) " null :" -(1446:44-1447:3) " compare" --> (904:43-905:4) " compare" -(1447:3-1449:2) "};\n" --> (905:4-906:3) "};" -(1449:2-1450:4) " {" --> (906:3-907:4) "\t{" -(1450:4-1450:8) " var" --> (907:4-907:8) "\tvar" -(1450:8-1451:4) " ownName;" --> (907:8-908:0) " ownName;" -(1451:4-1451:11) " Object" --> (908:0-908:11) "\n\t\t\t\tObject" -(1451:11-1451:26) ".defineProperty" --> (908:11-908:26) ".defineProperty" -(1451:26-1451:39) "(elementType," --> (908:26-908:39) "(elementType," -(1451:39-1451:54) " 'displayName'," --> (908:39-908:54) " 'displayName'," -(1451:54-1452:6) " {" --> (908:54-909:5) " {" -(1452:6-1452:18) " enumerable:" --> (909:5-909:16) "\tenumerable" -(1452:18-1453:6) " false," --> (909:16-910:5) ":false," -(1453:6-1453:20) " configurable:" --> (910:5-910:18) "\tconfigurable" -(1453:20-1454:6) " true," --> (910:18-911:5) ":true," -(1454:6-1454:11) " get:" --> (911:5-911:9) "\tget" -(1454:11-1454:23) " function ()" --> (911:9-911:20) ":function()" -(1454:23-1455:8) " {" --> (911:20-912:0) " {" -(1455:8-1455:15) " return" --> (912:0-912:13) "\n\t\t\t\t\t\treturn" -(1455:15-1456:7) " ownName;" --> (912:13-913:5) " ownName;" -(1456:7-1457:6) "}," --> (913:5-914:5) "\t}," -(1457:6-1457:11) " set:" --> (914:5-914:9) "\tset" -(1457:11-1457:21) " function " --> (914:9-914:18) ":function" -(1457:21-1457:27) "(name)" --> (914:18-914:24) "(name)" -(1457:27-1458:8) " {" --> (914:24-915:0) " {" -(1458:8-1458:18) " ownName =" --> (915:0-915:16) "\n\t\t\t\t\t\townName =" -(1458:18-1460:8) " name;\n" --> (915:16-916:0) " name;" -(1460:8-1460:12) " if " --> (916:0-916:10) "\n\t\t\t\t\t\tif " -(1460:12-1460:17) "(type" --> (916:10-916:15) "(type" -(1460:17-1460:32) ".displayName ==" --> (916:15-916:30) ".displayName ==" -(1460:32-1460:38) " null)" --> (916:30-916:36) " null)" -(1460:38-1461:10) " {" --> (916:36-917:0) " {" -(1461:10-1461:15) " type" --> (917:0-917:12) "\n\t\t\t\t\t\t\ttype" -(1461:15-1461:29) ".displayName =" --> (917:12-917:26) ".displayName =" -(1461:29-1462:9) " name;" --> (917:26-918:6) " name;" -(1462:9-1463:7) "}" --> (918:6-919:5) "\t}" -(1463:7-1464:5) "}" --> (919:5-920:5) "\t}" -(1464:5-1465:3) "});" --> (920:5-921:3) "});" -(1465:3-1467:2) "}\n" --> (921:3-922:0) "\t}" -(1467:2-1467:9) " return" --> (922:0-922:10) "\n\t\t\treturn" -(1467:9-1468:1) " elementType;" --> (922:10-923:2) " elementType;" -(1468:1-1470:0) "}\n" --> (923:2-924:2) "\t}" -(1470:0-1470:9) "\nfunction" --> (924:2-924:11) "\tfunction" -(1470:9-1470:29) " resolveDispatcher()" --> (924:11-924:31) " resolveDispatcher()" -(1470:29-1471:2) " {" --> (924:31-925:3) " {" -(1471:2-1471:6) " var" --> (925:3-925:7) "\tvar" -(1471:6-1471:19) " dispatcher =" --> (925:7-925:20) " dispatcher =" -(1471:19-1471:42) " ReactCurrentDispatcher" --> (925:20-925:43) " ReactCurrentDispatcher" -(1471:42-1473:2) ".current;\n" --> (925:43-926:0) ".current;" -(1473:2-1473:8) " if (!" --> (926:0-926:10) "\n\t\t\tif ( !" -(1473:8-1473:23) "(dispatcher !==" --> (926:10-926:25) "(dispatcher !==" -(1473:23-1473:30) " null))" --> (926:25-926:32) " null))" -(1473:30-1474:4) " {" --> (926:32-927:4) " {" -(1474:4-1475:6) " {" --> (927:4-928:0) "\t{" -(1475:6-1475:12) " throw" --> (928:0-928:11) "\n\t\t\t\t\tthrow" -(1475:12-1475:19) " Error(" --> (928:11-928:17) " Error" -(1475:19-1476:5) " \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.\" );" --> (928:17-929:4) "('Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.');" -(1476:5-1477:3) "}" --> (929:4-930:3) "\t}" -(1477:3-1479:2) "}\n" --> (930:3-931:0) "\t}" -(1479:2-1479:9) " return" --> (931:0-931:10) "\n\t\t\treturn" -(1479:9-1480:1) " dispatcher;" --> (931:10-932:2) " dispatcher;" -(1480:1-1482:0) "}\n" --> (932:2-933:2) "\t}" -(1482:0-1482:9) "\nfunction" --> (933:2-933:11) "\tfunction" -(1482:9-1482:20) " useContext" --> (933:11-933:22) " useContext" -(1482:20-1482:29) "(Context," --> (933:22-933:31) "(Context," -(1482:29-1482:52) " unstable_observedBits)" --> (933:31-933:54) " unstable_observedBits)" -(1482:52-1483:2) " {" --> (933:54-934:3) " {" -(1483:2-1483:6) " var" --> (934:3-934:7) "\tvar" -(1483:6-1483:19) " dispatcher =" --> (934:7-934:20) " dispatcher =" -(1483:19-1485:2) " resolveDispatcher();\n" --> (934:20-935:3) " resolveDispatcher();" -(1485:2-1486:4) " {" --> (935:3-936:0) "\t{" -(1486:4-1486:8) " if " --> (936:0-936:8) "\n\t\t\t\tif " -(1486:8-1486:34) "(unstable_observedBits !==" --> (936:8-936:34) "(unstable_observedBits !==" -(1486:34-1486:45) " undefined)" --> (936:34-936:45) " undefined)" -(1486:45-1487:6) " {" --> (936:45-937:0) " {" -(1487:6-1487:12) " error" --> (937:0-937:11) "\n\t\t\t\t\terror" -(1487:12-1487:69) "('useContext() second argument is reserved for future ' +" --> (937:11-937:68) "('useContext() second argument is reserved for future ' +" -(1487:69-1487:117) " 'use in React. Passing it is not supported. ' +" --> (937:68-937:116) " 'use in React. Passing it is not supported. ' +" -(1487:117-1487:138) " 'You passed: %s.%s'," --> (937:116-937:137) " 'You passed: %s.%s'," -(1487:138-1487:168) " unstable_observedBits, typeof" --> (937:137-937:167) " unstable_observedBits, typeof" -(1487:168-1487:194) " unstable_observedBits ===" --> (937:167-937:193) " unstable_observedBits ===" -(1487:194-1487:206) " 'number' &&" --> (937:193-937:205) " 'number' &&" -(1487:206-1487:212) " Array" --> (937:205-937:211) " Array" -(1487:212-1487:220) ".isArray" --> (937:211-937:219) ".isArray" -(1487:220-1487:230) "(arguments" --> (937:219-937:229) "(arguments" -(1487:230-1487:236) "[2]) ?" --> (937:229-937:235) "[2]) ?" -(1487:236-1487:281) " '\\n\\nDid you call array.map(useContext)? ' +" --> (937:235-937:280) " '\\n\\nDid you call array.map(useContext)? ' +" -(1487:281-1487:332) " 'Calling Hooks inside a loop is not supported. ' +" --> (937:280-937:331) " 'Calling Hooks inside a loop is not supported. ' +" -(1487:332-1487:390) " 'Learn more at https://reactjs.org/link/rules-of-hooks' :" --> (937:331-937:389) " 'Learn more at https://reactjs.org/link/rules-of-hooks' :" -(1487:390-1488:5) " '');" --> (937:389-938:4) " '');" -(1488:5-1491:4) "} // TODO: add a more generic warning for invalid values.\n\n" --> (938:4-939:0) "\t}" -(1491:4-1491:8) " if " --> (939:0-939:8) "\n\t\t\t\tif " -(1491:8-1491:16) "(Context" --> (939:8-939:16) "(Context" -(1491:16-1491:29) "._context !==" --> (939:16-939:29) "._context !==" -(1491:29-1491:40) " undefined)" --> (939:29-939:40) " undefined)" -(1491:40-1492:6) " {" --> (939:40-940:5) " {" -(1492:6-1492:10) " var" --> (940:5-940:9) "\tvar" -(1492:10-1492:24) " realContext =" --> (940:9-940:23) " realContext =" -(1492:24-1492:32) " Context" --> (940:23-940:31) " Context" -(1492:32-1495:6) "._context; // Don't deduplicate because this legitimately causes bugs\n // and nobody should be using this in existing code.\n" --> (940:31-941:0) "._context;" -(1495:6-1495:10) " if " --> (941:0-941:9) "\n\t\t\t\t\tif " -(1495:10-1495:22) "(realContext" --> (941:9-941:21) "(realContext" -(1495:22-1495:35) ".Consumer ===" --> (941:21-941:34) ".Consumer ===" -(1495:35-1495:44) " Context)" --> (941:34-941:43) " Context)" -(1495:44-1496:8) " {" --> (941:43-942:0) " {" -(1496:8-1496:14) " error" --> (942:0-942:12) "\n\t\t\t\t\t\terror" -(1496:14-1496:102) "('Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be ' +" --> (942:12-942:100) "('Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be ' +" -(1496:102-1497:7) " 'removed in a future major release. Did you mean to call useContext(Context) instead?');" --> (942:100-943:5) " 'removed in a future major release. Did you mean to call useContext(Context) instead?');" -(1497:7-1497:17) "} else if " --> (943:5-943:16) "\t} else if " -(1497:17-1497:29) "(realContext" --> (943:16-943:28) "(realContext" -(1497:29-1497:42) ".Provider ===" --> (943:28-943:41) ".Provider ===" -(1497:42-1497:51) " Context)" --> (943:41-943:50) " Context)" -(1497:51-1498:8) " {" --> (943:50-944:0) " {" -(1498:8-1498:14) " error" --> (944:0-944:12) "\n\t\t\t\t\t\terror" -(1498:14-1498:74) "('Calling useContext(Context.Provider) is not supported. ' +" --> (944:12-944:72) "('Calling useContext(Context.Provider) is not supported. ' +" -(1498:74-1499:7) " 'Did you mean to call useContext(Context) instead?');" --> (944:72-945:5) " 'Did you mean to call useContext(Context) instead?');" -(1499:7-1500:5) "}" --> (945:5-946:4) "\t}" -(1500:5-1501:3) "}" --> (946:4-947:3) "\t}" -(1501:3-1503:2) "}\n" --> (947:3-948:0) "\t}" -(1503:2-1503:9) " return" --> (948:0-948:10) "\n\t\t\treturn" -(1503:9-1503:20) " dispatcher" --> (948:10-948:21) " dispatcher" -(1503:20-1503:31) ".useContext" --> (948:21-948:32) ".useContext" -(1503:31-1503:40) "(Context," --> (948:32-948:41) "(Context," -(1503:40-1504:1) " unstable_observedBits);" --> (948:41-949:2) " unstable_observedBits);" -(1504:1-1505:0) "}" --> (949:2-950:2) "\t}" -(1505:0-1505:9) "\nfunction" --> (950:2-950:11) "\tfunction" -(1505:9-1505:18) " useState" --> (950:11-950:20) " useState" -(1505:18-1505:32) "(initialState)" --> (950:20-950:34) "(initialState)" -(1505:32-1506:2) " {" --> (950:34-951:3) " {" -(1506:2-1506:6) " var" --> (951:3-951:7) "\tvar" -(1506:6-1506:19) " dispatcher =" --> (951:7-951:20) " dispatcher =" -(1506:19-1507:2) " resolveDispatcher();" --> (951:20-952:0) " resolveDispatcher();" -(1507:2-1507:9) " return" --> (952:0-952:10) "\n\t\t\treturn" -(1507:9-1507:20) " dispatcher" --> (952:10-952:21) " dispatcher" -(1507:20-1507:29) ".useState" --> (952:21-952:30) ".useState" -(1507:29-1508:1) "(initialState);" --> (952:30-953:2) "(initialState);" -(1508:1-1509:0) "}" --> (953:2-954:2) "\t}" -(1509:0-1509:9) "\nfunction" --> (954:2-954:11) "\tfunction" -(1509:9-1509:20) " useReducer" --> (954:11-954:22) " useReducer" -(1509:20-1509:29) "(reducer," --> (954:22-954:31) "(reducer," -(1509:29-1509:41) " initialArg," --> (954:31-954:43) " initialArg," -(1509:41-1509:47) " init)" --> (954:43-954:49) " init)" -(1509:47-1510:2) " {" --> (954:49-955:3) " {" -(1510:2-1510:6) " var" --> (955:3-955:7) "\tvar" -(1510:6-1510:19) " dispatcher =" --> (955:7-955:20) " dispatcher =" -(1510:19-1511:2) " resolveDispatcher();" --> (955:20-956:0) " resolveDispatcher();" -(1511:2-1511:9) " return" --> (956:0-956:10) "\n\t\t\treturn" -(1511:9-1511:20) " dispatcher" --> (956:10-956:21) " dispatcher" -(1511:20-1511:31) ".useReducer" --> (956:21-956:32) ".useReducer" -(1511:31-1511:40) "(reducer," --> (956:32-956:41) "(reducer," -(1511:40-1511:52) " initialArg," --> (956:41-956:53) " initialArg," -(1511:52-1512:1) " init);" --> (956:53-957:2) " init);" -(1512:1-1513:0) "}" --> (957:2-958:2) "\t}" -(1513:0-1513:9) "\nfunction" --> (958:2-958:11) "\tfunction" -(1513:9-1513:16) " useRef" --> (958:11-958:18) " useRef" -(1513:16-1513:30) "(initialValue)" --> (958:18-958:32) "(initialValue)" -(1513:30-1514:2) " {" --> (958:32-959:3) " {" -(1514:2-1514:6) " var" --> (959:3-959:7) "\tvar" -(1514:6-1514:19) " dispatcher =" --> (959:7-959:20) " dispatcher =" -(1514:19-1515:2) " resolveDispatcher();" --> (959:20-960:0) " resolveDispatcher();" -(1515:2-1515:9) " return" --> (960:0-960:10) "\n\t\t\treturn" -(1515:9-1515:20) " dispatcher" --> (960:10-960:21) " dispatcher" -(1515:20-1515:27) ".useRef" --> (960:21-960:28) ".useRef" -(1515:27-1516:1) "(initialValue);" --> (960:28-961:2) "(initialValue);" -(1516:1-1517:0) "}" --> (961:2-962:2) "\t}" -(1517:0-1517:9) "\nfunction" --> (962:2-962:11) "\tfunction" -(1517:9-1517:19) " useEffect" --> (962:11-962:21) " useEffect" -(1517:19-1517:27) "(create," --> (962:21-962:29) "(create," -(1517:27-1517:33) " deps)" --> (962:29-962:35) " deps)" -(1517:33-1518:2) " {" --> (962:35-963:3) " {" -(1518:2-1518:6) " var" --> (963:3-963:7) "\tvar" -(1518:6-1518:19) " dispatcher =" --> (963:7-963:20) " dispatcher =" -(1518:19-1519:2) " resolveDispatcher();" --> (963:20-964:0) " resolveDispatcher();" -(1519:2-1519:9) " return" --> (964:0-964:10) "\n\t\t\treturn" -(1519:9-1519:20) " dispatcher" --> (964:10-964:21) " dispatcher" -(1519:20-1519:30) ".useEffect" --> (964:21-964:31) ".useEffect" -(1519:30-1519:38) "(create," --> (964:31-964:39) "(create," -(1519:38-1520:1) " deps);" --> (964:39-965:2) " deps);" -(1520:1-1521:0) "}" --> (965:2-966:2) "\t}" -(1521:0-1521:9) "\nfunction" --> (966:2-966:11) "\tfunction" -(1521:9-1521:25) " useLayoutEffect" --> (966:11-966:27) " useLayoutEffect" -(1521:25-1521:33) "(create," --> (966:27-966:35) "(create," -(1521:33-1521:39) " deps)" --> (966:35-966:41) " deps)" -(1521:39-1522:2) " {" --> (966:41-967:3) " {" -(1522:2-1522:6) " var" --> (967:3-967:7) "\tvar" -(1522:6-1522:19) " dispatcher =" --> (967:7-967:20) " dispatcher =" -(1522:19-1523:2) " resolveDispatcher();" --> (967:20-968:0) " resolveDispatcher();" -(1523:2-1523:9) " return" --> (968:0-968:10) "\n\t\t\treturn" -(1523:9-1523:20) " dispatcher" --> (968:10-968:21) " dispatcher" -(1523:20-1523:36) ".useLayoutEffect" --> (968:21-968:37) ".useLayoutEffect" -(1523:36-1523:44) "(create," --> (968:37-968:45) "(create," -(1523:44-1524:1) " deps);" --> (968:45-969:2) " deps);" -(1524:1-1525:0) "}" --> (969:2-970:2) "\t}" -(1525:0-1525:9) "\nfunction" --> (970:2-970:11) "\tfunction" -(1525:9-1525:21) " useCallback" --> (970:11-970:23) " useCallback" -(1525:21-1525:31) "(callback," --> (970:23-970:33) "(callback," -(1525:31-1525:37) " deps)" --> (970:33-970:39) " deps)" -(1525:37-1526:2) " {" --> (970:39-971:3) " {" -(1526:2-1526:6) " var" --> (971:3-971:7) "\tvar" -(1526:6-1526:19) " dispatcher =" --> (971:7-971:20) " dispatcher =" -(1526:19-1527:2) " resolveDispatcher();" --> (971:20-972:0) " resolveDispatcher();" -(1527:2-1527:9) " return" --> (972:0-972:10) "\n\t\t\treturn" -(1527:9-1527:20) " dispatcher" --> (972:10-972:21) " dispatcher" -(1527:20-1527:32) ".useCallback" --> (972:21-972:33) ".useCallback" -(1527:32-1527:42) "(callback," --> (972:33-972:43) "(callback," -(1527:42-1528:1) " deps);" --> (972:43-973:2) " deps);" -(1528:1-1529:0) "}" --> (973:2-974:2) "\t}" -(1529:0-1529:9) "\nfunction" --> (974:2-974:11) "\tfunction" -(1529:9-1529:17) " useMemo" --> (974:11-974:19) " useMemo" -(1529:17-1529:25) "(create," --> (974:19-974:27) "(create," -(1529:25-1529:31) " deps)" --> (974:27-974:33) " deps)" -(1529:31-1530:2) " {" --> (974:33-975:3) " {" -(1530:2-1530:6) " var" --> (975:3-975:7) "\tvar" -(1530:6-1530:19) " dispatcher =" --> (975:7-975:20) " dispatcher =" -(1530:19-1531:2) " resolveDispatcher();" --> (975:20-976:0) " resolveDispatcher();" -(1531:2-1531:9) " return" --> (976:0-976:10) "\n\t\t\treturn" -(1531:9-1531:20) " dispatcher" --> (976:10-976:21) " dispatcher" -(1531:20-1531:28) ".useMemo" --> (976:21-976:29) ".useMemo" -(1531:28-1531:36) "(create," --> (976:29-976:37) "(create," -(1531:36-1532:1) " deps);" --> (976:37-977:2) " deps);" -(1532:1-1533:0) "}" --> (977:2-978:2) "\t}" -(1533:0-1533:9) "\nfunction" --> (978:2-978:11) "\tfunction" -(1533:9-1533:29) " useImperativeHandle" --> (978:11-978:31) " useImperativeHandle" -(1533:29-1533:34) "(ref," --> (978:31-978:36) "(ref," -(1533:34-1533:42) " create," --> (978:36-978:44) " create," -(1533:42-1533:48) " deps)" --> (978:44-978:50) " deps)" -(1533:48-1534:2) " {" --> (978:50-979:3) " {" -(1534:2-1534:6) " var" --> (979:3-979:7) "\tvar" -(1534:6-1534:19) " dispatcher =" --> (979:7-979:20) " dispatcher =" -(1534:19-1535:2) " resolveDispatcher();" --> (979:20-980:0) " resolveDispatcher();" -(1535:2-1535:9) " return" --> (980:0-980:10) "\n\t\t\treturn" -(1535:9-1535:20) " dispatcher" --> (980:10-980:21) " dispatcher" -(1535:20-1535:40) ".useImperativeHandle" --> (980:21-980:41) ".useImperativeHandle" -(1535:40-1535:45) "(ref," --> (980:41-980:46) "(ref," -(1535:45-1535:53) " create," --> (980:46-980:54) " create," -(1535:53-1536:1) " deps);" --> (980:54-981:2) " deps);" -(1536:1-1537:0) "}" --> (981:2-982:2) "\t}" -(1537:0-1537:9) "\nfunction" --> (982:2-982:11) "\tfunction" -(1537:9-1537:23) " useDebugValue" --> (982:11-982:25) " useDebugValue" -(1537:23-1537:30) "(value," --> (982:25-982:32) "(value," -(1537:30-1537:43) " formatterFn)" --> (982:32-982:45) " formatterFn)" -(1537:43-1538:2) " {" --> (982:45-983:3) " {" -(1538:2-1539:4) " {" --> (983:3-984:4) "\t{" -(1539:4-1539:8) " var" --> (984:4-984:8) "\tvar" -(1539:8-1539:21) " dispatcher =" --> (984:8-984:21) " dispatcher =" -(1539:21-1540:4) " resolveDispatcher();" --> (984:21-985:0) " resolveDispatcher();" -(1540:4-1540:11) " return" --> (985:0-985:11) "\n\t\t\t\treturn" -(1540:11-1540:22) " dispatcher" --> (985:11-985:22) " dispatcher" -(1540:22-1540:36) ".useDebugValue" --> (985:22-985:36) ".useDebugValue" -(1540:36-1540:43) "(value," --> (985:36-985:43) "(value," -(1540:43-1541:3) " formatterFn);" --> (985:43-986:3) " formatterFn);" -(1541:3-1542:1) "}" --> (986:3-987:2) "\t}" -(1542:1-1548:0) "}\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method." --> (987:2-988:2) "\t}" -(1548:0-1548:4) "\nvar" --> (988:2-988:6) "\tvar" -(1548:4-1548:20) " disabledDepth =" --> (988:6-988:22) " disabledDepth =" -(1548:20-1549:0) " 0;" --> (988:22-989:2) " 0;" -(1549:0-1549:4) "\nvar" --> (989:2-989:6) "\tvar" -(1549:4-1550:0) " prevLog;" --> (989:6-990:2) " prevLog;" -(1550:0-1550:4) "\nvar" --> (990:2-990:6) "\tvar" -(1550:4-1551:0) " prevInfo;" --> (990:6-991:2) " prevInfo;" -(1551:0-1551:4) "\nvar" --> (991:2-991:6) "\tvar" -(1551:4-1552:0) " prevWarn;" --> (991:6-992:2) " prevWarn;" -(1552:0-1552:4) "\nvar" --> (992:2-992:6) "\tvar" -(1552:4-1553:0) " prevError;" --> (992:6-993:2) " prevError;" -(1553:0-1553:4) "\nvar" --> (993:2-993:6) "\tvar" -(1553:4-1554:0) " prevGroup;" --> (993:6-994:2) " prevGroup;" -(1554:0-1554:4) "\nvar" --> (994:2-994:6) "\tvar" -(1554:4-1555:0) " prevGroupCollapsed;" --> (994:6-995:2) " prevGroupCollapsed;" -(1555:0-1555:4) "\nvar" --> (995:2-995:6) "\tvar" -(1555:4-1557:0) " prevGroupEnd;\n" --> (995:6-996:2) " prevGroupEnd;" -(1557:0-1557:9) "\nfunction" --> (996:2-996:11) "\tfunction" -(1557:9-1557:23) " disabledLog()" --> (996:11-996:25) " disabledLog()" -(1557:23-1557:25) " {" --> (996:25-997:2) " {" -(1557:25-1559:0) "}\n" --> (997:2-998:0) "\t}" -(1559:0-1559:12) "\ndisabledLog" --> (998:0-998:14) "\n\t\tdisabledLog" -(1559:12-1559:33) ".__reactDisabledLog =" --> (998:14-998:35) ".__reactDisabledLog =" -(1559:33-1560:0) " true;" --> (998:35-999:2) " true;" -(1560:0-1560:9) "\nfunction" --> (999:2-999:11) "\tfunction" -(1560:9-1560:23) " disableLogs()" --> (999:11-999:25) " disableLogs()" -(1560:23-1561:2) " {" --> (999:25-1000:3) " {" -(1561:2-1562:4) " {" --> (1000:3-1001:0) "\t{" -(1562:4-1562:8) " if " --> (1001:0-1001:8) "\n\t\t\t\tif " -(1562:8-1562:26) "(disabledDepth ===" --> (1001:8-1001:26) "(disabledDepth ===" -(1562:26-1562:29) " 0)" --> (1001:26-1001:29) " 0)" -(1562:29-1564:6) " {\n /* eslint-disable react-internal/no-production-logging */" --> (1001:29-1002:0) " {" -(1564:6-1564:16) " prevLog =" --> (1002:0-1002:15) "\n\t\t\t\t\tprevLog =" -(1564:16-1564:24) " console" --> (1002:15-1002:23) " console" -(1564:24-1565:6) ".log;" --> (1002:23-1003:0) ".log;" -(1565:6-1565:17) " prevInfo =" --> (1003:0-1003:16) "\n\t\t\t\t\tprevInfo =" -(1565:17-1565:25) " console" --> (1003:16-1003:24) " console" -(1565:25-1566:6) ".info;" --> (1003:24-1004:0) ".info;" -(1566:6-1566:17) " prevWarn =" --> (1004:0-1004:16) "\n\t\t\t\t\tprevWarn =" -(1566:17-1566:25) " console" --> (1004:16-1004:24) " console" -(1566:25-1567:6) ".warn;" --> (1004:24-1005:0) ".warn;" -(1567:6-1567:18) " prevError =" --> (1005:0-1005:17) "\n\t\t\t\t\tprevError =" -(1567:18-1567:26) " console" --> (1005:17-1005:25) " console" -(1567:26-1568:6) ".error;" --> (1005:25-1006:0) ".error;" -(1568:6-1568:18) " prevGroup =" --> (1006:0-1006:17) "\n\t\t\t\t\tprevGroup =" -(1568:18-1568:26) " console" --> (1006:17-1006:25) " console" -(1568:26-1569:6) ".group;" --> (1006:25-1007:0) ".group;" -(1569:6-1569:27) " prevGroupCollapsed =" --> (1007:0-1007:26) "\n\t\t\t\t\tprevGroupCollapsed =" -(1569:27-1569:35) " console" --> (1007:26-1007:34) " console" -(1569:35-1570:6) ".groupCollapsed;" --> (1007:34-1008:0) ".groupCollapsed;" -(1570:6-1570:21) " prevGroupEnd =" --> (1008:0-1008:20) "\n\t\t\t\t\tprevGroupEnd =" -(1570:21-1570:29) " console" --> (1008:20-1008:28) " console" -(1570:29-1572:6) ".groupEnd; // https://github.com/facebook/react/issues/19099\n" --> (1008:28-1009:5) ".groupEnd;" -(1572:6-1572:10) " var" --> (1009:5-1009:9) "\tvar" -(1572:10-1572:18) " props =" --> (1009:9-1009:17) " props =" -(1572:18-1573:8) " {" --> (1009:17-1010:6) " {" -(1573:8-1573:22) " configurable:" --> (1010:6-1010:19) "\tconfigurable" -(1573:22-1574:8) " true," --> (1010:19-1011:6) ":true," -(1574:8-1574:20) " enumerable:" --> (1011:6-1011:17) "\tenumerable" -(1574:20-1575:8) " true," --> (1011:17-1012:6) ":true," -(1575:8-1575:15) " value:" --> (1012:6-1012:12) "\tvalue" -(1575:15-1576:8) " disabledLog," --> (1012:12-1013:6) ":disabledLog," -(1576:8-1576:18) " writable:" --> (1013:6-1013:15) "\twritable" -(1576:18-1577:7) " true" --> (1013:15-1014:6) ":true" -(1577:7-1579:6) "}; // $FlowFixMe Flow thinks console is immutable.\n" --> (1014:6-1015:0) "};" -(1579:6-1579:13) " Object" --> (1015:0-1015:12) "\n\t\t\t\t\tObject" -(1579:13-1579:30) ".defineProperties" --> (1015:12-1015:29) ".defineProperties" -(1579:30-1579:39) "(console," --> (1015:29-1015:38) "(console," -(1579:39-1580:8) " {" --> (1015:38-1016:6) " {" -(1580:8-1580:14) " info:" --> (1016:6-1016:11) "\tinfo" -(1580:14-1581:8) " props," --> (1016:11-1017:6) ":props," -(1581:8-1581:13) " log:" --> (1017:6-1017:10) "\tlog" -(1581:13-1582:8) " props," --> (1017:10-1018:6) ":props," -(1582:8-1582:14) " warn:" --> (1018:6-1018:11) "\twarn" -(1582:14-1583:8) " props," --> (1018:11-1019:6) ":props," -(1583:8-1583:15) " error:" --> (1019:6-1019:12) "\terror" -(1583:15-1584:8) " props," --> (1019:12-1020:6) ":props," -(1584:8-1584:15) " group:" --> (1020:6-1020:12) "\tgroup" -(1584:15-1585:8) " props," --> (1020:12-1021:6) ":props," -(1585:8-1585:24) " groupCollapsed:" --> (1021:6-1021:21) "\tgroupCollapsed" -(1585:24-1586:8) " props," --> (1021:21-1022:6) ":props," -(1586:8-1586:18) " groupEnd:" --> (1022:6-1022:15) "\tgroupEnd" -(1586:18-1587:7) " props" --> (1022:15-1023:6) ":props" -(1587:7-1589:5) "});\n /* eslint-enable react-internal/no-production-logging */" --> (1023:6-1024:4) "});" -(1589:5-1591:4) "}\n" --> (1024:4-1025:0) "\t}" -(1591:4-1592:3) " disabledDepth++;" --> (1025:0-1026:3) "\n\t\t\t\tdisabledDepth++;" -(1592:3-1593:1) "}" --> (1026:3-1027:2) "\t}" -(1593:1-1594:0) "}" --> (1027:2-1028:2) "\t}" -(1594:0-1594:9) "\nfunction" --> (1028:2-1028:11) "\tfunction" -(1594:9-1594:24) " reenableLogs()" --> (1028:11-1028:26) " reenableLogs()" -(1594:24-1595:2) " {" --> (1028:26-1029:3) " {" -(1595:2-1596:4) " {" --> (1029:3-1030:0) "\t{" -(1596:4-1598:4) " disabledDepth--;\n" --> (1030:0-1031:0) "\n\t\t\t\tdisabledDepth--;" -(1598:4-1598:8) " if " --> (1031:0-1031:8) "\n\t\t\t\tif " -(1598:8-1598:26) "(disabledDepth ===" --> (1031:8-1031:26) "(disabledDepth ===" -(1598:26-1598:29) " 0)" --> (1031:26-1031:29) " 0)" -(1598:29-1600:6) " {\n /* eslint-disable react-internal/no-production-logging */" --> (1031:29-1032:5) " {" -(1600:6-1600:10) " var" --> (1032:5-1032:9) "\tvar" -(1600:10-1600:18) " props =" --> (1032:9-1032:17) " props =" -(1600:18-1601:8) " {" --> (1032:17-1033:6) " {" -(1601:8-1601:22) " configurable:" --> (1033:6-1033:19) "\tconfigurable" -(1601:22-1602:8) " true," --> (1033:19-1034:6) ":true," -(1602:8-1602:20) " enumerable:" --> (1034:6-1034:17) "\tenumerable" -(1602:20-1603:8) " true," --> (1034:17-1035:6) ":true," -(1603:8-1603:18) " writable:" --> (1035:6-1035:15) "\twritable" -(1603:18-1604:7) " true" --> (1035:15-1036:6) ":true" -(1604:7-1606:6) "}; // $FlowFixMe Flow thinks console is immutable.\n" --> (1036:6-1037:0) "};" -(1606:6-1606:13) " Object" --> (1037:0-1037:12) "\n\t\t\t\t\tObject" -(1606:13-1606:30) ".defineProperties" --> (1037:12-1037:29) ".defineProperties" -(1606:30-1606:39) "(console," --> (1037:29-1037:38) "(console," -(1606:39-1607:8) " {" --> (1037:38-1038:6) " {" -(1607:8-1607:13) " log:" --> (1038:6-1038:10) "\tlog" -(1607:13-1607:21) " _assign" --> (1038:10-1038:18) ":_assign" -(1607:21-1607:23) "({" --> (1038:18-1038:20) "({" -(1607:23-1607:25) "}," --> (1038:20-1038:22) "}," -(1607:25-1607:32) " props," --> (1038:22-1038:29) " props," -(1607:32-1608:10) " {" --> (1038:29-1039:7) " {" -(1608:10-1608:17) " value:" --> (1039:7-1039:13) "\tvalue" -(1608:17-1609:9) " prevLog" --> (1039:13-1040:7) ":prevLog" -(1609:9-1610:8) "})," --> (1040:7-1041:6) "})," -(1610:8-1610:14) " info:" --> (1041:6-1041:11) "\tinfo" -(1610:14-1610:22) " _assign" --> (1041:11-1041:19) ":_assign" -(1610:22-1610:24) "({" --> (1041:19-1041:21) "({" -(1610:24-1610:26) "}," --> (1041:21-1041:23) "}," -(1610:26-1610:33) " props," --> (1041:23-1041:30) " props," -(1610:33-1611:10) " {" --> (1041:30-1042:7) " {" -(1611:10-1611:17) " value:" --> (1042:7-1042:13) "\tvalue" -(1611:17-1612:9) " prevInfo" --> (1042:13-1043:7) ":prevInfo" -(1612:9-1613:8) "})," --> (1043:7-1044:6) "})," -(1613:8-1613:14) " warn:" --> (1044:6-1044:11) "\twarn" -(1613:14-1613:22) " _assign" --> (1044:11-1044:19) ":_assign" -(1613:22-1613:24) "({" --> (1044:19-1044:21) "({" -(1613:24-1613:26) "}," --> (1044:21-1044:23) "}," -(1613:26-1613:33) " props," --> (1044:23-1044:30) " props," -(1613:33-1614:10) " {" --> (1044:30-1045:7) " {" -(1614:10-1614:17) " value:" --> (1045:7-1045:13) "\tvalue" -(1614:17-1615:9) " prevWarn" --> (1045:13-1046:7) ":prevWarn" -(1615:9-1616:8) "})," --> (1046:7-1047:6) "})," -(1616:8-1616:15) " error:" --> (1047:6-1047:12) "\terror" -(1616:15-1616:23) " _assign" --> (1047:12-1047:20) ":_assign" -(1616:23-1616:25) "({" --> (1047:20-1047:22) "({" -(1616:25-1616:27) "}," --> (1047:22-1047:24) "}," -(1616:27-1616:34) " props," --> (1047:24-1047:31) " props," -(1616:34-1617:10) " {" --> (1047:31-1048:7) " {" -(1617:10-1617:17) " value:" --> (1048:7-1048:13) "\tvalue" -(1617:17-1618:9) " prevError" --> (1048:13-1049:7) ":prevError" -(1618:9-1619:8) "})," --> (1049:7-1050:6) "})," -(1619:8-1619:15) " group:" --> (1050:6-1050:12) "\tgroup" -(1619:15-1619:23) " _assign" --> (1050:12-1050:20) ":_assign" -(1619:23-1619:25) "({" --> (1050:20-1050:22) "({" -(1619:25-1619:27) "}," --> (1050:22-1050:24) "}," -(1619:27-1619:34) " props," --> (1050:24-1050:31) " props," -(1619:34-1620:10) " {" --> (1050:31-1051:7) " {" -(1620:10-1620:17) " value:" --> (1051:7-1051:13) "\tvalue" -(1620:17-1621:9) " prevGroup" --> (1051:13-1052:7) ":prevGroup" -(1621:9-1622:8) "})," --> (1052:7-1053:6) "})," -(1622:8-1622:24) " groupCollapsed:" --> (1053:6-1053:21) "\tgroupCollapsed" -(1622:24-1622:32) " _assign" --> (1053:21-1053:29) ":_assign" -(1622:32-1622:34) "({" --> (1053:29-1053:31) "({" -(1622:34-1622:36) "}," --> (1053:31-1053:33) "}," -(1622:36-1622:43) " props," --> (1053:33-1053:40) " props," -(1622:43-1623:10) " {" --> (1053:40-1054:7) " {" -(1623:10-1623:17) " value:" --> (1054:7-1054:13) "\tvalue" -(1623:17-1624:9) " prevGroupCollapsed" --> (1054:13-1055:7) ":prevGroupCollapsed" -(1624:9-1625:8) "})," --> (1055:7-1056:6) "})," -(1625:8-1625:18) " groupEnd:" --> (1056:6-1056:15) "\tgroupEnd" -(1625:18-1625:26) " _assign" --> (1056:15-1056:23) ":_assign" -(1625:26-1625:28) "({" --> (1056:23-1056:25) "({" -(1625:28-1625:30) "}," --> (1056:25-1056:27) "}," -(1625:30-1625:37) " props," --> (1056:27-1056:34) " props," -(1625:37-1626:10) " {" --> (1056:34-1057:7) " {" -(1626:10-1626:17) " value:" --> (1057:7-1057:13) "\tvalue" -(1626:17-1627:9) " prevGroupEnd" --> (1057:13-1058:7) ":prevGroupEnd" -(1627:9-1628:7) "})" --> (1058:7-1059:6) "})" -(1628:7-1630:5) "});\n /* eslint-enable react-internal/no-production-logging */" --> (1059:6-1060:4) "});" -(1630:5-1632:4) "}\n" --> (1060:4-1061:0) "\t}" -(1632:4-1632:8) " if " --> (1061:0-1061:8) "\n\t\t\t\tif " -(1632:8-1632:24) "(disabledDepth <" --> (1061:8-1061:24) "(disabledDepth <" -(1632:24-1632:27) " 0)" --> (1061:24-1061:27) " 0)" -(1632:27-1633:6) " {" --> (1061:27-1062:0) " {" -(1633:6-1633:12) " error" --> (1062:0-1062:11) "\n\t\t\t\t\terror" -(1633:12-1633:48) "('disabledDepth fell below zero. ' +" --> (1062:11-1062:47) "('disabledDepth fell below zero. ' +" -(1633:48-1634:5) " 'This is a bug in React. Please file an issue.');" --> (1062:47-1063:4) " 'This is a bug in React. Please file an issue.');" -(1634:5-1635:3) "}" --> (1063:4-1064:3) "\t}" -(1635:3-1636:1) "}" --> (1064:3-1065:2) "\t}" -(1636:1-1638:0) "}\n" --> (1065:2-1066:2) "\t}" -(1638:0-1638:4) "\nvar" --> (1066:2-1066:6) "\tvar" -(1638:4-1638:31) " ReactCurrentDispatcher$1 =" --> (1066:6-1066:33) " ReactCurrentDispatcher$1 =" -(1638:31-1638:52) " ReactSharedInternals" --> (1066:33-1066:54) " ReactSharedInternals" -(1638:52-1639:0) ".ReactCurrentDispatcher;" --> (1066:54-1067:2) ".ReactCurrentDispatcher;" -(1639:0-1639:4) "\nvar" --> (1067:2-1067:6) "\tvar" -(1639:4-1640:0) " prefix;" --> (1067:6-1068:2) " prefix;" -(1640:0-1640:9) "\nfunction" --> (1068:2-1068:11) "\tfunction" -(1640:9-1640:39) " describeBuiltInComponentFrame" --> (1068:11-1068:41) " describeBuiltInComponentFrame" -(1640:39-1640:45) "(name," --> (1068:41-1068:47) "(name," -(1640:45-1640:53) " source," --> (1068:47-1068:55) " source," -(1640:53-1640:62) " ownerFn)" --> (1068:55-1068:64) " ownerFn)" -(1640:62-1641:2) " {" --> (1068:64-1069:3) " {" -(1641:2-1642:4) " {" --> (1069:3-1070:0) "\t{" -(1642:4-1642:8) " if " --> (1070:0-1070:8) "\n\t\t\t\tif " -(1642:8-1642:19) "(prefix ===" --> (1070:8-1070:19) "(prefix ===" -(1642:19-1642:30) " undefined)" --> (1070:19-1070:30) " undefined)" -(1642:30-1644:6) " {\n // Extract the VM specific prefix used by each line." --> (1070:30-1071:0) " {" -(1644:6-1644:10) " try" --> (1071:0-1071:8) "\n\t\t\t\t\ttr" -(1644:10-1645:8) " {" --> (1071:8-1072:0) "y{" -(1645:8-1645:14) " throw" --> (1072:0-1072:12) "\n\t\t\t\t\t\tthrow" -(1645:14-1646:7) " Error();" --> (1072:12-1073:5) " Error();" -(1646:7-1646:15) "} catch " --> (1073:5-1073:12) "\t}catch" -(1646:15-1646:18) "(x)" --> (1073:12-1073:14) "(x" -(1646:18-1647:8) " {" --> (1073:14-1074:6) "){" -(1647:8-1647:12) " var" --> (1074:6-1074:10) "\tvar" -(1647:12-1647:20) " match =" --> (1074:10-1074:18) " match =" -(1647:20-1647:22) " x" --> (1074:18-1074:20) " x" -(1647:22-1647:28) ".stack" --> (1074:20-1074:26) ".stack" -(1647:28-1647:35) ".trim()" --> (1074:26-1074:33) ".trim()" -(1647:35-1647:41) ".match" --> (1074:33-1074:39) ".match" -(1647:41-1648:8) "(/\\n( *(at )?)/);" --> (1074:39-1075:0) "(/\\n( *(at )?)/);" -(1648:8-1648:17) " prefix =" --> (1075:0-1075:15) "\n\t\t\t\t\t\tprefix =" -(1648:17-1648:26) " match &&" --> (1075:15-1075:24) " match &&" -(1648:26-1648:32) " match" --> (1075:24-1075:30) " match" -(1648:32-1648:38) "[1] ||" --> (1075:30-1075:36) "[1] ||" -(1648:38-1649:7) " '';" --> (1075:36-1076:5) " '';" -(1649:7-1650:5) "}" --> (1076:5-1076:10) "\t}\t\t\t" -(1650:5-1653:4) "} // We use the prefix to ensure our stacks line up with native stack frames.\n\n" --> (1076:10-1077:0) "\t}" -(1653:4-1653:11) " return" --> (1077:0-1077:11) "\n\t\t\t\treturn" -(1653:11-1653:18) " '\\n' +" --> (1077:11-1077:18) " '\\n' +" -(1653:18-1653:27) " prefix +" --> (1077:18-1077:27) " prefix +" -(1653:27-1654:3) " name;" --> (1077:27-1078:3) " name;" -(1654:3-1655:1) "}" --> (1078:3-1079:2) "\t}" -(1655:1-1656:0) "}" --> (1079:2-1080:2) "\t}" -(1656:0-1656:4) "\nvar" --> (1080:2-1080:6) "\tvar" -(1656:4-1656:14) " reentry =" --> (1080:6-1080:16) " reentry =" -(1656:14-1657:0) " false;" --> (1080:16-1081:2) " false;" -(1657:0-1657:4) "\nvar" --> (1081:2-1081:6) "\tvar" -(1657:4-1659:0) " componentFrameCache;\n" --> (1081:6-1082:2) " componentFrameCache;" -(1659:0-1660:2) "\n{" --> (1082:2-1083:3) "\t{" -(1660:2-1660:6) " var" --> (1083:3-1083:7) "\tvar" -(1660:6-1660:31) " PossiblyWeakMap = typeof" --> (1083:7-1083:32) " PossiblyWeakMap = typeof" -(1660:31-1660:43) " WeakMap ===" --> (1083:32-1083:44) " WeakMap ===" -(1660:43-1660:56) " 'function' ?" --> (1083:44-1083:57) " 'function' ?" -(1660:56-1660:66) " WeakMap :" --> (1083:57-1083:67) " WeakMap :" -(1660:66-1661:2) " Map;" --> (1083:67-1084:0) " Map;" -(1661:2-1661:24) " componentFrameCache =" --> (1084:0-1084:25) "\n\t\t\tcomponentFrameCache =" -(1661:24-1661:28) " new" --> (1084:25-1084:29) " new" -(1661:28-1662:1) " PossiblyWeakMap();" --> (1084:29-1085:2) " PossiblyWeakMap();" -(1662:1-1664:0) "}\n" --> (1085:2-1086:2) "\t}" -(1664:0-1664:9) "\nfunction" --> (1086:2-1086:11) "\tfunction" -(1664:9-1664:38) " describeNativeComponentFrame" --> (1086:11-1086:40) " describeNativeComponentFrame" -(1664:38-1664:42) "(fn," --> (1086:40-1086:44) "(fn," -(1664:42-1664:53) " construct)" --> (1086:44-1086:55) " construct)" -(1664:53-1666:2) " {\n // If something asked for a stack inside a fake render, it should get ignored." --> (1086:55-1087:0) " {" -(1666:2-1666:7) " if (" --> (1087:0-1087:9) "\n\t\t\tif ( " -(1666:7-1666:13) "!fn ||" --> (1087:9-1087:15) "!fn ||" -(1666:13-1666:22) " reentry)" --> (1087:15-1087:24) " reentry)" -(1666:22-1667:4) " {" --> (1087:24-1088:0) " {" -(1667:4-1667:11) " return" --> (1088:0-1088:11) "\n\t\t\t\treturn" -(1667:11-1668:3) " '';" --> (1088:11-1089:3) " '';" -(1668:3-1670:2) "}\n" --> (1089:3-1090:3) "\t}" -(1670:2-1671:4) " {" --> (1090:3-1091:4) "\t{" -(1671:4-1671:8) " var" --> (1091:4-1091:8) "\tvar" -(1671:8-1671:16) " frame =" --> (1091:8-1091:16) " frame =" -(1671:16-1671:36) " componentFrameCache" --> (1091:16-1091:36) " componentFrameCache" -(1671:36-1671:40) ".get" --> (1091:36-1091:40) ".get" -(1671:40-1673:4) "(fn);\n" --> (1091:40-1092:0) "(fn);" -(1673:4-1673:8) " if " --> (1092:0-1092:8) "\n\t\t\t\tif " -(1673:8-1673:18) "(frame !==" --> (1092:8-1092:18) "(frame !==" -(1673:18-1673:29) " undefined)" --> (1092:18-1092:29) " undefined)" -(1673:29-1674:6) " {" --> (1092:29-1093:0) " {" -(1674:6-1674:13) " return" --> (1093:0-1093:12) "\n\t\t\t\t\treturn" -(1674:13-1675:5) " frame;" --> (1093:12-1094:4) " frame;" -(1675:5-1676:3) "}" --> (1094:4-1095:3) "\t}" -(1676:3-1678:2) "}\n" --> (1095:3-1096:3) "\t}" -(1678:2-1678:6) " var" --> (1096:3-1096:7) "\tvar" -(1678:6-1679:2) " control;" --> (1096:7-1097:0) " control;" -(1679:2-1679:12) " reentry =" --> (1097:0-1097:13) "\n\t\t\treentry =" -(1679:12-1680:2) " true;" --> (1097:13-1098:3) " true;" -(1680:2-1680:6) " var" --> (1098:3-1098:7) "\tvar" -(1680:6-1680:34) " previousPrepareStackTrace =" --> (1098:7-1098:35) " previousPrepareStackTrace =" -(1680:34-1680:40) " Error" --> (1098:35-1098:41) " Error" -(1680:40-1682:2) ".prepareStackTrace; // $FlowFixMe It does accept undefined.\n" --> (1098:41-1099:0) ".prepareStackTrace;" -(1682:2-1682:8) " Error" --> (1099:0-1099:9) "\n\t\t\tError" -(1682:8-1682:28) ".prepareStackTrace =" --> (1099:9-1099:29) ".prepareStackTrace =" -(1682:28-1683:2) " undefined;" --> (1099:29-1100:3) " undefined;" -(1683:2-1683:6) " var" --> (1100:3-1100:7) "\tvar" -(1683:6-1685:2) " previousDispatcher;\n" --> (1100:7-1101:3) " previousDispatcher;" -(1685:2-1686:4) " {" --> (1101:3-1102:0) "\t{" -(1686:4-1686:25) " previousDispatcher =" --> (1102:0-1102:25) "\n\t\t\t\tpreviousDispatcher =" -(1686:25-1686:50) " ReactCurrentDispatcher$1" --> (1102:25-1102:50) " ReactCurrentDispatcher$1" -(1686:50-1689:4) ".current; // Set the dispatcher in DEV because this might be call in the render function\n // for warnings.\n" --> (1102:50-1103:0) ".current;" -(1689:4-1689:29) " ReactCurrentDispatcher$1" --> (1103:0-1103:29) "\n\t\t\t\tReactCurrentDispatcher$1" -(1689:29-1689:39) ".current =" --> (1103:29-1103:39) ".current =" -(1689:39-1690:4) " null;" --> (1103:39-1104:0) " null;" -(1690:4-1691:3) " disableLogs();" --> (1104:0-1105:3) "\n\t\t\t\tdisableLogs();" -(1691:3-1693:2) "}\n" --> (1105:3-1106:0) "\t}" -(1693:2-1693:6) " try" --> (1106:0-1106:6) "\n\t\t\ttr" -(1693:6-1695:4) " {\n // This should throw." --> (1106:6-1107:0) "y{" -(1695:4-1695:8) " if " --> (1107:0-1107:8) "\n\t\t\t\tif " -(1695:8-1695:19) "(construct)" --> (1107:8-1107:19) "(construct)" -(1695:19-1697:6) " {\n // Something should be setting the props in the constructor." --> (1107:19-1108:5) " {" -(1697:6-1697:10) " var" --> (1108:5-1108:9) "\tvar" -(1697:10-1697:17) " Fake =" --> (1108:9-1108:16) " Fake =" -(1697:17-1697:29) " function ()" --> (1108:16-1108:27) " function()" -(1697:29-1698:8) " {" --> (1108:27-1109:0) " {" -(1698:8-1698:14) " throw" --> (1109:0-1109:12) "\n\t\t\t\t\t\tthrow" -(1698:14-1699:7) " Error();" --> (1109:12-1110:5) " Error();" -(1699:7-1702:6) "}; // $FlowFixMe\n\n" --> (1110:5-1111:0) "\t};" -(1702:6-1702:13) " Object" --> (1111:0-1111:12) "\n\t\t\t\t\tObject" -(1702:13-1702:28) ".defineProperty" --> (1111:12-1111:27) ".defineProperty" -(1702:28-1702:33) "(Fake" --> (1111:27-1111:32) "(Fake" -(1702:33-1702:44) ".prototype," --> (1111:32-1111:43) ".prototype," -(1702:44-1702:53) " 'props'," --> (1111:43-1111:52) " 'props'," -(1702:53-1703:8) " {" --> (1111:52-1112:6) " {" -(1703:8-1703:13) " set:" --> (1112:6-1112:10) "\tset" -(1703:13-1703:25) " function ()" --> (1112:10-1112:21) ":function()" -(1703:25-1706:10) " {\n // We use a throwing setter instead of frozen or non-writable props\n // because that won't throw in a non-strict mode function." --> (1112:21-1113:0) " {" -(1706:10-1706:16) " throw" --> (1113:0-1113:13) "\n\t\t\t\t\t\t\tthrow" -(1706:16-1707:9) " Error();" --> (1113:13-1114:6) " Error();" -(1707:9-1708:7) "}" --> (1114:6-1115:6) "\t}" -(1708:7-1710:6) "});\n" --> (1115:6-1116:0) "});" -(1710:6-1710:17) " if (typeof" --> (1116:0-1116:16) "\n\t\t\t\t\tif (typeof" -(1710:17-1710:29) " Reflect ===" --> (1116:16-1116:28) " Reflect ===" -(1710:29-1710:41) " 'object' &&" --> (1116:28-1116:40) " 'object' &&" -(1710:41-1710:49) " Reflect" --> (1116:40-1116:48) " Reflect" -(1710:49-1710:60) ".construct)" --> (1116:48-1116:59) ".construct)" -(1710:60-1713:8) " {\n // We construct a different control for this case to include any extra\n // frames added by the construct call." --> (1116:59-1117:0) " {" -(1713:8-1713:12) " try" --> (1117:0-1117:9) "\n\t\t\t\t\t\ttr" -(1713:12-1714:10) " {" --> (1117:9-1118:0) "y{" -(1714:10-1714:18) " Reflect" --> (1118:0-1118:15) "\n\t\t\t\t\t\t\tReflect" -(1714:18-1714:28) ".construct" --> (1118:15-1118:25) ".construct" -(1714:28-1714:34) "(Fake," --> (1118:25-1118:31) "(Fake," -(1714:34-1714:36) " [" --> (1118:31-1118:33) " [" -(1714:36-1715:9) "]);" --> (1118:33-1119:6) "]);" -(1715:9-1715:17) "} catch " --> (1119:6-1119:13) "\t}catch" -(1715:17-1715:20) "(x)" --> (1119:13-1119:15) "(x" -(1715:20-1716:10) " {" --> (1119:15-1120:0) "){" -(1716:10-1716:20) " control =" --> (1120:0-1120:17) "\n\t\t\t\t\t\t\tcontrol =" -(1716:20-1717:9) " x;" --> (1120:17-1121:6) " x;" -(1717:9-1719:8) "}\n" --> (1121:6-1121:7) "\t" -(1719:8-1719:16) " Reflect" --> (1121:7-1121:21) "}\t\t\t\t\t\tReflect" -(1719:16-1719:26) ".construct" --> (1121:21-1121:31) ".construct" -(1719:26-1719:30) "(fn," --> (1121:31-1121:35) "(fn," -(1719:30-1719:32) " [" --> (1121:35-1121:37) " [" -(1719:32-1719:34) "]," --> (1121:37-1121:39) "]," -(1719:34-1720:7) " Fake);" --> (1121:39-1122:5) " Fake);" -(1720:7-1720:13) "} else" --> (1122:5-1122:12) "\t} else" -(1720:13-1721:8) " {" --> (1122:12-1123:0) " {" -(1721:8-1721:12) " try" --> (1123:0-1123:9) "\n\t\t\t\t\t\ttr" -(1721:12-1722:10) " {" --> (1123:9-1124:0) "y{" -(1722:10-1722:15) " Fake" --> (1124:0-1124:12) "\n\t\t\t\t\t\t\tFake" -(1722:15-1723:9) ".call();" --> (1124:12-1125:6) ".call();" -(1723:9-1723:17) "} catch " --> (1125:6-1125:13) "\t}catch" -(1723:17-1723:20) "(x)" --> (1125:13-1125:15) "(x" -(1723:20-1724:10) " {" --> (1125:15-1126:0) "){" -(1724:10-1724:20) " control =" --> (1126:0-1126:17) "\n\t\t\t\t\t\t\tcontrol =" -(1724:20-1725:9) " x;" --> (1126:17-1127:6) " x;" -(1725:9-1727:8) "}\n" --> (1127:6-1127:7) "\t" -(1727:8-1727:11) " fn" --> (1127:7-1127:16) "}\t\t\t\t\t\tfn" -(1727:11-1727:16) ".call" --> (1127:16-1127:21) ".call" -(1727:16-1727:21) "(Fake" --> (1127:21-1127:26) "(Fake" -(1727:21-1728:7) ".prototype);" --> (1127:26-1128:5) ".prototype);" -(1728:7-1729:5) "}" --> (1128:5-1129:4) "\t}" -(1729:5-1729:11) "} else" --> (1129:4-1129:11) "\t} else" -(1729:11-1730:6) " {" --> (1129:11-1130:0) " {" -(1730:6-1730:10) " try" --> (1130:0-1130:8) "\n\t\t\t\t\ttr" -(1730:10-1731:8) " {" --> (1130:8-1131:0) "y{" -(1731:8-1731:14) " throw" --> (1131:0-1131:12) "\n\t\t\t\t\t\tthrow" -(1731:14-1732:7) " Error();" --> (1131:12-1132:5) " Error();" -(1732:7-1732:15) "} catch " --> (1132:5-1132:12) "\t}catch" -(1732:15-1732:18) "(x)" --> (1132:12-1132:14) "(x" -(1732:18-1733:8) " {" --> (1132:14-1133:0) "){" -(1733:8-1733:18) " control =" --> (1133:0-1133:16) "\n\t\t\t\t\t\tcontrol =" -(1733:18-1734:7) " x;" --> (1133:16-1134:5) " x;" -(1734:7-1736:6) "}\n" --> (1134:5-1134:6) "\t" -(1736:6-1737:5) " fn();" --> (1134:6-1135:4) "}\t\t\t\t\tfn();" -(1737:5-1738:3) "}" --> (1135:4-1136:3) "\t}" -(1738:3-1738:11) "} catch " --> (1136:3-1136:10) "\t}catch" -(1738:11-1738:19) "(sample)" --> (1136:10-1136:17) "(sample" -(1738:19-1740:4) " {\n // This is inlined manually because closure doesn't do it for us." --> (1136:17-1137:0) "){" -(1740:4-1740:8) " if " --> (1137:0-1137:8) "\n\t\t\t\tif " -(1740:8-1740:18) "(sample &&" --> (1137:8-1137:18) "(sample &&" -(1740:18-1740:36) " control && typeof" --> (1137:18-1137:36) " control && typeof" -(1740:36-1740:43) " sample" --> (1137:36-1137:43) " sample" -(1740:43-1740:53) ".stack ===" --> (1137:43-1137:53) ".stack ===" -(1740:53-1740:63) " 'string')" --> (1137:53-1137:63) " 'string')" -(1740:63-1743:6) " {\n // This extracts the first frame from the sample that isn't also in the control.\n // Skipping one frame that we assume is the frame that calls the two." --> (1137:63-1138:5) " {" -(1743:6-1743:10) " var" --> (1138:5-1138:9) "\tvar" -(1743:10-1743:24) " sampleLines =" --> (1138:9-1138:23) " sampleLines =" -(1743:24-1743:31) " sample" --> (1138:23-1138:30) " sample" -(1743:31-1743:37) ".stack" --> (1138:30-1138:36) ".stack" -(1743:37-1743:43) ".split" --> (1138:36-1138:42) ".split" -(1743:43-1744:6) "('\\n');" --> (1138:42-1139:5) "('\\n');" -(1744:6-1744:10) " var" --> (1139:5-1139:9) "\tvar" -(1744:10-1744:25) " controlLines =" --> (1139:9-1139:24) " controlLines =" -(1744:25-1744:33) " control" --> (1139:24-1139:32) " control" -(1744:33-1744:39) ".stack" --> (1139:32-1139:38) ".stack" -(1744:39-1744:45) ".split" --> (1139:38-1139:44) ".split" -(1744:45-1745:6) "('\\n');" --> (1139:44-1140:5) "('\\n');" -(1745:6-1745:10) " var" --> (1140:5-1140:9) "\tvar" -(1745:10-1745:14) " s =" --> (1140:9-1140:13) " s =" -(1745:14-1745:26) " sampleLines" --> (1140:13-1140:25) " sampleLines" -(1745:26-1745:35) ".length -" --> (1140:25-1140:34) ".length -" -(1745:35-1746:6) " 1;" --> (1140:34-1141:5) " 1;" -(1746:6-1746:10) " var" --> (1141:5-1141:9) "\tvar" -(1746:10-1746:14) " c =" --> (1141:9-1141:13) " c =" -(1746:14-1746:27) " controlLines" --> (1141:13-1141:26) " controlLines" -(1746:27-1746:36) ".length -" --> (1141:26-1141:35) ".length -" -(1746:36-1748:6) " 1;\n" --> (1141:35-1142:0) " 1;" -(1748:6-1748:13) " while " --> (1142:0-1142:11) "\n\t\t\t\t\twhile" -(1748:13-1748:18) "(s >=" --> (1142:11-1142:16) "(s >=" -(1748:18-1748:23) " 1 &&" --> (1142:16-1142:21) " 1 &&" -(1748:23-1748:28) " c >=" --> (1142:21-1142:26) " c >=" -(1748:28-1748:33) " 0 &&" --> (1142:26-1142:31) " 0 &&" -(1748:33-1748:45) " sampleLines" --> (1142:31-1142:43) " sampleLines" -(1748:45-1748:52) "[s] !==" --> (1142:43-1142:50) "[s] !==" -(1748:52-1748:65) " controlLines" --> (1142:50-1142:63) " controlLines" -(1748:65-1748:69) "[c])" --> (1142:63-1142:71) "[c])\t\t\t\t" -(1748:69-1755:8) " {\n // We expect at least one stack frame to be shared.\n // Typically this will be the root most one. However, stack frames may be\n // cut off due to maximum stack limits. In this case, one maybe cut off\n // earlier than the other. We assume that the sample is longer or the same\n // and there for cut off earlier. So we should find the root most frame in\n // the sample somewhere in the control." --> (1142:71-1143:0) "\t{" -(1755:8-1756:7) " c--;" --> (1143:0-1144:5) "\n\t\t\t\t\t\tc--;" -(1756:7-1758:6) "}\n" --> (1144:5-1145:0) "\t}" -(1758:6-1758:13) " for (;" --> (1145:0-1145:12) "\n\t\t\t\t\tfor (;" -(1758:13-1758:18) " s >=" --> (1145:12-1145:17) " s >=" -(1758:18-1758:23) " 1 &&" --> (1145:17-1145:22) " 1 &&" -(1758:23-1758:28) " c >=" --> (1145:22-1145:27) " c >=" -(1758:28-1758:31) " 0;" --> (1145:27-1145:30) " 0;" -(1758:31-1758:36) " s--," --> (1145:30-1145:34) " s--" -(1758:36-1758:41) " c--)" --> (1145:34-1145:43) ",c--)\t\t\t\t" -(1758:41-1761:8) " {\n // Next we find the first one that isn't the same which should be the\n // frame that called our sample function and the control." --> (1145:43-1146:0) "\t{" -(1761:8-1761:12) " if " --> (1146:0-1146:10) "\n\t\t\t\t\t\tif " -(1761:12-1761:24) "(sampleLines" --> (1146:10-1146:22) "(sampleLines" -(1761:24-1761:31) "[s] !==" --> (1146:22-1146:29) "[s] !==" -(1761:31-1761:44) " controlLines" --> (1146:29-1146:42) " controlLines" -(1761:44-1761:48) "[c])" --> (1146:42-1146:46) "[c])" -(1761:48-1767:10) " {\n // In V8, the first line is describing the message but other VMs don't.\n // If we're about to return the first line, and the control is also on the same\n // line, that's a pretty good indicator that our sample threw at same line as\n // the control. I.e. before we entered the sample frame. So we ignore this result.\n // This can happen if you passed a class to function component, or non-function." --> (1146:46-1147:0) " {" -(1767:10-1767:14) " if " --> (1147:0-1147:11) "\n\t\t\t\t\t\t\tif " -(1767:14-1767:20) "(s !==" --> (1147:11-1147:17) "(s !==" -(1767:20-1767:25) " 1 ||" --> (1147:17-1147:22) " 1 ||" -(1767:25-1767:31) " c !==" --> (1147:22-1147:28) " c !==" -(1767:31-1767:34) " 1)" --> (1147:28-1147:31) " 1)" -(1767:34-1768:12) " {" --> (1147:31-1148:0) " {" -(1768:12-1768:15) " do" --> (1148:0-1148:11) "\n\t\t\t\t\t\t\t\tdo" -(1768:15-1769:14) " {" --> (1148:11-1149:0) " {" -(1769:14-1770:14) " s--;" --> (1149:0-1150:0) "\n\t\t\t\t\t\t\t\t\ts--;" -(1770:14-1773:14) " c--; // We may still have similar intermediate frames from the construct call.\n // The next one that isn't the same should be our match though.\n" --> (1150:0-1151:0) "\n\t\t\t\t\t\t\t\t\tc--;" -(1773:14-1773:18) " if " --> (1151:0-1151:13) "\n\t\t\t\t\t\t\t\t\tif " -(1773:18-1773:22) "(c <" --> (1151:13-1151:17) "(c <" -(1773:22-1773:27) " 0 ||" --> (1151:17-1151:22) " 0 ||" -(1773:27-1773:39) " sampleLines" --> (1151:22-1151:34) " sampleLines" -(1773:39-1773:46) "[s] !==" --> (1151:34-1151:41) "[s] !==" -(1773:46-1773:59) " controlLines" --> (1151:41-1151:54) " controlLines" -(1773:59-1773:63) "[c])" --> (1151:54-1151:58) "[c])" -(1773:63-1775:16) " {\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier." --> (1151:58-1152:10) " {" -(1775:16-1775:20) " var" --> (1152:10-1152:14) "\tvar" -(1775:20-1775:29) " _frame =" --> (1152:14-1152:23) " _frame =" -(1775:29-1775:36) " '\\n' +" --> (1152:23-1152:30) " '\\n' +" -(1775:36-1775:48) " sampleLines" --> (1152:30-1152:42) " sampleLines" -(1775:48-1775:51) "[s]" --> (1152:42-1152:45) "[s]" -(1775:51-1775:59) ".replace" --> (1152:45-1152:53) ".replace" -(1775:59-1775:71) "(' at new '," --> (1152:53-1152:65) "(' at new '," -(1775:71-1777:16) " ' at ');\n" --> (1152:65-1153:10) " ' at ');" -(1777:16-1778:18) " {" --> (1153:10-1154:0) "\t{" -(1778:18-1778:29) " if (typeof" --> (1154:0-1154:22) "\n\t\t\t\t\t\t\t\t\t\t\tif (typeof" -(1778:29-1778:36) " fn ===" --> (1154:22-1154:29) " fn ===" -(1778:36-1778:48) " 'function')" --> (1154:29-1154:41) " 'function')" -(1778:48-1779:20) " {" --> (1154:41-1155:0) " {" -(1779:20-1779:40) " componentFrameCache" --> (1155:0-1155:32) "\n\t\t\t\t\t\t\t\t\t\t\t\tcomponentFrameCache" -(1779:40-1779:44) ".set" --> (1155:32-1155:36) ".set" -(1779:44-1779:48) "(fn," --> (1155:36-1155:40) "(fn," -(1779:48-1780:19) " _frame);" --> (1155:40-1156:11) " _frame);" -(1780:19-1781:17) "}" --> (1156:11-1157:10) "\t}" -(1781:17-1784:16) "} // Return the line we found.\n\n" --> (1157:10-1158:0) "\t}" -(1784:16-1784:23) " return" --> (1158:0-1158:17) "\n\t\t\t\t\t\t\t\t\t\treturn" -(1784:23-1785:15) " _frame;" --> (1158:17-1159:9) " _frame;" -(1785:15-1786:13) "}" --> (1159:9-1160:8) "\t}" -(1786:13-1786:21) "} while " --> (1160:8-1160:15) "\t}while" -(1786:21-1786:26) "(s >=" --> (1160:15-1160:20) "(s >=" -(1786:26-1786:31) " 1 &&" --> (1160:20-1160:25) " 1 &&" -(1786:31-1786:36) " c >=" --> (1160:25-1160:30) " c >=" -(1786:36-1787:11) " 0);" --> (1160:30-1161:7) " 0);" -(1787:11-1789:10) "}\n" --> (1161:7-1162:0) "\t}" -(1789:10-1790:9) " break;" --> (1162:0-1163:6) "\n\t\t\t\t\t\t\tbreak;" -(1790:9-1791:7) "}" --> (1163:6-1164:5) "\t}" -(1791:7-1792:5) "}" --> (1164:5-1165:4) "\t}" -(1792:5-1793:3) "}" --> (1165:4-1166:3) "\t}" -(1793:3-1793:12) "} finally" --> (1166:3-1166:11) "\t}finall" -(1793:12-1794:4) " {" --> (1166:11-1167:0) "y{" -(1794:4-1794:14) " reentry =" --> (1167:0-1167:14) "\n\t\t\t\treentry =" -(1794:14-1796:4) " false;\n" --> (1167:14-1168:4) " false;" -(1796:4-1797:6) " {" --> (1168:4-1169:0) "\t{" -(1797:6-1797:31) " ReactCurrentDispatcher$1" --> (1169:0-1169:30) "\n\t\t\t\t\tReactCurrentDispatcher$1" -(1797:31-1797:41) ".current =" --> (1169:30-1169:40) ".current =" -(1797:41-1798:6) " previousDispatcher;" --> (1169:40-1170:0) " previousDispatcher;" -(1798:6-1799:5) " reenableLogs();" --> (1170:0-1171:4) "\n\t\t\t\t\treenableLogs();" -(1799:5-1801:4) "}\n" --> (1171:4-1172:0) "\t}" -(1801:4-1801:10) " Error" --> (1172:0-1172:10) "\n\t\t\t\tError" -(1801:10-1801:30) ".prepareStackTrace =" --> (1172:10-1172:30) ".prepareStackTrace =" -(1801:30-1802:3) " previousPrepareStackTrace;" --> (1172:30-1173:3) " previousPrepareStackTrace;" -(1802:3-1805:2) "} // Fallback to just using the name if we couldn't make it throw.\n\n" --> (1173:3-1173:7) "\t}\t\t" -(1805:2-1805:6) " var" --> (1173:7-1173:11) "\tvar" -(1805:6-1805:13) " name =" --> (1173:11-1173:18) " name =" -(1805:13-1805:18) " fn ?" --> (1173:18-1173:23) " fn ?" -(1805:18-1805:21) " fn" --> (1173:23-1173:26) " fn" -(1805:21-1805:36) ".displayName ||" --> (1173:26-1173:41) ".displayName ||" -(1805:36-1805:39) " fn" --> (1173:41-1173:44) " fn" -(1805:39-1805:46) ".name :" --> (1173:44-1173:51) ".name :" -(1805:46-1806:2) " '';" --> (1173:51-1174:3) " '';" -(1806:2-1806:6) " var" --> (1174:3-1174:7) "\tvar" -(1806:6-1806:23) " syntheticFrame =" --> (1174:7-1174:24) " syntheticFrame =" -(1806:23-1806:30) " name ?" --> (1174:24-1174:31) " name ?" -(1806:30-1806:60) " describeBuiltInComponentFrame" --> (1174:31-1174:61) " describeBuiltInComponentFrame" -(1806:60-1806:68) "(name) :" --> (1174:61-1174:69) "(name) :" -(1806:68-1808:2) " '';\n" --> (1174:69-1175:3) " '';" -(1808:2-1809:4) " {" --> (1175:3-1176:0) "\t{" -(1809:4-1809:15) " if (typeof" --> (1176:0-1176:15) "\n\t\t\t\tif (typeof" -(1809:15-1809:22) " fn ===" --> (1176:15-1176:22) " fn ===" -(1809:22-1809:34) " 'function')" --> (1176:22-1176:34) " 'function')" -(1809:34-1810:6) " {" --> (1176:34-1177:0) " {" -(1810:6-1810:26) " componentFrameCache" --> (1177:0-1177:25) "\n\t\t\t\t\tcomponentFrameCache" -(1810:26-1810:30) ".set" --> (1177:25-1177:29) ".set" -(1810:30-1810:34) "(fn," --> (1177:29-1177:33) "(fn," -(1810:34-1811:5) " syntheticFrame);" --> (1177:33-1178:4) " syntheticFrame);" -(1811:5-1812:3) "}" --> (1178:4-1179:3) "\t}" -(1812:3-1814:2) "}\n" --> (1179:3-1180:0) "\t}" -(1814:2-1814:9) " return" --> (1180:0-1180:10) "\n\t\t\treturn" -(1814:9-1815:1) " syntheticFrame;" --> (1180:10-1181:2) " syntheticFrame;" -(1815:1-1816:0) "}" --> (1181:2-1182:2) "\t}" -(1816:0-1816:9) "\nfunction" --> (1182:2-1182:11) "\tfunction" -(1816:9-1816:40) " describeFunctionComponentFrame" --> (1182:11-1182:42) " describeFunctionComponentFrame" -(1816:40-1816:44) "(fn," --> (1182:42-1182:46) "(fn," -(1816:44-1816:52) " source," --> (1182:46-1182:54) " source," -(1816:52-1816:61) " ownerFn)" --> (1182:54-1182:63) " ownerFn)" -(1816:61-1817:2) " {" --> (1182:63-1183:3) " {" -(1817:2-1818:4) " {" --> (1183:3-1184:0) "\t{" -(1818:4-1818:11) " return" --> (1184:0-1184:11) "\n\t\t\t\treturn" -(1818:11-1818:40) " describeNativeComponentFrame" --> (1184:11-1184:40) " describeNativeComponentFrame" -(1818:40-1818:44) "(fn," --> (1184:40-1184:44) "(fn," -(1818:44-1819:3) " false);" --> (1184:44-1185:3) " false);" -(1819:3-1820:1) "}" --> (1185:3-1186:2) "\t}" -(1820:1-1822:0) "}\n" --> (1186:2-1187:2) "\t}" -(1822:0-1822:9) "\nfunction" --> (1187:2-1187:11) "\tfunction" -(1822:9-1822:25) " shouldConstruct" --> (1187:11-1187:27) " shouldConstruct" -(1822:25-1822:36) "(Component)" --> (1187:27-1187:38) "(Component)" -(1822:36-1823:2) " {" --> (1187:38-1188:3) " {" -(1823:2-1823:6) " var" --> (1188:3-1188:7) "\tvar" -(1823:6-1823:18) " prototype =" --> (1188:7-1188:19) " prototype =" -(1823:18-1823:28) " Component" --> (1188:19-1188:29) " Component" -(1823:28-1824:2) ".prototype;" --> (1188:29-1189:0) ".prototype;" -(1824:2-1824:12) " return !!" --> (1189:0-1189:15) "\n\t\t\treturn ! !" -(1824:12-1824:25) "(prototype &&" --> (1189:15-1189:28) "(prototype &&" -(1824:25-1824:35) " prototype" --> (1189:28-1189:38) " prototype" -(1824:35-1825:1) ".isReactComponent);" --> (1189:38-1190:2) ".isReactComponent);" -(1825:1-1827:0) "}\n" --> (1190:2-1191:2) "\t}" -(1827:0-1827:9) "\nfunction" --> (1191:2-1191:11) "\tfunction" -(1827:9-1827:46) " describeUnknownElementTypeFrameInDEV" --> (1191:11-1191:48) " describeUnknownElementTypeFrameInDEV" -(1827:46-1827:52) "(type," --> (1191:48-1191:54) "(type," -(1827:52-1827:60) " source," --> (1191:54-1191:62) " source," -(1827:60-1827:69) " ownerFn)" --> (1191:62-1191:71) " ownerFn)" -(1827:69-1829:2) " {\n" --> (1191:71-1192:0) " {" -(1829:2-1829:6) " if " --> (1192:0-1192:7) "\n\t\t\tif " -(1829:6-1829:14) "(type ==" --> (1192:7-1192:15) "(type ==" -(1829:14-1829:20) " null)" --> (1192:15-1192:21) " null)" -(1829:20-1830:4) " {" --> (1192:21-1193:0) " {" -(1830:4-1830:11) " return" --> (1193:0-1193:11) "\n\t\t\t\treturn" -(1830:11-1831:3) " '';" --> (1193:11-1194:3) " '';" -(1831:3-1833:2) "}\n" --> (1194:3-1195:0) "\t}" -(1833:2-1833:13) " if (typeof" --> (1195:0-1195:14) "\n\t\t\tif (typeof" -(1833:13-1833:22) " type ===" --> (1195:14-1195:23) " type ===" -(1833:22-1833:34) " 'function')" --> (1195:23-1195:35) " 'function')" -(1833:34-1834:4) " {" --> (1195:35-1196:4) " {" -(1834:4-1835:6) " {" --> (1196:4-1197:0) "\t{" -(1835:6-1835:13) " return" --> (1197:0-1197:12) "\n\t\t\t\t\treturn" -(1835:13-1835:42) " describeNativeComponentFrame" --> (1197:12-1197:41) " describeNativeComponentFrame" -(1835:42-1835:48) "(type," --> (1197:41-1197:47) "(type," -(1835:48-1835:64) " shouldConstruct" --> (1197:47-1197:63) " shouldConstruct" -(1835:64-1836:5) "(type));" --> (1197:63-1198:4) "(type));" -(1836:5-1837:3) "}" --> (1198:4-1199:3) "\t}" -(1837:3-1839:2) "}\n" --> (1199:3-1200:0) "\t}" -(1839:2-1839:13) " if (typeof" --> (1200:0-1200:14) "\n\t\t\tif (typeof" -(1839:13-1839:22) " type ===" --> (1200:14-1200:23) " type ===" -(1839:22-1839:32) " 'string')" --> (1200:23-1200:33) " 'string')" -(1839:32-1840:4) " {" --> (1200:33-1201:0) " {" -(1840:4-1840:11) " return" --> (1201:0-1201:11) "\n\t\t\t\treturn" -(1840:11-1840:41) " describeBuiltInComponentFrame" --> (1201:11-1201:41) " describeBuiltInComponentFrame" -(1840:41-1841:3) "(type);" --> (1201:41-1202:3) "(type);" -(1841:3-1843:2) "}\n" --> (1202:3-1203:0) "\t}" -(1843:2-1843:10) " switch " --> (1203:0-1203:10) "\n\t\t\tswitch" -(1843:10-1844:4) "(type) {" --> (1203:10-1204:0) "(type){" -(1844:4-1844:9) " case" --> (1204:0-1204:9) "\n\t\t\t\tcase" -(1844:9-1844:17) " exports" --> (1204:9-1204:17) " exports" -(1844:17-1845:6) ".Suspense:" --> (1204:17-1205:0) ".Suspense:" -(1845:6-1845:13) " return" --> (1205:0-1205:12) "\n\t\t\t\t\treturn" -(1845:13-1845:43) " describeBuiltInComponentFrame" --> (1205:12-1205:42) " describeBuiltInComponentFrame" -(1845:43-1847:4) "('Suspense');\n" --> (1205:42-1206:0) "('Suspense');" -(1847:4-1847:9) " case" --> (1206:0-1206:9) "\n\t\t\t\tcase" -(1847:9-1848:6) " REACT_SUSPENSE_LIST_TYPE:" --> (1206:9-1207:0) " REACT_SUSPENSE_LIST_TYPE:" -(1848:6-1848:13) " return" --> (1207:0-1207:12) "\n\t\t\t\t\treturn" -(1848:13-1848:43) " describeBuiltInComponentFrame" --> (1207:12-1207:42) " describeBuiltInComponentFrame" -(1848:43-1849:3) "('SuspenseList');" --> (1207:42-1208:3) "('SuspenseList');" -(1849:3-1851:2) "}\n" --> (1208:3-1209:0) "\t}" -(1851:2-1851:13) " if (typeof" --> (1209:0-1209:14) "\n\t\t\tif (typeof" -(1851:13-1851:22) " type ===" --> (1209:14-1209:23) " type ===" -(1851:22-1851:32) " 'object')" --> (1209:23-1209:33) " 'object')" -(1851:32-1852:4) " {" --> (1209:33-1210:0) " {" -(1852:4-1852:12) " switch " --> (1210:0-1210:11) "\n\t\t\t\tswitch" -(1852:12-1852:17) "(type" --> (1210:11-1210:16) "(type" -(1852:17-1853:6) ".$$typeof) {" --> (1210:16-1211:0) ".$$typeof){" -(1853:6-1853:11) " case" --> (1211:0-1211:10) "\n\t\t\t\t\tcase" -(1853:11-1854:8) " REACT_FORWARD_REF_TYPE:" --> (1211:10-1212:0) " REACT_FORWARD_REF_TYPE:" -(1854:8-1854:15) " return" --> (1212:0-1212:13) "\n\t\t\t\t\t\treturn" -(1854:15-1854:46) " describeFunctionComponentFrame" --> (1212:13-1212:44) " describeFunctionComponentFrame" -(1854:46-1854:51) "(type" --> (1212:44-1212:49) "(type" -(1854:51-1856:6) ".render);\n" --> (1212:49-1213:0) ".render);" -(1856:6-1856:11) " case" --> (1213:0-1213:10) "\n\t\t\t\t\tcase" -(1856:11-1858:8) " REACT_MEMO_TYPE:\n // Memo may contain any component type so we recursively resolve it." --> (1213:10-1214:0) " REACT_MEMO_TYPE:" -(1858:8-1858:15) " return" --> (1214:0-1214:13) "\n\t\t\t\t\t\treturn" -(1858:15-1858:52) " describeUnknownElementTypeFrameInDEV" --> (1214:13-1214:50) " describeUnknownElementTypeFrameInDEV" -(1858:52-1858:57) "(type" --> (1214:50-1214:55) "(type" -(1858:57-1858:63) ".type," --> (1214:55-1214:61) ".type," -(1858:63-1858:71) " source," --> (1214:61-1214:69) " source," -(1858:71-1860:6) " ownerFn);\n" --> (1214:69-1215:0) " ownerFn);" -(1860:6-1860:11) " case" --> (1215:0-1215:10) "\n\t\t\t\t\tcase" -(1860:11-1861:8) " REACT_BLOCK_TYPE:" --> (1215:10-1216:0) " REACT_BLOCK_TYPE:" -(1861:8-1861:15) " return" --> (1216:0-1216:13) "\n\t\t\t\t\t\treturn" -(1861:15-1861:46) " describeFunctionComponentFrame" --> (1216:13-1216:44) " describeFunctionComponentFrame" -(1861:46-1861:51) "(type" --> (1216:44-1216:49) "(type" -(1861:51-1863:6) "._render);\n" --> (1216:49-1217:0) "._render);" -(1863:6-1863:11) " case" --> (1217:0-1217:10) "\n\t\t\t\t\tcase" -(1863:11-1864:8) " REACT_LAZY_TYPE:" --> (1217:10-1218:6) " REACT_LAZY_TYPE:" -(1864:8-1865:10) " {" --> (1218:6-1219:7) "\t{" -(1865:10-1865:14) " var" --> (1219:7-1219:11) "\tvar" -(1865:14-1865:30) " lazyComponent =" --> (1219:11-1219:27) " lazyComponent =" -(1865:30-1866:10) " type;" --> (1219:27-1220:7) " type;" -(1866:10-1866:14) " var" --> (1220:7-1220:11) "\tvar" -(1866:14-1866:24) " payload =" --> (1220:11-1220:21) " payload =" -(1866:24-1866:38) " lazyComponent" --> (1220:21-1220:35) " lazyComponent" -(1866:38-1867:10) "._payload;" --> (1220:35-1221:7) "._payload;" -(1867:10-1867:14) " var" --> (1221:7-1221:11) "\tvar" -(1867:14-1867:21) " init =" --> (1221:11-1221:18) " init =" -(1867:21-1867:35) " lazyComponent" --> (1221:18-1221:32) " lazyComponent" -(1867:35-1869:10) "._init;\n" --> (1221:32-1222:0) "._init;" -(1869:10-1869:14) " try" --> (1222:0-1222:10) "\n\t\t\t\t\t\t\ttr" -(1869:14-1871:12) " {\n // Lazy may contain any component type so we recursively resolve it." --> (1222:10-1223:0) "y{" -(1871:12-1871:19) " return" --> (1223:0-1223:15) "\n\t\t\t\t\t\t\t\treturn" -(1871:19-1871:56) " describeUnknownElementTypeFrameInDEV" --> (1223:15-1223:52) " describeUnknownElementTypeFrameInDEV" -(1871:56-1871:61) "(init" --> (1223:52-1223:57) "(init" -(1871:61-1871:71) "(payload)," --> (1223:57-1223:67) "(payload)," -(1871:71-1871:79) " source," --> (1223:67-1223:75) " source," -(1871:79-1872:11) " ownerFn);" --> (1223:75-1224:7) " ownerFn);" -(1872:11-1872:19) "} catch " --> (1224:7-1224:14) "\t}catch" -(1872:19-1872:22) "(x)" --> (1224:14-1224:16) "(x" -(1872:22-1872:24) " {" --> (1224:16-1225:7) "){" -(1872:24-1873:9) "}" --> (1225:7-1225:14) "\t}\t\t\t\t\t" -(1873:9-1874:5) "}" --> (1225:14-1226:4) "\t}" -(1874:5-1875:3) "}" --> (1226:4-1227:3) "\t}" -(1875:3-1877:2) "}\n" --> (1227:3-1228:0) "\t}" -(1877:2-1877:9) " return" --> (1228:0-1228:10) "\n\t\t\treturn" -(1877:9-1878:1) " '';" --> (1228:10-1229:2) " '';" -(1878:1-1880:0) "}\n" --> (1229:2-1230:2) "\t}" -(1880:0-1880:4) "\nvar" --> (1230:2-1230:6) "\tvar" -(1880:4-1880:25) " loggedTypeFailures =" --> (1230:6-1230:27) " loggedTypeFailures =" -(1880:25-1880:27) " {" --> (1230:27-1230:29) " {" -(1880:27-1881:0) "};" --> (1230:29-1231:2) "};" -(1881:0-1881:4) "\nvar" --> (1231:2-1231:6) "\tvar" -(1881:4-1881:31) " ReactDebugCurrentFrame$1 =" --> (1231:6-1231:33) " ReactDebugCurrentFrame$1 =" -(1881:31-1881:52) " ReactSharedInternals" --> (1231:33-1231:54) " ReactSharedInternals" -(1881:52-1883:0) ".ReactDebugCurrentFrame;\n" --> (1231:54-1232:2) ".ReactDebugCurrentFrame;" -(1883:0-1883:9) "\nfunction" --> (1232:2-1232:11) "\tfunction" -(1883:9-1883:39) " setCurrentlyValidatingElement" --> (1232:11-1232:41) " setCurrentlyValidatingElement" -(1883:39-1883:48) "(element)" --> (1232:41-1232:50) "(element)" -(1883:48-1884:2) " {" --> (1232:50-1233:3) " {" -(1884:2-1885:4) " {" --> (1233:3-1234:0) "\t{" -(1885:4-1885:8) " if " --> (1234:0-1234:8) "\n\t\t\t\tif " -(1885:8-1885:17) "(element)" --> (1234:8-1234:17) "(element)" -(1885:17-1886:6) " {" --> (1234:17-1235:5) " {" -(1886:6-1886:10) " var" --> (1235:5-1235:9) "\tvar" -(1886:10-1886:18) " owner =" --> (1235:9-1235:17) " owner =" -(1886:18-1886:26) " element" --> (1235:17-1235:25) " element" -(1886:26-1887:6) "._owner;" --> (1235:25-1236:5) "._owner;" -(1887:6-1887:10) " var" --> (1236:5-1236:9) "\tvar" -(1887:10-1887:18) " stack =" --> (1236:9-1236:17) " stack =" -(1887:18-1887:55) " describeUnknownElementTypeFrameInDEV" --> (1236:17-1236:54) " describeUnknownElementTypeFrameInDEV" -(1887:55-1887:63) "(element" --> (1236:54-1236:62) "(element" -(1887:63-1887:69) ".type," --> (1236:62-1236:68) ".type," -(1887:69-1887:77) " element" --> (1236:68-1236:76) " element" -(1887:77-1887:86) "._source," --> (1236:76-1236:85) "._source," -(1887:86-1887:94) " owner ?" --> (1236:85-1236:93) " owner ?" -(1887:94-1887:100) " owner" --> (1236:93-1236:99) " owner" -(1887:100-1887:107) ".type :" --> (1236:99-1236:106) ".type :" -(1887:107-1888:6) " null);" --> (1236:106-1237:0) " null);" -(1888:6-1888:31) " ReactDebugCurrentFrame$1" --> (1237:0-1237:30) "\n\t\t\t\t\tReactDebugCurrentFrame$1" -(1888:31-1888:50) ".setExtraStackFrame" --> (1237:30-1237:49) ".setExtraStackFrame" -(1888:50-1889:5) "(stack);" --> (1237:49-1238:4) "(stack);" -(1889:5-1889:11) "} else" --> (1238:4-1238:11) "\t} else" -(1889:11-1890:6) " {" --> (1238:11-1239:0) " {" -(1890:6-1890:31) " ReactDebugCurrentFrame$1" --> (1239:0-1239:30) "\n\t\t\t\t\tReactDebugCurrentFrame$1" -(1890:31-1890:50) ".setExtraStackFrame" --> (1239:30-1239:49) ".setExtraStackFrame" -(1890:50-1891:5) "(null);" --> (1239:49-1240:4) "(null);" -(1891:5-1892:3) "}" --> (1240:4-1241:3) "\t}" -(1892:3-1893:1) "}" --> (1241:3-1242:2) "\t}" -(1893:1-1895:0) "}\n" --> (1242:2-1243:2) "\t}" -(1895:0-1895:9) "\nfunction" --> (1243:2-1243:11) "\tfunction" -(1895:9-1895:24) " checkPropTypes" --> (1243:11-1243:26) " checkPropTypes" -(1895:24-1895:35) "(typeSpecs," --> (1243:26-1243:37) "(typeSpecs," -(1895:35-1895:43) " values," --> (1243:37-1243:45) " values," -(1895:43-1895:53) " location," --> (1243:45-1243:55) " location," -(1895:53-1895:68) " componentName," --> (1243:55-1243:70) " componentName," -(1895:68-1895:77) " element)" --> (1243:70-1243:79) " element)" -(1895:77-1896:2) " {" --> (1243:79-1244:3) " {" -(1896:2-1898:4) " {\n // $FlowFixMe This is okay but Flow doesn't know it." --> (1244:3-1245:4) "\t{" -(1898:4-1898:8) " var" --> (1245:4-1245:8) "\tvar" -(1898:8-1898:14) " has =" --> (1245:8-1245:14) " has =" -(1898:14-1898:23) " Function" --> (1245:14-1245:23) " Function" -(1898:23-1898:28) ".call" --> (1245:23-1245:28) ".call" -(1898:28-1898:33) ".bind" --> (1245:28-1245:33) ".bind" -(1898:33-1898:40) "(Object" --> (1245:33-1245:40) "(Object" -(1898:40-1898:50) ".prototype" --> (1245:40-1245:50) ".prototype" -(1898:50-1900:4) ".hasOwnProperty);\n" --> (1245:50-1246:0) ".hasOwnProperty);" -(1900:4-1900:9) " for " --> (1246:0-1246:9) "\n\t\t\t\tfor " -(1900:9-1900:13) "(var" --> (1246:9-1246:13) "(var" -(1900:13-1900:29) " typeSpecName in" --> (1246:13-1246:29) " typeSpecName in" -(1900:29-1900:40) " typeSpecs)" --> (1246:29-1246:44) " typeSpecs) \t\t\t" -(1900:40-1901:6) " {" --> (1246:44-1247:0) "\t{" -(1901:6-1901:10) " if " --> (1247:0-1247:9) "\n\t\t\t\t\tif " -(1901:10-1901:14) "(has" --> (1247:9-1247:13) "(has" -(1901:14-1901:25) "(typeSpecs," --> (1247:13-1247:24) "(typeSpecs," -(1901:25-1901:40) " typeSpecName))" --> (1247:24-1247:39) " typeSpecName))" -(1901:40-1902:8) " {" --> (1247:39-1248:6) " {" -(1902:8-1902:12) " var" --> (1248:6-1248:10) "\tvar" -(1902:12-1902:27) " error$1 = void" --> (1248:10-1248:25) " error$1 = void" -(1902:27-1906:8) " 0; // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n" --> (1248:25-1249:0) " 0;" -(1906:8-1906:12) " try" --> (1249:0-1249:9) "\n\t\t\t\t\t\ttr" -(1906:12-1909:10) " {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message." --> (1249:9-1250:0) "y{" -(1909:10-1909:21) " if (typeof" --> (1250:0-1250:18) "\n\t\t\t\t\t\t\tif (typeof" -(1909:21-1909:31) " typeSpecs" --> (1250:18-1250:28) " typeSpecs" -(1909:31-1909:49) "[typeSpecName] !==" --> (1250:28-1250:46) "[typeSpecName] !==" -(1909:49-1909:61) " 'function')" --> (1250:46-1250:58) " 'function')" -(1909:61-1910:12) " {" --> (1250:58-1251:8) " {" -(1910:12-1910:16) " var" --> (1251:8-1251:12) "\tvar" -(1910:16-1910:22) " err =" --> (1251:12-1251:18) " err =" -(1910:22-1910:29) " Error(" --> (1251:18-1251:25) " Error(" -(1910:29-1910:46) "(componentName ||" --> (1251:25-1251:42) "(componentName ||" -(1910:46-1910:63) " 'React class') +" --> (1251:42-1251:59) " 'React class') +" -(1910:63-1910:70) " ': ' +" --> (1251:59-1251:66) " ': ' +" -(1910:70-1910:81) " location +" --> (1251:66-1251:77) " location +" -(1910:81-1910:93) " ' type `' +" --> (1251:77-1251:89) " ' type `' +" -(1910:93-1910:108) " typeSpecName +" --> (1251:89-1251:104) " typeSpecName +" -(1910:108-1910:127) " '` is invalid; ' +" --> (1251:104-1251:123) " '` is invalid; ' +" -(1910:127-1910:215) " 'it must be a function, usually from the `prop-types` package, but received `' + typeof" --> (1251:123-1251:211) " 'it must be a function, usually from the `prop-types` package, but received `' + typeof" -(1910:215-1910:225) " typeSpecs" --> (1251:211-1251:221) " typeSpecs" -(1910:225-1910:241) "[typeSpecName] +" --> (1251:221-1251:237) "[typeSpecName] +" -(1910:241-1910:248) " '`.' +" --> (1251:237-1251:244) " '`.' +" -(1910:248-1911:12) " 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');" --> (1251:244-1252:0) " 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');" -(1911:12-1911:16) " err" --> (1252:0-1252:12) "\n\t\t\t\t\t\t\t\terr" -(1911:16-1911:23) ".name =" --> (1252:12-1252:19) ".name =" -(1911:23-1912:12) " 'Invariant Violation';" --> (1252:19-1253:0) " 'Invariant Violation';" -(1912:12-1912:18) " throw" --> (1253:0-1253:14) "\n\t\t\t\t\t\t\t\tthrow" -(1912:18-1913:11) " err;" --> (1253:14-1254:7) " err;" -(1913:11-1915:10) "}\n" --> (1254:7-1255:0) "\t}" -(1915:10-1915:20) " error$1 =" --> (1255:0-1255:17) "\n\t\t\t\t\t\t\terror$1 =" -(1915:20-1915:30) " typeSpecs" --> (1255:17-1255:27) " typeSpecs" -(1915:30-1915:44) "[typeSpecName]" --> (1255:27-1255:41) "[typeSpecName]" -(1915:44-1915:52) "(values," --> (1255:41-1255:49) "(values," -(1915:52-1915:66) " typeSpecName," --> (1255:49-1255:63) " typeSpecName," -(1915:66-1915:81) " componentName," --> (1255:63-1255:78) " componentName," -(1915:81-1915:91) " location," --> (1255:78-1255:88) " location," -(1915:91-1915:97) " null," --> (1255:88-1255:94) " null," -(1915:97-1916:9) " 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');" --> (1255:94-1256:6) " 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');" -(1916:9-1916:17) "} catch " --> (1256:6-1256:13) "\t}catch" -(1916:17-1916:21) "(ex)" --> (1256:13-1256:16) "(ex" -(1916:21-1917:10) " {" --> (1256:16-1257:0) "){" -(1917:10-1917:20) " error$1 =" --> (1257:0-1257:17) "\n\t\t\t\t\t\t\terror$1 =" -(1917:20-1918:9) " ex;" --> (1257:17-1258:6) " ex;" -(1918:9-1920:8) "}\n" --> (1258:6-1258:7) "\t" -(1920:8-1920:12) " if " --> (1258:7-1258:17) "}\t\t\t\t\t\tif " -(1920:12-1920:25) "(error$1 && !" --> (1258:17-1258:31) "(error$1 && !" -(1920:25-1920:44) "(error$1 instanceof" --> (1258:31-1258:51) "(error$1 instanceof " -(1920:44-1920:52) " Error))" --> (1258:51-1258:59) " Error))" -(1920:52-1921:10) " {" --> (1258:59-1259:0) " {" -(1921:10-1921:40) " setCurrentlyValidatingElement" --> (1259:0-1259:37) "\n\t\t\t\t\t\t\tsetCurrentlyValidatingElement" -(1921:40-1923:10) "(element);\n" --> (1259:37-1260:0) "(element);" -(1923:10-1923:16) " error" --> (1260:0-1260:13) "\n\t\t\t\t\t\t\terror" -(1923:16-1923:49) "('%s: type specification of %s' +" --> (1260:13-1260:46) "('%s: type specification of %s' +" -(1923:49-1923:89) " ' `%s` is invalid; the type checker ' +" --> (1260:46-1260:86) " ' `%s` is invalid; the type checker ' +" -(1923:89-1923:155) " 'function must return `null` or an `Error` but returned a %s. ' +" --> (1260:86-1260:152) " 'function must return `null` or an `Error` but returned a %s. ' +" -(1923:155-1923:223) " 'You may have forgotten to pass an argument to the type checker ' +" --> (1260:152-1260:220) " 'You may have forgotten to pass an argument to the type checker ' +" -(1923:223-1923:290) " 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +" --> (1260:220-1260:287) " 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +" -(1923:290-1923:325) " 'shape all require an argument).'," --> (1260:287-1260:322) " 'shape all require an argument).'," -(1923:325-1923:342) " componentName ||" --> (1260:322-1260:339) " componentName ||" -(1923:342-1923:357) " 'React class'," --> (1260:339-1260:354) " 'React class'," -(1923:357-1923:367) " location," --> (1260:354-1260:364) " location," -(1923:367-1923:388) " typeSpecName, typeof" --> (1260:364-1260:385) " typeSpecName, typeof" -(1923:388-1925:10) " error$1);\n" --> (1260:385-1261:0) " error$1);" -(1925:10-1925:40) " setCurrentlyValidatingElement" --> (1261:0-1261:37) "\n\t\t\t\t\t\t\tsetCurrentlyValidatingElement" -(1925:40-1926:9) "(null);" --> (1261:37-1262:6) "(null);" -(1926:9-1928:8) "}\n" --> (1262:6-1263:0) "\t}" -(1928:8-1928:12) " if " --> (1263:0-1263:10) "\n\t\t\t\t\t\tif " -(1928:12-1928:31) "(error$1 instanceof" --> (1263:10-1263:30) "(error$1 instanceof " -(1928:31-1928:42) " Error && !" --> (1263:30-1263:42) " Error && !" -(1928:42-1928:50) "(error$1" --> (1263:42-1263:50) "(error$1" -(1928:50-1928:61) ".message in" --> (1263:50-1263:62) ".message in " -(1928:61-1928:82) " loggedTypeFailures))" --> (1263:62-1263:83) " loggedTypeFailures))" -(1928:82-1931:10) " {\n // Only monitor this failure once because there tends to be a lot of the\n // same error." --> (1263:83-1264:0) " {" -(1931:10-1931:29) " loggedTypeFailures" --> (1264:0-1264:26) "\n\t\t\t\t\t\t\tloggedTypeFailures" -(1931:29-1931:37) "[error$1" --> (1264:26-1264:34) "[error$1" -(1931:37-1931:48) ".message] =" --> (1264:34-1264:45) ".message] =" -(1931:48-1932:10) " true;" --> (1264:45-1265:0) " true;" -(1932:10-1932:40) " setCurrentlyValidatingElement" --> (1265:0-1265:37) "\n\t\t\t\t\t\t\tsetCurrentlyValidatingElement" -(1932:40-1934:10) "(element);\n" --> (1265:37-1266:0) "(element);" -(1934:10-1934:16) " error" --> (1266:0-1266:13) "\n\t\t\t\t\t\t\terror" -(1934:16-1934:38) "('Failed %s type: %s'," --> (1266:13-1266:35) "('Failed %s type: %s'," -(1934:38-1934:48) " location," --> (1266:35-1266:45) " location," -(1934:48-1934:56) " error$1" --> (1266:45-1266:53) " error$1" -(1934:56-1936:10) ".message);\n" --> (1266:53-1267:0) ".message);" -(1936:10-1936:40) " setCurrentlyValidatingElement" --> (1267:0-1267:37) "\n\t\t\t\t\t\t\tsetCurrentlyValidatingElement" -(1936:40-1937:9) "(null);" --> (1267:37-1268:6) "(null);" -(1937:9-1938:7) "}" --> (1268:6-1269:5) "\t}" -(1938:7-1939:5) "}" --> (1269:5-1270:4) "\t}" -(1939:5-1940:3) "}" --> (1270:4-1271:3) "\t}" -(1940:3-1941:1) "}" --> (1271:3-1272:2) "\t}" -(1941:1-1943:0) "}\n" --> (1272:2-1273:2) "\t}" -(1943:0-1943:9) "\nfunction" --> (1273:2-1273:11) "\tfunction" -(1943:9-1943:41) " setCurrentlyValidatingElement$1" --> (1273:11-1273:43) " setCurrentlyValidatingElement$1" -(1943:41-1943:50) "(element)" --> (1273:43-1273:52) "(element)" -(1943:50-1944:2) " {" --> (1273:52-1274:3) " {" -(1944:2-1945:4) " {" --> (1274:3-1275:0) "\t{" -(1945:4-1945:8) " if " --> (1275:0-1275:8) "\n\t\t\t\tif " -(1945:8-1945:17) "(element)" --> (1275:8-1275:17) "(element)" -(1945:17-1946:6) " {" --> (1275:17-1276:5) " {" -(1946:6-1946:10) " var" --> (1276:5-1276:9) "\tvar" -(1946:10-1946:18) " owner =" --> (1276:9-1276:17) " owner =" -(1946:18-1946:26) " element" --> (1276:17-1276:25) " element" -(1946:26-1947:6) "._owner;" --> (1276:25-1277:5) "._owner;" -(1947:6-1947:10) " var" --> (1277:5-1277:9) "\tvar" -(1947:10-1947:18) " stack =" --> (1277:9-1277:17) " stack =" -(1947:18-1947:55) " describeUnknownElementTypeFrameInDEV" --> (1277:17-1277:54) " describeUnknownElementTypeFrameInDEV" -(1947:55-1947:63) "(element" --> (1277:54-1277:62) "(element" -(1947:63-1947:69) ".type," --> (1277:62-1277:68) ".type," -(1947:69-1947:77) " element" --> (1277:68-1277:76) " element" -(1947:77-1947:86) "._source," --> (1277:76-1277:85) "._source," -(1947:86-1947:94) " owner ?" --> (1277:85-1277:93) " owner ?" -(1947:94-1947:100) " owner" --> (1277:93-1277:99) " owner" -(1947:100-1947:107) ".type :" --> (1277:99-1277:106) ".type :" -(1947:107-1948:6) " null);" --> (1277:106-1278:0) " null);" -(1948:6-1948:25) " setExtraStackFrame" --> (1278:0-1278:24) "\n\t\t\t\t\tsetExtraStackFrame" -(1948:25-1949:5) "(stack);" --> (1278:24-1279:4) "(stack);" -(1949:5-1949:11) "} else" --> (1279:4-1279:11) "\t} else" -(1949:11-1950:6) " {" --> (1279:11-1280:0) " {" -(1950:6-1950:25) " setExtraStackFrame" --> (1280:0-1280:24) "\n\t\t\t\t\tsetExtraStackFrame" -(1950:25-1951:5) "(null);" --> (1280:24-1281:4) "(null);" -(1951:5-1952:3) "}" --> (1281:4-1282:3) "\t}" -(1952:3-1953:1) "}" --> (1282:3-1283:2) "\t}" -(1953:1-1955:0) "}\n" --> (1283:2-1284:2) "\t}" -(1955:0-1955:4) "\nvar" --> (1284:2-1284:6) "\tvar" -(1955:4-1957:0) " propTypesMisspellWarningShown;\n" --> (1284:6-1285:2) " propTypesMisspellWarningShown;" -(1957:0-1958:2) "\n{" --> (1285:2-1286:0) "\t{" -(1958:2-1958:34) " propTypesMisspellWarningShown =" --> (1286:0-1286:35) "\n\t\t\tpropTypesMisspellWarningShown =" -(1958:34-1959:1) " false;" --> (1286:35-1287:2) " false;" -(1959:1-1961:0) "}\n" --> (1287:2-1288:2) "\t}" -(1961:0-1961:9) "\nfunction" --> (1288:2-1288:11) "\tfunction" -(1961:9-1961:39) " getDeclarationErrorAddendum()" --> (1288:11-1288:41) " getDeclarationErrorAddendum()" -(1961:39-1962:2) " {" --> (1288:41-1289:0) " {" -(1962:2-1962:6) " if " --> (1289:0-1289:7) "\n\t\t\tif " -(1962:6-1962:24) "(ReactCurrentOwner" --> (1289:7-1289:25) "(ReactCurrentOwner" -(1962:24-1962:33) ".current)" --> (1289:25-1289:34) ".current)" -(1962:33-1963:4) " {" --> (1289:34-1290:4) " {" -(1963:4-1963:8) " var" --> (1290:4-1290:8) "\tvar" -(1963:8-1963:15) " name =" --> (1290:8-1290:15) " name =" -(1963:15-1963:32) " getComponentName" --> (1290:15-1290:32) " getComponentName" -(1963:32-1963:50) "(ReactCurrentOwner" --> (1290:32-1290:50) "(ReactCurrentOwner" -(1963:50-1963:58) ".current" --> (1290:50-1290:58) ".current" -(1963:58-1965:4) ".type);\n" --> (1290:58-1291:0) ".type);" -(1965:4-1965:8) " if " --> (1291:0-1291:8) "\n\t\t\t\tif " -(1965:8-1965:14) "(name)" --> (1291:8-1291:14) "(name)" -(1965:14-1966:6) " {" --> (1291:14-1292:0) " {" -(1966:6-1966:13) " return" --> (1292:0-1292:12) "\n\t\t\t\t\treturn" -(1966:13-1966:50) " '\\n\\nCheck the render method of `' +" --> (1292:12-1292:49) " '\\n\\nCheck the render method of `' +" -(1966:50-1966:57) " name +" --> (1292:49-1292:56) " name +" -(1966:57-1967:5) " '`.';" --> (1292:56-1293:4) " '`.';" -(1967:5-1968:3) "}" --> (1293:4-1294:3) "\t}" -(1968:3-1970:2) "}\n" --> (1294:3-1295:0) "\t}" -(1970:2-1970:9) " return" --> (1295:0-1295:10) "\n\t\t\treturn" -(1970:9-1971:1) " '';" --> (1295:10-1296:2) " '';" -(1971:1-1973:0) "}\n" --> (1296:2-1297:2) "\t}" -(1973:0-1973:9) "\nfunction" --> (1297:2-1297:11) "\tfunction" -(1973:9-1973:36) " getSourceInfoErrorAddendum" --> (1297:11-1297:38) " getSourceInfoErrorAddendum" -(1973:36-1973:44) "(source)" --> (1297:38-1297:46) "(source)" -(1973:44-1974:2) " {" --> (1297:46-1298:0) " {" -(1974:2-1974:6) " if " --> (1298:0-1298:7) "\n\t\t\tif " -(1974:6-1974:17) "(source !==" --> (1298:7-1298:18) "(source !==" -(1974:17-1974:28) " undefined)" --> (1298:18-1298:29) " undefined)" -(1974:28-1975:4) " {" --> (1298:29-1299:4) " {" -(1975:4-1975:8) " var" --> (1299:4-1299:8) "\tvar" -(1975:8-1975:19) " fileName =" --> (1299:8-1299:19) " fileName =" -(1975:19-1975:26) " source" --> (1299:19-1299:26) " source" -(1975:26-1975:35) ".fileName" --> (1299:26-1299:35) ".fileName" -(1975:35-1975:43) ".replace" --> (1299:35-1299:43) ".replace" -(1975:43-1975:56) "(/^.*[\\\\\\/]/," --> (1299:43-1299:56) "(/^.*[\\\\\\/]/," -(1975:56-1976:4) " '');" --> (1299:56-1300:4) " '');" -(1976:4-1976:8) " var" --> (1300:4-1300:8) "\tvar" -(1976:8-1976:21) " lineNumber =" --> (1300:8-1300:21) " lineNumber =" -(1976:21-1976:28) " source" --> (1300:21-1300:28) " source" -(1976:28-1977:4) ".lineNumber;" --> (1300:28-1301:0) ".lineNumber;" -(1977:4-1977:11) " return" --> (1301:0-1301:11) "\n\t\t\t\treturn" -(1977:11-1977:39) " '\\n\\nCheck your code at ' +" --> (1301:11-1301:39) " '\\n\\nCheck your code at ' +" -(1977:39-1977:50) " fileName +" --> (1301:39-1301:50) " fileName +" -(1977:50-1977:56) " ':' +" --> (1301:50-1301:56) " ':' +" -(1977:56-1977:69) " lineNumber +" --> (1301:56-1301:69) " lineNumber +" -(1977:69-1978:3) " '.';" --> (1301:69-1302:3) " '.';" -(1978:3-1980:2) "}\n" --> (1302:3-1303:0) "\t}" -(1980:2-1980:9) " return" --> (1303:0-1303:10) "\n\t\t\treturn" -(1980:9-1981:1) " '';" --> (1303:10-1304:2) " '';" -(1981:1-1983:0) "}\n" --> (1304:2-1305:2) "\t}" -(1983:0-1983:9) "\nfunction" --> (1305:2-1305:11) "\tfunction" -(1983:9-1983:44) " getSourceInfoErrorAddendumForProps" --> (1305:11-1305:46) " getSourceInfoErrorAddendumForProps" -(1983:44-1983:58) "(elementProps)" --> (1305:46-1305:60) "(elementProps)" -(1983:58-1984:2) " {" --> (1305:60-1306:0) " {" -(1984:2-1984:6) " if " --> (1306:0-1306:7) "\n\t\t\tif " -(1984:6-1984:23) "(elementProps !==" --> (1306:7-1306:24) "(elementProps !==" -(1984:23-1984:31) " null &&" --> (1306:24-1306:32) " null &&" -(1984:31-1984:48) " elementProps !==" --> (1306:32-1306:49) " elementProps !==" -(1984:48-1984:59) " undefined)" --> (1306:49-1306:60) " undefined)" -(1984:59-1985:4) " {" --> (1306:60-1307:0) " {" -(1985:4-1985:11) " return" --> (1307:0-1307:11) "\n\t\t\t\treturn" -(1985:11-1985:38) " getSourceInfoErrorAddendum" --> (1307:11-1307:38) " getSourceInfoErrorAddendum" -(1985:38-1985:51) "(elementProps" --> (1307:38-1307:51) "(elementProps" -(1985:51-1986:3) ".__source);" --> (1307:51-1308:3) ".__source);" -(1986:3-1988:2) "}\n" --> (1308:3-1309:0) "\t}" -(1988:2-1988:9) " return" --> (1309:0-1309:10) "\n\t\t\treturn" -(1988:9-1989:1) " '';" --> (1309:10-1310:2) " '';" -(1989:1-1997:0) "}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n" --> (1310:2-1311:2) "\t}" -(1997:0-1997:4) "\nvar" --> (1311:2-1311:6) "\tvar" -(1997:4-1997:28) " ownerHasKeyUseWarning =" --> (1311:6-1311:30) " ownerHasKeyUseWarning =" -(1997:28-1997:30) " {" --> (1311:30-1311:32) " {" -(1997:30-1999:0) "};\n" --> (1311:32-1312:2) "};" -(1999:0-1999:9) "\nfunction" --> (1312:2-1312:11) "\tfunction" -(1999:9-1999:38) " getCurrentComponentErrorInfo" --> (1312:11-1312:40) " getCurrentComponentErrorInfo" -(1999:38-1999:50) "(parentType)" --> (1312:40-1312:52) "(parentType)" -(1999:50-2000:2) " {" --> (1312:52-1313:3) " {" -(2000:2-2000:6) " var" --> (1313:3-1313:7) "\tvar" -(2000:6-2000:13) " info =" --> (1313:7-1313:14) " info =" -(2000:13-2002:2) " getDeclarationErrorAddendum();\n" --> (1313:14-1314:0) " getDeclarationErrorAddendum();" -(2002:2-2002:7) " if (" --> (1314:0-1314:9) "\n\t\t\tif ( " -(2002:7-2002:13) "!info)" --> (1314:9-1314:15) "!info)" -(2002:13-2003:4) " {" --> (1314:15-1315:4) " {" -(2003:4-2003:8) " var" --> (1315:4-1315:8) "\tvar" -(2003:8-2003:28) " parentName = typeof" --> (1315:8-1315:28) " parentName = typeof" -(2003:28-2003:43) " parentType ===" --> (1315:28-1315:43) " parentType ===" -(2003:43-2003:54) " 'string' ?" --> (1315:43-1315:54) " 'string' ?" -(2003:54-2003:67) " parentType :" --> (1315:54-1315:67) " parentType :" -(2003:67-2003:78) " parentType" --> (1315:67-1315:78) " parentType" -(2003:78-2003:93) ".displayName ||" --> (1315:78-1315:93) ".displayName ||" -(2003:93-2003:104) " parentType" --> (1315:93-1315:104) " parentType" -(2003:104-2005:4) ".name;\n" --> (1315:104-1316:0) ".name;" -(2005:4-2005:8) " if " --> (1316:0-1316:8) "\n\t\t\t\tif " -(2005:8-2005:20) "(parentName)" --> (1316:8-1316:20) "(parentName)" -(2005:20-2006:6) " {" --> (1316:20-1317:0) " {" -(2006:6-2006:13) " info =" --> (1317:0-1317:12) "\n\t\t\t\t\tinfo =" -(2006:13-2006:61) " \"\\n\\nCheck the top-level render call using <\" +" --> (1317:12-1317:60) " '\\n\\nCheck the top-level render call using <' +" -(2006:61-2006:74) " parentName +" --> (1317:60-1317:73) " parentName +" -(2006:74-2007:5) " \">.\";" --> (1317:73-1318:4) " '>.';" -(2007:5-2008:3) "}" --> (1318:4-1319:3) "\t}" -(2008:3-2010:2) "}\n" --> (1319:3-1320:0) "\t}" -(2010:2-2010:9) " return" --> (1320:0-1320:10) "\n\t\t\treturn" -(2010:9-2011:1) " info;" --> (1320:10-1321:2) " info;" -(2011:1-2025:0) "}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n" --> (1321:2-1322:2) "\t}" -(2025:0-2025:9) "\nfunction" --> (1322:2-1322:11) "\tfunction" -(2025:9-2025:29) " validateExplicitKey" --> (1322:11-1322:31) " validateExplicitKey" -(2025:29-2025:38) "(element," --> (1322:31-1322:40) "(element," -(2025:38-2025:50) " parentType)" --> (1322:40-1322:52) " parentType)" -(2025:50-2026:2) " {" --> (1322:52-1323:0) " {" -(2026:2-2026:7) " if (" --> (1323:0-1323:9) "\n\t\t\tif ( " -(2026:7-2026:15) "!element" --> (1323:9-1323:17) "!element" -(2026:15-2026:25) "._store ||" --> (1323:17-1323:27) "._store ||" -(2026:25-2026:33) " element" --> (1323:27-1323:35) " element" -(2026:33-2026:40) "._store" --> (1323:35-1323:42) "._store" -(2026:40-2026:53) ".validated ||" --> (1323:42-1323:55) ".validated ||" -(2026:53-2026:61) " element" --> (1323:55-1323:63) " element" -(2026:61-2026:68) ".key !=" --> (1323:63-1323:70) ".key !=" -(2026:68-2026:74) " null)" --> (1323:70-1323:76) " null)" -(2026:74-2027:4) " {" --> (1323:76-1324:0) " {" -(2027:4-2028:3) " return;" --> (1324:0-1325:3) "\n\t\t\t\treturn;" -(2028:3-2030:2) "}\n" --> (1325:3-1326:0) "\t}" -(2030:2-2030:10) " element" --> (1326:0-1326:11) "\n\t\t\telement" -(2030:10-2030:17) "._store" --> (1326:11-1326:18) "._store" -(2030:17-2030:29) ".validated =" --> (1326:18-1326:30) ".validated =" -(2030:29-2031:2) " true;" --> (1326:30-1327:3) " true;" -(2031:2-2031:6) " var" --> (1327:3-1327:7) "\tvar" -(2031:6-2031:34) " currentComponentErrorInfo =" --> (1327:7-1327:35) " currentComponentErrorInfo =" -(2031:34-2031:63) " getCurrentComponentErrorInfo" --> (1327:35-1327:64) " getCurrentComponentErrorInfo" -(2031:63-2033:2) "(parentType);\n" --> (1327:64-1328:0) "(parentType);" -(2033:2-2033:6) " if " --> (1328:0-1328:7) "\n\t\t\tif " -(2033:6-2033:28) "(ownerHasKeyUseWarning" --> (1328:7-1328:29) "(ownerHasKeyUseWarning" -(2033:28-2033:56) "[currentComponentErrorInfo])" --> (1328:29-1328:57) "[currentComponentErrorInfo])" -(2033:56-2034:4) " {" --> (1328:57-1329:0) " {" -(2034:4-2035:3) " return;" --> (1329:0-1330:3) "\n\t\t\t\treturn;" -(2035:3-2037:2) "}\n" --> (1330:3-1331:0) "\t}" -(2037:2-2037:24) " ownerHasKeyUseWarning" --> (1331:0-1331:25) "\n\t\t\townerHasKeyUseWarning" -(2037:24-2037:53) "[currentComponentErrorInfo] =" --> (1331:25-1331:54) "[currentComponentErrorInfo] =" -(2037:53-2041:2) " true; // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n" --> (1331:54-1332:3) " true;" -(2041:2-2041:6) " var" --> (1332:3-1332:7) "\tvar" -(2041:6-2041:19) " childOwner =" --> (1332:7-1332:20) " childOwner =" -(2041:19-2043:2) " '';\n" --> (1332:20-1333:0) " '';" -(2043:2-2043:6) " if " --> (1333:0-1333:7) "\n\t\t\tif " -(2043:6-2043:17) "(element &&" --> (1333:7-1333:18) "(element &&" -(2043:17-2043:25) " element" --> (1333:18-1333:26) " element" -(2043:25-2043:35) "._owner &&" --> (1333:26-1333:36) "._owner &&" -(2043:35-2043:43) " element" --> (1333:36-1333:44) " element" -(2043:43-2043:54) "._owner !==" --> (1333:44-1333:55) "._owner !==" -(2043:54-2043:72) " ReactCurrentOwner" --> (1333:55-1333:73) " ReactCurrentOwner" -(2043:72-2043:81) ".current)" --> (1333:73-1333:82) ".current)" -(2043:81-2045:4) " {\n // Give the component that originally created this child." --> (1333:82-1334:0) " {" -(2045:4-2045:17) " childOwner =" --> (1334:0-1334:17) "\n\t\t\t\tchildOwner =" -(2045:17-2045:50) " \" It was passed a child from \" +" --> (1334:17-1334:50) " ' It was passed a child from ' +" -(2045:50-2045:67) " getComponentName" --> (1334:50-1334:67) " getComponentName" -(2045:67-2045:75) "(element" --> (1334:67-1334:75) "(element" -(2045:75-2045:82) "._owner" --> (1334:75-1334:82) "._owner" -(2045:82-2045:90) ".type) +" --> (1334:82-1334:90) ".type) +" -(2045:90-2046:3) " \".\";" --> (1334:90-1335:3) " '.';" -(2046:3-2048:2) "}\n" --> (1335:3-1336:3) "\t}" -(2048:2-2049:4) " {" --> (1336:3-1337:0) "\t{" -(2049:4-2049:36) " setCurrentlyValidatingElement$1" --> (1337:0-1337:36) "\n\t\t\t\tsetCurrentlyValidatingElement$1" -(2049:36-2051:4) "(element);\n" --> (1337:36-1338:0) "(element);" -(2051:4-2051:10) " error" --> (1338:0-1338:10) "\n\t\t\t\terror" -(2051:10-2051:68) "('Each child in a list should have a unique \"key\" prop.' +" --> (1338:10-1338:68) "('Each child in a list should have a unique \"key\" prop.' +" -(2051:68-2051:140) " '%s%s See https://reactjs.org/link/warning-keys for more information.'," --> (1338:68-1338:140) " '%s%s See https://reactjs.org/link/warning-keys for more information.'," -(2051:140-2051:167) " currentComponentErrorInfo," --> (1338:140-1338:167) " currentComponentErrorInfo," -(2051:167-2053:4) " childOwner);\n" --> (1338:167-1339:0) " childOwner);" -(2053:4-2053:36) " setCurrentlyValidatingElement$1" --> (1339:0-1339:36) "\n\t\t\t\tsetCurrentlyValidatingElement$1" -(2053:36-2054:3) "(null);" --> (1339:36-1340:3) "(null);" -(2054:3-2055:1) "}" --> (1340:3-1341:2) "\t}" -(2055:1-2067:0) "}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n" --> (1341:2-1342:2) "\t}" -(2067:0-2067:9) "\nfunction" --> (1342:2-1342:11) "\tfunction" -(2067:9-2067:27) " validateChildKeys" --> (1342:11-1342:29) " validateChildKeys" -(2067:27-2067:33) "(node," --> (1342:29-1342:35) "(node," -(2067:33-2067:45) " parentType)" --> (1342:35-1342:47) " parentType)" -(2067:45-2068:2) " {" --> (1342:47-1343:0) " {" -(2068:2-2068:13) " if (typeof" --> (1343:0-1343:14) "\n\t\t\tif (typeof" -(2068:13-2068:22) " node !==" --> (1343:14-1343:23) " node !==" -(2068:22-2068:32) " 'object')" --> (1343:23-1343:33) " 'object')" -(2068:32-2069:4) " {" --> (1343:33-1344:0) " {" -(2069:4-2070:3) " return;" --> (1344:0-1345:3) "\n\t\t\t\treturn;" -(2070:3-2072:2) "}\n" --> (1345:3-1346:0) "\t}" -(2072:2-2072:6) " if " --> (1346:0-1346:7) "\n\t\t\tif " -(2072:6-2072:12) "(Array" --> (1346:7-1346:13) "(Array" -(2072:12-2072:20) ".isArray" --> (1346:13-1346:21) ".isArray" -(2072:20-2072:27) "(node))" --> (1346:21-1346:28) "(node))" -(2072:27-2073:4) " {" --> (1346:28-1347:0) " {" -(2073:4-2073:9) " for " --> (1347:0-1347:9) "\n\t\t\t\tfor " -(2073:9-2073:13) "(var" --> (1347:9-1347:13) "(var" -(2073:13-2073:17) " i =" --> (1347:13-1347:17) " i =" -(2073:17-2073:20) " 0;" --> (1347:17-1347:20) " 0;" -(2073:20-2073:24) " i <" --> (1347:20-1347:24) " i <" -(2073:24-2073:29) " node" --> (1347:24-1347:29) " node" -(2073:29-2073:37) ".length;" --> (1347:29-1347:37) ".length;" -(2073:37-2073:42) " i++)" --> (1347:37-1347:45) " i++)\t\t\t" -(2073:42-2074:6) " {" --> (1347:45-1348:5) "\t{" -(2074:6-2074:10) " var" --> (1348:5-1348:9) "\tvar" -(2074:10-2074:18) " child =" --> (1348:9-1348:17) " child =" -(2074:18-2074:23) " node" --> (1348:17-1348:22) " node" -(2074:23-2076:6) "[i];\n" --> (1348:22-1349:0) "[i];" -(2076:6-2076:10) " if " --> (1349:0-1349:9) "\n\t\t\t\t\tif " -(2076:10-2076:25) "(isValidElement" --> (1349:9-1349:24) "(isValidElement" -(2076:25-2076:33) "(child))" --> (1349:24-1349:32) "(child))" -(2076:33-2077:8) " {" --> (1349:32-1350:0) " {" -(2077:8-2077:28) " validateExplicitKey" --> (1350:0-1350:26) "\n\t\t\t\t\t\tvalidateExplicitKey" -(2077:28-2077:35) "(child," --> (1350:26-1350:33) "(child," -(2077:35-2078:7) " parentType);" --> (1350:33-1351:5) " parentType);" -(2078:7-2079:5) "}" --> (1351:5-1352:4) "\t}" -(2079:5-2080:3) "}" --> (1352:4-1353:3) "\t}" -(2080:3-2080:13) "} else if " --> (1353:3-1353:14) "\t} else if " -(2080:13-2080:28) "(isValidElement" --> (1353:14-1353:29) "(isValidElement" -(2080:28-2080:35) "(node))" --> (1353:29-1353:36) "(node))" -(2080:35-2082:4) " {\n // This element was passed in a valid location." --> (1353:36-1354:0) " {" -(2082:4-2082:8) " if " --> (1354:0-1354:8) "\n\t\t\t\tif " -(2082:8-2082:13) "(node" --> (1354:8-1354:13) "(node" -(2082:13-2082:21) "._store)" --> (1354:13-1354:21) "._store)" -(2082:21-2083:6) " {" --> (1354:21-1355:0) " {" -(2083:6-2083:11) " node" --> (1355:0-1355:10) "\n\t\t\t\t\tnode" -(2083:11-2083:18) "._store" --> (1355:10-1355:17) "._store" -(2083:18-2083:30) ".validated =" --> (1355:17-1355:29) ".validated =" -(2083:30-2084:5) " true;" --> (1355:29-1356:4) " true;" -(2084:5-2085:3) "}" --> (1356:4-1357:3) "\t}" -(2085:3-2085:13) "} else if " --> (1357:3-1357:14) "\t} else if " -(2085:13-2085:19) "(node)" --> (1357:14-1357:20) "(node)" -(2085:19-2086:4) " {" --> (1357:20-1358:4) " {" -(2086:4-2086:8) " var" --> (1358:4-1358:8) "\tvar" -(2086:8-2086:21) " iteratorFn =" --> (1358:8-1358:21) " iteratorFn =" -(2086:21-2086:35) " getIteratorFn" --> (1358:21-1358:35) " getIteratorFn" -(2086:35-2088:4) "(node);\n" --> (1358:35-1359:0) "(node);" -(2088:4-2088:15) " if (typeof" --> (1359:0-1359:15) "\n\t\t\t\tif (typeof" -(2088:15-2088:30) " iteratorFn ===" --> (1359:15-1359:30) " iteratorFn ===" -(2088:30-2088:42) " 'function')" --> (1359:30-1359:42) " 'function')" -(2088:42-2091:6) " {\n // Entry iterators used to provide implicit keys,\n // but now we print a separate warning for them later." --> (1359:42-1360:0) " {" -(2091:6-2091:10) " if " --> (1360:0-1360:9) "\n\t\t\t\t\tif " -(2091:10-2091:25) "(iteratorFn !==" --> (1360:9-1360:24) "(iteratorFn !==" -(2091:25-2091:30) " node" --> (1360:24-1360:29) " node" -(2091:30-2091:39) ".entries)" --> (1360:29-1360:38) ".entries)" -(2091:39-2092:8) " {" --> (1360:38-1361:6) " {" -(2092:8-2092:12) " var" --> (1361:6-1361:10) "\tvar" -(2092:12-2092:23) " iterator =" --> (1361:10-1361:21) " iterator =" -(2092:23-2092:34) " iteratorFn" --> (1361:21-1361:32) " iteratorFn" -(2092:34-2092:39) ".call" --> (1361:32-1361:37) ".call" -(2092:39-2093:8) "(node);" --> (1361:37-1362:6) "(node);" -(2093:8-2093:12) " var" --> (1362:6-1362:10) "\tvar" -(2093:12-2095:8) " step;\n" --> (1362:10-1363:0) " step;" -(2095:8-2095:17) " while (!" --> (1363:0-1363:15) "\n\t\t\t\t\t\twhile( !" -(2095:17-2095:24) "(step =" --> (1363:15-1363:22) "(step =" -(2095:24-2095:33) " iterator" --> (1363:22-1363:31) " iterator" -(2095:33-2095:41) ".next())" --> (1363:31-1363:39) ".next())" -(2095:41-2095:47) ".done)" --> (1363:39-1363:50) ".done)\t\t\t\t\t" -(2095:47-2096:10) " {" --> (1363:50-1364:0) "\t{" -(2096:10-2096:14) " if " --> (1364:0-1364:11) "\n\t\t\t\t\t\t\tif " -(2096:14-2096:29) "(isValidElement" --> (1364:11-1364:26) "(isValidElement" -(2096:29-2096:34) "(step" --> (1364:26-1364:31) "(step" -(2096:34-2096:42) ".value))" --> (1364:31-1364:39) ".value))" -(2096:42-2097:12) " {" --> (1364:39-1365:0) " {" -(2097:12-2097:32) " validateExplicitKey" --> (1365:0-1365:28) "\n\t\t\t\t\t\t\t\tvalidateExplicitKey" -(2097:32-2097:37) "(step" --> (1365:28-1365:33) "(step" -(2097:37-2097:44) ".value," --> (1365:33-1365:40) ".value," -(2097:44-2098:11) " parentType);" --> (1365:40-1366:7) " parentType);" -(2098:11-2099:9) "}" --> (1366:7-1367:6) "\t}" -(2099:9-2100:7) "}" --> (1367:6-1368:5) "\t}" -(2100:7-2101:5) "}" --> (1368:5-1369:4) "\t}" -(2101:5-2102:3) "}" --> (1369:4-1370:3) "\t}" -(2102:3-2103:1) "}" --> (1370:3-1371:2) "\t}" -(2103:1-2112:0) "}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n" --> (1371:2-1372:2) "\t}" -(2112:0-2112:9) "\nfunction" --> (1372:2-1372:11) "\tfunction" -(2112:9-2112:27) " validatePropTypes" --> (1372:11-1372:29) " validatePropTypes" -(2112:27-2112:36) "(element)" --> (1372:29-1372:38) "(element)" -(2112:36-2113:2) " {" --> (1372:38-1373:3) " {" -(2113:2-2114:4) " {" --> (1373:3-1374:4) "\t{" -(2114:4-2114:8) " var" --> (1374:4-1374:8) "\tvar" -(2114:8-2114:15) " type =" --> (1374:8-1374:15) " type =" -(2114:15-2114:23) " element" --> (1374:15-1374:23) " element" -(2114:23-2116:4) ".type;\n" --> (1374:23-1375:0) ".type;" -(2116:4-2116:8) " if " --> (1375:0-1375:8) "\n\t\t\t\tif " -(2116:8-2116:17) "(type ===" --> (1375:8-1375:17) "(type ===" -(2116:17-2116:25) " null ||" --> (1375:17-1375:25) " null ||" -(2116:25-2116:34) " type ===" --> (1375:25-1375:34) " type ===" -(2116:34-2116:54) " undefined || typeof" --> (1375:34-1375:54) " undefined || typeof" -(2116:54-2116:63) " type ===" --> (1375:54-1375:63) " type ===" -(2116:63-2116:73) " 'string')" --> (1375:63-1375:73) " 'string')" -(2116:73-2117:6) " {" --> (1375:73-1376:0) " {" -(2117:6-2118:5) " return;" --> (1376:0-1377:4) "\n\t\t\t\t\treturn;" -(2118:5-2120:4) "}\n" --> (1377:4-1378:4) "\t}" -(2120:4-2120:8) " var" --> (1378:4-1378:8) "\tvar" -(2120:8-2122:4) " propTypes;\n" --> (1378:8-1379:0) " propTypes;" -(2122:4-2122:15) " if (typeof" --> (1379:0-1379:15) "\n\t\t\t\tif (typeof" -(2122:15-2122:24) " type ===" --> (1379:15-1379:24) " type ===" -(2122:24-2122:36) " 'function')" --> (1379:24-1379:36) " 'function')" -(2122:36-2123:6) " {" --> (1379:36-1380:0) " {" -(2123:6-2123:18) " propTypes =" --> (1380:0-1380:17) "\n\t\t\t\t\tpropTypes =" -(2123:18-2123:23) " type" --> (1380:17-1380:22) " type" -(2123:23-2124:5) ".propTypes;" --> (1380:22-1381:4) ".propTypes;" -(2124:5-2124:22) "} else if (typeof" --> (1381:4-1381:22) "\t} else if (typeof" -(2124:22-2124:31) " type ===" --> (1381:22-1381:31) " type ===" -(2124:31-2124:44) " 'object' && " --> (1381:31-1381:44) " 'object' && " -(2124:44-2124:49) "(type" --> (1381:44-1381:49) "(type" -(2124:49-2124:62) ".$$typeof ===" --> (1381:49-1381:62) ".$$typeof ===" -(2124:62-2126:4) " REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n // Inner props are checked in the reconciler." --> (1381:62-1381:88) " REACT_FORWARD_REF_TYPE ||" -(2126:4-2126:9) " type" --> (1381:88-1381:93) " type" -(2126:9-2126:22) ".$$typeof ===" --> (1381:93-1381:106) ".$$typeof ===" -(2126:22-2126:40) " REACT_MEMO_TYPE))" --> (1381:106-1381:124) " REACT_MEMO_TYPE))" -(2126:40-2127:6) " {" --> (1381:124-1382:0) " {" -(2127:6-2127:18) " propTypes =" --> (1382:0-1382:17) "\n\t\t\t\t\tpropTypes =" -(2127:18-2127:23) " type" --> (1382:17-1382:22) " type" -(2127:23-2128:5) ".propTypes;" --> (1382:22-1383:4) ".propTypes;" -(2128:5-2128:11) "} else" --> (1383:4-1383:11) "\t} else" -(2128:11-2129:6) " {" --> (1383:11-1384:0) " {" -(2129:6-2130:5) " return;" --> (1384:0-1385:4) "\n\t\t\t\t\treturn;" -(2130:5-2132:4) "}\n" --> (1385:4-1386:0) "\t}" -(2132:4-2132:8) " if " --> (1386:0-1386:8) "\n\t\t\t\tif " -(2132:8-2132:19) "(propTypes)" --> (1386:8-1386:19) "(propTypes)" -(2132:19-2134:6) " {\n // Intentionally inside to avoid triggering lazy initializers:" --> (1386:19-1387:5) " {" -(2134:6-2134:10) " var" --> (1387:5-1387:9) "\tvar" -(2134:10-2134:17) " name =" --> (1387:9-1387:16) " name =" -(2134:17-2134:34) " getComponentName" --> (1387:16-1387:33) " getComponentName" -(2134:34-2135:6) "(type);" --> (1387:33-1388:0) "(type);" -(2135:6-2135:21) " checkPropTypes" --> (1388:0-1388:20) "\n\t\t\t\t\tcheckPropTypes" -(2135:21-2135:32) "(propTypes," --> (1388:20-1388:31) "(propTypes," -(2135:32-2135:40) " element" --> (1388:31-1388:39) " element" -(2135:40-2135:47) ".props," --> (1388:39-1388:46) ".props," -(2135:47-2135:55) " 'prop'," --> (1388:46-1388:54) " 'prop'," -(2135:55-2135:61) " name," --> (1388:54-1388:60) " name," -(2135:61-2136:5) " element);" --> (1388:60-1389:4) " element);" -(2136:5-2136:15) "} else if " --> (1389:4-1389:15) "\t} else if " -(2136:15-2136:20) "(type" --> (1389:15-1389:20) "(type" -(2136:20-2136:34) ".PropTypes !==" --> (1389:20-1389:34) ".PropTypes !==" -(2136:34-2136:48) " undefined && " --> (1389:34-1389:49) " undefined && " -(2136:48-2136:79) "!propTypesMisspellWarningShown)" --> (1389:49-1389:80) "!propTypesMisspellWarningShown)" -(2136:79-2137:6) " {" --> (1389:80-1390:0) " {" -(2137:6-2137:38) " propTypesMisspellWarningShown =" --> (1390:0-1390:37) "\n\t\t\t\t\tpropTypesMisspellWarningShown =" -(2137:38-2139:6) " true; // Intentionally inside to avoid triggering lazy initializers:\n" --> (1390:37-1391:5) " true;" -(2139:6-2139:10) " var" --> (1391:5-1391:9) "\tvar" -(2139:10-2139:18) " _name =" --> (1391:9-1391:17) " _name =" -(2139:18-2139:35) " getComponentName" --> (1391:17-1391:34) " getComponentName" -(2139:35-2141:6) "(type);\n" --> (1391:34-1392:0) "(type);" -(2141:6-2141:12) " error" --> (1392:0-1392:11) "\n\t\t\t\t\terror" -(2141:12-2141:115) "('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?'," --> (1392:11-1392:114) "('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?'," -(2141:115-2141:124) " _name ||" --> (1392:114-1392:123) " _name ||" -(2141:124-2142:5) " 'Unknown');" --> (1392:123-1393:4) " 'Unknown');" -(2142:5-2144:4) "}\n" --> (1393:4-1394:0) "\t}" -(2144:4-2144:15) " if (typeof" --> (1394:0-1394:15) "\n\t\t\t\tif (typeof" -(2144:15-2144:20) " type" --> (1394:15-1394:20) " type" -(2144:20-2144:40) ".getDefaultProps ===" --> (1394:20-1394:40) ".getDefaultProps ===" -(2144:40-2144:55) " 'function' && " --> (1394:40-1394:56) " 'function' && " -(2144:55-2144:60) "!type" --> (1394:56-1394:61) "!type" -(2144:60-2144:76) ".getDefaultProps" --> (1394:61-1394:77) ".getDefaultProps" -(2144:76-2144:98) ".isReactClassApproved)" --> (1394:77-1394:99) ".isReactClassApproved)" -(2144:98-2145:6) " {" --> (1394:99-1395:0) " {" -(2145:6-2145:12) " error" --> (1395:0-1395:11) "\n\t\t\t\t\terror" -(2145:12-2145:75) "('getDefaultProps is only used on classic React.createClass ' +" --> (1395:11-1395:74) "('getDefaultProps is only used on classic React.createClass ' +" -(2145:75-2146:5) " 'definitions. Use a static property named `defaultProps` instead.');" --> (1395:74-1396:4) " 'definitions. Use a static property named `defaultProps` instead.');" -(2146:5-2147:3) "}" --> (1396:4-1397:3) "\t}" -(2147:3-2148:1) "}" --> (1397:3-1398:2) "\t}" -(2148:1-2155:0) "}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n" --> (1398:2-1399:2) "\t}" -(2155:0-2155:9) "\nfunction" --> (1399:2-1399:11) "\tfunction" -(2155:9-2155:31) " validateFragmentProps" --> (1399:11-1399:33) " validateFragmentProps" -(2155:31-2155:41) "(fragment)" --> (1399:33-1399:43) "(fragment)" -(2155:41-2156:2) " {" --> (1399:43-1400:3) " {" -(2156:2-2157:4) " {" --> (1400:3-1401:4) "\t{" -(2157:4-2157:8) " var" --> (1401:4-1401:8) "\tvar" -(2157:8-2157:15) " keys =" --> (1401:8-1401:15) " keys =" -(2157:15-2157:22) " Object" --> (1401:15-1401:22) " Object" -(2157:22-2157:27) ".keys" --> (1401:22-1401:27) ".keys" -(2157:27-2157:36) "(fragment" --> (1401:27-1401:36) "(fragment" -(2157:36-2159:4) ".props);\n" --> (1401:36-1402:0) ".props);" -(2159:4-2159:9) " for " --> (1402:0-1402:9) "\n\t\t\t\tfor " -(2159:9-2159:13) "(var" --> (1402:9-1402:13) "(var" -(2159:13-2159:17) " i =" --> (1402:13-1402:17) " i =" -(2159:17-2159:20) " 0;" --> (1402:17-1402:20) " 0;" -(2159:20-2159:24) " i <" --> (1402:20-1402:24) " i <" -(2159:24-2159:29) " keys" --> (1402:24-1402:29) " keys" -(2159:29-2159:37) ".length;" --> (1402:29-1402:37) ".length;" -(2159:37-2159:42) " i++)" --> (1402:37-1402:45) " i++)\t\t\t" -(2159:42-2160:6) " {" --> (1402:45-1403:5) "\t{" -(2160:6-2160:10) " var" --> (1403:5-1403:9) "\tvar" -(2160:10-2160:16) " key =" --> (1403:9-1403:15) " key =" -(2160:16-2160:21) " keys" --> (1403:15-1403:20) " keys" -(2160:21-2162:6) "[i];\n" --> (1403:20-1404:0) "[i];" -(2162:6-2162:10) " if " --> (1404:0-1404:9) "\n\t\t\t\t\tif " -(2162:10-2162:18) "(key !==" --> (1404:9-1404:17) "(key !==" -(2162:18-2162:32) " 'children' &&" --> (1404:17-1404:31) " 'children' &&" -(2162:32-2162:40) " key !==" --> (1404:31-1404:39) " key !==" -(2162:40-2162:47) " 'key')" --> (1404:39-1404:46) " 'key')" -(2162:47-2163:8) " {" --> (1404:46-1405:0) " {" -(2163:8-2163:40) " setCurrentlyValidatingElement$1" --> (1405:0-1405:38) "\n\t\t\t\t\t\tsetCurrentlyValidatingElement$1" -(2163:40-2165:8) "(fragment);\n" --> (1405:38-1406:0) "(fragment);" -(2165:8-2165:14) " error" --> (1406:0-1406:12) "\n\t\t\t\t\t\terror" -(2165:14-2165:67) "('Invalid prop `%s` supplied to `React.Fragment`. ' +" --> (1406:12-1406:65) "('Invalid prop `%s` supplied to `React.Fragment`. ' +" -(2165:67-2165:127) " 'React.Fragment can only have `key` and `children` props.'," --> (1406:65-1406:125) " 'React.Fragment can only have `key` and `children` props.'," -(2165:127-2167:8) " key);\n" --> (1406:125-1407:0) " key);" -(2167:8-2167:40) " setCurrentlyValidatingElement$1" --> (1407:0-1407:38) "\n\t\t\t\t\t\tsetCurrentlyValidatingElement$1" -(2167:40-2168:8) "(null);" --> (1407:38-1408:0) "(null);" -(2168:8-2169:7) " break;" --> (1408:0-1409:5) "\n\t\t\t\t\t\tbreak;" -(2169:7-2170:5) "}" --> (1409:5-1410:4) "\t}" -(2170:5-2172:4) "}\n" --> (1410:4-1411:0) "\t}" -(2172:4-2172:8) " if " --> (1411:0-1411:8) "\n\t\t\t\tif " -(2172:8-2172:17) "(fragment" --> (1411:8-1411:17) "(fragment" -(2172:17-2172:25) ".ref !==" --> (1411:17-1411:25) ".ref !==" -(2172:25-2172:31) " null)" --> (1411:25-1411:31) " null)" -(2172:31-2173:6) " {" --> (1411:31-1412:0) " {" -(2173:6-2173:38) " setCurrentlyValidatingElement$1" --> (1412:0-1412:37) "\n\t\t\t\t\tsetCurrentlyValidatingElement$1" -(2173:38-2175:6) "(fragment);\n" --> (1412:37-1413:0) "(fragment);" -(2175:6-2175:12) " error" --> (1413:0-1413:11) "\n\t\t\t\t\terror" -(2175:12-2177:6) "('Invalid attribute `ref` supplied to `React.Fragment`.');\n" --> (1413:11-1414:0) "('Invalid attribute `ref` supplied to `React.Fragment`.');" -(2177:6-2177:38) " setCurrentlyValidatingElement$1" --> (1414:0-1414:37) "\n\t\t\t\t\tsetCurrentlyValidatingElement$1" -(2177:38-2178:5) "(null);" --> (1414:37-1415:4) "(null);" -(2178:5-2179:3) "}" --> (1415:4-1416:3) "\t}" -(2179:3-2180:1) "}" --> (1416:3-1417:2) "\t}" -(2180:1-2181:0) "}" --> (1417:2-1418:2) "\t}" -(2181:0-2181:9) "\nfunction" --> (1418:2-1418:11) "\tfunction" -(2181:9-2181:37) " createElementWithValidation" --> (1418:11-1418:39) " createElementWithValidation" -(2181:37-2181:43) "(type," --> (1418:39-1418:45) "(type," -(2181:43-2181:50) " props," --> (1418:45-1418:52) " props," -(2181:50-2181:60) " children)" --> (1418:52-1418:62) " children)" -(2181:60-2182:2) " {" --> (1418:62-1419:3) " {" -(2182:2-2182:6) " var" --> (1419:3-1419:7) "\tvar" -(2182:6-2182:18) " validType =" --> (1419:7-1419:19) " validType =" -(2182:18-2182:37) " isValidElementType" --> (1419:19-1419:38) " isValidElementType" -(2182:37-2185:2) "(type); // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n" --> (1419:38-1420:0) "(type);" -(2185:2-2185:7) " if (" --> (1420:0-1420:9) "\n\t\t\tif ( " -(2185:7-2185:18) "!validType)" --> (1420:9-1420:20) "!validType)" -(2185:18-2186:4) " {" --> (1420:20-1421:4) " {" -(2186:4-2186:8) " var" --> (1421:4-1421:8) "\tvar" -(2186:8-2186:15) " info =" --> (1421:8-1421:15) " info =" -(2186:15-2188:4) " '';\n" --> (1421:15-1422:0) " '';" -(2188:4-2188:8) " if " --> (1422:0-1422:8) "\n\t\t\t\tif " -(2188:8-2188:17) "(type ===" --> (1422:8-1422:17) "(type ===" -(2188:17-2188:37) " undefined || typeof" --> (1422:17-1422:37) " undefined || typeof" -(2188:37-2188:46) " type ===" --> (1422:37-1422:46) " type ===" -(2188:46-2188:58) " 'object' &&" --> (1422:46-1422:58) " 'object' &&" -(2188:58-2188:67) " type !==" --> (1422:58-1422:67) " type !==" -(2188:67-2188:75) " null &&" --> (1422:67-1422:75) " null &&" -(2188:75-2188:82) " Object" --> (1422:75-1422:82) " Object" -(2188:82-2188:87) ".keys" --> (1422:82-1422:87) ".keys" -(2188:87-2188:93) "(type)" --> (1422:87-1422:93) "(type)" -(2188:93-2188:104) ".length ===" --> (1422:93-1422:104) ".length ===" -(2188:104-2188:107) " 0)" --> (1422:104-1422:107) " 0)" -(2188:107-2189:6) " {" --> (1422:107-1423:0) " {" -(2189:6-2189:14) " info +=" --> (1423:0-1423:13) "\n\t\t\t\t\tinfo +=" -(2189:14-2189:77) " ' You likely forgot to export your component from the file ' +" --> (1423:13-1423:76) " ' You likely forgot to export your component from the file ' +" -(2189:77-2190:5) " \"it's defined in, or you might have mixed up default and named imports.\";" --> (1423:76-1424:4) " \"it's defined in, or you might have mixed up default and named imports.\";" -(2190:5-2192:4) "}\n" --> (1424:4-1425:4) "\t}" -(2192:4-2192:8) " var" --> (1425:4-1425:8) "\tvar" -(2192:8-2192:21) " sourceInfo =" --> (1425:8-1425:21) " sourceInfo =" -(2192:21-2192:56) " getSourceInfoErrorAddendumForProps" --> (1425:21-1425:56) " getSourceInfoErrorAddendumForProps" -(2192:56-2194:4) "(props);\n" --> (1425:56-1426:0) "(props);" -(2194:4-2194:8) " if " --> (1426:0-1426:8) "\n\t\t\t\tif " -(2194:8-2194:20) "(sourceInfo)" --> (1426:8-1426:20) "(sourceInfo)" -(2194:20-2195:6) " {" --> (1426:20-1427:0) " {" -(2195:6-2195:14) " info +=" --> (1427:0-1427:13) "\n\t\t\t\t\tinfo +=" -(2195:14-2196:5) " sourceInfo;" --> (1427:13-1428:4) " sourceInfo;" -(2196:5-2196:11) "} else" --> (1428:4-1428:11) "\t} else" -(2196:11-2197:6) " {" --> (1428:11-1429:0) " {" -(2197:6-2197:14) " info +=" --> (1429:0-1429:13) "\n\t\t\t\t\tinfo +=" -(2197:14-2198:5) " getDeclarationErrorAddendum();" --> (1429:13-1430:4) " getDeclarationErrorAddendum();" -(2198:5-2200:4) "}\n" --> (1430:4-1431:4) "\t}" -(2200:4-2200:8) " var" --> (1431:4-1431:8) "\tvar" -(2200:8-2202:4) " typeString;\n" --> (1431:8-1432:0) " typeString;" -(2202:4-2202:8) " if " --> (1432:0-1432:8) "\n\t\t\t\tif " -(2202:8-2202:17) "(type ===" --> (1432:8-1432:17) "(type ===" -(2202:17-2202:23) " null)" --> (1432:17-1432:23) " null)" -(2202:23-2203:6) " {" --> (1432:23-1433:0) " {" -(2203:6-2203:19) " typeString =" --> (1433:0-1433:18) "\n\t\t\t\t\ttypeString =" -(2203:19-2204:5) " 'null';" --> (1433:18-1434:4) " 'null';" -(2204:5-2204:15) "} else if " --> (1434:4-1434:15) "\t} else if " -(2204:15-2204:21) "(Array" --> (1434:15-1434:21) "(Array" -(2204:21-2204:29) ".isArray" --> (1434:21-1434:29) ".isArray" -(2204:29-2204:36) "(type))" --> (1434:29-1434:36) "(type))" -(2204:36-2205:6) " {" --> (1434:36-1435:0) " {" -(2205:6-2205:19) " typeString =" --> (1435:0-1435:18) "\n\t\t\t\t\ttypeString =" -(2205:19-2206:5) " 'array';" --> (1435:18-1436:4) " 'array';" -(2206:5-2206:15) "} else if " --> (1436:4-1436:15) "\t} else if " -(2206:15-2206:24) "(type !==" --> (1436:15-1436:24) "(type !==" -(2206:24-2206:37) " undefined &&" --> (1436:24-1436:37) " undefined &&" -(2206:37-2206:42) " type" --> (1436:37-1436:42) " type" -(2206:42-2206:55) ".$$typeof ===" --> (1436:42-1436:55) ".$$typeof ===" -(2206:55-2206:75) " REACT_ELEMENT_TYPE)" --> (1436:55-1436:75) " REACT_ELEMENT_TYPE)" -(2206:75-2207:6) " {" --> (1436:75-1437:0) " {" -(2207:6-2207:19) " typeString =" --> (1437:0-1437:18) "\n\t\t\t\t\ttypeString =" -(2207:19-2207:26) " \"<\" + " --> (1437:18-1437:25) " '<' + " -(2207:26-2207:43) "(getComponentName" --> (1437:25-1437:42) "(getComponentName" -(2207:43-2207:48) "(type" --> (1437:42-1437:47) "(type" -(2207:48-2207:57) ".type) ||" --> (1437:47-1437:56) ".type) ||" -(2207:57-2207:70) " 'Unknown') +" --> (1437:56-1437:69) " 'Unknown') +" -(2207:70-2208:6) " \" />\";" --> (1437:69-1438:0) " ' />';" -(2208:6-2208:13) " info =" --> (1438:0-1438:12) "\n\t\t\t\t\tinfo =" -(2208:13-2209:5) " ' Did you accidentally export a JSX literal instead of a component?';" --> (1438:12-1439:4) " ' Did you accidentally export a JSX literal instead of a component?';" -(2209:5-2209:11) "} else" --> (1439:4-1439:11) "\t} else" -(2209:11-2210:6) " {" --> (1439:11-1440:0) " {" -(2210:6-2210:26) " typeString = typeof" --> (1440:0-1440:25) "\n\t\t\t\t\ttypeString = typeof" -(2210:26-2211:5) " type;" --> (1440:25-1441:4) " type;" -(2211:5-2213:4) "}\n" --> (1441:4-1442:4) "\t}" -(2213:4-2214:6) " {" --> (1442:4-1443:0) "\t{" -(2214:6-2214:12) " error" --> (1443:0-1443:11) "\n\t\t\t\t\terror" -(2214:12-2214:80) "('React.createElement: type is invalid -- expected a string (for ' +" --> (1443:11-1443:79) "('React.createElement: type is invalid -- expected a string (for ' +" -(2214:80-2214:141) " 'built-in components) or a class/function (for composite ' +" --> (1443:79-1443:140) " 'built-in components) or a class/function (for composite ' +" -(2214:141-2214:171) " 'components) but got: %s.%s'," --> (1443:140-1443:170) " 'components) but got: %s.%s'," -(2214:171-2214:183) " typeString," --> (1443:170-1443:182) " typeString," -(2214:183-2215:5) " info);" --> (1443:182-1444:4) " info);" -(2215:5-2216:3) "}" --> (1444:4-1445:3) "\t}" -(2216:3-2218:2) "}\n" --> (1445:3-1446:3) "\t}" -(2218:2-2218:6) " var" --> (1446:3-1446:7) "\tvar" -(2218:6-2218:16) " element =" --> (1446:7-1446:17) " element =" -(2218:16-2218:30) " createElement" --> (1446:17-1446:31) " createElement" -(2218:30-2218:36) ".apply" --> (1446:31-1446:37) ".apply" -(2218:36-2218:42) "(this," --> (1446:37-1446:43) "(this," -(2218:42-2221:2) " arguments); // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n" --> (1446:43-1447:0) " arguments);" -(2221:2-2221:6) " if " --> (1447:0-1447:7) "\n\t\t\tif " -(2221:6-2221:17) "(element ==" --> (1447:7-1447:18) "(element ==" -(2221:17-2221:23) " null)" --> (1447:18-1447:24) " null)" -(2221:23-2222:4) " {" --> (1447:24-1448:0) " {" -(2222:4-2222:11) " return" --> (1448:0-1448:11) "\n\t\t\t\treturn" -(2222:11-2223:3) " element;" --> (1448:11-1449:3) " element;" -(2223:3-2230:2) "} // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n\n" --> (1449:3-1450:0) "\t}" -(2230:2-2230:6) " if " --> (1450:0-1450:7) "\n\t\t\tif " -(2230:6-2230:17) "(validType)" --> (1450:7-1450:18) "(validType)" -(2230:17-2231:4) " {" --> (1450:18-1451:0) " {" -(2231:4-2231:9) " for " --> (1451:0-1451:9) "\n\t\t\t\tfor " -(2231:9-2231:13) "(var" --> (1451:9-1451:13) "(var" -(2231:13-2231:17) " i =" --> (1451:13-1451:17) " i =" -(2231:17-2231:20) " 2;" --> (1451:17-1451:20) " 2;" -(2231:20-2231:24) " i <" --> (1451:20-1451:24) " i <" -(2231:24-2231:34) " arguments" --> (1451:24-1451:34) " arguments" -(2231:34-2231:42) ".length;" --> (1451:34-1451:42) ".length;" -(2231:42-2231:47) " i++)" --> (1451:42-1451:50) " i++)\t\t\t" -(2231:47-2232:6) " {" --> (1451:50-1452:0) "\t{" -(2232:6-2232:24) " validateChildKeys" --> (1452:0-1452:23) "\n\t\t\t\t\tvalidateChildKeys" -(2232:24-2232:34) "(arguments" --> (1452:23-1452:33) "(arguments" -(2232:34-2232:38) "[i]," --> (1452:33-1452:37) "[i]," -(2232:38-2233:5) " type);" --> (1452:37-1453:4) " type);" -(2233:5-2234:3) "}" --> (1453:4-1454:3) "\t}" -(2234:3-2236:2) "}\n" --> (1454:3-1455:0) "\t}" -(2236:2-2236:6) " if " --> (1455:0-1455:7) "\n\t\t\tif " -(2236:6-2236:15) "(type ===" --> (1455:7-1455:16) "(type ===" -(2236:15-2236:23) " exports" --> (1455:16-1455:24) " exports" -(2236:23-2236:33) ".Fragment)" --> (1455:24-1455:34) ".Fragment)" -(2236:33-2237:4) " {" --> (1455:34-1456:0) " {" -(2237:4-2237:26) " validateFragmentProps" --> (1456:0-1456:26) "\n\t\t\t\tvalidateFragmentProps" -(2237:26-2238:3) "(element);" --> (1456:26-1457:3) "(element);" -(2238:3-2238:9) "} else" --> (1457:3-1457:10) "\t} else" -(2238:9-2239:4) " {" --> (1457:10-1458:0) " {" -(2239:4-2239:22) " validatePropTypes" --> (1458:0-1458:22) "\n\t\t\t\tvalidatePropTypes" -(2239:22-2240:3) "(element);" --> (1458:22-1459:3) "(element);" -(2240:3-2242:2) "}\n" --> (1459:3-1460:0) "\t}" -(2242:2-2242:9) " return" --> (1460:0-1460:10) "\n\t\t\treturn" -(2242:9-2243:1) " element;" --> (1460:10-1461:2) " element;" -(2243:1-2244:0) "}" --> (1461:2-1462:2) "\t}" -(2244:0-2244:4) "\nvar" --> (1462:2-1462:6) "\tvar" -(2244:4-2244:42) " didWarnAboutDeprecatedCreateFactory =" --> (1462:6-1462:44) " didWarnAboutDeprecatedCreateFactory =" -(2244:42-2245:0) " false;" --> (1462:44-1463:2) " false;" -(2245:0-2245:9) "\nfunction" --> (1463:2-1463:11) "\tfunction" -(2245:9-2245:37) " createFactoryWithValidation" --> (1463:11-1463:39) " createFactoryWithValidation" -(2245:37-2245:43) "(type)" --> (1463:39-1463:45) "(type)" -(2245:43-2246:2) " {" --> (1463:45-1464:3) " {" -(2246:2-2246:6) " var" --> (1464:3-1464:7) "\tvar" -(2246:6-2246:25) " validatedFactory =" --> (1464:7-1464:26) " validatedFactory =" -(2246:25-2246:53) " createElementWithValidation" --> (1464:26-1464:54) " createElementWithValidation" -(2246:53-2246:58) ".bind" --> (1464:54-1464:59) ".bind" -(2246:58-2246:64) "(null," --> (1464:59-1464:65) "(null," -(2246:64-2247:2) " type);" --> (1464:65-1465:0) " type);" -(2247:2-2247:19) " validatedFactory" --> (1465:0-1465:21) "\n\t\t\t(validatedFactory" -(2247:19-2247:26) ".type =" --> (1465:21-1465:28) ".type =" -(2247:26-2249:2) " type;\n" --> (1465:28-1466:3) " type);" -(2249:2-2250:4) " {" --> (1466:3-1467:0) "\t{" -(2250:4-2250:9) " if (" --> (1467:0-1467:10) "\n\t\t\t\tif ( " -(2250:9-2250:46) "!didWarnAboutDeprecatedCreateFactory)" --> (1467:10-1467:47) "!didWarnAboutDeprecatedCreateFactory)" -(2250:46-2251:6) " {" --> (1467:47-1468:0) " {" -(2251:6-2251:44) " didWarnAboutDeprecatedCreateFactory =" --> (1468:0-1468:43) "\n\t\t\t\t\tdidWarnAboutDeprecatedCreateFactory =" -(2251:44-2253:6) " true;\n" --> (1468:43-1469:0) " true;" -(2253:6-2253:11) " warn" --> (1469:0-1469:10) "\n\t\t\t\t\twarn" -(2253:11-2253:75) "('React.createFactory() is deprecated and will be removed in ' +" --> (1469:10-1469:74) "('React.createFactory() is deprecated and will be removed in ' +" -(2253:75-2253:123) " 'a future major release. Consider using JSX ' +" --> (1469:74-1469:122) " 'a future major release. Consider using JSX ' +" -(2253:123-2254:5) " 'or use React.createElement() directly instead.');" --> (1469:122-1470:4) " 'or use React.createElement() directly instead.');" -(2254:5-2257:4) "} // Legacy hook: remove it\n\n" --> (1470:4-1471:0) "\t}" -(2257:4-2257:11) " Object" --> (1471:0-1471:11) "\n\t\t\t\tObject" -(2257:11-2257:26) ".defineProperty" --> (1471:11-1471:26) ".defineProperty" -(2257:26-2257:44) "(validatedFactory," --> (1471:26-1471:44) "(validatedFactory," -(2257:44-2257:52) " 'type'," --> (1471:44-1471:52) " 'type'," -(2257:52-2258:6) " {" --> (1471:52-1472:5) " {" -(2258:6-2258:18) " enumerable:" --> (1472:5-1472:16) "\tenumerable" -(2258:18-2259:6) " false," --> (1472:16-1473:5) ":false," -(2259:6-2259:11) " get:" --> (1473:5-1473:9) "\tget" -(2259:11-2259:23) " function ()" --> (1473:9-1473:20) ":function()" -(2259:23-2260:8) " {" --> (1473:20-1474:0) " {" -(2260:8-2260:13) " warn" --> (1474:0-1474:11) "\n\t\t\t\t\t\twarn" -(2260:13-2260:72) "('Factory.type is deprecated. Access the class directly ' +" --> (1474:11-1474:70) "('Factory.type is deprecated. Access the class directly ' +" -(2260:72-2262:8) " 'before passing it to createFactory.');\n" --> (1474:70-1475:0) " 'before passing it to createFactory.');" -(2262:8-2262:15) " Object" --> (1475:0-1475:13) "\n\t\t\t\t\t\tObject" -(2262:15-2262:30) ".defineProperty" --> (1475:13-1475:28) ".defineProperty" -(2262:30-2262:36) "(this," --> (1475:28-1475:34) "(this," -(2262:36-2262:44) " 'type'," --> (1475:34-1475:42) " 'type'," -(2262:44-2263:10) " {" --> (1475:42-1476:7) " {" -(2263:10-2263:17) " value:" --> (1476:7-1476:13) "\tvalue" -(2263:17-2264:9) " type" --> (1476:13-1477:7) ":type" -(2264:9-2265:8) "});" --> (1477:7-1478:0) "});" -(2265:8-2265:15) " return" --> (1478:0-1478:13) "\n\t\t\t\t\t\treturn" -(2265:15-2266:7) " type;" --> (1478:13-1479:5) " type;" -(2266:7-2267:5) "}" --> (1479:5-1480:5) "\t}" -(2267:5-2268:3) "});" --> (1480:5-1481:3) "});" -(2268:3-2270:2) "}\n" --> (1481:3-1482:0) "\t}" -(2270:2-2270:9) " return" --> (1482:0-1482:10) "\n\t\t\treturn" -(2270:9-2271:1) " validatedFactory;" --> (1482:10-1483:2) " validatedFactory;" -(2271:1-2272:0) "}" --> (1483:2-1484:2) "\t}" -(2272:0-2272:9) "\nfunction" --> (1484:2-1484:11) "\tfunction" -(2272:9-2272:36) " cloneElementWithValidation" --> (1484:11-1484:38) " cloneElementWithValidation" -(2272:36-2272:45) "(element," --> (1484:38-1484:47) "(element," -(2272:45-2272:52) " props," --> (1484:47-1484:54) " props," -(2272:52-2272:62) " children)" --> (1484:54-1484:64) " children)" -(2272:62-2273:2) " {" --> (1484:64-1485:3) " {" -(2273:2-2273:6) " var" --> (1485:3-1485:7) "\tvar" -(2273:6-2273:19) " newElement =" --> (1485:7-1485:20) " newElement =" -(2273:19-2273:32) " cloneElement" --> (1485:20-1485:33) " cloneElement" -(2273:32-2273:38) ".apply" --> (1485:33-1485:39) ".apply" -(2273:38-2273:44) "(this," --> (1485:39-1485:45) "(this," -(2273:44-2275:2) " arguments);\n" --> (1485:45-1486:0) " arguments);" -(2275:2-2275:7) " for " --> (1486:0-1486:8) "\n\t\t\tfor " -(2275:7-2275:11) "(var" --> (1486:8-1486:12) "(var" -(2275:11-2275:15) " i =" --> (1486:12-1486:16) " i =" -(2275:15-2275:18) " 2;" --> (1486:16-1486:19) " 2;" -(2275:18-2275:22) " i <" --> (1486:19-1486:23) " i <" -(2275:22-2275:32) " arguments" --> (1486:23-1486:33) " arguments" -(2275:32-2275:40) ".length;" --> (1486:33-1486:41) ".length;" -(2275:40-2275:45) " i++)" --> (1486:41-1486:48) " i++)\t\t" -(2275:45-2276:4) " {" --> (1486:48-1487:0) "\t{" -(2276:4-2276:22) " validateChildKeys" --> (1487:0-1487:22) "\n\t\t\t\tvalidateChildKeys" -(2276:22-2276:32) "(arguments" --> (1487:22-1487:32) "(arguments" -(2276:32-2276:36) "[i]," --> (1487:32-1487:36) "[i]," -(2276:36-2276:47) " newElement" --> (1487:36-1487:47) " newElement" -(2276:47-2277:3) ".type);" --> (1487:47-1488:3) ".type);" -(2277:3-2279:2) "}\n" --> (1488:3-1489:0) "\t}" -(2279:2-2279:20) " validatePropTypes" --> (1489:0-1489:21) "\n\t\t\tvalidatePropTypes" -(2279:20-2280:2) "(newElement);" --> (1489:21-1490:0) "(newElement);" -(2280:2-2280:9) " return" --> (1490:0-1490:10) "\n\t\t\treturn" -(2280:9-2281:1) " newElement;" --> (1490:10-1491:2) " newElement;" -(2281:1-2283:0) "}\n" --> (1491:2-1492:2) "\t}" -(2283:0-2285:2) "\n{\n" --> (1492:2-1493:0) "\t{" -(2285:2-2285:6) " try" --> (1493:0-1493:6) "\n\t\t\ttr" -(2285:6-2286:4) " {" --> (1493:6-1494:4) "y{" -(2286:4-2286:8) " var" --> (1494:4-1494:8) "\tvar" -(2286:8-2286:23) " frozenObject =" --> (1494:8-1494:23) " frozenObject =" -(2286:23-2286:30) " Object" --> (1494:23-1494:30) " Object" -(2286:30-2286:37) ".freeze" --> (1494:30-1494:37) ".freeze" -(2286:37-2286:39) "({" --> (1494:37-1494:39) "({" -(2286:39-2289:4) "});\n /* eslint-disable no-new */\n" --> (1494:39-1495:0) "});" -(2289:4-2289:8) " new" --> (1495:0-1495:8) "\n\t\t\t\tnew" -(2289:8-2289:12) " Map" --> (1495:8-1495:12) " Map" -(2289:12-2289:13) "(" --> (1495:12-1495:13) "(" -(2289:13-2289:14) "[" --> (1495:13-1495:14) "[" -(2289:14-2289:28) "[frozenObject," --> (1495:14-1495:28) "[frozenObject," -(2289:28-2289:33) " null" --> (1495:28-1495:33) " null" -(2289:33-2289:34) "]" --> (1495:33-1495:34) "]" -(2289:34-2290:4) "]);" --> (1495:34-1496:0) "]);" -(2290:4-2290:8) " new" --> (1496:0-1496:8) "\n\t\t\t\tnew" -(2290:8-2290:12) " Set" --> (1496:8-1496:12) " Set" -(2290:12-2290:13) "(" --> (1496:12-1496:13) "(" -(2290:13-2290:26) "[frozenObject" --> (1496:13-1496:26) "[frozenObject" -(2290:26-2292:3) "]);\n /* eslint-enable no-new */" --> (1496:26-1497:3) "]);" -(2292:3-2292:11) "} catch " --> (1497:3-1497:10) "\t}catch" -(2292:11-2292:14) "(e)" --> (1497:10-1497:12) "(e" -(2292:14-2293:3) " {" --> (1497:12-1498:3) "){" -(2293:3-2294:1) "}" --> (1498:3-1498:6) "\t}\t" -(2294:1-2296:0) "}\n" --> (1498:6-1499:2) "\t}" -(2296:0-2296:4) "\nvar" --> (1499:2-1499:6) "\tvar" -(2296:4-2296:23) " createElement$1 = " --> (1499:6-1499:24) " createElement$1 =" -(2296:23-2297:0) " createElementWithValidation ;" --> (1499:24-1500:2) " createElementWithValidation;" -(2297:0-2297:4) "\nvar" --> (1500:2-1500:6) "\tvar" -(2297:4-2297:22) " cloneElement$1 = " --> (1500:6-1500:23) " cloneElement$1 =" -(2297:22-2298:0) " cloneElementWithValidation ;" --> (1500:23-1501:2) " cloneElementWithValidation;" -(2298:0-2298:4) "\nvar" --> (1501:2-1501:6) "\tvar" -(2298:4-2298:21) " createFactory = " --> (1501:6-1501:22) " createFactory =" -(2298:21-2299:0) " createFactoryWithValidation ;" --> (1501:22-1502:2) " createFactoryWithValidation;" -(2299:0-2299:4) "\nvar" --> (1502:2-1502:6) "\tvar" -(2299:4-2299:15) " Children =" --> (1502:6-1502:17) " Children =" -(2299:15-2300:2) " {" --> (1502:17-1503:3) " {" -(2300:2-2300:7) " map:" --> (1503:3-1503:7) "\tmap" -(2300:7-2301:2) " mapChildren," --> (1503:7-1504:3) ":mapChildren," -(2301:2-2301:11) " forEach:" --> (1504:3-1504:11) "\tforEach" -(2301:11-2302:2) " forEachChildren," --> (1504:11-1505:3) ":forEachChildren," -(2302:2-2302:9) " count:" --> (1505:3-1505:9) "\tcount" -(2302:9-2303:2) " countChildren," --> (1505:9-1506:3) ":countChildren," -(2303:2-2303:11) " toArray:" --> (1506:3-1506:11) "\ttoArray" -(2303:11-2304:2) " toArray," --> (1506:11-1507:3) ":toArray," -(2304:2-2304:8) " only:" --> (1507:3-1507:8) "\tonly" -(2304:8-2305:1) " onlyChild" --> (1507:8-1508:3) ":onlyChild" -(2305:1-2307:0) "};\n" --> (1508:3-1509:0) "};" -(2307:0-2307:8) "\nexports" --> (1509:0-1509:10) "\n\t\texports" -(2307:8-2307:19) ".Children =" --> (1509:10-1509:21) ".Children =" -(2307:19-2308:0) " Children;" --> (1509:21-1510:0) " Children;" -(2308:0-2308:8) "\nexports" --> (1510:0-1510:10) "\n\t\texports" -(2308:8-2308:20) ".Component =" --> (1510:10-1510:22) ".Component =" -(2308:20-2309:0) " Component;" --> (1510:22-1511:0) " Component;" -(2309:0-2309:8) "\nexports" --> (1511:0-1511:10) "\n\t\texports" -(2309:8-2309:24) ".PureComponent =" --> (1511:10-1511:26) ".PureComponent =" -(2309:24-2310:0) " PureComponent;" --> (1511:26-1512:0) " PureComponent;" -(2310:0-2310:8) "\nexports" --> (1512:0-1512:10) "\n\t\texports" -(2310:8-2310:61) ".__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED =" --> (1512:10-1512:63) ".__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED =" -(2310:61-2311:0) " ReactSharedInternals;" --> (1512:63-1513:0) " ReactSharedInternals;" -(2311:0-2311:8) "\nexports" --> (1513:0-1513:10) "\n\t\texports" -(2311:8-2311:23) ".cloneElement =" --> (1513:10-1513:25) ".cloneElement =" -(2311:23-2312:0) " cloneElement$1;" --> (1513:25-1514:0) " cloneElement$1;" -(2312:0-2312:8) "\nexports" --> (1514:0-1514:10) "\n\t\texports" -(2312:8-2312:24) ".createContext =" --> (1514:10-1514:26) ".createContext =" -(2312:24-2313:0) " createContext;" --> (1514:26-1515:0) " createContext;" -(2313:0-2313:8) "\nexports" --> (1515:0-1515:10) "\n\t\texports" -(2313:8-2313:24) ".createElement =" --> (1515:10-1515:26) ".createElement =" -(2313:24-2314:0) " createElement$1;" --> (1515:26-1516:0) " createElement$1;" -(2314:0-2314:8) "\nexports" --> (1516:0-1516:10) "\n\t\texports" -(2314:8-2314:24) ".createFactory =" --> (1516:10-1516:26) ".createFactory =" -(2314:24-2315:0) " createFactory;" --> (1516:26-1517:0) " createFactory;" -(2315:0-2315:8) "\nexports" --> (1517:0-1517:10) "\n\t\texports" -(2315:8-2315:20) ".createRef =" --> (1517:10-1517:22) ".createRef =" -(2315:20-2316:0) " createRef;" --> (1517:22-1518:0) " createRef;" -(2316:0-2316:8) "\nexports" --> (1518:0-1518:10) "\n\t\texports" -(2316:8-2316:21) ".forwardRef =" --> (1518:10-1518:23) ".forwardRef =" -(2316:21-2317:0) " forwardRef;" --> (1518:23-1519:0) " forwardRef;" -(2317:0-2317:8) "\nexports" --> (1519:0-1519:10) "\n\t\texports" -(2317:8-2317:25) ".isValidElement =" --> (1519:10-1519:27) ".isValidElement =" -(2317:25-2318:0) " isValidElement;" --> (1519:27-1520:0) " isValidElement;" -(2318:0-2318:8) "\nexports" --> (1520:0-1520:10) "\n\t\texports" -(2318:8-2318:15) ".lazy =" --> (1520:10-1520:17) ".lazy =" -(2318:15-2319:0) " lazy;" --> (1520:17-1521:0) " lazy;" -(2319:0-2319:8) "\nexports" --> (1521:0-1521:10) "\n\t\texports" -(2319:8-2319:15) ".memo =" --> (1521:10-1521:17) ".memo =" -(2319:15-2320:0) " memo;" --> (1521:17-1522:0) " memo;" -(2320:0-2320:8) "\nexports" --> (1522:0-1522:10) "\n\t\texports" -(2320:8-2320:22) ".useCallback =" --> (1522:10-1522:24) ".useCallback =" -(2320:22-2321:0) " useCallback;" --> (1522:24-1523:0) " useCallback;" -(2321:0-2321:8) "\nexports" --> (1523:0-1523:10) "\n\t\texports" -(2321:8-2321:21) ".useContext =" --> (1523:10-1523:23) ".useContext =" -(2321:21-2322:0) " useContext;" --> (1523:23-1524:0) " useContext;" -(2322:0-2322:8) "\nexports" --> (1524:0-1524:10) "\n\t\texports" -(2322:8-2322:24) ".useDebugValue =" --> (1524:10-1524:26) ".useDebugValue =" -(2322:24-2323:0) " useDebugValue;" --> (1524:26-1525:0) " useDebugValue;" -(2323:0-2323:8) "\nexports" --> (1525:0-1525:10) "\n\t\texports" -(2323:8-2323:20) ".useEffect =" --> (1525:10-1525:22) ".useEffect =" -(2323:20-2324:0) " useEffect;" --> (1525:22-1526:0) " useEffect;" -(2324:0-2324:8) "\nexports" --> (1526:0-1526:10) "\n\t\texports" -(2324:8-2324:30) ".useImperativeHandle =" --> (1526:10-1526:32) ".useImperativeHandle =" -(2324:30-2325:0) " useImperativeHandle;" --> (1526:32-1527:0) " useImperativeHandle;" -(2325:0-2325:8) "\nexports" --> (1527:0-1527:10) "\n\t\texports" -(2325:8-2325:26) ".useLayoutEffect =" --> (1527:10-1527:28) ".useLayoutEffect =" -(2325:26-2326:0) " useLayoutEffect;" --> (1527:28-1528:0) " useLayoutEffect;" -(2326:0-2326:8) "\nexports" --> (1528:0-1528:10) "\n\t\texports" -(2326:8-2326:18) ".useMemo =" --> (1528:10-1528:20) ".useMemo =" -(2326:18-2327:0) " useMemo;" --> (1528:20-1529:0) " useMemo;" -(2327:0-2327:8) "\nexports" --> (1529:0-1529:10) "\n\t\texports" -(2327:8-2327:21) ".useReducer =" --> (1529:10-1529:23) ".useReducer =" -(2327:21-2328:0) " useReducer;" --> (1529:23-1530:0) " useReducer;" -(2328:0-2328:8) "\nexports" --> (1530:0-1530:10) "\n\t\texports" -(2328:8-2328:17) ".useRef =" --> (1530:10-1530:19) ".useRef =" -(2328:17-2329:0) " useRef;" --> (1530:19-1531:0) " useRef;" -(2329:0-2329:8) "\nexports" --> (1531:0-1531:10) "\n\t\texports" -(2329:8-2329:19) ".useState =" --> (1531:10-1531:21) ".useState =" -(2329:19-2330:0) " useState;" --> (1531:21-1532:0) " useState;" -(2330:0-2330:8) "\nexports" --> (1532:0-1532:10) "\n\t\texports" -(2330:8-2330:18) ".version =" --> (1532:10-1532:20) ".version =" -(2330:18-2331:3) " ReactVersion;" --> (1532:20-1533:1) " ReactVersion;" -(2331:3-2332:1) "})();" --> (1533:1-1534:0) "\t})();" - - - -- string-literal-newline/input.js -(0:0-3:0) "\"before\\\nafter\";\n" --> (0:0-1:7) "'before\\" - - - -- template-literal-newline/input.js -(1:0-1:1) "\n" --> (0:0-0:1) "`" -(1:1-5:0) "`before\nafter`;\n\n// Newline newline" --> (0:1-2:0) "before\nafter`;" -(5:0-5:1) "\n" --> (2:0-2:1) "\n" -(5:1-10:0) "`before\n\nafter`;\n\n// Newline LineContinuation" --> (2:1-5:0) "`before\n\nafter`;" -(10:0-10:1) "\n" --> (5:0-5:1) "\n" -(10:1-15:0) "`before\n\\\nafter`;\n\n// LineContinuation" --> (5:1-8:0) "`before\n\\\nafter`;" -(15:0-15:1) "\n" --> (8:0-8:1) "\n" -(15:1-19:0) "`before\\\nafter`;\n\n// LineContinuation newline" --> (8:1-10:0) "`before\\\nafter`;" -(19:0-19:1) "\n" --> (10:0-10:1) "\n" -(19:1-24:0) "`before\\\n\nafter`;\n\n// LineContinuation LineContinuation" --> (10:1-13:0) "`before\\\n\nafter`;" -(24:0-24:1) "\n" --> (13:0-13:1) "\n" - - - diff --git a/tasks/coverage/parser_typescript.snap b/tasks/coverage/parser_typescript.snap index f03f192e8cab3..af6e2bbc0fddd 100644 --- a/tasks/coverage/parser_typescript.snap +++ b/tasks/coverage/parser_typescript.snap @@ -1326,6 +1326,7 @@ Expect Syntax Error: "compiler/objectLiteralFreshnessWithSpread.ts" Expect Syntax Error: "compiler/objectLiteralFunctionArgContextualTyping.ts" Expect Syntax Error: "compiler/objectLiteralFunctionArgContextualTyping2.ts" Expect Syntax Error: "compiler/objectLiteralIndexerErrors.ts" +Expect Syntax Error: "compiler/objectLiteralMemberWithoutBlock1.ts" Expect Syntax Error: "compiler/objectLiteralParameterResolution.ts" Expect Syntax Error: "compiler/objectLiteralPropertyImplicitlyAny.ts" Expect Syntax Error: "compiler/objectLiteralReferencingInternalProperties.ts" @@ -3549,7 +3550,6 @@ Expect Syntax Error: "conformance/types/nonPrimitive/nonPrimitiveUnionIntersecti Expect Syntax Error: "conformance/types/objectTypeLiteral/callSignatures/callSignatureWithOptionalParameterAndInitializer.ts" Expect Syntax Error: "conformance/types/objectTypeLiteral/callSignatures/callSignaturesThatDifferOnlyByReturnType2.ts" Expect Syntax Error: "conformance/types/objectTypeLiteral/callSignatures/callSignaturesWithParameterInitializers.ts" -Expect Syntax Error: "conformance/types/objectTypeLiteral/callSignatures/callSignaturesWithParameterInitializers2.ts" Expect Syntax Error: "conformance/types/objectTypeLiteral/callSignatures/specializedSignatureIsNotSubtypeOfNonSpecializedSignature.ts" Expect Syntax Error: "conformance/types/objectTypeLiteral/callSignatures/stringLiteralTypesInImplementationSignatures2.ts" Expect Syntax Error: "conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts" @@ -7941,13 +7941,6 @@ Expect to Parse: "conformance/salsa/plainJSRedeclare3.ts" · ╰── `,` expected ╰──── - × Expected `,` but found `;` - ╭─[compiler/objectLiteralMemberWithoutBlock1.ts:1:16] - 1 │ var v = { foo(); } - · ┬ - · ╰── `,` expected - ╰──── - × Expected `,` but found `;` ╭─[compiler/objectLiteralWithSemicolons1.ts:1:12] 1 │ var v = { a; b; c } @@ -19584,6 +19577,15 @@ Expect to Parse: "conformance/salsa/plainJSRedeclare3.ts" 38 │ } ╰──── + × Expected a semicolon or an implicit semicolon after a statement, but found none + ╭─[conformance/types/objectTypeLiteral/callSignatures/callSignaturesWithParameterInitializers2.ts:20:15] + 19 │ var b = { + 20 │ foo(x = 1), // error + · ▲ + 21 │ foo(x = 1) { }, // error + ╰──── + help: Try insert a semicolon here + × A parameter property is only allowed in a constructor implementation. ╭─[conformance/types/objectTypeLiteral/callSignatures/constructSignatureWithAccessibilityModifiersOnParameters.ts:16:10] 15 │ interface I { diff --git a/tasks/coverage/src/lib.rs b/tasks/coverage/src/lib.rs index 22c13d9dabcdb..a811ec823a3a1 100644 --- a/tasks/coverage/src/lib.rs +++ b/tasks/coverage/src/lib.rs @@ -4,7 +4,6 @@ mod minifier; mod misc; mod prettier; mod runtime; -mod sourcemap; mod suite; mod test262; mod typescript; @@ -14,7 +13,6 @@ use std::{fs, path::PathBuf, process::Command, time::Duration}; use oxc_tasks_common::agent; use runtime::{CodegenRuntimeTest262Case, V8_TEST_262_FAILED_TESTS_PATH}; use similar::DiffableStr; -use sourcemap::{SourcemapCase, SourcemapSuite}; use crate::{ babel::{BabelCase, BabelSuite}, @@ -66,7 +64,6 @@ impl AppArgs { BabelSuite::::new().run("codegen_babel", self); TypeScriptSuite::::new().run("codegen_typescript", self); MiscSuite::::new().run("codegen_misc", self); - SourcemapSuite::::new().run("codegen_sourcemap", self); } pub fn run_prettier(&self) { diff --git a/tasks/coverage/src/sourcemap.rs b/tasks/coverage/src/sourcemap.rs deleted file mode 100644 index 9adbf752bdea3..0000000000000 --- a/tasks/coverage/src/sourcemap.rs +++ /dev/null @@ -1,222 +0,0 @@ -use crate::suite::{Case, Suite, TestResult}; -use oxc_span::SourceType; -use oxc_tasks_common::{project_root, TestFiles}; -use std::io::Write; -use std::{ - fs::File, - path::{Path, PathBuf}, -}; - -static FIXTURES_PATH: &str = - "tasks/coverage/babel/packages/babel-generator/test/fixtures/sourcemaps"; - -pub struct SourcemapSuite { - test_root: PathBuf, - test_cases: Vec, -} - -impl SourcemapSuite { - pub fn new() -> Self { - Self { - test_root: project_root().join(FIXTURES_PATH), - test_cases: TestFiles::new() - .files() - .iter() - .filter(|file| file.file_name.contains("react")) - .map(|file| T::new(file.file_name.clone().into(), file.source_text.clone())) - .collect::>(), - } - } -} - -impl Suite for SourcemapSuite { - fn get_test_root(&self) -> &Path { - &self.test_root - } - - fn save_test_cases(&mut self, tests: Vec) { - self.test_cases.extend(tests); - } - - fn get_test_cases(&self) -> &Vec { - &self.test_cases - } - - fn get_test_cases_mut(&mut self) -> &mut Vec { - &mut self.test_cases - } - - fn skip_test_path(&self, path: &Path) -> bool { - let path = path.to_string_lossy(); - !path.contains("input.js") - } - - fn run_coverage(&self, name: &str, _args: &crate::AppArgs) { - let path = project_root().join(format!("tasks/coverage/{name}.snap")); - let mut file = File::create(path).unwrap(); - - let mut tests = self.get_test_cases().iter().collect::>(); - tests.sort_by_key(|case| case.path()); - - for case in tests { - let result = case.test_result(); - let path = case.path().to_string_lossy(); - let result = match result { - TestResult::Snapshot(snapshot) => snapshot, - TestResult::ParseError(error, _) => error, - _ => { - unreachable!() - } - }; - writeln!(file, "- {path}").unwrap(); - writeln!(file, "{result}\n\n").unwrap(); - } - } -} - -pub struct SourcemapCase { - path: PathBuf, - code: String, - source_type: SourceType, - result: TestResult, -} - -impl SourcemapCase { - pub fn source_type(&self) -> SourceType { - self.source_type - } - - fn generate_line_utf16_tables(content: &str) -> Vec> { - let mut tables = vec![]; - let mut line_byte_offset = 0; - for (i, ch) in content.char_indices() { - match ch { - '\r' | '\n' | '\u{2028}' | '\u{2029}' => { - // Handle Windows-specific "\r\n" newlines - if ch == '\r' && content.chars().nth(i + 1) == Some('\n') { - continue; - } - tables.push(content[line_byte_offset..i].encode_utf16().collect::>()); - line_byte_offset = i; - } - _ => {} - } - } - tables.push(content[line_byte_offset..].encode_utf16().collect::>()); - tables - } - - fn create_visualizer_text( - source: &str, - output: &str, - tokens: &[(u32, u32, u32, u32)], - ) -> String { - let source_lines = Self::generate_line_utf16_tables(source); - let output_lines = Self::generate_line_utf16_tables(output); - let mut s = String::new(); - - tokens.iter().reduce(|pre, cur| { - s.push_str(&format!( - "({}:{}-{}:{}) {:?}", - pre.0, - pre.1, - cur.0, - cur.1, - Self::str_slice_by_token(&source_lines, (pre.0, pre.1), (cur.0, cur.1)) - )); - s.push_str(" --> "); - s.push_str(&format!( - "({}:{}-{}:{}) {:?}", - pre.2, - pre.3, - cur.2, - cur.3, - Self::str_slice_by_token(&output_lines, (pre.2, pre.3), (cur.2, cur.3)) - )); - s.push('\n'); - cur - }); - - s - } - - fn str_slice_by_token(buff: &[Vec], start: (u32, u32), end: (u32, u32)) -> String { - if start.0 == end.0 { - return String::from_utf16(&buff[start.0 as usize][start.1 as usize..end.1 as usize]) - .unwrap(); - } - - let mut s = String::new(); - - for i in start.0..end.0 { - let slice = &buff[i as usize]; - if i == start.0 { - s.push_str(&String::from_utf16(&slice[start.1 as usize..]).unwrap()); - } else if i == end.0 { - s.push_str(&String::from_utf16(&slice[..end.1 as usize]).unwrap()); - } else { - s.push_str(&String::from_utf16(slice).unwrap()); - } - } - - s - } -} - -impl Case for SourcemapCase { - fn new(path: PathBuf, code: String) -> Self { - let source_type = SourceType::from_path(&path).unwrap(); - Self { path, code, source_type, result: TestResult::ToBeRun } - } - - fn code(&self) -> &str { - &self.code - } - - fn path(&self) -> &Path { - &self.path - } - - fn test_result(&self) -> &TestResult { - &self.result - } - - fn run(&mut self) { - let source_type = self.source_type(); - self.result = self.execute(source_type); - } - - fn execute(&mut self, source_type: SourceType) -> TestResult { - let source_text = self.code(); - let allocator = oxc_allocator::Allocator::default(); - let ret = oxc_parser::Parser::new(&allocator, source_text, source_type).parse(); - - if !ret.errors.is_empty() { - if let Some(error) = ret.errors.into_iter().next() { - let error = error.with_source_code(source_text.to_string()); - return TestResult::ParseError(error.to_string(), false); - } - } - - let codegen_options = oxc_codegen::CodegenOptions::default(); - let mut codegen = oxc_codegen::Codegen::::new(source_text.len(), codegen_options); - let content = codegen.with_sourcemap(source_text, "").build(&ret.program); - let map = codegen.into_sourcemap(); - let tokens = map - .tokens() - .map(|token| { - ( - token.get_src_line(), - token.get_src_col(), - token.get_dst_line(), - token.get_dst_col(), - ) - }) - .collect::>(); - - let mut result = String::new(); - result.push_str(Self::create_visualizer_text(source_text, &content, &tokens).as_str()); - - TestResult::Snapshot(result) - } -} diff --git a/tasks/coverage/src/suite.rs b/tasks/coverage/src/suite.rs index 323fda260dbc4..99a9b64c19bd7 100644 --- a/tasks/coverage/src/suite.rs +++ b/tasks/coverage/src/suite.rs @@ -35,7 +35,6 @@ pub enum TestResult { CorrectError(String, /* panicked */ bool), RuntimeError(String), CodegenError(/* reason */ &'static str), - Snapshot(String), } pub struct CoverageReport<'a, T> { @@ -387,9 +386,6 @@ pub trait Case: Sized + Sync + Send + UnwindSafe { format!("{reason} failed: {:?}\n", normalize_path(self.path())).as_bytes(), )?; } - TestResult::Snapshot(snapshot) => { - writer.write_all(snapshot.as_bytes())?; - } TestResult::Passed | TestResult::ToBeRun | TestResult::CorrectError(..) => {} } Ok(()) diff --git a/tasks/transform_conformance/babel.snap.md b/tasks/transform_conformance/babel.snap.md index f1bbba264423a..5ad339e499de3 100644 --- a/tasks/transform_conformance/babel.snap.md +++ b/tasks/transform_conformance/babel.snap.md @@ -1,4 +1,4 @@ -Passed: 351/1369 +Passed: 347/1369 # All Passed: * babel-plugin-transform-numeric-separator @@ -832,24 +832,28 @@ Passed: 351/1369 * general/function-duplicate-name/input.js * general/object/input.js -# babel-plugin-transform-typescript (97/158) +# babel-plugin-transform-typescript (93/158) * class/abstract-class-decorated-method/input.ts * class/abstract-class-decorated-parameter/input.ts * class/accessor-allowDeclareFields-false/input.ts * class/accessor-allowDeclareFields-true/input.ts * class/declare/input.ts * class/decorated-declare-properties/input.ts +* class/parameter-properties/input.ts * class/parameter-properties-late-super/input.ts * class/parameter-properties-with-class/input.ts * class/parameter-properties-with-class-and-super/input.ts * class/parameter-properties-with-parameters/input.ts +* class/parameter-properties-with-super/input.ts * class/private-method-override-transform-private/input.ts * class/transform-properties-declare-wrong-order/input.ts +* declarations/nested-namespace/input.mjs * exports/declared-types/input.ts * exports/export-const-enums/input.ts * exports/export-type-star-from/input.ts * exports/export=/input.ts * exports/export=-to-cjs/input.ts +* function/overloads-exports/input.mjs * imports/elide-injected/input.ts * imports/enum-id/input.ts * imports/enum-value/input.ts diff --git a/tasks/transform_conformance/src/test_case.rs b/tasks/transform_conformance/src/test_case.rs index 6473ba4d9a947..bb70451bf331e 100644 --- a/tasks/transform_conformance/src/test_case.rs +++ b/tasks/transform_conformance/src/test_case.rs @@ -160,11 +160,7 @@ pub trait TestCase { fn transform(&self, path: &Path) -> Result> { let allocator = Allocator::default(); let source_text = fs::read_to_string(path).unwrap(); - - let source_type = SourceType::from_path(path) - .unwrap() - .with_typescript(self.transform_options().typescript.is_some()); - + let source_type = SourceType::from_path(path).unwrap(); let ret = Parser::new(&allocator, &source_text, source_type).parse(); let semantic = SemanticBuilder::new(&source_text, source_type) @@ -220,16 +216,13 @@ impl TestCase for ConformanceTestCase { .as_ref() .is_some_and(|path| path.extension().and_then(std::ffi::OsStr::to_str) == Some("js")); - let transform_options = self.transform_options(); - - let source_type = SourceType::from_path(&self.path) - .unwrap() - .with_script(if self.options.source_type.is_some() { + let source_type = SourceType::from_path(&self.path).unwrap().with_script( + if self.options.source_type.is_some() { !self.options.is_module() } else { input_is_js && output_is_js - }) - .with_typescript(transform_options.typescript.is_some()); + }, + ); if filtered { println!("input_path: {:?}", &self.path); @@ -244,6 +237,7 @@ impl TestCase for ConformanceTestCase { .build(&ret.program) .semantic; let program = allocator.alloc(ret.program); + let transform_options = self.transform_options(); let transformer = Transformer::new(&allocator, source_type, semantic, transform_options.clone()); diff --git a/website/pnpm-lock.yaml b/website/pnpm-lock.yaml index 41a08419ab785..36da528a23ca2 100644 --- a/website/pnpm-lock.yaml +++ b/website/pnpm-lock.yaml @@ -7,7 +7,7 @@ settings: dependencies: '@codemirror/autocomplete': specifier: ^6.12.0 - version: 6.13.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.24.1)(@lezer/common@1.2.1) + version: 6.12.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.24.1)(@lezer/common@1.2.1) '@codemirror/commands': specifier: ^6.3.3 version: 6.3.3 @@ -40,7 +40,7 @@ dependencies: version: 1.0.2 '@replit/codemirror-vscode-keymap': specifier: ^6.0.2 - version: 6.0.2(@codemirror/autocomplete@6.13.0)(@codemirror/commands@6.3.3)(@codemirror/language@6.10.1)(@codemirror/lint@6.5.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/view@6.24.1) + version: 6.0.2(@codemirror/autocomplete@6.12.0)(@codemirror/commands@6.3.3)(@codemirror/language@6.10.1)(@codemirror/lint@6.5.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/view@6.24.1) codemirror: specifier: ^6.0.1 version: 6.0.1(@lezer/common@1.2.1) @@ -77,8 +77,8 @@ packages: regenerator-runtime: 0.14.1 dev: true - /@codemirror/autocomplete@6.13.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.24.1)(@lezer/common@1.2.1): - resolution: {integrity: sha512-SuDrho1klTINfbcMPnyro1ZxU9xJtwDMtb62R8TjL/tOl71IoOsvBo1a9x+hDvHhIzkTcJHy2VC+rmpGgYkRSw==} + /@codemirror/autocomplete@6.12.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.24.1)(@lezer/common@1.2.1): + resolution: {integrity: sha512-r4IjdYFthwbCQyvqnSlx0WBHRHi8nBvU+WjJxFUij81qsBfhNudf/XKKmmC2j3m0LaOYUQTf3qiEK1J8lO1sdg==} peerDependencies: '@codemirror/language': ^6.0.0 '@codemirror/state': ^6.0.0 @@ -103,7 +103,7 @@ packages: /@codemirror/lang-javascript@6.2.2: resolution: {integrity: sha512-VGQfY+FCc285AhWuwjYxQyUQcYurWlxdKYT4bqwr3Twnd5wP5WSeu52t4tvvuWmljT4EmgEgZCqSieokhtY8hg==} dependencies: - '@codemirror/autocomplete': 6.13.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.24.1)(@lezer/common@1.2.1) + '@codemirror/autocomplete': 6.12.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.24.1)(@lezer/common@1.2.1) '@codemirror/language': 6.10.1 '@codemirror/lint': 6.5.0 '@codemirror/state': 6.4.1 @@ -428,7 +428,7 @@ packages: '@lezer/lr': 1.4.0 dev: false - /@replit/codemirror-vscode-keymap@6.0.2(@codemirror/autocomplete@6.13.0)(@codemirror/commands@6.3.3)(@codemirror/language@6.10.1)(@codemirror/lint@6.5.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/view@6.24.1): + /@replit/codemirror-vscode-keymap@6.0.2(@codemirror/autocomplete@6.12.0)(@codemirror/commands@6.3.3)(@codemirror/language@6.10.1)(@codemirror/lint@6.5.0)(@codemirror/search@6.5.6)(@codemirror/state@6.4.1)(@codemirror/view@6.24.1): resolution: {integrity: sha512-j45qTwGxzpsv82lMD/NreGDORFKSctMDVkGRopaP+OrzSzv+pXDQuU3LnFvKpasyjVT0lf+PKG1v2DSCn/vxxg==} peerDependencies: '@codemirror/autocomplete': ^6.0.0 @@ -439,7 +439,7 @@ packages: '@codemirror/state': ^6.0.0 '@codemirror/view': ^6.0.0 dependencies: - '@codemirror/autocomplete': 6.13.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.24.1)(@lezer/common@1.2.1) + '@codemirror/autocomplete': 6.12.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.24.1)(@lezer/common@1.2.1) '@codemirror/commands': 6.3.3 '@codemirror/language': 6.10.1 '@codemirror/lint': 6.5.0 @@ -623,7 +623,7 @@ packages: /codemirror@6.0.1(@lezer/common@1.2.1): resolution: {integrity: sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==} dependencies: - '@codemirror/autocomplete': 6.13.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.24.1)(@lezer/common@1.2.1) + '@codemirror/autocomplete': 6.12.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.24.1)(@lezer/common@1.2.1) '@codemirror/commands': 6.3.3 '@codemirror/language': 6.10.1 '@codemirror/lint': 6.5.0