diff --git a/.babelrc b/.babelrc deleted file mode 100644 index 22696fbc12..0000000000 --- a/.babelrc +++ /dev/null @@ -1,21 +0,0 @@ -{ - "presets": ["react"], - "plugins": [ - "transform-es2015-modules-commonjs", - "transform-es2015-block-scoping", - "transform-es2015-destructuring", - "transform-es2015-parameters", - "transform-es2015-spread", - "transform-object-rest-spread", - "transform-flow-strip-types", - "transform-async-to-generator", - "syntax-trailing-function-commas", - - ["module-resolver", { - "alias": { - "devtools/client/shared/vendor/react": "react", - "devtools/client/shared/vendor/react-dom": "react-dom" - } - }] - ] -} diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 9099689136..0000000000 --- a/.editorconfig +++ /dev/null @@ -1,11 +0,0 @@ -# http://editorconfig.org - -root = true - -[*] -charset = utf-8 -indent_style = space -indent_size = 2 -end_of_line = lf -insert_final_newline = true -trim_trailing_whitespace = true diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 3b41f8569d..0000000000 --- a/.eslintignore +++ /dev/null @@ -1,7 +0,0 @@ -assets/* -src/test/examples/** -src/test/integration/** -src/test/unit-sources/** -src/**/fixtures/** -src/test/mochitest/** -bin/ diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index 925bd98eae..0000000000 --- a/.eslintrc +++ /dev/null @@ -1,415 +0,0 @@ -{ - "parser": "babel-eslint", - "plugins": [ - "react", - "mozilla", - "flowtype", - "babel", - "prettier" - ], - "globals": { - "atob": true, - "btoa": true, - "Cc": true, - "Ci": true, - "Components": true, - "console": true, - "Cr": true, - "Cu": true, - "devtools": true, - "dump": true, - "EventEmitter": true, - "isWorker": true, - "loader": true, - "reportError": true, - "Services": true, - "Task": true, - "XPCNativeWrapper": true, - "XPCOMUtils": true, - "_Iterator": true, - "__dirname": true, - "process": true, - "global": true, - "L10N": true - }, - "extends": [ - "prettier", - "prettier/flowtype", - "prettier/react" - ], - "parserOptions": { - "ecmaVersion": 2016, - "sourceType": "module", - "ecmaFeatures": { "jsx": true } - }, - "env": { - "es6": true, - "browser": true, - "commonjs": true, - "jest": true - }, - "rules": { - // These are the rules that have been configured so far to match the - // devtools coding style. - - // Rules from the mozilla plugin - "mozilla/mark-test-function-used": 1, - "mozilla/no-aArgs": 1, - // See bug 1224289. - "mozilla/reject-importGlobalProperties": 1, - "mozilla/var-only-at-top-level": 1, - - // Rules from the React plugin - "react/jsx-uses-react": [2], - "react/jsx-uses-vars": [2], - "react/no-danger": 1, - "react/no-did-mount-set-state": 1, - "react/no-did-update-set-state": 1, - "react/no-direct-mutation-state": 1, - "react/no-unknown-property": 1, - "react/prop-types": 1, - "react/sort-comp": [1, { - order: [ - "propTypes", - "everything-else", - "render" - ] - }], - - // Enforce the spacing around the * in generator functions. - "babel/generator-star-spacing": [2, "after"], - - "flowtype/define-flow-type": 1, - "flowtype/use-flow-type": 1, - - // Disallow using variables outside the blocks they are defined (especially - // since only let and const are used, see "no-var"). - "block-scoped-var": 2, - // Require camel case names - "camelcase": 2, - // Allow trailing commas for easy list extension. Having them does not - // impair readability, but also not required either. - "comma-dangle": 0, - // Warn about cyclomatic complexity in functions. - "complexity": 2, - // Don't warn for inconsistent naming when capturing this (not so important - // with auto-binding fat arrow functions). - "consistent-this": 0, - // Enforce curly brace conventions for all control statements. - "curly": 2, - // Don't require a default case in switch statements. Avoid being forced to - // add a bogus default when you know all possible cases are handled. - "default-case": 0, - // Encourage the use of dot notation whenever possible. - "dot-notation": 2, - // Allow using == instead of ===, in the interest of landing something since - // the devtools codebase is split on convention here. - "eqeqeq": 0, - // Don't require function expressions to have a name. - // This makes the code more verbose and hard to read. Our engine already - // does a fantastic job assigning a name to the function, which includes - // the enclosing function name, and worst case you have a line number that - // you can just look up. - "func-names": 0, - // Allow use of function declarations and expressions. - "func-style": 0, - // Deprecated, will be removed in 1.0. - "generator-star": 0, - // Deprecated, will be removed in 1.0. - "global-strict": 0, - // Only useful in a node environment. - "handle-callback-err": 0, - // Allow mixed 'LF' and 'CRLF' as linebreaks. - "linebreak-style": 0, - // Don't enforce the maximum depth that blocks can be nested. The complexity - // rule is a better rule to check this. - "max-depth": 0, - // Maximum length of a line. - "max-len": [2, 80, 2, {"ignoreUrls": true, "ignorePattern": "\\s*require\\s*\\(|^\\s*loader\\.lazy|-\\*-"}], - // Maximum depth callbacks can be nested. - "max-nested-callbacks": [2, 3], - // Don't limit the number of parameters that can be used in a function. - "max-params": 0, - // Don't limit the maximum number of statement allowed in a function. We - // already have the complexity rule that's a better measurement. - "max-statements": 0, - // Require a capital letter for constructors, only check if all new - // operators are followed by a capital letter. Don't warn when capitalized - // functions are used without the new operator. - "new-cap": [2, {"capIsNew": false}], - // Disallow use of the Array constructor. - "no-array-constructor": 2, - // Allow use of bitwise operators. - "no-bitwise": 0, - // Disallow use of arguments.caller or arguments.callee. - "no-caller": 2, - // Disallow the catch clause parameter name being the same as a variable in - // the outer scope, to avoid confusion. - "no-catch-shadow": 2, - // Deprecated, will be removed in 1.0. - "no-comma-dangle": 0, - // Disallow assignment in conditional expressions. - "no-cond-assign": 2, - // Allow using the console API. - "no-console": 0, - // Allow using constant expressions in conditions like while (true) - "no-constant-condition": 0, - // Allow use of the continue statement. - "no-continue": 0, - // Disallow control characters in regular expressions. - "no-control-regex": 2, - // Disallow use of debugger. - "no-debugger": 2, - // Disallow deletion of variables (deleting properties is fine). - "no-delete-var": 2, - // Allow division operators explicitly at beginning of regular expression. - "no-div-regex": 0, - // Disallow duplicate arguments in functions. - "no-dupe-args": 2, - // Disallow duplicate keys when creating object literals. - "no-dupe-keys": 2, - // Disallow a duplicate case label. - "no-duplicate-case": 2, - // Disallow else after a return in an if. The else around the second return - // here is useless: - // if (something) { return false; } else { return true; } - "no-else-return": 2, - // Disallow empty statements. This will report an error for: - // try { something(); } catch (e) {} - // but will not report it for: - // try { something(); } catch (e) { /* Silencing the error because ...*/ } - // which is a valid use case. - "no-empty": 2, - // Disallow the use of empty character classes in regular expressions. - "no-empty-character-class": 2, - // Disallow use of labels for anything other then loops and switches. - "no-labels": 2, - // Disallow use of eval(). We have other APIs to evaluate code in content. - "no-eval": 2, - // Disallow assigning to the exception in a catch block. - "no-ex-assign": 2, - // Disallow adding to native types - "no-extend-native": 2, - // Disallow unnecessary function binding. - "no-extra-bind": 2, - // Disallow double-negation boolean casts in a boolean context. - "no-extra-boolean-cast": 2, - // Allow unnecessary parentheses, as they may make the code more readable. - "no-extra-parens": 0, - // Deprecated, will be removed in 1.0. - "no-extra-strict": 0, - // Disallow fallthrough of case statements, except if there is a comment. - "no-fallthrough": 2, - // Allow the use of leading or trailing decimal points in numeric literals. - "no-floating-decimal": 0, - // Disallow comments inline after code. - "no-inline-comments": 2, - // Disallow if as the only statement in an else block. - "no-lonely-if": 2, - // Allow mixing regular variable and require declarations (not a node env). - "no-mixed-requires": 0, - // Disallow use of multiline strings (use template strings instead). - "no-multi-str": 2, - "prefer-template": "error", - "prefer-const": ["error", { - "destructuring": "all", - "ignoreReadBeforeAssign": false - }], - // Disallow reassignments of native objects. - "no-native-reassign": 2, - // Disallow nested ternary expressions, they make the code hard to read. - "no-nested-ternary": 2, - // Allow use of new operator with the require function. - "no-new-require": 0, - // Disallow use of octal literals. - "no-octal": 2, - // Allow reassignment of function parameters. - "no-param-reassign": 0, - // Allow string concatenation with __dirname and __filename (not a node env). - "no-path-concat": 0, - // Allow use of unary operators, ++ and --. - "no-plusplus": 0, - // Allow using process.env (not a node environment). - "no-process-env": 0, - // Allow using process.exit (not a node environment). - "no-process-exit": 0, - // Disallow usage of __proto__ property. - "no-proto": 2, - // Disallow declaring the same variable more than once (we use let anyway). - "no-redeclare": 2, - // Disallow multiple spaces in a regular expression literal. - "no-regex-spaces": 2, - // Allow reserved words being used as object literal keys. - "no-reserved-keys": 0, - // Don't restrict usage of specified node modules (not a node environment). - "no-restricted-modules": 0, - // Disallow use of assignment in return statement. It is preferable for a - // single line of code to have only one easily predictable effect. - "no-return-assign": 2, - // Allow use of javascript: urls. - "no-script-url": 0, - // Disallow comparisons where both sides are exactly the same. - "no-self-compare": 2, - // Disallow use of comma operator. - "no-sequences": 2, - // Warn about declaration of variables already declared in the outer scope. - // This isn't an error because it sometimes is useful to use the same name - // in a small helper function rather than having to come up with another - // random name. - // Still, making this a warning can help people avoid being confused. - "no-shadow": 2, - // Disallow shadowing of names such as arguments. - "no-shadow-restricted-names": 2, - // Deprecated, will be removed in 1.0. - "no-space-before-semi": 0, - // Disallow sparse arrays, eg. let arr = [,,2]. - // Array destructuring is fine though: - // for (let [, breakpointPromise] of aPromises) - "no-sparse-arrays": 2, - // Allow use of synchronous methods (not a node environment). - "no-sync": 0, - // Allow the use of ternary operators. - "no-ternary": 0, - // Disallow throwing literals (eg. throw "error" instead of - // throw new Error("error")). - "no-throw-literal": 2, - // Disallow use of undeclared variables unless mentioned in a /*global */ - // block. Note that globals from head.js are automatically imported in tests - // by the import-headjs-globals rule form the mozilla eslint plugin. - "no-undef": 2, - // Allow dangling underscores in identifiers (for privates). - "no-underscore-dangle": 0, - // Allow use of undefined variable. - "no-undefined": 0, - // Disallow the use of Boolean literals in conditional expressions. - "no-unneeded-ternary": 2, - // Disallow unreachable statements after a return, throw, continue, or break - // statement. - "no-unreachable": 2, - // Disallow global and local variables that arent used, but allow unused function arguments. - "no-unused-vars": [2, {"vars": "all", "args": "none"}], - // Allow using variables before they are defined. - "no-use-before-define": 0, - // We use var-only-at-top-level instead of no-var as we allow top level - // vars. - "no-var": 0, - // Allow using TODO/FIXME comments. - "no-warning-comments": 0, - // Disallow use of the with statement. - "no-with": 2, - // Dont require method and property shorthand syntax for object literals. - // We use this in the code a lot, but not consistently, and this seems more - // like something to check at code review time. - "object-shorthand": 0, - // Allow more than one variable declaration per function. - "one-var": 0, - // Disallow padding within blocks. - //"padded-blocks": [2, "never"], - // Dont require quotes around object literal property names. - "quote-props": 0, - // Double quotes should be used. - "quotes": [2, "double", "avoid-escape"], - // Require use of the second argument for parseInt(). - "radix": 2, - // Dont require to sort variables within the same declaration block. - // Anyway, one-var is disabled. - "sort-vars": 0, - // Deprecated, will be removed in 1.0. - "space-after-function-name": 0, - // Deprecated, will be removed in 1.0. - "space-before-function-parentheses": 0, - // Disallow space before function opening parenthesis. - //"space-before-function-paren": [2, "never"], - // Disable the rule that checks if spaces inside {} and [] are there or not. - // Our code is split on conventions, and itd be nice to have 2 rules - // instead, one for [] and one for {}. So, disabling until we write them. - "space-in-brackets": 0, - // Deprecated, will be removed in 1.0. - "space-unary-word-ops": 0, - // Require a space immediately following the // in a line comment. - "spaced-comment": [2, "always"], - // Require "use strict" to be defined globally in the script. - "strict": [2, "global"], - // Disallow comparisons with the value NaN. - "use-isnan": 2, - // Warn about invalid JSDoc comments. - // Disabled for now because of https://github.com/eslint/eslint/issues/2270 - // The rule fails on some jsdoc comments like in: - // devtools/client/webconsole/console-output.js - "valid-jsdoc": 0, - // Ensure that the results of typeof are compared against a valid string. - "valid-typeof": 2, - // Allow vars to be declared anywhere in the scope. - "vars-on-top": 0, - // Dont require immediate function invocation to be wrapped in parentheses. - "wrap-iife": 0, - // Don't require regex literals to be wrapped in parentheses (which - // supposedly prevent them from being mistaken for division operators). - "wrap-regex": 0, - // Disallow Yoda conditions (where literal value comes first). - "yoda": 2, - - // And these are the rules that haven't been discussed so far, and that are - // disabled for now until we introduce them, one at a time. - - // Require for-in loops to have an if statement. - "guard-for-in": 0, - // allow/disallow an empty newline after var statement - "newline-after-var": 0, - // disallow the use of alert, confirm, and prompt - "no-alert": 0, - // disallow comparisons to null without a type-checking operator - "no-eq-null": 0, - // disallow overwriting functions written as function declarations - "no-func-assign": 0, - // disallow use of eval()-like methods - "no-implied-eval": 0, - // disallow function or variable declarations in nested blocks - "no-inner-declarations": 0, - // disallow invalid regular expression strings in the RegExp constructor - "no-invalid-regexp": 0, - // disallow irregular whitespace outside of strings and comments - "no-irregular-whitespace": 0, - // disallow usage of __iterator__ property - "no-iterator": 0, - // disallow labels that share a name with a variable - "no-label-var": 0, - // disallow unnecessary nested blocks - "no-lone-blocks": 0, - // disallow creation of functions within loops - "no-loop-func": 0, - // disallow negation of the left operand of an in expression - "no-negated-in-lhs": 0, - // disallow use of new operator when not part of the assignment or - // comparison - "no-new": 0, - // disallow use of new operator for Function object - "no-new-func": 0, - // disallow use of the Object constructor - "no-new-object": 0, - // disallows creating new instances of String,Number, and Boolean - "no-new-wrappers": 0, - // disallow the use of object properties of the global object (Math and - // JSON) as functions - "no-obj-calls": 0, - // disallow use of octal escape sequences in string literals, such as - // var foo = "Copyright \251"; - "no-octal-escape": 0, - // disallow use of undefined when initializing variables - "no-undef-init": 0, - // disallow usage of expressions in statement position - "no-unused-expressions": 0, - // disallow use of void operator - "no-void": 0, - // disallow wrapping of non-IIFE statements in parens - "no-wrap-func": 0, - // require assignment operator shorthand where possible or prohibit it - // entirely - "operator-assignment": 0, - // enforce operators to be placed before or after line breaks - "operator-linebreak": 0, - - // Rules from the prettier plugin - "prettier/prettier": "error" - } -} diff --git a/.flowconfig b/.flowconfig deleted file mode 100644 index 9bfcf614af..0000000000 --- a/.flowconfig +++ /dev/null @@ -1,18 +0,0 @@ -[ignore] -.*node_modules/cjson.* -.*node_modules/fbjs.* -.*node_modules/npm.* -.*node_modules/stylelint.* -.*node_modules/config-chain.* -.*node_modules/documentation.* -/firefox/.* -.*mozilla-central/.* -.*flow-coverage-report/.* -.*custom_format_broken.json - -[libs] -./src/global-types.js - -[options] -unsafe.enable_getters_and_setters=true -suppress_comment=\\(.\\|\n\\)*\\$FlowIgnore diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index cdc029ef79..0000000000 --- a/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,13 +0,0 @@ -Thanks for filing an issue! - -If you're reporting a bug, please share a clear description of the problem and the steps needed to reproduce the problem. It's also helpful to include a gif, screenshot, and minimal test case. - -* you can find us in slack: https://devtools-html-slack.herokuapp.com/ -* our tips on formatting issues: https://github.com/devtools-html/debugger.html/blob/master/docs/issues.md -* our glitch.com template for filing small test cases: https://fabulous-umbrella.glitch.me/ - -Thanks again, -Debugger Team! - ------------------------------------------------ - diff --git a/.github/PULL_REQUEST_TEMPLATE b/.github/PULL_REQUEST_TEMPLATE deleted file mode 100644 index 120d5a4860..0000000000 --- a/.github/PULL_REQUEST_TEMPLATE +++ /dev/null @@ -1,26 +0,0 @@ -Associated Issue: # - -Here's the Pull Request Doc -https://devtools-html.github.io/debugger.html/CONTRIBUTING.html#pull-requests - -### Summary of Changes - -* change 1 -* change 2 - -### Test Plan - -Tell us a little a bit about how you tested your patch. - -Example test plan: - -- [x] Command-P opens the panel -- [x] Clicking “+” opens the panel -- [x] Clicking a source navigates to the source -- [x] Clicking "x" closes the panel - -Here's the Debugger's Testing doc -https://docs.google.com/document/d/1oBMRxV8A2ag2t22YsQOxTdEv0mXKzIg0tggJjRkU1S0/edit#. -Feel free to improve it! - -### Screenshots/Videos (OPTIONAL) diff --git a/.gitignore b/.gitignore deleted file mode 100644 index e5325724a0..0000000000 --- a/.gitignore +++ /dev/null @@ -1,19 +0,0 @@ -.DS_Store -build -node_modules -configs/local.json -npm-debug.log -.idea/ -.vscode/ -/firefox -lerna-debug.log -flow-coverage -.node-version -yarn-error.log -_site/ -coverage -storybook-static -tags -**/*.swp -**/*.orig -*~ diff --git a/.remarkrc b/.remarkrc deleted file mode 100644 index 4970e65248..0000000000 --- a/.remarkrc +++ /dev/null @@ -1,17 +0,0 @@ -{ - "plugins": [ - "preset-lint-recommended", - ["lint-list-item-bullet-indent", false], - ["lint-list-item-indent", false], - ["lint-ordered-list-marker-style", false], - ["lint-no-unused-definitions", false], - ["lint-no-shortcut-reference-link", false], - ["lint-no-shortcut-reference-image", false], - ["lint-no-table-indentation", true], - ["lint-table-cell-padding", "consistent"], - ["lint-table-pipes", false], - ["validate-links", { - "repository": "" - }] - ] -} diff --git a/.storybook/config.js b/.storybook/config.js deleted file mode 100644 index deddc15da8..0000000000 --- a/.storybook/config.js +++ /dev/null @@ -1,22 +0,0 @@ -import { configure, getStorybook } from "@storybook/react"; -const { setConfig } = require("devtools-config"); - -setConfig(DebuggerConfig); - -function loadStories() { - require("../src/components/stories/tabs.js"); - require("../src/components/stories/frames.js"); - require("../src/components/stories/Preview.js"); - require("../src/components/stories/Outline.js"); - require("../src/components/stories/SearchInput.js"); - require("../src/components/stories/ResultList.js"); - require("../src/components/stories/ManagedTree.js"); - require("../src/components/stories/TextSearch.js"); - require("../src/components/stories/Workers.js"); -} - -configure(loadStories, module); - -if (typeof window === "object") { - window.__storybook_stories__ = getStorybook(); -} diff --git a/.storybook/webpack.config.js b/.storybook/webpack.config.js deleted file mode 100644 index f4794219de..0000000000 --- a/.storybook/webpack.config.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("../webpack.config.js"); diff --git a/.stylelintignore b/.stylelintignore deleted file mode 100644 index 080f9ecd46..0000000000 --- a/.stylelintignore +++ /dev/null @@ -1,3 +0,0 @@ -src/components/Editor/codemirror-mozilla.css -src/components/shared/SplitBox.css -src/components/shared/reps.css diff --git a/.stylelintrc b/.stylelintrc deleted file mode 100644 index 8b8babdb37..0000000000 --- a/.stylelintrc +++ /dev/null @@ -1,58 +0,0 @@ -{ - "rules": { - "at-rule-semicolon-newline-after": "always", - "block-closing-brace-newline-after": "always", - "block-closing-brace-newline-before": "always-multi-line", - "block-closing-brace-space-before": "always-single-line", - "block-no-empty": true, - "block-opening-brace-newline-after": "always-multi-line", - "block-opening-brace-space-after": "always-single-line", - "block-opening-brace-space-before": "always", - "color-hex-case": "lower", - "color-hex-length": "long", - "color-no-invalid-hex": true, - "declaration-bang-space-after": "never", - "declaration-bang-space-before": "always", - "declaration-block-no-shorthand-property-overrides": true, - "declaration-block-semicolon-newline-after": "always-multi-line", - "declaration-block-semicolon-space-after": "always-single-line", - "declaration-block-semicolon-space-before": "never", - "declaration-block-single-line-max-declarations": 1, - "declaration-block-trailing-semicolon": "always", - "declaration-colon-newline-after": "always-multi-line", - "declaration-colon-space-after": "always-single-line", - "declaration-colon-space-before": "never", - "function-calc-no-unspaced-operator": true, - "function-comma-newline-after": "always-multi-line", - "function-comma-space-after": "always-single-line", - "function-comma-space-before": "never", - "function-linear-gradient-no-nonstandard-direction": true, - "function-parentheses-newline-inside": "always-multi-line", - "function-parentheses-space-inside": "never-single-line", - "function-whitespace-after": "always", - "indentation": 2, - "max-empty-lines": 1, - "media-feature-colon-space-after": "always", - "media-feature-colon-space-before": "never", - "media-feature-range-operator-space-after": "always", - "media-feature-range-operator-space-before": "always", - "media-query-list-comma-newline-after": "always-multi-line", - "media-query-list-comma-space-after": "always-single-line", - "media-query-list-comma-space-before": "never", - "media-feature-parentheses-space-inside": "never", - "no-eol-whitespace": true, - "no-invalid-double-slash-comments": true, - "no-missing-end-of-source-newline": true, - "number-leading-zero": "always", - "number-no-trailing-zeros": true, - "selector-combinator-space-after": "always", - "selector-combinator-space-before": "always", - "selector-list-comma-space-before": "never", - "selector-pseudo-element-colon-notation": "double", - "selector-type-case": "lower", - "string-no-newline": true, - "value-list-comma-newline-after": "always-multi-line", - "value-list-comma-space-after": "always-single-line", - "value-list-comma-space-before": "never", - }, -} diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 592dd3c5ee..0000000000 --- a/.travis.yml +++ /dev/null @@ -1,37 +0,0 @@ -language: python -node_js: "8" - -cache: - - pip - - yarn - -env: - global: - - DISPLAY=':99.0' - - YARN_VERSION='0.24.5' - - MC_COMMIT='05569ef2d175' - -addons: - apt: - packages: - - autoconf2.13 - - sshpass - - p7zip-full - -install: - - pip install --upgrade pip - - pip install -U mercurial - - . $HOME/.nvm/nvm.sh; nvm install stable; nvm use stable - - ./bin/ci/install-yarn - - ./bin/ci/clone-gecko.sh - - du -sh firefox - - yarn - -before_script: - - ./bin/ci/build-firefox.sh - - sh -e /etc/init.d/xvfb start - -script: - - node --version - - du -sh firefox - - ./bin/ci/run-tests.sh $TRAVIS_COMMIT_RANGE diff --git a/CODEOWNERS b/CODEOWNERS deleted file mode 100644 index 21af088306..0000000000 --- a/CODEOWNERS +++ /dev/null @@ -1,2 +0,0 @@ -# flod as main contact for string changes - TODO: find more to spread the effort -assets/panel/debugger.properties @flodolo diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md deleted file mode 100644 index 22d0830ff0..0000000000 --- a/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,74 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, gender identity and expression, level of experience, -nationality, personal appearance, race, religion, or sexual identity and -orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or -advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at [inclusion@mozilla.com](mailto:inclusion@mozilla.com). All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at [http://contributor-covenant.org/version/1/4][version] - -[homepage]: http://contributor-covenant.org -[version]: http://contributor-covenant.org/version/1/4/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index c71cc18020..0000000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,294 +0,0 @@ ---- ---- -# Contributing to debugger.html - -:+1::tada: First off, thanks for taking the time to contribute! :tada::+1: - -We respect your time and want to help you make the most of it as you learn more about this project. - -* [How Can I Contribute?](#how-can-i-contribute) - * [Reporting Bugs](#reporting-bugs-bug) - * [Suggesting Enhancements](#suggesting-enhancements-new) - * [Writing Documentation](#writing-documentation-book) - * [Give a talk](#give-a-talk-speech_balloon) - * [Write a blog post](#write-a-blog-post-pencil2) - * [Organize a meetup](#organize-a-meetup-beer) -* [Getting Started](#getting-started-runner) - * [Your First Code Contribution](#your-first-code-contribution) - * [Coding Standards](#coding-standards) - * [Development Guide](#development-guide-computer) - * [Issues](#issues) - * [Pull Requests](#pull-requests) - * [Maintainer Tips](#maintainer-tips) - * [Debugging Tips](#debugging-tips) - * [Pro Tips](#pro-tips) -* [Project Overview](#project-overview) - * [debugger.html](#debuggerhtml) - * [devtools.html](#devtoolshtml) - * [Firefox Developer Tools](#firefox-developer-tools) -* [About Us](#about-us) - * [Team Members](#team-members) - * [Joining Mozilla](#joining-mozilla) - -## Getting Started - -The developer tools in most major browsers are just web applications. They are HTML & JS rendered by the browser and talk to the browser itself through an API that gives access to the page internals. This project is a brand new web application interface for JavaScript debugging designed for browsers and JS environments. - -We strive for collaboration with [mutual respect for each other](./CODE_OF_CONDUCT.md). Mozilla also has a set of [participation guidelines](https://www.mozilla.org/en-US/about/governance/policies/participation/) which goes into greater detail specific to Mozilla employees and contributors. - -## How Can I Contribute? - -Here is a great GitHub guide on [contributing to Open Source](https://guides.github.com/activities/contributing-to-open-source/) to help you get started. - -### Reporting Bugs :bug: - -If you find an issue with the code, please do [file an issue](https://github.com/devtools-html/debugger.html/issues/new). We'll do our best to review the issue in a timely manner and respond. - -We will also tag it with the label [bug](https://github.com/devtools-html/debugger.html/labels/bug). - -### Suggesting Enhancements :new: - -We are actively investigating ways of support enhancement requests in the project, so these instructions are subject to change. For now please create an issue, and we will attempt to respond. - -We will also tag it with the label [enhancement][labels-enhancement]. - -### Writing Documentation :book: - -Documentation is as important as code and we need your help to maintain clear and usable documentation. If you find an error in here or other project documentation, please [file an issue](https://github.com/devtools-html/debugger.html/issues/new). - -We will tag it with the label [docs](https://github.com/devtools-html/debugger.html/labels/docs). - -### Give a Talk :speech_balloon: - -The best thing about giving a talk on the debugger is that you -can demo debugging the debugger and watch a roomful of minds explode. - -The best talks can be as simple as walking through how the debugger works -and adding a small feature. For the audience in the room, this will likely be -the first time they've seen the internals of a developer tool. - -Here are two example talks [Debugging the Debugger][jlongster-talk] and [Inspector Inception][jlast-talk]. -Ofcourse, feel free to ask questions in [slack][slack] or share talk slides or videos in channel. - -### Write a Blog Post :pencil2: - -Our primary goal is to help developers understand they have the skills -to improve their environment. Writing about DevTools is the best way -to dispel the myth that what we do is magic. - -Writing is a great way to share what you learn and articulate your passion. -Blog posts can either be technical "how x works" or narrative "how we built x". -The most important piece is that it helps people feel welcome. - -If you would like to write a post and have questions ask one of us in [slack][slack]. -Also, ofcourse share what you've written in [slack][slack]! -Here are some examples [search boxes][search-boxes], [getting into the flow][getting-into-the-flow], [better source maps][better-sourcemaps], [stepping debugger][stepping-debugger]. - -### Organize a meetup :beer: - -Open source workshops are a great way to bring people together and contribute. -The best thing about workshops is that it's the best way for new comers to make their first PR. -It's also a lot of fun! - -There's been four workshops so far. Two in New York, one in Tel Aviv, and one in Vancouver. -The workshops have helped close to 100 people get started. In all of the cases, the workshop was organized -in collaboration with a local meetup group that was interested in promoting open source. - -Feel free to reach out to us on [slack][slack] if you're interested in organizing one. Here is a [guide][meetup-guide] and [example][meetup-example] document. Amit's [goodness squad][goodness-squad] is a must read. - -Give a talk or write a blog post and help others get started. Very few developers know that the debugger is a web app. It's a lot of fun to hear the amazing tools others want to build once they learn that they can! - -### Getting Started :runner: - -Getting started on an open source project is like starting a new job. -Expect to spend the first day learning the codebase and meeting -the team. - -The best thing to do first is to answer specific questions like: -"how are sources shown on the left?". Here is a guided [activity][first-activity] -to help you get started. - -It's also helpful to think about *who* is working on the -Debugger and people you might want to ask for help early on. -We are lucky to have lots of [nice people][getting-help] here. - -#### Your First Code Contribution - -If you're looking for a good issue, you can look through -the [available][labels-available] issues. - -These issues should be well documented. - -To begin your work make sure you follow these steps: - -* [Fork this project](https://github.com/devtools-html/debugger.html#fork-destination-box) -* Create a branch to start your work `git checkout -b your-feature-name` -* Commit your work -* Create a [pull request](#pull-requests) - -#### Coding Standards - -> Be consistent with the rest of the code in the file - -Here are pointers to the DevTools general coding style and formatting guidelines. - -* [JS Coding Style](https://wiki.mozilla.org/DevTools/CodingStandards#Code_style) -* [Formatting Comments](https://wiki.mozilla.org/DevTools/CodingStandards#Comments) - -### Development Guide :computer: - -Go to [local Development](./docs/local-development.md) to learn about: - -* [Configs](./docs/local-development.md#configs) -* [Hot Reloading](./docs/local-development.md#hot-reloading-fire) -* [Themes](./docs/local-development.md#themes) -* [Internationalization](./docs/local-development.md#internationalization) -* [Prefs](./docs/local-development.md#prefs) -* [Flow](./docs/local-development.md#flow) -* [Logging](./docs/local-development.md#logging) -* [Testing](./docs/local-development.md#testing) -* [Linting](./docs/local-development.md#linting) - -### Issues - -* [Issue Titles](./docs/issues.md#issue-titles) -* [Issue Descriptions](./docs/issues.md#issue-descriptions) -* [Claiming Issues](./docs/issues.md#claiming-issues) -* [Labels](./docs/issues.md#labels) -* [Available Issues](./docs/issues.md#available-issues) -* [Triaging](./docs/issues.md#triaging) -* [Issue Organization](./docs/issues.md#issue-organization) -* [Community Friendly](./docs/issues.md#community-friendly) - -### Pull Requests - -Go to [Pull Requests](./docs/pull-requests.md) to learn about: - -* [Screenshots](./docs/pull-requests.md#screenshots) -* [Test Steps](./docs/pull-requests.md#test-steps) -* [Testing](./docs/pull-requests.md#testing) -* [Reviews](./docs/pull-requests.md#reviews) -* [Updates](./docs/pull-requests.md#updates) - -> **Working on your first Pull Request?** You can learn how from this *free* series [How to Contribute to an Open Source Project on GitHub](https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github) - -### Maintainer Tips - -Helping maintain a project is the best way to contribute to its overall health. - -+ [Pushing to a branch](./docs/maintainer.md#pushing-to-a-branch) -+ [Triaging issues](./docs/maintainer.md#triaging-issues) -+ [Adding a Patch](./docs/maintainer.md#adding-a-patch) - -### Debugging Tips - -+ [Components](./docs/debugging.md#components) -+ [Actions](./docs/debugging.md#actions) -+ [Reducers](./docs/debugging.md#reducers) -+ [Client](./docs/debugging.md#client) - -### Pro Tips - -Here are some tips from fellow contributors. - -* **Time management** is really important. Try your best to balance obligations. -* **Communicate** Communicate early and often. Share your work often and try to land the smallest possible pieces. -* **Goals** It's helpful to set realistic goals. -* **Work** Consider talking with your manager about OSS time at work. There are several reasons why this makes sense for your employer: - * **expertise** teams benefit from having a resident expert on debugging or other tools - * **marketing** your manager can market his team as OSS friendly to candidates and other employees. - * **career development** the skills you learn in OSS translate to your own growth. - * **sponsoring** your team benefits from having quality OSS tools. Sponsoring your OSS time is a great way to give back. - -## Project Overview - -### debugger.html - -The debugger.html project is a JavaScript debugger built from the ground up using modern web application technologies. It is designed first for debugging Firefox but also for working with projects like Chrome and Node. The name debugger.html was chosen because this debugger interface is being written using modern web technologies where as the previous Firefox debugger was written in [XUL](https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL). - -### devtools.html - -devtools.html is the larger umbrella initiative that encompasses the debugger.html and several other devtools projects. The devtools.html project claims its origin from a demo for a Mozilla (Dec 2015) work week in Orlando, FL USA where the team worked under a tight deadline to provide a proof of concept of the Firefox developer tools running in pure HTML; even outside of Firefox. The code for that demo can be found on GitHub under [@joewalker/devtools.html](https://github.com/joewalker/devtools.html). - -From that original demo the devtools.html project has progressed quite a bit. To learn more about it please read the [devtools.html proposal document](https://docs.google.com/document/d/1_5aerWTN_GVofr6YQVjmJlaGfZ4nv5YKZmdGHewfTpE/edit#heading=h.dw3amfbdp0lh) and take a look at the [devtools.html meta bug](https://bugzilla.mozilla.org/show_bug.cgi?id=1263750) for tracking progress. - -### Firefox Developer Tools - -The debugger.html project is targeted to land in Firefox for Firefox 52. However if you're looking to work directly on the DevTools project which ships developer tools for Firefox and Firefox Developer Edition right now you can find more information on the Mozilla wiki [DevTools / Get Involved](https://wiki.mozilla.org/DevTools/GetInvolved). - -## About Us - -debugger.html is an Open Source [Mozilla][mozilla] [Firefox][mozilla-firefox] Developer Tools project. -Our goal is to work with the community to build a universal JS debugger for modern times. - -| | | | | -| ---------- | ------ | ------ | ------ | -| ![][jasonlaster]
[@jasonlaster][@jasonlaster] | ![][digitarald]
[@digitarald][@digitarald] | ![][codehag]
[@codehag][@codehag] | ![][violasong]
[@violasong][@violasong] | - -### Team Members - -debugger.html community team members help shepherd the community. -They are here to help mentor new comers, review pull requests, and facilitate issue discussions. -They are a fantastic resource and genuinely friendly human beings. - -| | | | | | | -| ---------- | ------ | ----- | ---- | ---- | ---- | -| ![][bomsy]
[@bomsy][@bomsy] | ![][jbhoosreddy]
[@jbhoosreddy][@jbhoosreddy] | ![][wldcordeiro]
[@wldcordeiro][@wldcordeiro] | ![][irfanhudda]
[@irfanhudda][@irfanhudda] | ![][darkwing]
[@darkwing][@darkwing] | ![][nyrosmith]
[@nyrosmith][@nyrosmith] | - -### Joining Mozilla - -Mozilla has and continues to hire many people from within the Open Source Software community, bringing contributors directly into the team; however contribution is not necessarily a path to employment. Our internal hiring criteria is about more than contributions, we are also looking at a number of other factors that create a diverse and healthy team. - -**Ask**. Take a look at the current openings in [https://careers.mozilla.org/](https://careers.mozilla.org/) to see if there is a good fit for you. If you’re interested in a job with Mozilla feel free to ask employees what it’s like to work here. However employees can’t help you get hired outside of being a referral for you. - -**Referrals**. If you’ve been making reasonable and regular contributions to the project we’d be happy to be a reference for you. We can make internal referrals to Mozilla or act as your reference to other companies. Please be considerate when making this request, we are happy to help you and want to see you find a job you want but can’t do this for everyone who contributes. - -[getting-setup]:./docs/getting-setup.md -[labels-available]:https://github.com/devtools-html/debugger.html/labels/available -[labels-first-timers-only]:https://github.com/devtools-html/debugger.html/labels/first-timers-only -[labels-difficulty-easy]:https://github.com/devtools-html/debugger.html/labels/difficulty%3A%20easy -[labels-difficulty-medium]:https://github.com/devtools-html/debugger.html/labels/difficulty%3A%medium -[labels-difficulty-hard]:https://github.com/devtools-html/debugger.html/labels/difficulty%3A%hard -[labels-enhancement]:https://devtools-html.github.io/debugger.html/CONTRIBUTING.html#suggesting-enhancements-new - -[@jasonlaster]:https://github.com/jasonlaster -[@bomsy]:https://github.com/bomsy -[@wldcordeiro]:https://github.com/wldcordeiro -[@digitarald]:https://github.com/digitarald -[@jbhoosreddy]:https://github.com/jbhoosreddy -[@irfanhudda]:https://github.com/irfanhudda -[@codehag]:https://github.com/codehag -[@violasong]:https://github.com/violasong -[@darkwing]:https://github.com/darkwing -[@nyrosmith]:https://github.com/nyrosmith - -[jasonlaster]:https://avatars.githubusercontent.com/jasonlaster?size=56 -[bomsy]:https://avatars.githubusercontent.com/bomsy?size=56 -[wldcordeiro]:https://avatars.githubusercontent.com/wldcordeiro?size=56 -[digitarald]:https://avatars.githubusercontent.com/digitarald?size=56 -[jbhoosreddy]:https://avatars.githubusercontent.com/jbhoosreddy?size=56 -[irfanhudda]:https://avatars.githubusercontent.com/irfanhudda?size=56 -[codehag]:https://avatars.githubusercontent.com/codehag?size=56 -[violasong]:https://avatars.githubusercontent.com/violasong?size=56 -[darkwing]:https://avatars.githubusercontent.com/darkwing?size=56 -[nyrosmith]:https://avatars.githubusercontent.com/nyrosmith?size=56 - -[mozilla]:https://www.mozilla.org/ -[mozilla-firefox]:https://www.mozilla.org/firefox/ - -[meetup-example]:https://docs.google.com/document/d/1jJ27v-qnVtFrAmrJ8tWAOHOXvrQ7RN8oID44VPYXWrM/edit?usp=sharing -[meetup-guide]:https://docs.google.com/document/d/1SMbF2IEkTsQAd28-Xzhn7HS7yAORmxCVktlRkSdwmpQ/edit#heading=h.qqrdmxv84ec2 - - -[search-boxes]:http://jasonlaster.github.io/devtools/js/2017/01/05/searching.html -[getting-into-the-flow]:http://jasonlaster.github.io/devtools/js/2017/01/20/typing-the-debugger.html -[better-sourcemaps]:http://jlongster.com/On-the-Road-to-Better-Sourcemaps-in-the-Firefox-Developer-Tools -[stepping-debugger]:http://jlongster.com/Implementing-Stepping-Debugger-JavaScript - - -[jlongster-talk]:https://www.youtube.com/watch?v=gvVpSezT5_M -[jlast-talk]:https://www.youtube.com/watch?v=O_xViL2TGrU -[getting-help]:./docs/local-development.md#getting-help -[first-activity]:./docs/debugging-the-debugger.md -[goodness-squad]:https://hackernoon.com/goodness-squad-a8704d594a7a#.qllq19koq -[slack]:https://devtools-html-slack.herokuapp.com/ diff --git a/Gemfile b/Gemfile deleted file mode 100644 index 1f012f0735..0000000000 --- a/Gemfile +++ /dev/null @@ -1,3 +0,0 @@ -source "https://rubygems.org" -gem 'github-pages', group: :jekyll_plugins - diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 100644 index 15a58ffa73..0000000000 --- a/Gemfile.lock +++ /dev/null @@ -1,201 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - activesupport (4.2.7) - i18n (~> 0.7) - json (~> 1.7, >= 1.7.7) - minitest (~> 5.1) - thread_safe (~> 0.3, >= 0.3.4) - tzinfo (~> 1.1) - addressable (2.5.0) - public_suffix (~> 2.0, >= 2.0.2) - coffee-script (2.4.1) - coffee-script-source - execjs - coffee-script-source (1.12.2) - colorator (1.1.0) - ethon (0.10.1) - ffi (>= 1.3.0) - execjs (2.7.0) - faraday (0.11.0) - multipart-post (>= 1.2, < 3) - ffi (1.9.17) - forwardable-extended (2.6.0) - gemoji (2.1.0) - github-pages (117) - activesupport (= 4.2.7) - github-pages-health-check (= 1.3.0) - jekyll (= 3.3.1) - jekyll-avatar (= 0.4.2) - jekyll-coffeescript (= 1.0.1) - jekyll-default-layout (= 0.1.4) - jekyll-feed (= 0.8.0) - jekyll-gist (= 1.4.0) - jekyll-github-metadata (= 2.3.1) - jekyll-mentions (= 1.2.0) - jekyll-optional-front-matter (= 0.1.2) - jekyll-paginate (= 1.1.0) - jekyll-readme-index (= 0.0.3) - jekyll-redirect-from (= 0.11.0) - jekyll-relative-links (= 0.2.1) - jekyll-sass-converter (= 1.5.0) - jekyll-seo-tag (= 2.1.0) - jekyll-sitemap (= 0.12.0) - jekyll-swiss (= 0.4.0) - jekyll-theme-architect (= 0.0.3) - jekyll-theme-cayman (= 0.0.3) - jekyll-theme-dinky (= 0.0.3) - jekyll-theme-hacker (= 0.0.3) - jekyll-theme-leap-day (= 0.0.3) - jekyll-theme-merlot (= 0.0.3) - jekyll-theme-midnight (= 0.0.3) - jekyll-theme-minimal (= 0.0.3) - jekyll-theme-modernist (= 0.0.3) - jekyll-theme-primer (= 0.1.7) - jekyll-theme-slate (= 0.0.3) - jekyll-theme-tactile (= 0.0.3) - jekyll-theme-time-machine (= 0.0.3) - jekyll-titles-from-headings (= 0.1.4) - jemoji (= 0.7.0) - kramdown (= 1.11.1) - liquid (= 3.0.6) - listen (= 3.0.6) - mercenary (~> 0.3) - minima (= 2.0.0) - nokogiri (= 1.6.8.1) - rouge (= 1.11.1) - terminal-table (~> 1.4) - github-pages-health-check (1.3.0) - addressable (~> 2.3) - net-dns (~> 0.8) - octokit (~> 4.0) - public_suffix (~> 2.0) - typhoeus (~> 0.7) - html-pipeline (2.5.0) - activesupport (>= 2) - nokogiri (>= 1.4) - i18n (0.8.0) - jekyll (3.3.1) - addressable (~> 2.4) - colorator (~> 1.0) - jekyll-sass-converter (~> 1.0) - jekyll-watch (~> 1.1) - kramdown (~> 1.3) - liquid (~> 3.0) - mercenary (~> 0.3.3) - pathutil (~> 0.9) - rouge (~> 1.7) - safe_yaml (~> 1.0) - jekyll-avatar (0.4.2) - jekyll (~> 3.0) - jekyll-coffeescript (1.0.1) - coffee-script (~> 2.2) - jekyll-default-layout (0.1.4) - jekyll (~> 3.0) - jekyll-feed (0.8.0) - jekyll (~> 3.3) - jekyll-gist (1.4.0) - octokit (~> 4.2) - jekyll-github-metadata (2.3.1) - jekyll (~> 3.1) - octokit (~> 4.0, != 4.4.0) - jekyll-mentions (1.2.0) - activesupport (~> 4.0) - html-pipeline (~> 2.3) - jekyll (~> 3.0) - jekyll-optional-front-matter (0.1.2) - jekyll (~> 3.0) - jekyll-paginate (1.1.0) - jekyll-readme-index (0.0.3) - jekyll (~> 3.0) - jekyll-redirect-from (0.11.0) - jekyll (>= 2.0) - jekyll-relative-links (0.2.1) - jekyll (~> 3.3) - jekyll-sass-converter (1.5.0) - sass (~> 3.4) - jekyll-seo-tag (2.1.0) - jekyll (~> 3.3) - jekyll-sitemap (0.12.0) - jekyll (~> 3.3) - jekyll-swiss (0.4.0) - jekyll-theme-architect (0.0.3) - jekyll (~> 3.3) - jekyll-theme-cayman (0.0.3) - jekyll (~> 3.3) - jekyll-theme-dinky (0.0.3) - jekyll (~> 3.3) - jekyll-theme-hacker (0.0.3) - jekyll (~> 3.3) - jekyll-theme-leap-day (0.0.3) - jekyll (~> 3.3) - jekyll-theme-merlot (0.0.3) - jekyll (~> 3.3) - jekyll-theme-midnight (0.0.3) - jekyll (~> 3.3) - jekyll-theme-minimal (0.0.3) - jekyll (~> 3.3) - jekyll-theme-modernist (0.0.3) - jekyll (~> 3.3) - jekyll-theme-primer (0.1.7) - jekyll (~> 3.3) - jekyll-theme-slate (0.0.3) - jekyll (~> 3.3) - jekyll-theme-tactile (0.0.3) - jekyll (~> 3.3) - jekyll-theme-time-machine (0.0.3) - jekyll (~> 3.3) - jekyll-titles-from-headings (0.1.4) - jekyll (~> 3.3) - jekyll-watch (1.5.0) - listen (~> 3.0, < 3.1) - jemoji (0.7.0) - activesupport (~> 4.0) - gemoji (~> 2.0) - html-pipeline (~> 2.2) - jekyll (>= 3.0) - json (1.8.6) - kramdown (1.11.1) - liquid (3.0.6) - listen (3.0.6) - rb-fsevent (>= 0.9.3) - rb-inotify (>= 0.9.7) - mercenary (0.3.6) - mini_portile2 (2.1.0) - minima (2.0.0) - minitest (5.10.1) - multipart-post (2.0.0) - net-dns (0.8.0) - nokogiri (1.6.8.1) - mini_portile2 (~> 2.1.0) - octokit (4.6.2) - sawyer (~> 0.8.0, >= 0.5.3) - pathutil (0.14.0) - forwardable-extended (~> 2.6) - public_suffix (2.0.5) - rb-fsevent (0.9.8) - rb-inotify (0.9.8) - ffi (>= 0.5.0) - rouge (1.11.1) - safe_yaml (1.0.4) - sass (3.4.23) - sawyer (0.8.1) - addressable (>= 2.3.5, < 2.6) - faraday (~> 0.8, < 1.0) - terminal-table (1.7.3) - unicode-display_width (~> 1.1.1) - thread_safe (0.3.5) - typhoeus (0.8.0) - ethon (>= 0.8.0) - tzinfo (1.2.2) - thread_safe (~> 0.1) - unicode-display_width (1.1.3) - -PLATFORMS - ruby - -DEPENDENCIES - github-pages - -BUNDLED WITH - 1.13.7 diff --git a/LICENSE b/LICENSE deleted file mode 100644 index a612ad9813..0000000000 --- a/LICENSE +++ /dev/null @@ -1,373 +0,0 @@ -Mozilla Public License Version 2.0 -================================== - -1. Definitions --------------- - -1.1. "Contributor" - means each individual or legal entity that creates, contributes to - the creation of, or owns Covered Software. - -1.2. "Contributor Version" - means the combination of the Contributions of others (if any) used - by a Contributor and that particular Contributor's Contribution. - -1.3. "Contribution" - means Covered Software of a particular Contributor. - -1.4. "Covered Software" - means Source Code Form to which the initial Contributor has attached - the notice in Exhibit A, the Executable Form of such Source Code - Form, and Modifications of such Source Code Form, in each case - including portions thereof. - -1.5. "Incompatible With Secondary Licenses" - means - - (a) that the initial Contributor has attached the notice described - in Exhibit B to the Covered Software; or - - (b) that the Covered Software was made available under the terms of - version 1.1 or earlier of the License, but not also under the - terms of a Secondary License. - -1.6. "Executable Form" - means any form of the work other than Source Code Form. - -1.7. "Larger Work" - means a work that combines Covered Software with other material, in - a separate file or files, that is not Covered Software. - -1.8. "License" - means this document. - -1.9. "Licensable" - means having the right to grant, to the maximum extent possible, - whether at the time of the initial grant or subsequently, any and - all of the rights conveyed by this License. - -1.10. "Modifications" - means any of the following: - - (a) any file in Source Code Form that results from an addition to, - deletion from, or modification of the contents of Covered - Software; or - - (b) any new file in Source Code Form that contains any Covered - Software. - -1.11. "Patent Claims" of a Contributor - means any patent claim(s), including without limitation, method, - process, and apparatus claims, in any patent Licensable by such - Contributor that would be infringed, but for the grant of the - License, by the making, using, selling, offering for sale, having - made, import, or transfer of either its Contributions or its - Contributor Version. - -1.12. "Secondary License" - means either the GNU General Public License, Version 2.0, the GNU - Lesser General Public License, Version 2.1, the GNU Affero General - Public License, Version 3.0, or any later versions of those - licenses. - -1.13. "Source Code Form" - means the form of the work preferred for making modifications. - -1.14. "You" (or "Your") - means an individual or a legal entity exercising rights under this - License. For legal entities, "You" includes any entity that - controls, is controlled by, or is under common control with You. For - purposes of this definition, "control" means (a) the power, direct - or indirect, to cause the direction or management of such entity, - whether by contract or otherwise, or (b) ownership of more than - fifty percent (50%) of the outstanding shares or beneficial - ownership of such entity. - -2. License Grants and Conditions --------------------------------- - -2.1. Grants - -Each Contributor hereby grants You a world-wide, royalty-free, -non-exclusive license: - -(a) under intellectual property rights (other than patent or trademark) - Licensable by such Contributor to use, reproduce, make available, - modify, display, perform, distribute, and otherwise exploit its - Contributions, either on an unmodified basis, with Modifications, or - as part of a Larger Work; and - -(b) under Patent Claims of such Contributor to make, use, sell, offer - for sale, have made, import, and otherwise transfer either its - Contributions or its Contributor Version. - -2.2. Effective Date - -The licenses granted in Section 2.1 with respect to any Contribution -become effective for each Contribution on the date the Contributor first -distributes such Contribution. - -2.3. Limitations on Grant Scope - -The licenses granted in this Section 2 are the only rights granted under -this License. No additional rights or licenses will be implied from the -distribution or licensing of Covered Software under this License. -Notwithstanding Section 2.1(b) above, no patent license is granted by a -Contributor: - -(a) for any code that a Contributor has removed from Covered Software; - or - -(b) for infringements caused by: (i) Your and any other third party's - modifications of Covered Software, or (ii) the combination of its - Contributions with other software (except as part of its Contributor - Version); or - -(c) under Patent Claims infringed by Covered Software in the absence of - its Contributions. - -This License does not grant any rights in the trademarks, service marks, -or logos of any Contributor (except as may be necessary to comply with -the notice requirements in Section 3.4). - -2.4. Subsequent Licenses - -No Contributor makes additional grants as a result of Your choice to -distribute the Covered Software under a subsequent version of this -License (see Section 10.2) or under the terms of a Secondary License (if -permitted under the terms of Section 3.3). - -2.5. Representation - -Each Contributor represents that the Contributor believes its -Contributions are its original creation(s) or it has sufficient rights -to grant the rights to its Contributions conveyed by this License. - -2.6. Fair Use - -This License is not intended to limit any rights You have under -applicable copyright doctrines of fair use, fair dealing, or other -equivalents. - -2.7. Conditions - -Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted -in Section 2.1. - -3. Responsibilities -------------------- - -3.1. Distribution of Source Form - -All distribution of Covered Software in Source Code Form, including any -Modifications that You create or to which You contribute, must be under -the terms of this License. You must inform recipients that the Source -Code Form of the Covered Software is governed by the terms of this -License, and how they can obtain a copy of this License. You may not -attempt to alter or restrict the recipients' rights in the Source Code -Form. - -3.2. Distribution of Executable Form - -If You distribute Covered Software in Executable Form then: - -(a) such Covered Software must also be made available in Source Code - Form, as described in Section 3.1, and You must inform recipients of - the Executable Form how they can obtain a copy of such Source Code - Form by reasonable means in a timely manner, at a charge no more - than the cost of distribution to the recipient; and - -(b) You may distribute such Executable Form under the terms of this - License, or sublicense it under different terms, provided that the - license for the Executable Form does not attempt to limit or alter - the recipients' rights in the Source Code Form under this License. - -3.3. Distribution of a Larger Work - -You may create and distribute a Larger Work under terms of Your choice, -provided that You also comply with the requirements of this License for -the Covered Software. If the Larger Work is a combination of Covered -Software with a work governed by one or more Secondary Licenses, and the -Covered Software is not Incompatible With Secondary Licenses, this -License permits You to additionally distribute such Covered Software -under the terms of such Secondary License(s), so that the recipient of -the Larger Work may, at their option, further distribute the Covered -Software under the terms of either this License or such Secondary -License(s). - -3.4. Notices - -You may not remove or alter the substance of any license notices -(including copyright notices, patent notices, disclaimers of warranty, -or limitations of liability) contained within the Source Code Form of -the Covered Software, except that You may alter any license notices to -the extent required to remedy known factual inaccuracies. - -3.5. Application of Additional Terms - -You may choose to offer, and to charge a fee for, warranty, support, -indemnity or liability obligations to one or more recipients of Covered -Software. However, You may do so only on Your own behalf, and not on -behalf of any Contributor. You must make it absolutely clear that any -such warranty, support, indemnity, or liability obligation is offered by -You alone, and You hereby agree to indemnify every Contributor for any -liability incurred by such Contributor as a result of warranty, support, -indemnity or liability terms You offer. You may include additional -disclaimers of warranty and limitations of liability specific to any -jurisdiction. - -4. Inability to Comply Due to Statute or Regulation ---------------------------------------------------- - -If it is impossible for You to comply with any of the terms of this -License with respect to some or all of the Covered Software due to -statute, judicial order, or regulation then You must: (a) comply with -the terms of this License to the maximum extent possible; and (b) -describe the limitations and the code they affect. Such description must -be placed in a text file included with all distributions of the Covered -Software under this License. Except to the extent prohibited by statute -or regulation, such description must be sufficiently detailed for a -recipient of ordinary skill to be able to understand it. - -5. Termination --------------- - -5.1. The rights granted under this License will terminate automatically -if You fail to comply with any of its terms. However, if You become -compliant, then the rights granted under this License from a particular -Contributor are reinstated (a) provisionally, unless and until such -Contributor explicitly and finally terminates Your grants, and (b) on an -ongoing basis, if such Contributor fails to notify You of the -non-compliance by some reasonable means prior to 60 days after You have -come back into compliance. Moreover, Your grants from a particular -Contributor are reinstated on an ongoing basis if such Contributor -notifies You of the non-compliance by some reasonable means, this is the -first time You have received notice of non-compliance with this License -from such Contributor, and You become compliant prior to 30 days after -Your receipt of the notice. - -5.2. If You initiate litigation against any entity by asserting a patent -infringement claim (excluding declaratory judgment actions, -counter-claims, and cross-claims) alleging that a Contributor Version -directly or indirectly infringes any patent, then the rights granted to -You by any and all Contributors for the Covered Software under Section -2.1 of this License shall terminate. - -5.3. In the event of termination under Sections 5.1 or 5.2 above, all -end user license agreements (excluding distributors and resellers) which -have been validly granted by You or Your distributors under this License -prior to termination shall survive termination. - -************************************************************************ -* * -* 6. Disclaimer of Warranty * -* ------------------------- * -* * -* Covered Software is provided under this License on an "as is" * -* basis, without warranty of any kind, either expressed, implied, or * -* statutory, including, without limitation, warranties that the * -* Covered Software is free of defects, merchantable, fit for a * -* particular purpose or non-infringing. The entire risk as to the * -* quality and performance of the Covered Software is with You. * -* Should any Covered Software prove defective in any respect, You * -* (not any Contributor) assume the cost of any necessary servicing, * -* repair, or correction. This disclaimer of warranty constitutes an * -* essential part of this License. No use of any Covered Software is * -* authorized under this License except under this disclaimer. * -* * -************************************************************************ - -************************************************************************ -* * -* 7. Limitation of Liability * -* -------------------------- * -* * -* Under no circumstances and under no legal theory, whether tort * -* (including negligence), contract, or otherwise, shall any * -* Contributor, or anyone who distributes Covered Software as * -* permitted above, be liable to You for any direct, indirect, * -* special, incidental, or consequential damages of any character * -* including, without limitation, damages for lost profits, loss of * -* goodwill, work stoppage, computer failure or malfunction, or any * -* and all other commercial damages or losses, even if such party * -* shall have been informed of the possibility of such damages. This * -* limitation of liability shall not apply to liability for death or * -* personal injury resulting from such party's negligence to the * -* extent applicable law prohibits such limitation. Some * -* jurisdictions do not allow the exclusion or limitation of * -* incidental or consequential damages, so this exclusion and * -* limitation may not apply to You. * -* * -************************************************************************ - -8. Litigation -------------- - -Any litigation relating to this License may be brought only in the -courts of a jurisdiction where the defendant maintains its principal -place of business and such litigation shall be governed by laws of that -jurisdiction, without reference to its conflict-of-law provisions. -Nothing in this Section shall prevent a party's ability to bring -cross-claims or counter-claims. - -9. Miscellaneous ----------------- - -This License represents the complete agreement concerning the subject -matter hereof. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent -necessary to make it enforceable. Any law or regulation which provides -that the language of a contract shall be construed against the drafter -shall not be used to construe this License against a Contributor. - -10. Versions of the License ---------------------------- - -10.1. New Versions - -Mozilla Foundation is the license steward. Except as provided in Section -10.3, no one other than the license steward has the right to modify or -publish new versions of this License. Each version will be given a -distinguishing version number. - -10.2. Effect of New Versions - -You may distribute the Covered Software under the terms of the version -of the License under which You originally received the Covered Software, -or under the terms of any subsequent version published by the license -steward. - -10.3. Modified Versions - -If you create software not governed by this License, and you want to -create a new license for such software, you may create and use a -modified version of this License if you rename the license and remove -any references to the name of the license steward (except to note that -such modified license differs from this License). - -10.4. Distributing Source Code Form that is Incompatible With Secondary -Licenses - -If You choose to distribute Source Code Form that is Incompatible With -Secondary Licenses under the terms of this version of the License, the -notice described in Exhibit B of this License must be attached. - -Exhibit A - Source Code Form License Notice -------------------------------------------- - - This Source Code Form is subject to the terms of the Mozilla Public - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. - -If it is not possible or desirable to put the notice in a particular -file, then You may include the notice in a location (such as a LICENSE -file in a relevant directory) where a recipient would be likely to look -for such a notice. - -You may add additional accurate notices of copyright ownership. - -Exhibit B - "Incompatible With Secondary Licenses" Notice ---------------------------------------------------------- - - This Source Code Form is "Incompatible With Secondary Licenses", as - defined by the Mozilla Public License, v. 2.0. diff --git a/README.md b/README.md index 6629882147..36c0d175d5 100644 --- a/README.md +++ b/README.md @@ -1,138 +1,25 @@ -# debugger.html +# Firefox Debugger -[![slack-badge]][slack] ![][ci-status] [![npm-version]][npm-package] [![PRs Welcome]][make-a-pull-request] +The Firefox Debugger is now maintained in Mozilla's central repository. -debugger.html is a hackable debugger for modern times, built from the ground up using [React] and [Redux]. It is designed to be approachable, yet powerful. And it is engineered to be predictable, understandable, and testable. - -[Mozilla] created this debugger for use in the [Firefox] Developer Tools. And we've purposely created this project in GitHub, using modern toolchains. We hope to not only to create a great debugger that works with the [Firefox][firefox-rdp] and [Chrome][chrome-rdp] debugging protocols but develop a broader community that wants to create great tools for the web. +- Visit [docs][devtools-docs] to learn how to contribute +- Checkout our [dashboard][gfb] to find good first bugs. +- Go to [bugzilla][debugger-bugs] to report an issue or suggest an enhancement. +- Feel free to ask questions at any point on [Matrix][devtools-matrix] ![debugger-screenshot] -## Table of Contents -* [Quick Setup](#quick-setup) -* [Next Steps](#next-steps) -* [Getting Involved](#getting-involved) -* [Documentation](#documentation) -* [Discussion](#discussion) -* [License](#license) - -### Quick Setup - -> Or take a look at our detailed [getting started][getting-started] instructions. - -```bash -curl -o- -L https://yarnpkg.com/install.sh | bash -s -git clone https://github.com/devtools-html/debugger.html.git - -cd debugger.html -yarn -yarn start -# Go to http://localhost:8000 -``` - -#### Next Steps - -* [`/claim`][cl] an [available] issue. If you get stuck, we'd be happy to [help]. -* Do our getting started activity [debugging the debugger][first-activity] -* Read the [app overview][app-overview] or [contributing][contributing] guidelines -* Watch a [video][getting-started-screencast] on contributing to the Debugger. Or [listen][changelog] to a podcast about the project. -* Go to the [features][tracking] board to see what we're working on - -### Getting Involved - -This is an open source project and we would love your help. We have prepared a [contributing] guide to help you get started. - -If this is your [first PR][make-a-pull-request] or you're not sure where to get started, -say hi in [slack] and a team member would be happy to mentor you. - -We strive for collaboration with [mutual respect for each other][contributing]. Mozilla also has a set of [participation guidelines] which goes into greater detail specific to Mozilla employees and contributors. - -Or, perhaps you have found a vulnerability in the debugger and want to report it? in that case, take -a look at [how we handle security bugs over][vulnerabilities], and open a bug at [Bugzilla][bugzilla] so we can track it while keeping users safe! - -### Development Guide +[devtools-docs]: https://firefox-source-docs.mozilla.org/devtools/index.html?highlight=devtools#getting-started +[debugger-bugs]: https://bugzilla.mozilla.org/enter_bug.cgi?product=DevTools&component=Debugger +[gfb]: https://codetribute.mozilla.org/projects/devtools -We strive to make the Debugger as development friendly as possible. If you have a question that's not answered in the guide, ask us in [slack]. We also :heart: documentation PRs! -| | | -|:----:|:---:| -|[Themes]|theming changes for light, dark, firebug| -|[Internationalization]|using or adding a localized string *(l10n)*| -|[Prefs]|using or adding a preferences| -|[Flow]|flow best practices and common gotchas| -|[Logging]|tips for logging redux and client| -|[Testing]|unit and integration test tips| -|[Linting]|css, js, markdown linting| -|[Configs]|how to use debugger settings locally| -|[Hot Reloading]|steps for enabling hot reloading| +### Thank You +The Firefox Debugger was built in Github for the first 3 years of its development. Over 300+ volunteers contributed thousands of commits and built many of the features we take for granted today. -### Documentation +We hope to continue that spirit today in Mozilla Central. We believe the Debugger can be a great place to collaborate on the next iteration of developer tools. And, that everyone regardless of background or experience can contribute work of significance. -Looking for a place to find our documentation? you can find them -[here][docs]! - -Our [Weekly updates][weekly-updates] are also posted! - - -### Discussion - -Say hello in [slack] or in the [#devtools-html][irc-devtools-html] channel on irc.mozilla.org. - -* **Community Call**: Every Tuesday at 3pm EST and Thursday at 12pm EST. [Join the Hangout][community-call] -* **DevTools Call**: Every Tuesday at 12pm EST. [Join the DevTools Vidyo][vidyo] Meeting Notes [Google Docs][google-docs] -* **Pairing**: Ask in [slack] and you'll either find someone or be able to schedule a time for later. - -### License - -[MPL 2](./LICENSE) - -[React]:https://facebook.github.io/react/ -[Redux]:http://redux.js.org/ -[Mozilla]:https://www.mozilla.org/ -[Firefox]:https://www.mozilla.org/firefox/ -[firefox-rdp]: https://wiki.mozilla.org/Remote_Debugging_Protocol -[chrome-rdp]: https://chromedevtools.github.io/debugger-protocol-viewer/1-2/ - -[slack-badge]: https://devtools-html-slack.herokuapp.com/badge.svg -[slack]: https://devtools-html-slack.herokuapp.com/ [debugger-screenshot]: https://shipusercontent.com/47aaaa7a6512691f964101bfb0832abe/Screen%20Shot%202017-08-15%20at%202.34.05%20PM.png - -[ci-status]: https://circleci.com/gh/devtools-html/debugger.html.svg??&style=shield -[npm-version]: https://img.shields.io/npm/v/debugger.html.svg -[npm-package]: https://www.npmjs.com/package/debugger.html -[PRs Welcome]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square -[make-a-pull-request]: http://makeapullrequest.com - - -[getting-started]: ./docs/getting-setup.md -[contributing]: ./CONTRIBUTING.md -[getting-started-screencast]: ./docs/videos.md -[available]: https://github.com/devtools-html/debugger.html/labels/available -[app-overview]: ./docs/debugger-html-react-redux-overview.md -[first-activity]: ./docs/debugging-the-debugger.md -[tracking]: https://github.com/devtools-html/debugger.html/projects/10 -[help]: ./docs/local-development.md#getting-help -[participation guidelines]: https://www.mozilla.org/en-US/about/governance/policies/participation/ -[irc-devtools-html]: irc://irc.mozilla.org/devtools-html -[community-call]: https://hangouts.google.com/hangouts/_/calendar/amFzb24ubGFzdGVyLjExQGdtYWlsLmNvbQ.30mdpa6ncqn8uttvmrj9b9d3jc -[devtools-call]: https://wiki.mozilla.org/DevTools -[bugzilla]: https://bugzilla.mozilla.org/query.cgi -[vulnerabilities]: https://www.mozilla.org/en-US/about/governance/policies/security-group/bugs/ -[vidyo]:https://v.mozilla.com/flex.html?roomdirect.html&key=n9vJUD3L1vRMHKQC5OCNRT3UBjw -[changelog]: https://changelog.com/podcast/247 -[docs]: https://devtools-html.github.io/debugger.html/docs/ -[weekly-updates]: https://devtools-html.github.io/debugger.html/docs/updates - -[Configs]: ./docs/local-development.md#configs -[Hot Reloading]: ./docs/local-development.md#hot-reloading-fire -[Themes]: ./docs/local-development.md#themes -[Internationalization]: ./docs/local-development.md#internationalization -[Prefs]: ./docs/local-development.md#prefs -[Flow]: ./docs/local-development.md#flow -[Logging]: ./docs/local-development.md#logging -[Testing]: ./docs/local-development.md#testing -[Linting]: ./docs/local-development.md#linting -[google-docs]:https://docs.google.com/document/d/1pUx9xq6L7bonSrDpyUNTQkQxTxAsULLu4kkHZLMEq6w/edit -[cl]: ./docs/issues.md#claiming-issues +[devtools-matrix]: https://chat.mozilla.org/#/room/#devtools:mozilla.org diff --git a/ROADMAP.md b/ROADMAP.md deleted file mode 100644 index 284dc644c9..0000000000 --- a/ROADMAP.md +++ /dev/null @@ -1,93 +0,0 @@ -## Debugger.html Roadmap - -### Q4 Goals - -* features for debugging react apps. -* source map improvements -* improve server stability - -**Secondary Goals** - -#### Framework Improvements - -* **Call Stacks** Simplify call stacks by grouping library frames -* **Preview** Visualize Redux actions and React Components -* **Navigation** Surface applications Actions and Components so that developers can easily add breakpoints or log statements. - -#### Source Map Improvements - -* **map minified variables** it should be possible to preview and evaluate the original variables -* **step over** stepping should always take you to the next statmenet -* **step in** should not land in a function signature or other bad location. - -#### Server Stability - -This goal can be summarized as, we would like the debugger to behave as expected. We want to fix edge cases where breakpoints won't be hit or stepping will not land where you would expect. Here is a [list][bpbugs] of breakpoint and stepping bugs. - -### Q3 Update - -#### Progress - -* We released the new UI in 56. Releasing was a bigger focus than we had anticipated. Internal developers did a great job of surfacing issues with the UI (preview, breakpoints, ...). -* We focused on code health, refactoring, testing, intermittents, type coverage after releasing. The debugger is in a better place now to move forward with confidence. -* We are shipping project text search. Hubert did a fantastic job building the feature. We designed it to be like Atom/Sublime's search experience and between streaming results and all of the UI details. -* We are shipping AST breakpoints, which will keep breakpoints in the correct location on page reload. -* We are shipping async stepping, which will let users step over await expressions. Jaideep did a great job laying the foundation for additional parser and stepping features in the future. -* We shipped a server side performance fix for stepping with large call stacks. We also shipped a server side fix for ignoring redundant breakpoints when returning from a function. - -#### What did not get done - -* We did not improve framework features. We plan on doing this in Q4 with the help of UCOSP students. -* Async Call Stack -* Source Map Stepping -* Continue to point -* Event Listeners - -#### Summary - -We shipped the debugger this quarter and improved our feedback loop with internal developers. -Shipping was a big accomplishment, we probably fixed ~100 bugs big and small in June and July and we -shipped a good MVP. - -We also found time to add new functionality that will set us up well in the future. Both Async stepping and ast breakpoints position us well to build new features going forward. - -Looking back, it would have been good to update the roadmap at the midway point when it was -clear that we would be focusing on quality improvements over features like frameworks. Going forward, -we plan the roadmap doc when we do quarterly check ins (before, during, and at the end of quarters). - - - -### Q3 Goals (July 1st - September 30th) - -**Top Goal** add features for debugging react apps. -**Secondary Goals** improve the debugger core performance and experience and continue to invest in the community - -#### Framework Improvements - -* **Call Stacks** Simplify call stacks by grouping library frames -* **Preview** Visualize Redux actions and React Components -* **Navigation** Surface applications Actions and Components so that developers can easily add breakpoints or log statements. -* **Performance** Improve server pause performance for large call stacks - -#### Language features - -* **Async Call Stack** Show async stack traces in the call stack, let developers select a frame. -* **Smarter Breakpoints** Help developers add breakpoints that do not move when the code changes. - * **AST Breakpoints** Recalculate locations when the page reloads based on an AST location so that the breakpoint does not move. **Column Breakpoints** Let developers add breakpoints in different locations on the line. -* **Source Map Stepping** Help developers step through their code by automatically stepping when the code is transpiled. -* **Continue to point** Help developers jump to a location in the code as opposed to stepping there. It’s better to jump than it is to step :) - -#### Parity Features - -* **Project Text Search** Let developers search the sources on the page. -* **Event Listeners** Let developers jump to an active event listener. - -#### Invest in the community - -* **Mentorship** Encourage community mentorship and leadership opportunities. -* **Outreach** Reach out to schools, companies, and bootcamps to organize events. -* **Growth** Help contributors find meaningful work and build relationships. -* **Education** Develop resources for giving a talk, writing blog posts, or recording a screencast. - - -[bpbugs]: https://docs.google.com/spreadsheets/d/1BES8bxJBf2GGHpQ4rZ68kOfFwZl5NJC8zqFRMKZ3iXE/edit?usp=sharing diff --git a/_config.yml b/_config.yml deleted file mode 100644 index 5068bb60f7..0000000000 --- a/_config.yml +++ /dev/null @@ -1,7 +0,0 @@ -theme: jekyll-theme-cayman -markdown: kramdown -kramdown: - input: GFM -gems: - - jemoji - - jekyll-mentions diff --git a/assets/dictionary.txt b/assets/dictionary.txt deleted file mode 100644 index 8a54ed96a3..0000000000 --- a/assets/dictionary.txt +++ /dev/null @@ -1,22 +0,0 @@ -sexualized -dispel -lifecycle -Yulia -intermittents -discoverable. -blackboxed -fixup -scrollbars -li -errored -Yura -extns -travis -mc -mochii -asm -q4 -featureFlag -displayNames -componentDidMount -.png diff --git a/assets/images/Svg.js b/assets/images/Svg.js deleted file mode 100644 index 0b99e414d8..0000000000 --- a/assets/images/Svg.js +++ /dev/null @@ -1,93 +0,0 @@ -const React = require("react"); -const InlineSVG = require("svg-inline-react"); -const { isDevelopment } = require("devtools-config"); - -const svg = { - "angle-brackets": require("./angle-brackets.svg"), - angular: require("./angular.svg"), - arrow: require("./arrow.svg"), - backbone: require("./backbone.svg"), - blackBox: require("./blackBox.svg"), - breakpoint: require("./breakpoint.svg"), - "column-breakpoint": require("./column-breakpoint.svg"), - "case-match": require("./case-match.svg"), - close: require("./close.svg"), - dojo: require("./dojo.svg"), - domain: require("./domain.svg"), - file: require("./file.svg"), - folder: require("./folder.svg"), - globe: require("./globe.svg"), - jquery: require("./jquery.svg"), - underscore: require("./underscore.svg"), - lodash: require("./lodash.svg"), - ember: require("./ember.svg"), - vuejs: require("./vuejs.svg"), - "magnifying-glass": require("./magnifying-glass.svg"), - "arrow-up": require("./arrow-up.svg"), - "arrow-down": require("./arrow-down.svg"), - pause: require("./pause.svg"), - "pause-exceptions": require("./pause-exceptions.svg"), - plus: require("./plus.svg"), - prettyPrint: require("./prettyPrint.svg"), - react: require("./react.svg"), - "regex-match": require("./regex-match.svg"), - redux: require("./redux.svg"), - immutable: require("./immutable.svg"), - resume: require("./resume.svg"), - settings: require("./settings.svg"), - stepIn: require("./stepIn.svg"), - stepOut: require("./stepOut.svg"), - stepOver: require("./stepOver.svg"), - subSettings: require("./subSettings.svg"), - toggleBreakpoints: require("./toggle-breakpoints.svg"), - togglePanes: require("./toggle-panes.svg"), - "whole-word-match": require("./whole-word-match.svg"), - worker: require("./worker.svg"), - "sad-face": require("./sad-face.svg"), - refresh: require("./refresh.svg"), - webpack: require("./webpack.svg"), - node: require("./node.svg"), - express: require("./express.svg"), - pug: require("./pug.svg"), - extjs: require("./sencha-extjs.svg"), - showSources: require("./showSources.svg"), - showOutline: require("./showOutline.svg"), - shortcut: require("./shortcut.svg") -}; - -type SvgType = { - name: string, - className?: string, - onClick?: () => void, - "aria-label"?: string -}; - -function Svg({ name, className, onClick, "aria-label": ariaLabel }) { - if (!svg[name]) { - const error = `Unknown SVG: ${name}`; - if (isDevelopment()) { - throw new Error(error); - } - - console.warn(error); - return; - } - - className = `${name} ${className || ""}`; - if (name === "subSettings") { - className = ""; - } - - const props = { - className, - onClick, - ["aria-label"]: ariaLabel, - src: svg[name] - }; - - return ; -} - -Svg.displayName = "Svg"; - -module.exports = Svg; diff --git a/assets/images/angle-brackets.svg b/assets/images/angle-brackets.svg deleted file mode 100644 index b353bee9ec..0000000000 --- a/assets/images/angle-brackets.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - diff --git a/assets/images/angular.svg b/assets/images/angular.svg deleted file mode 100644 index 74c82aa96c..0000000000 --- a/assets/images/angular.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/assets/images/arrow-down.svg b/assets/images/arrow-down.svg deleted file mode 100644 index 904429ece1..0000000000 --- a/assets/images/arrow-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/assets/images/arrow-up.svg b/assets/images/arrow-up.svg deleted file mode 100644 index 2053617c09..0000000000 --- a/assets/images/arrow-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/assets/images/arrow.svg b/assets/images/arrow.svg deleted file mode 100644 index 33a1077971..0000000000 --- a/assets/images/arrow.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/assets/images/backbone.svg b/assets/images/backbone.svg deleted file mode 100644 index 0845d6b5aa..0000000000 --- a/assets/images/backbone.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/assets/images/blackBox.svg b/assets/images/blackBox.svg deleted file mode 100644 index b98d62f138..0000000000 --- a/assets/images/blackBox.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - diff --git a/assets/images/breakpoint.svg b/assets/images/breakpoint.svg deleted file mode 100644 index f0e5de106b..0000000000 --- a/assets/images/breakpoint.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - diff --git a/assets/images/case-match.svg b/assets/images/case-match.svg deleted file mode 100644 index 32ebfb3e8c..0000000000 --- a/assets/images/case-match.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/assets/images/close.svg b/assets/images/close.svg deleted file mode 100644 index 7efd07f80c..0000000000 --- a/assets/images/close.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/assets/images/column-breakpoint.svg b/assets/images/column-breakpoint.svg deleted file mode 100644 index 7e894556f0..0000000000 --- a/assets/images/column-breakpoint.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/assets/images/dojo.svg b/assets/images/dojo.svg deleted file mode 100644 index 0d7b0d5e26..0000000000 --- a/assets/images/dojo.svg +++ /dev/null @@ -1 +0,0 @@ -dojo_square \ No newline at end of file diff --git a/assets/images/domain.svg b/assets/images/domain.svg deleted file mode 100644 index f00c9b37d3..0000000000 --- a/assets/images/domain.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/assets/images/ember.svg b/assets/images/ember.svg deleted file mode 100644 index 01b683f893..0000000000 --- a/assets/images/ember.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/images/express.svg b/assets/images/express.svg deleted file mode 100644 index 96047fac95..0000000000 --- a/assets/images/express.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/assets/images/favicon.png b/assets/images/favicon.png deleted file mode 100644 index 98f1d48e4d..0000000000 Binary files a/assets/images/favicon.png and /dev/null differ diff --git a/assets/images/file.svg b/assets/images/file.svg deleted file mode 100644 index 7f5a70855c..0000000000 --- a/assets/images/file.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/assets/images/folder.svg b/assets/images/folder.svg deleted file mode 100644 index 6b8ef6ac37..0000000000 --- a/assets/images/folder.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - diff --git a/assets/images/globe.svg b/assets/images/globe.svg deleted file mode 100644 index d513a659f6..0000000000 --- a/assets/images/globe.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - diff --git a/assets/images/immutable.svg b/assets/images/immutable.svg deleted file mode 100644 index 8564cc37f7..0000000000 --- a/assets/images/immutable.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - diff --git a/assets/images/jquery.svg b/assets/images/jquery.svg deleted file mode 100644 index 1a1dfbb5d4..0000000000 --- a/assets/images/jquery.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/assets/images/lodash.svg b/assets/images/lodash.svg deleted file mode 100644 index a6419bb456..0000000000 --- a/assets/images/lodash.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/assets/images/magnifying-glass.svg b/assets/images/magnifying-glass.svg deleted file mode 100644 index 8560132835..0000000000 --- a/assets/images/magnifying-glass.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/assets/images/node.svg b/assets/images/node.svg deleted file mode 100644 index 3f59541956..0000000000 --- a/assets/images/node.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - \ No newline at end of file diff --git a/assets/images/pause-exceptions.svg b/assets/images/pause-exceptions.svg deleted file mode 100644 index 8a0eb2c832..0000000000 --- a/assets/images/pause-exceptions.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/assets/images/pause.svg b/assets/images/pause.svg deleted file mode 100644 index 8d3f287e30..0000000000 --- a/assets/images/pause.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - diff --git a/assets/images/plus.svg b/assets/images/plus.svg deleted file mode 100644 index ae7a69dfde..0000000000 --- a/assets/images/plus.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - diff --git a/assets/images/prettyPrint.svg b/assets/images/prettyPrint.svg deleted file mode 100644 index 62e2707f94..0000000000 --- a/assets/images/prettyPrint.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - diff --git a/assets/images/pug.svg b/assets/images/pug.svg deleted file mode 100644 index 9bd0902ef1..0000000000 --- a/assets/images/pug.svg +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/assets/images/react.svg b/assets/images/react.svg deleted file mode 100644 index af7b04c7a8..0000000000 --- a/assets/images/react.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/assets/images/redux.svg b/assets/images/redux.svg deleted file mode 100644 index 63324e6de6..0000000000 --- a/assets/images/redux.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/assets/images/refresh.svg b/assets/images/refresh.svg deleted file mode 100644 index c5d9bf9917..0000000000 --- a/assets/images/refresh.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/assets/images/regex-match.svg b/assets/images/regex-match.svg deleted file mode 100644 index 8927f03924..0000000000 --- a/assets/images/regex-match.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/assets/images/resume.svg b/assets/images/resume.svg deleted file mode 100644 index 4a8b7fcd4d..0000000000 --- a/assets/images/resume.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - diff --git a/assets/images/rxjs.svg b/assets/images/rxjs.svg deleted file mode 100644 index 4306e12c92..0000000000 --- a/assets/images/rxjs.svg +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/assets/images/sad-face.svg b/assets/images/sad-face.svg deleted file mode 100644 index 6c42ca43b6..0000000000 --- a/assets/images/sad-face.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - diff --git a/assets/images/sencha-extjs.svg b/assets/images/sencha-extjs.svg deleted file mode 100644 index 3bb2ef250f..0000000000 --- a/assets/images/sencha-extjs.svg +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - diff --git a/assets/images/settings.svg b/assets/images/settings.svg deleted file mode 100644 index 310438f7eb..0000000000 --- a/assets/images/settings.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - diff --git a/assets/images/shortcut.svg b/assets/images/shortcut.svg deleted file mode 100644 index c020bb9f5e..0000000000 --- a/assets/images/shortcut.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - diff --git a/assets/images/showOutline.svg b/assets/images/showOutline.svg deleted file mode 100644 index 92cfa10727..0000000000 --- a/assets/images/showOutline.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - Created with Sketch. - - - - - - - - - - - - diff --git a/assets/images/showSources.svg b/assets/images/showSources.svg deleted file mode 100644 index ad591c1fed..0000000000 --- a/assets/images/showSources.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - Created with Sketch. - - - - - - - - - - - diff --git a/assets/images/stepIn.svg b/assets/images/stepIn.svg deleted file mode 100644 index eff11c0c91..0000000000 --- a/assets/images/stepIn.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - diff --git a/assets/images/stepOut.svg b/assets/images/stepOut.svg deleted file mode 100644 index 4e54571412..0000000000 --- a/assets/images/stepOut.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - diff --git a/assets/images/stepOver.svg b/assets/images/stepOver.svg deleted file mode 100644 index c1d30c051f..0000000000 --- a/assets/images/stepOver.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - diff --git a/assets/images/subSettings.svg b/assets/images/subSettings.svg deleted file mode 100644 index 6b23555846..0000000000 --- a/assets/images/subSettings.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - diff --git a/assets/images/toggle-breakpoints.svg b/assets/images/toggle-breakpoints.svg deleted file mode 100644 index 9b2cccf822..0000000000 --- a/assets/images/toggle-breakpoints.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - diff --git a/assets/images/toggle-panes.svg b/assets/images/toggle-panes.svg deleted file mode 100644 index c06ad43ff5..0000000000 --- a/assets/images/toggle-panes.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/assets/images/underscore.svg b/assets/images/underscore.svg deleted file mode 100644 index 35f976e461..0000000000 --- a/assets/images/underscore.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/assets/images/vuejs.svg b/assets/images/vuejs.svg deleted file mode 100644 index efbe599d0e..0000000000 --- a/assets/images/vuejs.svg +++ /dev/null @@ -1,29 +0,0 @@ - -image/svg+xml \ No newline at end of file diff --git a/assets/images/webpack.svg b/assets/images/webpack.svg deleted file mode 100644 index e18e04fbae..0000000000 --- a/assets/images/webpack.svg +++ /dev/null @@ -1,3 +0,0 @@ -icon - - diff --git a/assets/images/whole-word-match.svg b/assets/images/whole-word-match.svg deleted file mode 100644 index 62765fd98a..0000000000 --- a/assets/images/whole-word-match.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/assets/images/worker.svg b/assets/images/worker.svg deleted file mode 100644 index 4a9874efb8..0000000000 --- a/assets/images/worker.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - diff --git a/assets/module-manifest.json b/assets/module-manifest.json deleted file mode 100644 index 7c23ec9e04..0000000000 --- a/assets/module-manifest.json +++ /dev/null @@ -1,24431 +0,0 @@ -{ - "extract-text-webpack-plugin": [ - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/LandingPage.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Sidebar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Root.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../codemirror/lib/codemirror.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/codemirror-mozilla.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/variables.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/App.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/SplitBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SourceSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Svg.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/Close.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/SearchInput.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ResultList.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Autocomplete.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ManagedTree.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Sources.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/PaneToggle.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Footer.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/SearchBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Popover.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Preview.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/ConditionalPanel.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Editor.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Expressions.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/WhyPaused.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Breakpoints.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Scopes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/EventListeners.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Accordion.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/CommandBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/SecondaryPanes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/WelcomeBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Dropdown.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/LandingPage.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Sidebar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Root.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../codemirror/lib/codemirror.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/codemirror-mozilla.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/variables.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/App.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/SplitBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SourceSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Svg.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/Close.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/SearchInput.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ResultList.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Autocomplete.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ManagedTree.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Sources.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/PaneToggle.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Footer.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/SearchBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Popover.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Preview.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/ConditionalPanel.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Editor.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Expressions.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/WhyPaused.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Breakpoints.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Scopes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/EventListeners.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Accordion.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/CommandBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/SecondaryPanes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/WelcomeBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Dropdown.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/LandingPage.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Sidebar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Root.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../codemirror/lib/codemirror.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/codemirror-mozilla.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/variables.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/App.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-splitter/src/SplitBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Svg.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Autocomplete.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/Close.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/SearchInput.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ResultList.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Sources.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Outline.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ManagedTree.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/PaneToggle.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Footer.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/SearchBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Popover.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Preview.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/ConditionalPanel.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Editor.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Expressions.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/SecondaryPanes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/WhyPaused.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Breakpoints.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Scopes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/EventListeners.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Accordion.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/CommandBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/WelcomeBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Dropdown.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/LandingPage.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Sidebar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Root.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../codemirror/lib/codemirror.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/codemirror-mozilla.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/variables.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/App.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-splitter/src/SplitBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Svg.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Autocomplete.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/Close.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/SearchInput.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ResultList.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Sources.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Outline.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ManagedTree.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/PaneToggle.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Footer.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/SearchBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Popover.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Preview.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/ConditionalPanel.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Editor.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Expressions.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/SecondaryPanes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/WhyPaused.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Breakpoints.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Scopes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/EventListeners.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Accordion.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/CommandBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/WelcomeBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Dropdown.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/LandingPage.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Sidebar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Root.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../codemirror/lib/codemirror.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/codemirror-mozilla.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/variables.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/App.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-splitter/src/SplitBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Svg.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Autocomplete.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/Close.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/SearchInput.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ResultList.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Sources.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Outline.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ManagedTree.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/PaneToggle.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Footer.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/SearchBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Popover.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Preview.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/ConditionalPanel.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Editor.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Expressions.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/SecondaryPanes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/WhyPaused.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Breakpoints.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Scopes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/EventListeners.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Accordion.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/CommandBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/WelcomeBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Dropdown.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/LandingPage.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Sidebar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Root.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../codemirror/lib/codemirror.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/codemirror-mozilla.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/variables.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/App.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-splitter/src/SplitBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Svg.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Autocomplete.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/Close.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/SearchInput.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ResultList.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Sources.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Outline.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ManagedTree.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/PaneToggle.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Footer.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/SearchBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Popover.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Preview.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/ConditionalPanel.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Editor.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Expressions.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/SecondaryPanes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/WhyPaused.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Breakpoints.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Scopes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/EventListeners.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Accordion.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/CommandBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/WelcomeBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Dropdown.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/LandingPage.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Sidebar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Root.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/variables.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/App.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-splitter/src/SplitBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Svg.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Autocomplete.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/Close.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/SearchInput.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ResultList.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Sources.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Outline.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/previewFunction.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ManagedTree.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/ConditionalPanel.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/PaneToggle.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Footer.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/SearchBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ObjectInspector.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Popover.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Preview.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Editor.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/WhyPaused.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Breakpoints.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Expressions.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Group.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Frames.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/EventListeners.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Accordion.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/CommandBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Scopes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/SecondaryPanes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/WelcomeBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Dropdown.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/LandingPage.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Sidebar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Root.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/variables.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/App.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-splitter/src/SplitBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Svg.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Autocomplete.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/Close.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/SearchInput.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ResultList.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Sources.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Outline.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/previewFunction.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ManagedTree.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/ConditionalPanel.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/PaneToggle.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Footer.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/SearchBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ObjectInspector.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Popover.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Preview.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Editor.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/WhyPaused.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Breakpoints.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Expressions.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Group.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Frames.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/EventListeners.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Accordion.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/CommandBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Scopes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/SecondaryPanes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/WelcomeBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Dropdown.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/LandingPage.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Sidebar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Root.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/variables.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/App.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-splitter/src/SplitBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Svg.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Autocomplete.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/Close.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/SearchInput.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ResultList.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Sources.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Outline.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/previewFunction.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ManagedTree.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/ConditionalPanel.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/PaneToggle.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Footer.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/SearchBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ObjectInspector.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Popover.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Preview.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Editor.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/WhyPaused.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Breakpoints.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Expressions.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Group.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Frames.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/EventListeners.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Accordion.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/CommandBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Scopes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/SecondaryPanes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/WelcomeBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Dropdown.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/LandingPage.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Sidebar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Root.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/variables.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/App.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-splitter/src/SplitBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Svg.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Autocomplete.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/Close.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/SearchInput.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ResultList.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Sources.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Outline.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/previewFunction.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ManagedTree.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/ConditionalPanel.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/PaneToggle.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Footer.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/SearchBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ObjectInspector.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/BracketArrow.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Popover.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Preview.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Editor.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/WhyPaused.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Breakpoints.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Expressions.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Group.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Frames.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/EventListeners.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Accordion.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/CommandBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Scopes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/SecondaryPanes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/WelcomeBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Dropdown.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/LandingPage.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Sidebar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Root.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/variables.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/App.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-splitter/src/SplitBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Svg.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Autocomplete.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/Close.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/SearchInput.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ResultList.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Sources.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Outline.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/previewFunction.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ManagedTree.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/ConditionalPanel.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/PaneToggle.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Footer.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/SearchBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ObjectInspector.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/BracketArrow.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Popover.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Preview.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Editor.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/WhyPaused.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Breakpoints.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Expressions.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Group.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Frames.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/EventListeners.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Accordion.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/CommandBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Scopes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/SecondaryPanes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/WelcomeBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Dropdown.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/LandingPage.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Sidebar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Root.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/variables.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/App.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-splitter/src/SplitBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Svg.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Autocomplete.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/Close.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/SearchInput.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ResultList.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Sources.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Outline.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/previewFunction.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ManagedTree.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/ConditionalPanel.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/PaneToggle.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Footer.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/SearchBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ObjectInspector.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/BracketArrow.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Popover.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Preview.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Editor.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Highlight.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/WhyPaused.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Breakpoints.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Expressions.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Group.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Frames.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/EventListeners.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Accordion.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/CommandBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Scopes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/SecondaryPanes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/WelcomeBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Dropdown.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/LandingPage.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Sidebar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Root.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/variables.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/App.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-splitter/src/SplitBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Svg.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Autocomplete.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/Close.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/SearchInput.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ResultList.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Sources.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Outline.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/previewFunction.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ManagedTree.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/ConditionalPanel.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/PaneToggle.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Footer.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/SearchBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ObjectInspector.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/BracketArrow.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Popover.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Preview.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Editor.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Highlight.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/WhyPaused.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Breakpoints.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Expressions.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Group.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Frames.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/EventListeners.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Accordion.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/CommandBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Scopes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/SecondaryPanes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/WelcomeBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Dropdown.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/LandingPage.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Sidebar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Root.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/variables.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/App.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-splitter/src/SplitBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch/ProjectSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Svg.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Autocomplete.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/Close.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/SearchInput.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ResultList.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ManagedTree.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch/TextSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Sources.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Outline.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/previewFunction.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/ConditionalPanel.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/PaneToggle.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Footer.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/SearchBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ObjectInspector.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/BracketArrow.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Popover.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Preview.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Editor.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Highlight.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/WhyPaused.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Breakpoints.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Expressions.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Group.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Frames.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/EventListeners.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Accordion.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/CommandBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Scopes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/SecondaryPanes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/WelcomeBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Dropdown.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/LandingPage.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Sidebar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Root.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/variables.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/App.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-splitter/src/SplitBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch/ProjectSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Svg.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Autocomplete.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/Close.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/SearchInput.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ResultList.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ManagedTree.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch/TextSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Sources.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Outline.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/previewFunction.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/ConditionalPanel.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/PaneToggle.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Footer.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/SearchBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ObjectInspector.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/BracketArrow.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Popover.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Preview.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Editor.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Highlight.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Breakpoints.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Expressions.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Group.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/WhyPaused.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Frames.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/EventListeners.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Accordion.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/CommandBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Scopes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/SecondaryPanes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/WelcomeBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Dropdown.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/LandingPage.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Sidebar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Root.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/variables.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/App.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-splitter/src/SplitBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch/ProjectSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Svg.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Autocomplete.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/Close.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/SearchInput.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ResultList.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ManagedTree.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch/TextSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Sources.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Outline.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/previewFunction.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/ConditionalPanel.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/PaneToggle.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Footer.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/SearchBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ObjectInspector.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/BracketArrow.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Popover.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Preview.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Editor.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Highlight.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Breakpoints.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Expressions.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Group.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/WhyPaused.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Frames.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/EventListeners.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Accordion.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/CommandBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Scopes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/SecondaryPanes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/WelcomeBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Dropdown.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/LandingPage.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Sidebar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Root.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/variables.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/App.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-splitter/src/SplitBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch/ProjectSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Svg.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Autocomplete.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/Close.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/SearchInput.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ResultList.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ManagedTree.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch/TextSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Sources.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Outline.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/previewFunction.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/ConditionalPanel.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/PaneToggle.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Footer.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/SearchBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ObjectInspector.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/BracketArrow.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Popover.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Preview.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Editor.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Highlight.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Breakpoints.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Expressions.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Group.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/WhyPaused.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Frames.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/EventListeners.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Accordion.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/CommandBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Scopes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/SecondaryPanes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/WelcomeBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Dropdown.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/LandingPage.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Sidebar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Root.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/variables.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/App.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-splitter/src/SplitBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch/ProjectSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Svg.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Autocomplete.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/Close.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/SearchInput.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ResultList.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ManagedTree.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch/TextSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Sources.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Outline.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/previewFunction.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/ConditionalPanel.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/PaneToggle.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Footer.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/SearchBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ObjectInspector.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/BracketArrow.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Popover.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Preview.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Editor.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Highlight.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Breakpoints.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Expressions.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Group.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/WhyPaused.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Frames.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/EventListeners.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Accordion.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/CommandBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Scopes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/SecondaryPanes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/WelcomeBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Dropdown.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/LandingPage.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Sidebar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Root.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/variables.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/App.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-splitter/src/SplitBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch/ProjectSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Svg.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Autocomplete.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/Close.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/SearchInput.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ResultList.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ManagedTree.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch/TextSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Sources.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Outline.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/previewFunction.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/ConditionalPanel.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/PaneToggle.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Footer.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/SearchBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ObjectInspector.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/BracketArrow.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Popover.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Preview.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Editor.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Highlight.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Breakpoints.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Expressions.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Group.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/WhyPaused.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Frames.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/EventListeners.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Accordion.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/CommandBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Scopes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/SecondaryPanes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/WelcomeBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Dropdown.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/LandingPage.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Sidebar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Root.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/variables.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/App.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-splitter/src/SplitBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch/ProjectSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Svg.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Autocomplete.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/Close.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/SearchInput.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ResultList.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ManagedTree.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch/TextSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Sources.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Outline.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/previewFunction.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/ConditionalPanel.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/PaneToggle.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Footer.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/SearchBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ObjectInspector.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/BracketArrow.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Popover.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Preview.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Editor.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Highlight.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Breakpoints.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Expressions.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Group.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/WhyPaused.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Frames.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/EventListeners.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Accordion.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/CommandBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Scopes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/SecondaryPanes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/WelcomeBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Dropdown.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/LandingPage.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Sidebar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-contextmenu/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Root.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/variables.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/App.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-splitter/src/SplitBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch/ProjectSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Svg.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ManagedTree.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/Close.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/SearchInput.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch/TextSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Autocomplete.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ResultList.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/PrimaryPanes/Sources.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/PrimaryPanes/Outline.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/previewFunction.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/ConditionalPanel.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/PaneToggle.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Footer.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/SearchBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-reps/src/reps/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-reps/src/object-inspector/index.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ObjectInspector.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/BracketArrow.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Popover.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Preview.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/CallSite.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Editor.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Highlight.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Breakpoints.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Expressions.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Group.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/WhyPaused.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Frames.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/EventListeners.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Accordion.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/CommandBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Scopes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/SecondaryPanes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/WelcomeBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Dropdown.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SymbolModal.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/LandingPage.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Sidebar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-contextmenu/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Root.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/variables.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/App.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-splitter/src/SplitBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch/ProjectSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Svg.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ManagedTree.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/Close.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/SearchInput.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch/TextSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Autocomplete.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ResultList.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/PrimaryPanes/Sources.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/PrimaryPanes/Outline.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/previewFunction.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/ConditionalPanel.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/PaneToggle.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Footer.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/SearchBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-reps/src/reps/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-reps/src/object-inspector/index.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ObjectInspector.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/BracketArrow.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Popover.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Preview.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/CallSite.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Editor.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Highlight.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Breakpoints.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Expressions.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Group.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/WhyPaused.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Frames.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/EventListeners.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Accordion.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/CommandBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Scopes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/SecondaryPanes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/WelcomeBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Dropdown.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SymbolModal.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/LandingPage.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Sidebar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-contextmenu/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Root.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/variables.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/App.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-splitter/src/SplitBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch/ProjectSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Svg.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ManagedTree.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/Close.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/SearchInput.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch/TextSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Autocomplete.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ResultList.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/PrimaryPanes/Sources.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/PrimaryPanes/Outline.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/previewFunction.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/ConditionalPanel.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/PaneToggle.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Footer.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/SearchBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-reps/src/reps/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-reps/src/object-inspector/index.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ObjectInspector.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/BracketArrow.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Popover.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Preview.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/CallSite.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Editor.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Highlight.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Breakpoints.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Expressions.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Group.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/WhyPaused.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Frames.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/EventListeners.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Accordion.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/CommandBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Scopes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/SecondaryPanes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/WelcomeBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Dropdown.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SymbolModal.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/LandingPage.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Sidebar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-contextmenu/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Root.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/variables.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/App.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-splitter/src/SplitBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch/ProjectSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Svg.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ManagedTree.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/Close.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/SearchInput.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch/TextSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Autocomplete.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ResultList.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/PrimaryPanes/Sources.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/PrimaryPanes/Outline.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/previewFunction.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/ConditionalPanel.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/PaneToggle.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Footer.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/SearchBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-reps/src/reps/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-reps/src/object-inspector/index.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ObjectInspector.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/BracketArrow.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Popover.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Preview.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/CallSite.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Editor.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Highlight.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Breakpoints.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Expressions.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Group.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/WhyPaused.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Frames.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/EventListeners.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Accordion.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/CommandBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Scopes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/SecondaryPanes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/WelcomeBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Dropdown.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SymbolModal.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/LandingPage.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Sidebar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-contextmenu/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Root.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/variables.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/App.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-splitter/src/SplitBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch/ProjectSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Svg.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ManagedTree.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/Close.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/SearchInput.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch/TextSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Autocomplete.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ResultList.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/PrimaryPanes/Sources.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/PrimaryPanes/Outline.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/previewFunction.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/ConditionalPanel.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/PaneToggle.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Footer.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/SearchBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-reps/src/reps/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-reps/src/object-inspector/index.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ObjectInspector.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/BracketArrow.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Popover.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Preview.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/CallSite.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Editor.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Highlight.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Breakpoints.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Expressions.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Group.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/WhyPaused.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Frames.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/EventListeners.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Accordion.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/CommandBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Scopes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/SecondaryPanes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/WelcomeBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Dropdown.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SymbolModal.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/LandingPage.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Sidebar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-contextmenu/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Root.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/variables.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/App.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-splitter/src/SplitBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch/ProjectSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Svg.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ManagedTree.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/Close.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/SearchInput.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch/TextSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Autocomplete.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ResultList.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/PrimaryPanes/Sources.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/PrimaryPanes/Outline.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/previewFunction.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/ConditionalPanel.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/PaneToggle.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Footer.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/SearchBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-reps/src/reps/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-reps/src/object-inspector/index.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ObjectInspector.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/BracketArrow.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Popover.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Preview.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/CallSite.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Editor.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Highlight.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Breakpoints.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Expressions.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Group.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/WhyPaused.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Frames.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/EventListeners.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Accordion.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/CommandBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Scopes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/SecondaryPanes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/WelcomeBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Dropdown.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SymbolModal.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/LandingPage.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Sidebar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-contextmenu/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Root.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/variables.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/App.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-splitter/src/SplitBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch/ProjectSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Svg.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ManagedTree.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/Close.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/SearchInput.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch/TextSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Autocomplete.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ResultList.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/PrimaryPanes/Sources.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/PrimaryPanes/Outline.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/previewFunction.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/ConditionalPanel.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/PaneToggle.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Footer.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/SearchBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-reps/src/reps/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-reps/src/object-inspector/index.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ObjectInspector.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/BracketArrow.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Popover.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Preview.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/CallSite.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Editor.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Highlight.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Breakpoints.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Expressions.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Group.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/WhyPaused.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Frames.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/EventListeners.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Accordion.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/CommandBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Scopes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/SecondaryPanes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/WelcomeBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Dropdown.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SymbolModal.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/LandingPage.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Sidebar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-contextmenu/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Root.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/variables.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/App.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-splitter/src/SplitBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch/ProjectSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Svg.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ManagedTree.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/Close.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/SearchInput.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch/TextSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Autocomplete.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ResultList.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/PrimaryPanes/Sources.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/PrimaryPanes/Outline.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/previewFunction.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/ConditionalPanel.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/PaneToggle.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Footer.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/SearchBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-reps/src/reps/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-reps/src/object-inspector/index.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ObjectInspector.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/BracketArrow.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Popover.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Preview.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/CallSite.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Editor.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Highlight.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Breakpoints.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Expressions.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Group.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/WhyPaused.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Frames.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/EventListeners.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Accordion.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/CommandBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Scopes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/SecondaryPanes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/WelcomeBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Dropdown.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SymbolModal.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/LandingPage.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Sidebar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-contextmenu/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Root.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/variables.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/App.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-splitter/src/SplitBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch/ProjectSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Svg.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ManagedTree.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/Close.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/SearchInput.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch/TextSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Autocomplete.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ResultList.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/PrimaryPanes/Sources.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/PrimaryPanes/Outline.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/previewFunction.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/ConditionalPanel.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/PaneToggle.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Footer.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/SearchBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-reps/src/reps/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-reps/src/object-inspector/index.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ObjectInspector.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/BracketArrow.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Popover.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Preview.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/CallSite.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Editor.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Highlight.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Breakpoints.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Expressions.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Group.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/WhyPaused.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Frames.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/EventListeners.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Accordion.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/CommandBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Scopes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/SecondaryPanes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/WelcomeBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Dropdown.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SymbolModal.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/LandingPage.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Sidebar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-contextmenu/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!components/Root.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/variables.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/App.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-splitter/src/SplitBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch/ProjectSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Svg.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ManagedTree.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/Close.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/SearchInput.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/ProjectSearch/TextSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Autocomplete.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ResultList.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/PrimaryPanes/Sources.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/PrimaryPanes/Outline.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/previewFunction.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/ConditionalPanel.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Button/PaneToggle.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Footer.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/SearchBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-reps/src/reps/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../devtools-reps/src/object-inspector/index.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/ObjectInspector.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/BracketArrow.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Popover.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Preview.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/CallSite.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Editor.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Highlight.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Breakpoints.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Expressions.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Group.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/WhyPaused.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Frames.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/EventListeners.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Accordion.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/CommandBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Scopes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SecondaryPanes/SecondaryPanes.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/WelcomeBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/Editor/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/shared/Dropdown.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - }, - { - "nextFreeModuleId": 2, - "modules": { - "byIdentifier": { - "../../css-loader/index.js!../../../src/components/SymbolModal.css": 0, - "../../css-loader/lib/css-base.js": 1 - } - }, - "nextFreeChunkId": 1, - "chunks": { - "byName": {}, - "byBlocks": {} - } - } - ], - "nextFreeModuleId": 1175, - "modules": { - "byIdentifier": { - "../../../multi debugger": 0, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/main.js": 1, - "../../../external \"devtools/client/shared/vendor/react\"": 2, - "../../redux/lib/index.js": 3, - "../../redux/lib/createStore.js": 4, - "../../lodash/isPlainObject.js": 5, - "../../lodash/_baseGetTag.js": 6, - "../../lodash/_Symbol.js": 7, - "../../lodash/_root.js": 8, - "../../lodash/_freeGlobal.js": 9, - "../../lodash/_getRawTag.js": 10, - "../../lodash/_objectToString.js": 11, - "../../lodash/_getPrototype.js": 12, - "../../lodash/_overArg.js": 13, - "../../lodash/isObjectLike.js": 14, - "../../symbol-observable/index.js": 15, - "../../symbol-observable/ponyfill.js": 16, - "../../redux/lib/combineReducers.js": 17, - "../../redux/lib/utils/warning.js": 18, - "../../redux/lib/bindActionCreators.js": 19, - "../../redux/lib/applyMiddleware.js": 20, - "../../redux/lib/compose.js": 21, - "../../react-dom/dist/react-dom.js": 22, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-client-adapters/index.js": 23, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-client-adapters/src/utils/task.js": 24, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-client-adapters/src/firefox.js": 25, - "../../devtools-sham-modules/index.js": 26, - "../../devtools-sham-modules/client/shared/key-shortcuts.js": 27, - "../../devtools-modules/index.js": 28, - "../../../external \"Services\"": 29, - "../../devtools-modules/client/shared/components/splitter/SplitBox.js": 30, - "../../../external \"devtools/client/shared/vendor/react-dom\"": 31, - "../../devtools-modules/client/shared/components/splitter/Draggable.js": 32, - "../../devtools-modules/shared/sprintf.js": 33, - "../../devtools-sham-modules/shared/event-emitter.js": 34, - "../../devtools-sham-modules/sham/chrome.js": 35, - "../../devtools-sham-modules/sham/inDOMUtils.js": 36, - "../../devtools-sham-modules/sham/parse-css.js": 37, - "../../devtools-sham-modules/sham/css-color-db.js": 38, - "../../devtools-sham-modules/sham/css-property-db.js": 39, - "../../devtools-sham-modules/sham/promise.js": 40, - "../../devtools-sham-modules/transport/transport.js": 41, - "../../devtools-sham-modules/shared/DevToolsUtils.js": 42, - "../../devtools-sham-modules/sham/fileutils.js": 43, - "../../devtools-sham-modules/sham/appconstants.js": 44, - "../../devtools-sham-modules/sham/netutil.js": 45, - "../../devtools-sham-modules/sham/osfile.js": 46, - "../../devtools-sham-modules/shared/webconsole/network-helper.js": 47, - "../../devtools-sham-modules/shared/transport/stream-utils.js": 48, - "../../devtools-sham-modules/shared/transport/packets.js": 49, - "../../devtools-sham-modules/shared/transport/utf8.js": 50, - "../../webpack/buildin/module.js": 793, - "../../devtools-sham-modules/transport/utf8.js": 52, - "../../devtools-sham-modules/shared/client/main.js": 53, - "../../devtools-sham-modules/sdk/event/core.js": 54, - "../../devtools-sham-modules/sdk/core/namespace.js": 55, - "../../devtools-sham-modules/shared/webconsole/client.js": 56, - "../../devtools-sham-modules/client/shared/prefs.js": 57, - "../../devtools-sham-modules/client/framework/target.js": 58, - "../../devtools-sham-modules/shared/transport/websocket-transport.js": 59, - "../../devtools-sham-modules/client/framework/menu.js": 60, - "../../devtools-sham-modules/client/framework/menu-item.js": 61, - "../../devtools-sham-modules/client/shared/components/tree.js": 62, - "../../devtools-sham-modules/client/shared/source-utils.js": 63, - "../../devtools-sham-modules/client/shared/components/frame.js": 64, - "../../devtools-config/index.js": 65, - "../../devtools-config/src/feature.js": 66, - "../../lodash/get.js": 67, - "../../lodash/_baseGet.js": 68, - "../../lodash/_castPath.js": 69, - "../../lodash/isArray.js": 70, - "../../lodash/_isKey.js": 71, - "../../lodash/isSymbol.js": 72, - "../../lodash/_stringToPath.js": 73, - "../../lodash/_memoizeCapped.js": 74, - "../../lodash/memoize.js": 75, - "../../lodash/_MapCache.js": 76, - "../../lodash/_mapCacheClear.js": 77, - "../../lodash/_Hash.js": 78, - "../../lodash/_hashClear.js": 79, - "../../lodash/_nativeCreate.js": 80, - "../../lodash/_getNative.js": 81, - "../../lodash/_baseIsNative.js": 82, - "../../lodash/isFunction.js": 83, - "../../lodash/isObject.js": 84, - "../../lodash/_isMasked.js": 85, - "../../lodash/_coreJsData.js": 86, - "../../lodash/_toSource.js": 87, - "../../lodash/_getValue.js": 88, - "../../lodash/_hashDelete.js": 89, - "../../lodash/_hashGet.js": 90, - "../../lodash/_hashHas.js": 91, - "../../lodash/_hashSet.js": 92, - "../../lodash/_ListCache.js": 93, - "../../lodash/_listCacheClear.js": 94, - "../../lodash/_listCacheDelete.js": 95, - "../../lodash/_assocIndexOf.js": 96, - "../../lodash/eq.js": 97, - "../../lodash/_listCacheGet.js": 98, - "../../lodash/_listCacheHas.js": 99, - "../../lodash/_listCacheSet.js": 100, - "../../lodash/_Map.js": 101, - "../../lodash/_mapCacheDelete.js": 102, - "../../lodash/_getMapData.js": 103, - "../../lodash/_isKeyable.js": 104, - "../../lodash/_mapCacheGet.js": 105, - "../../lodash/_mapCacheHas.js": 106, - "../../lodash/_mapCacheSet.js": 107, - "../../lodash/toString.js": 108, - "../../lodash/_baseToString.js": 109, - "../../lodash/_arrayMap.js": 110, - "../../lodash/_toKey.js": 111, - "../../lodash/set.js": 112, - "../../lodash/_baseSet.js": 113, - "../../lodash/_assignValue.js": 114, - "../../lodash/_baseAssignValue.js": 115, - "../../lodash/_defineProperty.js": 116, - "../../lodash/_isIndex.js": 117, - "../../node-libs-browser/mock/empty.js": 118, - "../../path-browserify/index.js": 119, - "../../process/browser.js": 120, - "../../../external \"devtools/shared/flags\"": 121, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-client-adapters/src/firefox/commands.js": 122, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-client-adapters/src/firefox/create.js": 123, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-client-adapters/src/firefox/events.js": 124, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-client-adapters/src/chrome.js": 125, - "../../chrome-remote-interface/chrome-remote-interface.js": 126, - "../../devtools-network-request/privilegedNetworkRequest.js": 127, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-client-adapters/src/chrome/commands.js": 128, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-client-adapters/src/chrome/create.js": 129, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-client-adapters/src/chrome/events.js": 130, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!index.js": 131, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!utils/create-store.js": 132, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!utils/redux/middleware/wait-service.js": 133, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!utils/redux/middleware/log.js": 134, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!utils/redux/middleware/history.js": 135, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!utils/redux/middleware/promise.js": 136, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!utils/defer.js": 137, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!utils/utils.js": 138, - "../node_modules/co/index.js": 139, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!utils/DevToolsUtils.js": 140, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!utils/assert.js": 141, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!utils/redux/middleware/thunk.js": 142, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!reducers/index.js": 143, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!reducers/tabs.js": 144, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!constants.js": 145, - "../../immutable/dist/immutable.js": 146, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!utils/fromJS.js": 147, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!reducers/config.js": 148, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!components/LaunchpadApp.js": 149, - "../../react-immutable-proptypes/dist/ImmutablePropTypes.js": 150, - "../../react-redux/lib/index.js": 151, - "../../react-redux/lib/components/Provider.js": 152, - "../../react-redux/lib/utils/storeShape.js": 153, - "../../react-redux/lib/utils/warning.js": 154, - "../../react-redux/lib/components/connect.js": 155, - "../../react-redux/lib/utils/shallowEqual.js": 156, - "../../react-redux/lib/utils/wrapActionCreators.js": 157, - "../../hoist-non-react-statics/index.js": 158, - "../../invariant/browser.js": 159, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!selectors.js": 160, - "../../fuzzaldrin-plus/lib/fuzzaldrin.js": 161, - "../../fuzzaldrin-plus/lib/filter.js": 162, - "../../fuzzaldrin-plus/lib/scorer.js": 163, - "../../fuzzaldrin-plus/lib/pathScorer.js": 164, - "../../fuzzaldrin-plus/lib/query.js": 165, - "../../fuzzaldrin-plus/lib/matcher.js": 166, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!components/LandingPage.js": 167, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!components/LandingPage.css": 168, - "../../css-loader/index.js!components/LandingPage.css": 169, - "../../css-loader/lib/css-base.js": 170, - "../../style-loader/addStyles.js": 171, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!components/Tabs.js": 172, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!components/Tabs.css": 173, - "../../css-loader/index.js!components/Tabs.css": 174, - "../../classnames/index.js": 175, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!components/Sidebar.js": 176, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!components/Sidebar.css": 177, - "../../css-loader/index.js!components/Sidebar.css": 178, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!components/Settings.js": 179, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!menu.js": 180, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!actions/index.js": 181, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!actions/tabs.js": 182, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!actions/config.js": 183, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!utils/debug.js": 184, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!utils/L10N.js": 185, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!components/Root.js": 186, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!components/Root.css": 187, - "../../css-loader/index.js!components/Root.css": 188, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/create-store.js": 189, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/redux/middleware/wait-service.js": 190, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/redux/middleware/log.js": 191, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/redux/middleware/history.js": 192, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/redux/middleware/promise.js": 193, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/defer.js": 194, - "../../lodash/toPairs.js": 795, - "../../lodash/_createToPairs.js": 812, - "../../lodash/_baseToPairs.js": 796, - "../../lodash/_getTag.js": 198, - "../../lodash/_DataView.js": 199, - "../../lodash/_Promise.js": 200, - "../../lodash/_Set.js": 201, - "../../lodash/_WeakMap.js": 202, - "../../lodash/_mapToArray.js": 203, - "../../lodash/_setToPairs.js": 813, - "../../lodash/keys.js": 205, - "../../lodash/_arrayLikeKeys.js": 206, - "../../lodash/_baseTimes.js": 207, - "../../lodash/isArguments.js": 208, - "../../lodash/_baseIsArguments.js": 209, - "../../lodash/isBuffer.js": 210, - "../../lodash/stubFalse.js": 211, - "../../lodash/isTypedArray.js": 212, - "../../lodash/_baseIsTypedArray.js": 213, - "../../lodash/isLength.js": 214, - "../../lodash/_baseUnary.js": 215, - "../../lodash/_nodeUtil.js": 216, - "../../lodash/_baseKeys.js": 217, - "../../lodash/_isPrototype.js": 218, - "../../lodash/_nativeKeys.js": 219, - "../../lodash/isArrayLike.js": 220, - "../../lodash/fromPairs.js": 221, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/DevToolsUtils.js": 222, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/assert.js": 223, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/redux/middleware/thunk.js": 224, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/client.js": 225, - "../../../src/utils/prefs.js": 226, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/reducers/index.js": 227, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/reducers/expressions.js": 228, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/constants.js": 229, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/makeRecord.js": 230, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/reducers/event-listeners.js": 231, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/reducers/sources.js": 232, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/source.js": 233, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/utils.js": 234, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/path.js": 235, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/reducers/breakpoints.js": 236, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/fromJS.js": 237, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/reducers/async-requests.js": 238, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/reducers/pause.js": 239, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/reducers/ui.js": 240, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/reducers/coverage.js": 241, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/selectors.js": 242, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/App.js": 243, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/actions/index.js": 244, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/actions/breakpoints.js": 245, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/source-map.js": 246, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/source-map-util.js": 247, - "../../md5/md5.js": 248, - "../../crypt/crypt.js": 249, - "../../charenc/charenc.js": 250, - "../../is-buffer/index.js": 251, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/actions/expressions.js": 252, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/actions/event-listeners.js": 253, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/actions/sources.js": 254, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/pause.js": 255, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/pretty-print.js": 256, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/editor/index.js": 257, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/editor/build-query.js": 258, - "../../lodash/escapeRegExp.js": 259, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/editor/source-documents.js": 260, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/editor/source-search.js": 261, - "../../lodash/findIndex.js": 262, - "../../lodash/_baseFindIndex.js": 263, - "../../lodash/_baseIteratee.js": 814, - "../../lodash/_baseMatches.js": 826, - "../../lodash/_baseIsMatch.js": 831, - "../../lodash/_Stack.js": 267, - "../../lodash/_stackClear.js": 268, - "../../lodash/_stackDelete.js": 269, - "../../lodash/_stackGet.js": 270, - "../../lodash/_stackHas.js": 271, - "../../lodash/_stackSet.js": 272, - "../../lodash/_baseIsEqual.js": 799, - "../../lodash/_baseIsEqualDeep.js": 832, - "../../lodash/_equalArrays.js": 800, - "../../lodash/_SetCache.js": 276, - "../../lodash/_setCacheAdd.js": 277, - "../../lodash/_setCacheHas.js": 278, - "../../lodash/_arraySome.js": 833, - "../../lodash/_cacheHas.js": 280, - "../../lodash/_equalByTag.js": 834, - "../../lodash/_Uint8Array.js": 282, - "../../lodash/_setToArray.js": 283, - "../../lodash/_equalObjects.js": 835, - "../../lodash/_getAllKeys.js": 285, - "../../lodash/_baseGetAllKeys.js": 286, - "../../lodash/_arrayPush.js": 287, - "../../lodash/_getSymbols.js": 288, - "../../lodash/_arrayFilter.js": 289, - "../../lodash/stubArray.js": 290, - "../../lodash/_getMatchData.js": 836, - "../../lodash/_isStrictComparable.js": 801, - "../../lodash/_matchesStrictComparable.js": 803, - "../../lodash/_baseMatchesProperty.js": 294, - "../../lodash/hasIn.js": 837, - "../../lodash/_baseHasIn.js": 838, - "../../lodash/_hasPath.js": 297, - "../../lodash/identity.js": 298, - "../../lodash/property.js": 839, - "../../lodash/_baseProperty.js": 840, - "../../lodash/_basePropertyDeep.js": 841, - "../../lodash/toInteger.js": 302, - "../../lodash/toFinite.js": 303, - "../../lodash/toNumber.js": 304, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/editor/source-editor.js": 305, - "../../codemirror/lib/codemirror.js": 306, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../codemirror/lib/codemirror.css": 307, - "../../css-loader/index.js!../../codemirror/lib/codemirror.css": 308, - "../../codemirror/mode/javascript/javascript.js": 309, - "../../codemirror/mode/htmlmixed/htmlmixed.js": 310, - "../../codemirror/mode/xml/xml.js": 311, - "../../codemirror/mode/css/css.js": 312, - "../../codemirror/mode/coffeescript/coffeescript.js": 313, - "../../codemirror/mode/jsx/jsx.js": 314, - "../../codemirror/mode/elm/elm.js": 315, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/Editor/codemirror-mozilla.css": 316, - "../../css-loader/index.js!../../../src/components/Editor/codemirror-mozilla.css": 317, - "../../codemirror/addon/search/searchcursor.js": 318, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/actions/pause.js": 319, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/actions/navigation.js": 320, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/actions/ui.js": 321, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/actions/coverage.js": 322, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/variables.css": 323, - "../../css-loader/index.js!../../../src/components/variables.css": 324, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/App.css": 325, - "../../css-loader/index.js!../../../src/components/App.css": 326, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/shared/menu.css": 327, - "../../css-loader/index.js!../../../src/components/shared/menu.css": 328, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/shared/SplitBox.css": 329, - "../../css-loader/index.js!../../../src/components/shared/SplitBox.css": 330, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/shared/reps.css": 331, - "../../css-loader/index.js!../../../src/components/shared/reps.css": 332, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/SourceSearch.js": 333, - "../../url/url.js": 334, - "../../url/node_modules/punycode/punycode.js": 335, - "../../url/util.js": 336, - "../../querystring/index.js": 337, - "../../querystring/decode.js": 338, - "../../querystring/encode.js": 339, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/SourceSearch.css": 340, - "../../css-loader/index.js!../../../src/components/SourceSearch.css": 341, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/shared/Autocomplete.js": 342, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/result-list.js": 343, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/shared/Svg.js": 344, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../assets/images/Svg.js": 345, - "../../svg-inline-react/dist/index.js": 346, - "../../svg-inline-loader/index.js!../../../assets/images/angle-brackets.svg": 347, - "../../svg-inline-loader/index.js!../../../assets/images/arrow.svg": 348, - "../../svg-inline-loader/index.js!../../../assets/images/blackBox.svg": 349, - "../../svg-inline-loader/index.js!../../../assets/images/breakpoint.svg": 350, - "../../svg-inline-loader/index.js!../../../assets/images/case-match.svg": 351, - "../../svg-inline-loader/index.js!../../../assets/images/close.svg": 352, - "../../svg-inline-loader/index.js!../../../assets/images/domain.svg": 353, - "../../svg-inline-loader/index.js!../../../assets/images/file.svg": 354, - "../../svg-inline-loader/index.js!../../../assets/images/folder.svg": 355, - "../../svg-inline-loader/index.js!../../../assets/images/globe.svg": 356, - "../../svg-inline-loader/index.js!../../../assets/images/magnifying-glass.svg": 357, - "../../svg-inline-loader/index.js!../../../assets/images/pause.svg": 358, - "../../svg-inline-loader/index.js!../../../assets/images/pause-exceptions.svg": 359, - "../../svg-inline-loader/index.js!../../../assets/images/plus.svg": 360, - "../../svg-inline-loader/index.js!../../../assets/images/prettyPrint.svg": 361, - "../../svg-inline-loader/index.js!../../../assets/images/regex-match.svg": 362, - "../../svg-inline-loader/index.js!../../../assets/images/resume.svg": 363, - "../../svg-inline-loader/index.js!../../../assets/images/settings.svg": 364, - "../../svg-inline-loader/index.js!../../../assets/images/stepIn.svg": 365, - "../../svg-inline-loader/index.js!../../../assets/images/stepOut.svg": 366, - "../../svg-inline-loader/index.js!../../../assets/images/stepOver.svg": 367, - "../../svg-inline-loader/index.js!../../../assets/images/subSettings.svg": 368, - "../../svg-inline-loader/index.js!../../../assets/images/toggle-breakpoints.svg": 369, - "../../svg-inline-loader/index.js!../../../assets/images/toggle-panes.svg": 370, - "../../svg-inline-loader/index.js!../../../assets/images/whole-word-match.svg": 371, - "../../svg-inline-loader/index.js!../../../assets/images/worker.svg": 372, - "../../svg-inline-loader/index.js!../../../assets/images/sad-face.svg": 373, - "../../svg-inline-loader/index.js!../../../assets/images/refresh.svg": 374, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/shared/Svg.css": 375, - "../../css-loader/index.js!../../../src/components/shared/Svg.css": 376, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/shared/SearchInput.js": 377, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/shared/Button/Close.js": 378, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/shared/Button/Close.css": 379, - "../../css-loader/index.js!../../../src/components/shared/Button/Close.css": 380, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/shared/SearchInput.css": 381, - "../../css-loader/index.js!../../../src/components/shared/SearchInput.css": 382, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/shared/ResultList.js": 383, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/shared/ResultList.css": 384, - "../../css-loader/index.js!../../../src/components/shared/ResultList.css": 385, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/shared/Autocomplete.css": 386, - "../../css-loader/index.js!../../../src/components/shared/Autocomplete.css": 387, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/Sources.js": 388, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/text.js": 389, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/SourcesTree.js": 390, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/sources-tree.js": 391, - "../../lodash/merge.js": 392, - "../../lodash/_baseMerge.js": 393, - "../../lodash/_assignMergeValue.js": 394, - "../../lodash/_baseFor.js": 395, - "../../lodash/_createBaseFor.js": 396, - "../../lodash/_baseMergeDeep.js": 397, - "../../lodash/_cloneBuffer.js": 398, - "../../lodash/_cloneTypedArray.js": 399, - "../../lodash/_cloneArrayBuffer.js": 400, - "../../lodash/_copyArray.js": 401, - "../../lodash/_initCloneObject.js": 402, - "../../lodash/_baseCreate.js": 403, - "../../lodash/isArrayLikeObject.js": 1155, - "../../lodash/toPlainObject.js": 405, - "../../lodash/_copyObject.js": 406, - "../../lodash/keysIn.js": 407, - "../../lodash/_baseKeysIn.js": 408, - "../../lodash/_nativeKeysIn.js": 409, - "../../lodash/_createAssigner.js": 410, - "../../lodash/_baseRest.js": 411, - "../../lodash/_overRest.js": 412, - "../../lodash/_apply.js": 413, - "../../lodash/_setToString.js": 414, - "../../lodash/_baseSetToString.js": 415, - "../../lodash/constant.js": 416, - "../../lodash/_shortOut.js": 417, - "../../lodash/_isIterateeCall.js": 418, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/shared/ManagedTree.js": 419, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/shared/ManagedTree.css": 420, - "../../css-loader/index.js!../../../src/components/shared/ManagedTree.css": 421, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/shared/menu.js": 422, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/clipboard.js": 423, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/Sources.css": 424, - "../../css-loader/index.js!../../../src/components/Sources.css": 425, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/Editor/index.js": 426, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/Editor/Footer.js": 427, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/shared/Button/PaneToggle.js": 428, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/shared/Button/PaneToggle.css": 429, - "../../css-loader/index.js!../../../src/components/shared/Button/PaneToggle.css": 430, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/Editor/Footer.css": 431, - "../../css-loader/index.js!../../../src/components/Editor/Footer.css": 432, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/Editor/SearchBar.js": 433, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/parser.js": 434, - "../../babylon/lib/index.js": 435, - "../../babel-traverse/lib/index.js": 436, - "../../babel-runtime/core-js/get-iterator.js": 437, - "../../core-js/library/fn/get-iterator.js": 438, - "../../core-js/library/modules/web.dom.iterable.js": 439, - "../../core-js/library/modules/es6.array.iterator.js": 440, - "../../core-js/library/modules/_add-to-unscopables.js": 441, - "../../core-js/library/modules/_iter-step.js": 442, - "../../core-js/library/modules/_iterators.js": 443, - "../../core-js/library/modules/_to-iobject.js": 444, - "../../core-js/library/modules/_iobject.js": 445, - "../../core-js/library/modules/_cof.js": 446, - "../../core-js/library/modules/_defined.js": 447, - "../../core-js/library/modules/_iter-define.js": 448, - "../../core-js/library/modules/_library.js": 449, - "../../core-js/library/modules/_export.js": 450, - "../../core-js/library/modules/_global.js": 451, - "../../core-js/library/modules/_core.js": 452, - "../../core-js/library/modules/_ctx.js": 453, - "../../core-js/library/modules/_a-function.js": 454, - "../../core-js/library/modules/_hide.js": 455, - "../../core-js/library/modules/_object-dp.js": 456, - "../../core-js/library/modules/_an-object.js": 457, - "../../core-js/library/modules/_is-object.js": 458, - "../../core-js/library/modules/_ie8-dom-define.js": 459, - "../../core-js/library/modules/_descriptors.js": 460, - "../../core-js/library/modules/_fails.js": 461, - "../../core-js/library/modules/_dom-create.js": 462, - "../../core-js/library/modules/_to-primitive.js": 463, - "../../core-js/library/modules/_property-desc.js": 464, - "../../core-js/library/modules/_redefine.js": 465, - "../../core-js/library/modules/_has.js": 466, - "../../core-js/library/modules/_iter-create.js": 467, - "../../core-js/library/modules/_object-create.js": 468, - "../../core-js/library/modules/_object-dps.js": 469, - "../../core-js/library/modules/_object-keys.js": 470, - "../../core-js/library/modules/_object-keys-internal.js": 471, - "../../core-js/library/modules/_array-includes.js": 472, - "../../core-js/library/modules/_to-length.js": 473, - "../../core-js/library/modules/_to-integer.js": 474, - "../../core-js/library/modules/_to-index.js": 475, - "../../core-js/library/modules/_shared-key.js": 476, - "../../core-js/library/modules/_shared.js": 477, - "../../core-js/library/modules/_uid.js": 478, - "../../core-js/library/modules/_enum-bug-keys.js": 479, - "../../core-js/library/modules/_html.js": 480, - "../../core-js/library/modules/_set-to-string-tag.js": 481, - "../../core-js/library/modules/_wks.js": 482, - "../../core-js/library/modules/_object-gpo.js": 483, - "../../core-js/library/modules/_to-object.js": 484, - "../../core-js/library/modules/es6.string.iterator.js": 485, - "../../core-js/library/modules/_string-at.js": 486, - "../../core-js/library/modules/core.get-iterator.js": 487, - "../../core-js/library/modules/core.get-iterator-method.js": 488, - "../../core-js/library/modules/_classof.js": 489, - "../../babel-traverse/lib/path/index.js": 490, - "../../babel-runtime/helpers/classCallCheck.js": 491, - "../../babel-traverse/lib/path/lib/virtual-types.js": 492, - "../../babel-types/lib/index.js": 493, - "../../babel-runtime/core-js/object/get-own-property-symbols.js": 494, - "../../core-js/library/fn/object/get-own-property-symbols.js": 495, - "../../core-js/library/modules/es6.symbol.js": 496, - "../../core-js/library/modules/_meta.js": 497, - "../../core-js/library/modules/_wks-ext.js": 498, - "../../core-js/library/modules/_wks-define.js": 499, - "../../core-js/library/modules/_keyof.js": 500, - "../../core-js/library/modules/_enum-keys.js": 501, - "../../core-js/library/modules/_object-gops.js": 502, - "../../core-js/library/modules/_object-pie.js": 503, - "../../core-js/library/modules/_is-array.js": 504, - "../../core-js/library/modules/_object-gopn-ext.js": 505, - "../../core-js/library/modules/_object-gopn.js": 506, - "../../core-js/library/modules/_object-gopd.js": 507, - "../../babel-runtime/core-js/object/keys.js": 508, - "../../core-js/library/fn/object/keys.js": 509, - "../../core-js/library/modules/es6.object.keys.js": 510, - "../../core-js/library/modules/_object-sap.js": 511, - "../../babel-runtime/core-js/json/stringify.js": 512, - "../../core-js/library/fn/json/stringify.js": 513, - "../../babel-types/lib/constants.js": 514, - "../../babel-runtime/core-js/symbol/for.js": 515, - "../../core-js/library/fn/symbol/for.js": 516, - "../../babel-types/lib/retrievers.js": 517, - "../../babel-runtime/core-js/object/create.js": 518, - "../../core-js/library/fn/object/create.js": 519, - "../../core-js/library/modules/es6.object.create.js": 520, - "../../babel-types/lib/validators.js": 521, - "../../babel-runtime/helpers/typeof.js": 522, - "../../babel-runtime/core-js/symbol/iterator.js": 523, - "../../core-js/library/fn/symbol/iterator.js": 524, - "../../babel-runtime/core-js/symbol.js": 525, - "../../core-js/library/fn/symbol/index.js": 526, - "../../core-js/library/modules/es6.object.to-string.js": 527, - "../../core-js/library/modules/es7.symbol.async-iterator.js": 528, - "../../core-js/library/modules/es7.symbol.observable.js": 529, - "../../esutils/lib/utils.js": 530, - "../../esutils/lib/ast.js": 531, - "../../esutils/lib/code.js": 532, - "../../esutils/lib/keyword.js": 533, - "../../babel-types/lib/converters.js": 534, - "../../babel-runtime/core-js/number/max-safe-integer.js": 535, - "../../core-js/library/fn/number/max-safe-integer.js": 536, - "../../core-js/library/modules/es6.number.max-safe-integer.js": 537, - "../../lodash/isRegExp.js": 538, - "../../lodash/_baseIsRegExp.js": 539, - "../../babel-types/lib/flow.js": 540, - "../../to-fast-properties/index.js": 541, - "../../lodash/clone.js": 542, - "../../lodash/_baseClone.js": 543, - "../../lodash/_arrayEach.js": 544, - "../../lodash/_baseAssign.js": 545, - "../../lodash/_baseAssignIn.js": 546, - "../../lodash/_copySymbols.js": 547, - "../../lodash/_copySymbolsIn.js": 548, - "../../lodash/_getSymbolsIn.js": 549, - "../../lodash/_getAllKeysIn.js": 550, - "../../lodash/_initCloneArray.js": 551, - "../../lodash/_initCloneByTag.js": 552, - "../../lodash/_cloneDataView.js": 553, - "../../lodash/_cloneMap.js": 554, - "../../lodash/_addMapEntry.js": 555, - "../../lodash/_arrayReduce.js": 556, - "../../lodash/_cloneRegExp.js": 557, - "../../lodash/_cloneSet.js": 558, - "../../lodash/_addSetEntry.js": 559, - "../../lodash/_cloneSymbol.js": 560, - "../../lodash/uniq.js": 561, - "../../lodash/_baseUniq.js": 562, - "../../lodash/_arrayIncludes.js": 563, - "../../lodash/_baseIndexOf.js": 564, - "../../lodash/_baseIsNaN.js": 565, - "../../lodash/_strictIndexOf.js": 566, - "../../lodash/_arrayIncludesWith.js": 567, - "../../lodash/_createSet.js": 568, - "../../lodash/noop.js": 569, - "../../babel-types/lib/definitions/init.js": 570, - "../../babel-types/lib/definitions/index.js": 571, - "../../babel-types/lib/definitions/core.js": 572, - "../../babel-types/lib/definitions/es2015.js": 573, - "../../babel-types/lib/definitions/flow.js": 574, - "../../babel-types/lib/definitions/jsx.js": 575, - "../../babel-types/lib/definitions/misc.js": 576, - "../../babel-types/lib/definitions/experimental.js": 577, - "../../babel-types/lib/react.js": 578, - "../../debug/src/browser.js": 579, - "../../debug/src/debug.js": 580, - "../../ms/index.js": 581, - "../../lodash/assign.js": 582, - "../../babel-traverse/lib/scope/index.js": 583, - "../../babel-runtime/core-js/map.js": 584, - "../../core-js/library/fn/map.js": 585, - "../../core-js/library/modules/es6.map.js": 586, - "../../core-js/library/modules/_collection-strong.js": 587, - "../../core-js/library/modules/_redefine-all.js": 588, - "../../core-js/library/modules/_an-instance.js": 589, - "../../core-js/library/modules/_for-of.js": 590, - "../../core-js/library/modules/_iter-call.js": 591, - "../../core-js/library/modules/_is-array-iter.js": 592, - "../../core-js/library/modules/_set-species.js": 593, - "../../core-js/library/modules/_collection.js": 594, - "../../core-js/library/modules/_array-methods.js": 595, - "../../core-js/library/modules/_array-species-create.js": 596, - "../../core-js/library/modules/_array-species-constructor.js": 597, - "../../core-js/library/modules/es7.map.to-json.js": 598, - "../../core-js/library/modules/_collection-to-json.js": 599, - "../../core-js/library/modules/_array-from-iterable.js": 600, - "../../lodash/includes.js": 601, - "../../lodash/isString.js": 602, - "../../lodash/values.js": 603, - "../../lodash/_baseValues.js": 604, - "../../lodash/repeat.js": 605, - "../../lodash/_baseRepeat.js": 606, - "../../babel-traverse/lib/scope/lib/renamer.js": 607, - "../../babel-traverse/lib/scope/binding.js": 608, - "../../lodash/defaults.js": 609, - "../../lodash/assignInWith.js": 610, - "../../lodash/_customDefaultsAssignIn.js": 611, - "../../babel-messages/lib/index.js": 612, - "../../util/util.js": 613, - "../../util/support/isBufferBrowser.js": 614, - "../../util/node_modules/inherits/inherits_browser.js": 615, - "../../globals/index.js": 616, - "../../json-loader/index.js!../../globals/globals.json": 617, - "../../babel-traverse/lib/cache.js": 618, - "../../babel-runtime/core-js/weak-map.js": 619, - "../../core-js/library/fn/weak-map.js": 620, - "../../core-js/library/modules/es6.weak-map.js": 621, - "../../core-js/library/modules/_object-assign.js": 622, - "../../core-js/library/modules/_collection-weak.js": 623, - "../../babel-traverse/lib/path/ancestry.js": 624, - "../../babel-traverse/lib/path/inference/index.js": 625, - "../../babel-traverse/lib/path/inference/inferers.js": 626, - "../../babel-traverse/lib/path/inference/inferer-reference.js": 627, - "../../babel-traverse/lib/path/replacement.js": 628, - "../../babel-code-frame/lib/index.js": 629, - "../../js-tokens/index.js": 630, - "../../chalk/index.js": 631, - "../../escape-string-regexp/index.js": 632, - "../../ansi-styles/index.js": 633, - "../../strip-ansi/index.js": 634, - "../../ansi-regex/index.js": 635, - "../../has-ansi/index.js": 636, - "../../chalk/node_modules/supports-color/index.js": 637, - "../../babel-traverse/lib/path/evaluation.js": 638, - "../../babel-traverse/lib/path/conversion.js": 639, - "../../babel-traverse/lib/path/introspection.js": 640, - "../../babel-traverse/lib/path/context.js": 641, - "../../babel-traverse/lib/path/removal.js": 642, - "../../babel-traverse/lib/path/lib/removal-hooks.js": 643, - "../../babel-traverse/lib/path/modification.js": 644, - "../../babel-traverse/lib/path/lib/hoister.js": 645, - "../../babel-traverse/lib/path/family.js": 646, - "../../babel-traverse/lib/path/comments.js": 647, - "../../babel-traverse/lib/hub.js": 648, - "../../babel-traverse/lib/context.js": 649, - "../../babel-traverse/lib/visitors.js": 650, - "../../lodash/debounce.js": 651, - "../../lodash/now.js": 652, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/Editor/SearchBar.css": 653, - "../../css-loader/index.js!../../../src/components/Editor/SearchBar.css": 654, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/Editor/GutterMenu.js": 655, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/Editor/EditorMenu.js": 656, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/Editor/Preview.js": 657, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/object-inspector.js": 658, - "../../devtools-reps/src/index.js": 659, - "../../devtools-reps/src/reps/constants.js": 660, - "../../devtools-reps/src/reps/rep.js": 661, - "../../devtools-reps/src/reps/rep-utils.js": 662, - "../../devtools-reps/src/shared/dom-node-constants.js": 663, - "../../devtools-reps/src/reps/undefined.js": 664, - "../../devtools-reps/src/reps/null.js": 665, - "../../devtools-reps/src/reps/string.js": 666, - "../../devtools-reps/src/reps/long-string.js": 667, - "../../devtools-reps/src/reps/number.js": 668, - "../../devtools-reps/src/reps/array.js": 669, - "../../devtools-reps/src/reps/caption.js": 670, - "../../devtools-reps/src/reps/object.js": 671, - "../../devtools-reps/src/reps/prop-rep.js": 672, - "../../devtools-reps/src/reps/grip.js": 673, - "../../devtools-reps/src/reps/symbol.js": 674, - "../../devtools-reps/src/reps/infinity.js": 675, - "../../devtools-reps/src/reps/nan.js": 676, - "../../devtools-reps/src/reps/attribute.js": 677, - "../../devtools-reps/src/reps/date-time.js": 678, - "../../devtools-reps/src/reps/document.js": 679, - "../../devtools-reps/src/reps/event.js": 680, - "../../devtools-reps/src/reps/function.js": 681, - "../../devtools-reps/src/reps/promise.js": 682, - "../../devtools-reps/src/reps/regexp.js": 683, - "../../devtools-reps/src/reps/stylesheet.js": 684, - "../../devtools-reps/src/reps/comment-node.js": 685, - "../../devtools-reps/src/reps/element-node.js": 686, - "../../devtools-reps/src/reps/images/Svg.js": 687, - "../../svg-inline-loader/index.js!../../devtools-reps/src/reps/images/open-inspector.svg": 688, - "../../devtools-reps/src/reps/text-node.js": 689, - "../../devtools-reps/src/reps/error.js": 690, - "../../devtools-reps/src/reps/window.js": 691, - "../../devtools-reps/src/reps/object-with-text.js": 692, - "../../devtools-reps/src/reps/object-with-url.js": 693, - "../../devtools-reps/src/reps/grip-array.js": 694, - "../../devtools-reps/src/reps/grip-map.js": 695, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/shared/ObjectInspector.js": 696, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/shared/Rep.js": 697, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/shared/Popover.js": 698, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/shared/Popover.css": 699, - "../../css-loader/index.js!../../../src/components/shared/Popover.css": 700, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/shared/previewFunction.js": 701, - "../../lodash/times.js": 702, - "../../lodash/_castFunction.js": 703, - "../../lodash/zip.js": 704, - "../../lodash/unzip.js": 705, - "../../lodash/flatten.js": 706, - "../../lodash/_baseFlatten.js": 707, - "../../lodash/_isFlattenable.js": 708, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/Editor/Preview.css": 709, - "../../css-loader/index.js!../../../src/components/Editor/Preview.css": 710, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/Editor/ConditionalPanel.js": 711, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/Editor/ConditionalPanel.css": 712, - "../../css-loader/index.js!../../../src/components/Editor/ConditionalPanel.css": 713, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/Editor/Breakpoint.js": 714, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/Editor/HitMarker.js": 715, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/Editor/Editor.css": 716, - "../../css-loader/index.js!../../../src/components/Editor/Editor.css": 717, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/SecondaryPanes/index.js": 718, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/SecondaryPanes/Expressions.js": 719, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/SecondaryPanes/Expressions.css": 720, - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Expressions.css": 721, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/SecondaryPanes/WhyPaused.js": 722, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/SecondaryPanes/WhyPaused.css": 723, - "../../css-loader/index.js!../../../src/components/SecondaryPanes/WhyPaused.css": 724, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/SecondaryPanes/Breakpoints.js": 725, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/SecondaryPanes/Breakpoints.css": 726, - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Breakpoints.css": 727, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/SecondaryPanes/ChromeScopes.js": 728, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/SecondaryPanes/Scopes.css": 729, - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Scopes.css": 730, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/SecondaryPanes/Scopes.js": 731, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/scopes.js": 732, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/SecondaryPanes/Frames.js": 733, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames.css": 734, - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames.css": 735, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/SecondaryPanes/EventListeners.js": 736, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/SecondaryPanes/EventListeners.css": 737, - "../../css-loader/index.js!../../../src/components/SecondaryPanes/EventListeners.css": 738, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/shared/Accordion.js": 739, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/shared/Accordion.css": 740, - "../../css-loader/index.js!../../../src/components/shared/Accordion.css": 741, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/SecondaryPanes/CommandBar.js": 742, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/SecondaryPanes/CommandBar.css": 743, - "../../css-loader/index.js!../../../src/components/SecondaryPanes/CommandBar.css": 744, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/SecondaryPanes/SecondaryPanes.css": 745, - "../../css-loader/index.js!../../../src/components/SecondaryPanes/SecondaryPanes.css": 746, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/WelcomeBox.js": 747, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/WelcomeBox.css": 748, - "../../css-loader/index.js!../../../src/components/WelcomeBox.css": 749, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/Editor/Tabs.js": 750, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/shared/Dropdown.js": 751, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/shared/Dropdown.css": 752, - "../../css-loader/index.js!../../../src/components/shared/Dropdown.css": 753, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/Editor/Tabs.css": 754, - "../../css-loader/index.js!../../../src/components/Editor/Tabs.css": 755, - "../../json-loader/index.js!../../../src/strings.json": 756, - "../../../multi integration-tests": 0, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/tests.js": 757, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/tests/index.js": 758, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/tests/asm.js": 759, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/utils/index.js": 760, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/utils/wait.js": 761, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/utils/shared.js": 762, - "../../lodash/mapValues.js": 763, - "../../lodash/_baseForOwn.js": 764, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/utils/assert.js": 765, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/utils/mochitest.js": 766, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/utils/commands.js": 767, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/utils/mouse-events.js": 768, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/tests/breaking.js": 769, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/tests/breakpoints.js": 770, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/tests/breakpoints-cond.js": 771, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/tests/call-stack.js": 772, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/tests/expressions.js": 773, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/tests/debugger-buttons.js": 774, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/tests/editor-select.js": 775, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/tests/editor-gutter.js": 776, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/tests/editor-highlight.js": 777, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/tests/keyboard-navigation.js": 778, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/tests/keyboard-shortcuts.js": 779, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/tests/iframes.js": 780, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/tests/navigation.js": 781, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/tests/pause-exceptions.js": 782, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/tests/pretty-print.js": 783, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/tests/pretty-print-paused.js": 784, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/tests/returnvalues.js": 785, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/tests/scopes.js": 786, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/tests/searching.js": 787, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/tests/sources.js": 788, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/tests/sourcemaps.js": 789, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/tests/sourcemaps2.js": 790, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/tests/sourcemaps-bogus.js": 791, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/runner.js": 792, - "../../mocha/mocha.js": 793, - "../../buffer/index.js": 794, - "../../base64-js/index.js": 795, - "../../ieee754/index.js": 796, - "../../isarray/index.js": 797, - "../../timers-browserify/main.js": 798, - "../../setimmediate/setImmediate.js": 799, - "../../expect.js/index.js": 800, - "../../../multi pretty-print-worker": 0, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/pretty-print-worker.js": 801, - "../../pretty-fast/pretty-fast.js": 802, - "../../pretty-fast/node_modules/acorn/acorn.js": 803, - "../../pretty-fast/node_modules/source-map/lib/source-map.js": 804, - "../../pretty-fast/node_modules/source-map/lib/source-map/source-map-generator.js": 805, - "../../pretty-fast/node_modules/source-map/lib/source-map/base64-vlq.js": 806, - "../../pretty-fast/node_modules/source-map/lib/source-map/base64.js": 807, - "../../pretty-fast/node_modules/source-map/lib/source-map/util.js": 808, - "../../pretty-fast/node_modules/source-map/lib/source-map/array-set.js": 809, - "../../pretty-fast/node_modules/source-map/lib/source-map/mapping-list.js": 810, - "../../pretty-fast/node_modules/source-map/lib/source-map/source-map-consumer.js": 811, - "../../pretty-fast/node_modules/source-map/lib/source-map/binary-search.js": 812, - "../../pretty-fast/node_modules/source-map/lib/source-map/source-node.js": 813, - "../../../multi source-map-worker": 0, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/source-map-worker.js": 814, - "../../source-map/source-map.js": 815, - "../../source-map/lib/source-map-generator.js": 816, - "../../source-map/lib/base64-vlq.js": 817, - "../../source-map/lib/base64.js": 818, - "../../source-map/lib/util.js": 819, - "../../source-map/lib/array-set.js": 820, - "../../source-map/lib/mapping-list.js": 821, - "../../source-map/lib/source-map-consumer.js": 822, - "../../source-map/lib/binary-search.js": 823, - "../../source-map/lib/quick-sort.js": 824, - "../../source-map/lib/source-node.js": 825, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/parser/parser-utils.js": 826, - "../../../multi parser-worker": 0, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/parser/index.js": 827, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-config/index.js": 828, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-config/src/feature.js": 829, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/index.js": 830, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/sham/appconstants.js": 831, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/shared/clipboard.js": 832, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/shared/DevToolsUtils.js": 833, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/sham/chrome.js": 834, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/sham/inDOMUtils.js": 835, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/sham/parse-css.js": 836, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/sham/css-color-db.js": 837, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/sham/css-property-db.js": 838, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/sham/promise.js": 839, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/sham/fileutils.js": 840, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/sham/netutil.js": 841, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/sham/osfile.js": 842, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/shared/webconsole/network-helper.js": 843, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/shared/event-emitter.js": 844, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/client/shared/file-saver.js": 845, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/client/shared/components/frame.js": 846, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/client/shared/source-utils.js": 847, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/client/framework/menu.js": 848, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/client/framework/menu-item.js": 849, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/client/shared/shim/networkRequest.js": 850, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/client/shared/prefs.js": 851, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/client/shared/components/search-box.js": 852, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/client/shared/key-shortcuts.js": 853, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/client/shared/components/splitter/SplitBox.js": 854, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/client/shared/components/splitter/Draggable.js": 855, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/shared/sprintf.js": 856, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/client/shared/components/tree.js": 857, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/shared/transport/websocket-transport.js": 858, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/shared/worker-utils.js": 859, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/client/shared/widgets/Chart.js": 860, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/client/shared/curl.js": 861, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/shared/client/main.js": 862, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/sdk/event/core.js": 863, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/sdk/core/namespace.js": 864, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/shared/webconsole/client.js": 865, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/transport/transport.js": 866, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/shared/transport/stream-utils.js": 867, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/shared/transport/packets.js": 868, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/shared/transport/utf8.js": 869, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/transport/utf8.js": 870, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/shared/defer.js": 871, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/client/framework/devtools.js": 872, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/client/shared/widgets/tooltip/HTMLTooltip.js": 873, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/shared/async-utils.js": 874, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/shared/task.js": 875, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/client/shared/widgets/tooltip/TooltipToggle.js": 876, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/client/shared/keycodes.js": 877, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/shared/plural-form.js": 878, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/client/shared/widgets/view-helpers.js": 879, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/client/framework/target.js": 880, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/client/shared/fronts/timeline.js": 881, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../node_modules/co/index.js": 882, - "../../properties-parser/index.js": 883, - "../../string.prototype.codepointat/codepointat.js": 884, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!client/index.js": 885, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!client/firefox.js": 886, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!client/chrome.js": 887, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/client/index.js": 888, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/client/firefox.js": 889, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/client/firefox/commands.js": 890, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/client/firefox/create.js": 891, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/client/firefox/events.js": 892, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/client/chrome.js": 893, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/client/chrome/commands.js": 894, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/client/chrome/create.js": 895, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/client/chrome/events.js": 896, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/bootstrap.js": 897, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-source-map/src/index.js": 898, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-source-map/src/util.js": 899, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-utils/index.js": 900, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-utils/src/privileged-network-request.js": 901, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-utils/src/worker-utils.js": 902, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/pretty-print/index.js": 903, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/editor/expression.js": 904, - "../../codemirror/mode/clojure/clojure.js": 905, - "../../codemirror/addon/fold/foldcode.js": 906, - "../../codemirror/addon/fold/brace-fold.js": 907, - "../../codemirror/addon/fold/indent-fold.js": 908, - "../../codemirror/addon/fold/foldgutter.js": 909, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-splitter/index.js": 910, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-splitter/src/SplitBox.js": 911, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-splitter/src/Draggable.js": 912, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../devtools-splitter/src/SplitBox.css": 913, - "../../css-loader/index.js!../../devtools-splitter/src/SplitBox.css": 914, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/ProjectSearch.js": 915, - "../../punycode/punycode.js": 916, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/ProjectSearch.css": 917, - "../../css-loader/index.js!../../../src/components/ProjectSearch.css": 918, - "../../svg-inline-loader/index.js!../../../assets/images/arrow-up.svg": 919, - "../../svg-inline-loader/index.js!../../../assets/images/arrow-down.svg": 920, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/Outline.js": 921, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/Outline.css": 922, - "../../css-loader/index.js!../../../src/components/Outline.css": 923, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/index.js": 924, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/constants.js": 925, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/rep.js": 926, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/rep-utils.js": 927, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/shared/dom-node-constants.js": 928, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/undefined.js": 929, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/null.js": 930, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/string.js": 931, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/long-string.js": 932, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/number.js": 933, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/array.js": 934, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/caption.js": 935, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/object.js": 936, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/prop-rep.js": 937, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/grip.js": 938, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/symbol.js": 939, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/infinity.js": 940, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/nan.js": 941, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/attribute.js": 942, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/date-time.js": 943, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/document.js": 944, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/event.js": 945, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/function.js": 946, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/promise.js": 947, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/regexp.js": 948, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/stylesheet.js": 949, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/comment-node.js": 950, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/element-node.js": 951, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/images/Svg.js": 952, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/text-node.js": 953, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/error.js": 954, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/window.js": 955, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/object-with-text.js": 956, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/object-with-url.js": 957, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/grip-array.js": 958, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/grip-map.js": 959, - "../../raw-loader/index.js!../../../assets/panel/debugger.properties": 960, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/parser/worker.js": 961, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/parser/utils.js": 962, - "../../lodash/isEmpty.js": 963, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/pretty-print/worker.js": 964, - "../../co/index.js": 965, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!components/shared/menu.js": 966, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/src/menu/index.js": 967, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/src/utils/event-emitter.js": 968, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/src/utils/promise.js": 969, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/src/menu/menu-item.js": 970, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/src/prefs.js": 971, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/src/key-shortcuts.js": 972, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!components/shared/menu.css": 973, - "../../css-loader/index.js!components/shared/menu.css": 974, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-sprintf-js/src/sprintf.js": 975, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-connection/index.js": 976, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-connection/src/debugger/client.js": 977, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-connection/src/utils/chrome.js": 978, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-connection/src/utils/DevToolsUtils.js": 979, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-connection/src/utils/promise.js": 980, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-connection/src/utils/appconstants.js": 981, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-connection/src/utils/events.js": 982, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-connection/src/utils/namespace.js": 983, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-connection/src/webconsole/client.js": 984, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-connection/src/utils/event-emitter.js": 985, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-connection/src/transport/index.js": 986, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-connection/src/transport/stream-utils.js": 987, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-connection/src/transport/packets.js": 988, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-connection/src/transport/utf8.js": 989, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-connection/src/transport/websocket.js": 990, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-connection/src/target.js": 991, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/redux/middleware/timing.js": 992, - "../../reselect/lib/index.js": 993, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-source-editor/index.js": 994, - "../../../external \"devtools/client/sourceeditor/editor\"": 995, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-source-editor/src/utils.js": 996, - "../../svg-inline-loader/index.js!../../../assets/images/backbone.svg": 997, - "../../svg-inline-loader/index.js!../../../assets/images/column-breakpoint.svg": 998, - "../../svg-inline-loader/index.js!../../../assets/images/jquery.svg": 999, - "../../svg-inline-loader/index.js!../../../assets/images/react.svg": 1000, - "../../svg-inline-loader/index.js!../../../assets/images/webpack.svg": 1001, - "../../svg-inline-loader/index.js!../../../assets/images/node.svg": 1002, - "../../svg-inline-loader/index.js!../../../assets/images/express.svg": 1003, - "../../svg-inline-loader/index.js!../../../assets/images/pug.svg": 1004, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/shared/previewFunction.css": 1005, - "../../css-loader/index.js!../../../src/components/shared/previewFunction.css": 1006, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-components/index.js": 1007, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-components/src/tree.js": 1008, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/shared/ObjectInspector.css": 1009, - "../../css-loader/index.js!../../../src/components/shared/ObjectInspector.css": 1010, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/Editor/ColumnBreakpoint.js": 1011, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/SecondaryPanes/Frames/index.js": 1012, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/SecondaryPanes/Frames/Frame.js": 1013, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/frame.js": 1014, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/SecondaryPanes/Frames/Group.js": 1015, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Group.css": 1016, - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Group.css": 1017, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Frames.css": 1018, - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/Frames.css": 1019, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/tests/editor-preview.js": 1020, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/tests/scopes-mutations.js": 1021, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/tests/tabs.js": 1022, - "../../parse-script-tags/index.js": 1023, - "../../debug/node_modules/ms/index.js": 1024, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/Editor/HighlightLines.js": 1025, - "../../lodash/range.js": 1026, - "../../lodash/_createRange.js": 1027, - "../../lodash/_baseRange.js": 1028, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/shared/BracketArrow.js": 1029, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/shared/BracketArrow.css": 1030, - "../../css-loader/index.js!../../../src/components/shared/BracketArrow.css": 1031, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/SecondaryPanes/Frames/FrameMenu.js": 1032, - "../../lodash/lodash.js": 1033, - "../../lodash/kebabCase.js": 1034, - "../../lodash/_createCompounder.js": 1035, - "../../lodash/deburr.js": 1036, - "../../lodash/_deburrLetter.js": 1037, - "../../lodash/_basePropertyOf.js": 1038, - "../../lodash/words.js": 1039, - "../../lodash/_asciiWords.js": 1040, - "../../lodash/_hasUnicodeWord.js": 1041, - "../../lodash/_unicodeWords.js": 1042, - "../../svg-inline-loader/index.js!../../../assets/images/sencha-extjs.svg": 1043, - "../../svg-inline-loader/index.js!../../../assets/images/showSources.svg": 1044, - "../../svg-inline-loader/index.js!../../../assets/images/showOutline.svg": 1045, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/Editor/Highlight.css": 1046, - "../../css-loader/index.js!../../../src/components/Editor/Highlight.css": 1047, - "../../lodash.kebabcase/index.js": 1048, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/parser/scopes.js": 1049, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/parser/getSymbols.js": 1050, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/parser/utils/ast.js": 1051, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/parser/utils/helpers.js": 1052, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/parser/utils/getFunctionName.js": 1053, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/parser/resolveToken.js": 1054, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/parser/utils/closest.js": 1055, - "../../chalk/node_modules/ansi-styles/index.js": 1056, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/breakpoint/index.js": 1057, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/reducers/ast.js": 1058, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/actions/ast.js": 1059, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/ProjectSearch/ProjectSearch.js": 1060, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/project-search.js": 1061, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/ProjectSearch/ProjectSearch.css": 1062, - "../../css-loader/index.js!../../../src/components/ProjectSearch/ProjectSearch.css": 1063, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/ProjectSearch/TextSearch.js": 1064, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/ProjectSearch/TextSearch.css": 1065, - "../../css-loader/index.js!../../../src/components/ProjectSearch/TextSearch.css": 1066, - "../../lodash/flatMap.js": 1067, - "../../lodash/map.js": 1068, - "../../lodash/_baseMap.js": 1069, - "../../lodash/_baseEach.js": 1070, - "../../lodash/_createBaseEach.js": 1071, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/parser/getOutOfScopeLocations.js": 1072, - "../../lodash/fp/get.js": 1073, - "../../lodash/fp/convert.js": 1074, - "../../lodash/fp/_baseConvert.js": 1075, - "../../lodash/fp/_mapping.js": 1076, - "../../lodash/fp/placeholder.js": 1077, - "../../lodash/fp/_util.js": 1078, - "../../lodash/ary.js": 1079, - "../../lodash/_createWrap.js": 1080, - "../../lodash/_baseSetData.js": 1081, - "../../lodash/_metaMap.js": 1082, - "../../lodash/_createBind.js": 1083, - "../../lodash/_createCtor.js": 1084, - "../../lodash/_createCurry.js": 1085, - "../../lodash/_createHybrid.js": 1086, - "../../lodash/_composeArgs.js": 1087, - "../../lodash/_composeArgsRight.js": 1088, - "../../lodash/_countHolders.js": 1089, - "../../lodash/_createRecurry.js": 1090, - "../../lodash/_isLaziable.js": 1091, - "../../lodash/_LazyWrapper.js": 1092, - "../../lodash/_baseLodash.js": 1093, - "../../lodash/_getData.js": 1094, - "../../lodash/_getFuncName.js": 1095, - "../../lodash/_realNames.js": 1096, - "../../lodash/wrapperLodash.js": 1097, - "../../lodash/_LodashWrapper.js": 1098, - "../../lodash/_wrapperClone.js": 1099, - "../../lodash/_setData.js": 1100, - "../../lodash/_setWrapToString.js": 1101, - "../../lodash/_getWrapDetails.js": 1102, - "../../lodash/_insertWrapDetails.js": 1103, - "../../lodash/_updateWrapDetails.js": 1104, - "../../lodash/_getHolder.js": 1105, - "../../lodash/_reorder.js": 1106, - "../../lodash/_replaceHolders.js": 1107, - "../../lodash/_createPartial.js": 1108, - "../../lodash/_mergeData.js": 1109, - "../../lodash/curry.js": 1110, - "../../lodash/iteratee.js": 1111, - "../../lodash/rearg.js": 1112, - "../../lodash/_flatRest.js": 1113, - "../../lodash/toPath.js": 1114, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/search/index.js": 1115, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/search/utils/build-query.js": 1116, - "../../svg-inline-loader/index.js!../../../assets/images/underscore.svg": 1117, - "../../svg-inline-loader/index.js!../../../assets/images/lodash.svg": 1118, - "../../svg-inline-loader/index.js!../../../assets/images/ember.svg": 1119, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/SecondaryPanes/Frames/WhyPaused.js": 1120, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/WhyPaused.css": 1121, - "../../css-loader/index.js!../../../src/components/SecondaryPanes/Frames/WhyPaused.css": 1122, - "../../../multi search-worker": 0, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/search/worker.js": 1123, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/selectors/linesInScope.js": 1124, - "../../lodash/without.js": 1125, - "../../lodash/_baseDifference.js": 1131, - "../../lodash/isEqual.js": 1127, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/ui.js": 1128, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/test/integration/tests/sourcemaps-reloading.js": 1129, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-contextmenu/menu.js": 1130, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../devtools-contextmenu/menu.css": 1131, - "../../css-loader/index.js!../../devtools-contextmenu/menu.css": 1132, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/reducers/pending-breakpoints.js": 1133, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/selectors/breakpointAtLocation.js": 1134, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/selectors/visibleBreakpoints.js": 1135, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/actions/breakpoints/addBreakpoint.js": 1136, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/actions/breakpoints/syncBreakpoint.js": 1137, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/search/build-query.js": 1138, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/ProjectSearch/index.js": 1139, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/search/project-search.js": 1140, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/ProjectSearch/SourceSearch.js": 1141, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/PrimaryPanes/index.js": 1142, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/PrimaryPanes/Sources.css": 1143, - "../../css-loader/index.js!../../../src/components/PrimaryPanes/Sources.css": 1144, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/PrimaryPanes/Outline.js": 1145, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/PrimaryPanes/Outline.css": 1146, - "../../css-loader/index.js!../../../src/components/PrimaryPanes/Outline.css": 1147, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/PrimaryPanes/SourcesTree.js": 1148, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../devtools-reps/src/reps/reps.css": 1149, - "../../css-loader/index.js!../../devtools-reps/src/reps/reps.css": 1150, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/shared/images/Svg.js": 1151, - "../../svg-inline-loader/index.js!../../devtools-reps/src/shared/images/arrow.svg": 1152, - "../../svg-inline-loader/index.js!../../devtools-reps/src/shared/images/open-inspector.svg": 1153, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/object-inspector/index.js": 1154, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../devtools-reps/src/object-inspector/index.css": 1155, - "../../css-loader/index.js!../../devtools-reps/src/object-inspector/index.css": 1156, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/object-inspector/utils.js": 1157, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/Editor/Breakpoints.js": 1158, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/Editor/CallSites.js": 1159, - "../../lodash/keyBy.js": 1160, - "../../lodash/_createAggregator.js": 1161, - "../../lodash/_arrayAggregator.js": 1162, - "../../lodash/_baseAggregator.js": 1163, - "../../lodash/find.js": 1164, - "../../lodash/_createFind.js": 1165, - "../../lodash/isEqualWith.js": 1166, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/Editor/CallSite.js": 1167, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/Editor/CallSite.css": 1168, - "../../css-loader/index.js!../../../src/components/Editor/CallSite.css": 1169, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/SymbolModal.js": 1170, - "../../extract-text-webpack-plugin/loader.js?{\"0\":\"p\",\"1\":\"o\",\"2\":\"s\",\"3\":\"t\",\"4\":\"c\",\"5\":\"s\",\"6\":\"s\",\"7\":\"-\",\"8\":\"l\",\"9\":\"o\",\"10\":\"a\",\"11\":\"d\",\"12\":\"e\",\"13\":\"r\",\"omit\":1,\"extract\":true,\"remove\":true}!../../style-loader/index.js!../../css-loader/index.js!../../../src/components/SymbolModal.css": 1171, - "../../css-loader/index.js!../../../src/components/SymbolModal.css": 1172, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/search/get-matches.js": 1173, - "../../svg-inline-loader/index.js!../../../assets/images/vuejs.svg": 1174, - "external \"devtools/client/shared/vendor/react\"": 0, - "external \"devtools/client/shared/vendor/lodash\"": 2, - "../../redux/es/index.js": 3, - "external \"devtools/client/shared/vendor/react-dom\"": 4, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../node_modules/webpack/buildin/global.js": 16, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../node_modules/webpack/buildin/module.js": 17, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/sources-tree/utils.js": 18, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../node_modules/redux/lib/index.js": 19, - "../../prop-types/index.js": 20, - "../../core-js/library/modules/_validate-collection.js": 21, - "external \"Services\"": 22, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/wasm.js": 23, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/sources-tree/getURL.js": 24, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../node_modules/redux/lib/createStore.js": 25, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../node_modules/redux/lib/utils/warning.js": 26, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../node_modules/redux/lib/compose.js": 27, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../node_modules/react-redux/lib/index.js": 28, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../node_modules/react-redux/lib/utils/storeShape.js": 29, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../node_modules/react-redux/lib/utils/warning.js": 30, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/reducers/project-text-search.js": 31, - "../../redux/es/createStore.js": 32, - "../../lodash-es/isPlainObject.js": 33, - "../../lodash-es/_Symbol.js": 34, - "../../redux/es/utils/warning.js": 35, - "../../redux/es/compose.js": 36, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/actions/project-text-search.js": 37, - "../../wasmparser/dist/WasmParser.js": 38, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/sources-tree/index.js": 39, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/sources-tree/addToTree.js": 40, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/sources-tree/collapseTree.js": 41, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/grip-map-entry.js": 42, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/SecondaryPanes/Scopes.css": 43, - "../../core-js/library/modules/_set-collection-of.js": 44, - "../../core-js/library/modules/_set-collection-from.js": 45, - "multi ../../../src/main.js": 46, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../node_modules/symbol-observable/index.js": 47, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../node_modules/symbol-observable/ponyfill.js": 48, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../node_modules/redux/lib/combineReducers.js": 49, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../node_modules/redux/lib/bindActionCreators.js": 50, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../node_modules/redux/lib/applyMiddleware.js": 51, - "external \"devtools/shared/flags\"": 52, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../node_modules/react-redux/lib/components/Provider.js": 53, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../node_modules/react-redux/lib/components/connect.js": 54, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../node_modules/react-redux/lib/utils/shallowEqual.js": 55, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../node_modules/react-redux/lib/utils/wrapActionCreators.js": 56, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!components/LandingPage.css": 57, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!components/Tabs.css": 58, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!components/Sidebar.css": 59, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-modules/src/zoom-keys.js": 60, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../devtools-contextmenu/menu.css": 61, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../node_modules/devtools-utils/index.js": 62, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../node_modules/devtools-utils/src/privileged-network-request.js": 63, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../node_modules/devtools-utils/src/worker-utils.js": 64, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!components/Root.css": 65, - "../../querystring-es3/index.js": 66, - "../../querystring-es3/decode.js": 121, - "../../querystring-es3/encode.js": 122, - "../../lodash-es/_baseGetTag.js": 123, - "../../lodash-es/_root.js": 124, - "../../lodash-es/_freeGlobal.js": 125, - "../../lodash-es/_getRawTag.js": 127, - "../../lodash-es/_objectToString.js": 128, - "../../lodash-es/_getPrototype.js": 129, - "../../lodash-es/_overArg.js": 130, - "../../lodash-es/isObjectLike.js": 139, - "../../symbol-observable/lib/index.js": 168, - "../../symbol-observable/lib/ponyfill.js": 169, - "../../redux/es/combineReducers.js": 171, - "../../redux/es/bindActionCreators.js": 173, - "../../redux/es/applyMiddleware.js": 174, - "../../prop-types/factoryWithThrowingShims.js": 177, - "../../fbjs/lib/emptyFunction.js": 178, - "../../fbjs/lib/invariant.js": 180, - "../../prop-types/lib/ReactPropTypesSecret.js": 187, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/actions/breakpoints/remapLocations.js": 188, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/actions/sources/createPrettySource.js": 195, - "../../wasmparser/dist/WasmDis.js": 196, - "external \"devtools/client/sourceeditor/editor\"": 197, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/variables.css": 204, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/App.css": 221, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/shared/menu.css": 225, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/shared/reps.css": 229, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../devtools-splitter/src/SplitBox.css": 246, - "../../svg-inline-loader/index.js!../../../assets/images/angular.svg": 247, - "../../svg-inline-loader/index.js!../../../assets/images/redux.svg": 256, - "../../svg-inline-loader/index.js!../../../assets/images/immutable.svg": 258, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/shared/Svg.css": 807, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/shared/ManagedTree.css": 262, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/shared/Button/Close.css": 264, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/shared/SearchInput.css": 265, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/ProjectSearch/TextSearch.css": 266, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/sources-tree/formatTree.js": 273, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/sources-tree/getDirectories.js": 274, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/sources-tree/createTree.js": 275, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/shared/Autocomplete.css": 279, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/shared/ResultList.css": 281, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/ProjectSearch/ToggleSearch.js": 284, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/ProjectSearch/ProjectSearch.css": 291, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/PrimaryPanes/Sources.css": 292, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/PrimaryPanes/Outline.css": 293, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/shared/previewFunction.css": 294, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/Editor/ConditionalPanel.css": 295, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/shared/Button/PaneToggle.css": 296, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/Editor/Footer.css": 299, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/Editor/SearchBar.css": 300, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../devtools-reps/src/reps/reps.css": 301, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-reps/src/reps/accessor.js": 305, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../devtools-reps/src/object-inspector/index.css": 306, - "../../lodash/has.js": 307, - "../../lodash/_baseHas.js": 308, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/shared/BracketArrow.css": 309, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/shared/Popover.css": 310, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/Editor/Preview.css": 311, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/Editor/CallSite.css": 312, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/Editor/DebugLine.js": 313, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/Editor/Editor.css": 314, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/Editor/Highlight.css": 315, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/SecondaryPanes/Breakpoints.css": 316, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/SecondaryPanes/Expressions.css": 317, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/SecondaryPanes/Frames/Group.css": 318, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/SecondaryPanes/Frames/WhyPaused.css": 323, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/SecondaryPanes/Frames/Frames.css": 324, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/SecondaryPanes/EventListeners.css": 325, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/shared/Accordion.css": 326, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/SecondaryPanes/CommandBar.css": 327, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/SecondaryPanes/SecondaryPanes.css": 328, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/WelcomeBox.css": 329, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/Editor/Tabs.css": 330, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/shared/Dropdown.css": 331, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/shared/Modal.js": 332, - "../../react-transition-group/Transition.js": 333, - "../../react-transition-group/utils/PropTypes.js": 335, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/shared/Modal.css": 337, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/SymbolModal.css": 338, - "multi ../../../src/utils/parser/worker.js": 339, - "../../core-js/library/modules/_to-absolute-index.js": 340, - "../../core-js/library/modules/es7.map.of.js": 341, - "../../core-js/library/modules/es7.map.from.js": 375, - "../../core-js/library/modules/es7.weak-map.of.js": 376, - "../../core-js/library/modules/es7.weak-map.from.js": 379, - "multi ../../../src/utils/pretty-print/worker.js": 380, - "../../pretty-fast/node_modules/acorn/dist/acorn.js": 381, - "multi ../../../src/utils/search/worker.js": 382, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!components/LandingPage.css": 384, - "../node_modules/style-loader/lib/addStyles.js": 385, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../node_modules/style-loader/lib/urls.js": 386, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!components/Tabs.css": 387, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!components/Sidebar.css": 388, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../devtools-contextmenu/menu.css": 390, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!components/Root.css": 391, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/variables.css": 392, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/App.css": 393, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/shared/menu.css": 394, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/shared/reps.css": 395, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../devtools-splitter/src/SplitBox.css": 396, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/shared/Svg.css": 397, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/shared/ManagedTree.css": 404, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/shared/Button/Close.css": 405, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/shared/SearchInput.css": 420, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/ProjectSearch/TextSearch.css": 421, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/shared/Autocomplete.css": 422, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/shared/ResultList.css": 424, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/ProjectSearch/ProjectSearch.css": 425, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/PrimaryPanes/Sources.css": 429, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/PrimaryPanes/Outline.css": 430, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/shared/previewFunction.css": 431, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/Editor/ConditionalPanel.css": 432, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/shared/Button/PaneToggle.css": 434, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/Editor/Footer.css": 475, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/Editor/SearchBar.css": 633, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../devtools-reps/src/reps/reps.css": 847, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../devtools-reps/src/object-inspector/index.css": 848, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/shared/BracketArrow.css": 653, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/shared/Popover.css": 654, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/Editor/Preview.css": 658, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/Editor/CallSite.css": 659, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/Editor/Editor.css": 660, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/Editor/Highlight.css": 661, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/SecondaryPanes/Breakpoints.css": 662, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/SecondaryPanes/Expressions.css": 663, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/SecondaryPanes/Frames/Group.css": 664, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/SecondaryPanes/Frames/WhyPaused.css": 665, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/SecondaryPanes/Frames/Frames.css": 666, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/SecondaryPanes/EventListeners.css": 667, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/shared/Accordion.css": 668, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/SecondaryPanes/CommandBar.css": 669, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/SecondaryPanes/Scopes.css": 670, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/SecondaryPanes/SecondaryPanes.css": 671, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/WelcomeBox.css": 672, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/Editor/Tabs.css": 673, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/shared/Dropdown.css": 674, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/shared/Modal.css": 675, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/SymbolModal.css": 676, - "external \"devtools/client/shared/vendor/WasmParser\"": 677, - "external \"devtools/client/shared/vendor/WasmDis\"": 678, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/SecondaryPanes/Scopes.css": 679, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!components/LandingPage.css": 680, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!components/Tabs.css": 681, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!components/Sidebar.css": 682, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../devtools-contextmenu/menu.css": 683, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!components/Root.css": 684, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/variables.css": 685, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/App.css": 686, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/shared/menu.css": 687, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/shared/reps.css": 688, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../devtools-splitter/src/SplitBox.css": 689, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/shared/Svg.css": 690, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/shared/ManagedTree.css": 691, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/shared/Button/Close.css": 692, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/shared/SearchInput.css": 693, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/ProjectSearch/TextSearch.css": 694, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/shared/Autocomplete.css": 695, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/shared/ResultList.css": 696, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/ProjectSearch/ProjectSearch.css": 697, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/PrimaryPanes/Sources.css": 699, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/PrimaryPanes/Outline.css": 700, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/shared/previewFunction.css": 702, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/Editor/ConditionalPanel.css": 703, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/shared/Button/PaneToggle.css": 704, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/Editor/Footer.css": 705, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/Editor/SearchBar.css": 706, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../devtools-reps/src/reps/reps.css": 707, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../devtools-reps/src/object-inspector/index.css": 708, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/shared/BracketArrow.css": 709, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/shared/Popover.css": 710, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/Editor/Preview.css": 712, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/Editor/CallSite.css": 713, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/Editor/Editor.css": 716, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/Editor/Highlight.css": 717, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/SecondaryPanes/Breakpoints.css": 720, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/SecondaryPanes/Expressions.css": 721, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/SecondaryPanes/Frames/Group.css": 722, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/SecondaryPanes/Frames/WhyPaused.css": 723, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/SecondaryPanes/Frames/Frames.css": 724, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/SecondaryPanes/EventListeners.css": 726, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/shared/Accordion.css": 727, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/SecondaryPanes/CommandBar.css": 729, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/SecondaryPanes/SecondaryPanes.css": 730, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/WelcomeBox.css": 733, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/Editor/Tabs.css": 734, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/shared/Dropdown.css": 735, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/shared/Modal.css": 737, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../../src/components/SymbolModal.css": 738, - "../../css-loader/index.js?{\"importLoaders\":1}!components/LandingPage.css": 740, - "../../css-loader/index.js?{\"importLoaders\":1}!components/Tabs.css": 741, - "../../css-loader/index.js?{\"importLoaders\":1}!components/Sidebar.css": 743, - "../../css-loader/index.js?{\"importLoaders\":1}!../../devtools-contextmenu/menu.css": 744, - "../../css-loader/index.js?{\"importLoaders\":1}!components/Root.css": 745, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/variables.css": 746, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/App.css": 748, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/menu.css": 749, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/reps.css": 752, - "../../css-loader/index.js?{\"importLoaders\":1}!../../devtools-splitter/src/SplitBox.css": 753, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/Svg.css": 754, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/ManagedTree.css": 755, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/Button/Close.css": 756, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/SearchInput.css": 757, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/ProjectSearch/TextSearch.css": 758, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/Autocomplete.css": 759, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/ResultList.css": 760, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/ProjectSearch/ProjectSearch.css": 761, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/PrimaryPanes/Sources.css": 762, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/PrimaryPanes/Outline.css": 763, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/previewFunction.css": 764, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/Editor/ConditionalPanel.css": 765, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/Button/PaneToggle.css": 766, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/Editor/Footer.css": 767, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/Editor/SearchBar.css": 768, - "../../css-loader/index.js?{\"importLoaders\":1}!../../devtools-reps/src/reps/reps.css": 769, - "../../css-loader/index.js?{\"importLoaders\":1}!../../devtools-reps/src/object-inspector/index.css": 770, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/BracketArrow.css": 771, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/Popover.css": 772, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/Editor/Preview.css": 773, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/Editor/CallSite.css": 774, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/Editor/Editor.css": 775, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/Editor/Highlight.css": 776, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/SecondaryPanes/Breakpoints.css": 777, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/SecondaryPanes/Expressions.css": 778, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/SecondaryPanes/Frames/Group.css": 779, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/SecondaryPanes/Frames/WhyPaused.css": 780, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/SecondaryPanes/Frames/Frames.css": 781, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/SecondaryPanes/EventListeners.css": 782, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/Accordion.css": 783, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/SecondaryPanes/CommandBar.css": 784, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/SecondaryPanes/Scopes.css": 785, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/SecondaryPanes/SecondaryPanes.css": 786, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/WelcomeBox.css": 787, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/Editor/Tabs.css": 788, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/Dropdown.css": 789, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/Modal.css": 790, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/SymbolModal.css": 791, - "../../webpack/buildin/global.js": 792, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/sources-tree/sortTree.js": 794, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/source-maps.js": 797, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/shared/PreviewFunction.js": 798, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/breakpoint/astBreakpointLocation.js": 804, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/selectors/isSelectedFrameVisible.js": 805, - "../../svg-inline-loader/index.js!../../../assets/images/dojo.svg": 806, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/shared/PreviewFunction.css": 808, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/Editor/Preview/index.js": 809, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/Editor/Preview/Popup.js": 810, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/Editor/Preview/Popup.css": 811, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/parser/steps.js": 842, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../flow-typed/debugger-html.js": 843, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/parser/types.js": 844, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/parser/getEmptyLines.js": 845, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/shared/PreviewFunction.css": 846, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/Editor/Preview/Popup.css": 849, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/SecondaryPanes/Scopes.css": 850, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!components/LandingPage.css": 851, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!components/Tabs.css": 852, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!components/Sidebar.css": 853, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../devtools-contextmenu/menu.css": 854, - "../../url-loader/index.js!../assets/under_construction.png": 855, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!components/Root.css": 856, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/variables.css": 857, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/App.css": 858, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/shared/menu.css": 859, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/shared/reps.css": 860, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../devtools-splitter/src/SplitBox.css": 861, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/shared/Svg.css": 862, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/shared/ManagedTree.css": 863, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/shared/Button/Close.css": 864, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/shared/SearchInput.css": 865, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/ProjectSearch/TextSearch.css": 866, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/shared/Autocomplete.css": 867, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/shared/ResultList.css": 868, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/ProjectSearch/ProjectSearch.css": 869, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/PrimaryPanes/Sources.css": 870, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/PrimaryPanes/Outline.css": 871, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/shared/PreviewFunction.css": 872, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/Editor/ConditionalPanel.css": 873, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/shared/Button/PaneToggle.css": 874, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/Editor/Footer.css": 875, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/Editor/SearchBar.css": 876, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../devtools-reps/src/reps/reps.css": 877, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../devtools-reps/src/object-inspector/index.css": 878, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/shared/BracketArrow.css": 879, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/shared/Popover.css": 880, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/Editor/Preview/Popup.css": 881, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/Editor/CallSite.css": 882, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/Editor/Editor.css": 905, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/Editor/Highlight.css": 906, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/SecondaryPanes/Breakpoints.css": 907, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/SecondaryPanes/Expressions.css": 908, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/SecondaryPanes/Frames/Group.css": 909, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/SecondaryPanes/Frames/WhyPaused.css": 913, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/SecondaryPanes/Frames/Frames.css": 914, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/SecondaryPanes/EventListeners.css": 915, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/shared/Accordion.css": 917, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/SecondaryPanes/CommandBar.css": 918, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/SecondaryPanes/SecondaryPanes.css": 921, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/WelcomeBox.css": 922, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/Editor/Tabs.css": 923, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/shared/Dropdown.css": 935, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/shared/Modal.css": 952, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/SymbolModal.css": 962, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/PreviewFunction.css": 966, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/Editor/Preview/Popup.css": 973, - "../../../src/components/SecondaryPanes/Scopes.css": 974, - "components/LandingPage.css": 995, - "components/Tabs.css": 1005, - "components/Sidebar.css": 1006, - "../../devtools-contextmenu/menu.css": 1009, - "components/Root.css": 1010, - "../../../src/components/variables.css": 1011, - "../../../src/components/App.css": 1016, - "../../../src/components/shared/menu.css": 1017, - "../../../src/components/shared/reps.css": 1018, - "../../devtools-splitter/src/SplitBox.css": 1019, - "../../../src/components/shared/Svg.css": 1020, - "../../../src/components/shared/ManagedTree.css": 1021, - "../../../src/components/shared/Button/Close.css": 1022, - "../../../src/components/shared/SearchInput.css": 1024, - "../../../src/components/ProjectSearch/TextSearch.css": 1026, - "../../../src/components/shared/Autocomplete.css": 1027, - "../../../src/components/shared/ResultList.css": 1028, - "../../../src/components/ProjectSearch/ProjectSearch.css": 1030, - "../../../src/components/PrimaryPanes/Sources.css": 1031, - "../../../src/components/PrimaryPanes/Outline.css": 1034, - "../../../src/components/shared/PreviewFunction.css": 1035, - "../../../src/components/Editor/ConditionalPanel.css": 1036, - "../../../src/components/shared/Button/PaneToggle.css": 1037, - "../../../src/components/Editor/Footer.css": 1038, - "../../../src/components/Editor/SearchBar.css": 1039, - "../../devtools-reps/src/reps/reps.css": 1040, - "../../devtools-reps/src/object-inspector/index.css": 1041, - "../../../src/components/shared/BracketArrow.css": 1042, - "../../../src/components/shared/Popover.css": 1046, - "../../../src/components/Editor/Preview/Popup.css": 1047, - "../../../src/components/Editor/CallSite.css": 1048, - "../../../src/components/Editor/Editor.css": 1054, - "../../../src/components/Editor/Highlight.css": 1060, - "../../../src/components/SecondaryPanes/Breakpoints.css": 1061, - "../../../src/components/SecondaryPanes/Expressions.css": 1062, - "../../../src/components/SecondaryPanes/Frames/Group.css": 1063, - "../../../src/components/SecondaryPanes/Frames/WhyPaused.css": 1065, - "../../../src/components/SecondaryPanes/Frames/Frames.css": 1066, - "../../../src/components/SecondaryPanes/EventListeners.css": 1067, - "../../../src/components/shared/Accordion.css": 1068, - "../../../src/components/SecondaryPanes/CommandBar.css": 1069, - "../../../src/components/SecondaryPanes/SecondaryPanes.css": 1070, - "../../../src/components/WelcomeBox.css": 1071, - "../../../src/components/Editor/Tabs.css": 1116, - "../../../src/components/shared/Dropdown.css": 1121, - "../../../src/components/shared/Modal.css": 1122, - "../../../src/components/SymbolModal.css": 1125, - "../../svg-inline-loader/index.js!../assets/rocket.svg": 1126, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/parser/utils/contains.js": 1127, - "../../lodash/difference.js": 1129, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/reducers/source-search.js": 1132, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/actions/sources/loadSourceText.js": 1143, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/actions/source-search.js": 1144, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/Editor/EmptyLines.js": 1146, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/Editor/EmptyLines.css": 1147, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/SecondaryPanes/Workers.js": 1149, - "../../extract-text-webpack-plugin/dist/loader.js??ref--4-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/SecondaryPanes/Workers.css": 1150, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/Editor/EmptyLines.css": 1156, - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/SecondaryPanes/Workers.css": 1160, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/Editor/EmptyLines.css": 1161, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/SecondaryPanes/Workers.css": 1162, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/Editor/EmptyLines.css": 1163, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/SecondaryPanes/Workers.css": 1164, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-source-map/node_modules/devtools-utils/index.js": 1165, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-source-map/node_modules/devtools-utils/src/privileged-network-request.js": 1166, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-source-map/node_modules/devtools-utils/src/worker-utils.js": 1168, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/function.js": 1169, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/parser/sources.js": 1171, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-source-map/src/utils/index.js": 1172, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/reducers/debuggee.js": 1175, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/reducers/source-tree.js": 1176, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/expressions.js": 1177, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/actions/source-tree.js": 1178, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/actions/debuggee.js": 1179, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/actions/toolbox.js": 1180, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/ShortcutsModal.js": 1181, - "../../extract-text-webpack-plugin/dist/loader.js??ref--5-0!../node_modules/style-loader/index.js!../../css-loader/index.js??ref--5-2!../../../src/components/ShortcutsModal.css": 1182, - "../../svg-inline-loader/index.js!../../../assets/images/shortcut.svg": 1183, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/ProjectSearch/textSearch/utils/highlight.js": 1184, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/components/SecondaryPanes/UtilsBar.js": 1185, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/parser/getScopes.js": 1186, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-map-bindings/src/parser.js": 1187, - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/ShortcutsModal.css": 1188, - "../../react-redux/es/index.js": 1189, - "../../react-redux/es/utils/warning.js": 1190, - "../../react-redux/es/utils/PropTypes.js": 1191, - "../../react-redux/es/components/connectAdvanced.js": 1192, - "../../react-redux/es/connect/wrapMapToProps.js": 1193, - "../../react-redux/es/utils/verifyPlainObject.js": 1194, - "../../react-redux/es/components/Provider.js": 1195, - "../../react-redux/node_modules/hoist-non-react-statics/index.js": 1196, - "../../react-redux/es/utils/Subscription.js": 1197, - "../../react-redux/es/connect/connect.js": 1198, - "../../react-redux/es/utils/shallowEqual.js": 1199, - "../../react-redux/es/connect/mapDispatchToProps.js": 1200, - "../../react-redux/es/connect/mapStateToProps.js": 1201, - "../../react-redux/es/connect/mergeProps.js": 1202, - "../../react-redux/es/connect/selectorFactory.js": 1203, - "../../react-redux/es/connect/verifySubselectors.js": 1204, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../node_modules/svg-inline-react/dist/index.js": 1205, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../devtools-map-bindings/src/utils.js": 1206, - "../../babel-loader/lib/index.js?plugins[]=transform-flow-strip-types,plugins[]=transform-async-to-generator&ignore=src/lib!../../../src/utils/parser/validate.js": 1207 - }, - "usedIds": { - "0": 0, - "1": 1, - "2": 2, - "3": 3, - "4": 4, - "5": 5, - "6": 6, - "7": 7, - "8": 8, - "9": 9, - "10": 10, - "11": 11, - "12": 12, - "13": 13, - "14": 14, - "15": 15, - "16": 16, - "17": 17, - "18": 18, - "19": 19, - "20": 20, - "21": 21, - "22": 22, - "23": 23, - "24": 24, - "25": 25, - "26": 26, - "27": 27, - "28": 28, - "29": 29, - "30": 30, - "31": 31, - "32": 32, - "33": 33, - "34": 34, - "35": 35, - "36": 36, - "37": 37, - "38": 38, - "39": 39, - "40": 40, - "41": 41, - "42": 42, - "43": 43, - "44": 44, - "45": 45, - "46": 46, - "47": 47, - "48": 48, - "49": 49, - "50": 50, - "51": 51, - "52": 52, - "53": 53, - "54": 54, - "55": 55, - "56": 56, - "57": 57, - "58": 58, - "59": 59, - "60": 60, - "61": 61, - "62": 62, - "63": 63, - "64": 64, - "65": 65, - "66": 66, - "67": 67, - "68": 68, - "69": 69, - "70": 70, - "71": 71, - "72": 72, - "73": 73, - "74": 74, - "75": 75, - "76": 76, - "77": 77, - "78": 78, - "79": 79, - "80": 80, - "81": 81, - "82": 82, - "83": 83, - "84": 84, - "85": 85, - "86": 86, - "87": 87, - "88": 88, - "89": 89, - "90": 90, - "91": 91, - "92": 92, - "93": 93, - "94": 94, - "95": 95, - "96": 96, - "97": 97, - "98": 98, - "99": 99, - "100": 100, - "101": 101, - "102": 102, - "103": 103, - "104": 104, - "105": 105, - "106": 106, - "107": 107, - "108": 108, - "109": 109, - "110": 110, - "111": 111, - "112": 112, - "113": 113, - "114": 114, - "115": 115, - "116": 116, - "117": 117, - "118": 118, - "119": 119, - "120": 120, - "121": 121, - "122": 122, - "123": 123, - "124": 124, - "125": 125, - "126": 126, - "127": 127, - "128": 128, - "129": 129, - "130": 130, - "131": 131, - "132": 132, - "133": 133, - "134": 134, - "135": 135, - "136": 136, - "137": 137, - "138": 138, - "139": 139, - "140": 140, - "141": 141, - "142": 142, - "143": 143, - "144": 144, - "145": 145, - "146": 146, - "147": 147, - "148": 148, - "149": 149, - "150": 150, - "151": 151, - "152": 152, - "153": 153, - "154": 154, - "155": 155, - "156": 156, - "157": 157, - "158": 158, - "159": 159, - "160": 160, - "161": 161, - "162": 162, - "163": 163, - "164": 164, - "165": 165, - "166": 166, - "167": 167, - "168": 168, - "169": 169, - "170": 170, - "171": 171, - "172": 172, - "173": 173, - "174": 174, - "175": 175, - "176": 176, - "177": 177, - "178": 178, - "179": 179, - "180": 180, - "181": 181, - "182": 182, - "183": 183, - "184": 184, - "185": 185, - "186": 186, - "187": 187, - "188": 188, - "189": 189, - "190": 190, - "191": 191, - "192": 192, - "193": 193, - "194": 194, - "195": 195, - "196": 196, - "197": 197, - "198": 198, - "199": 199, - "200": 200, - "201": 201, - "202": 202, - "203": 203, - "204": 204, - "205": 205, - "206": 206, - "207": 207, - "208": 208, - "209": 209, - "210": 210, - "211": 211, - "212": 212, - "213": 213, - "214": 214, - "215": 215, - "216": 216, - "217": 217, - "218": 218, - "219": 219, - "220": 220, - "221": 221, - "222": 222, - "223": 223, - "224": 224, - "225": 225, - "226": 226, - "227": 227, - "228": 228, - "229": 229, - "230": 230, - "231": 231, - "232": 232, - "233": 233, - "234": 234, - "235": 235, - "236": 236, - "237": 237, - "238": 238, - "239": 239, - "240": 240, - "241": 241, - "242": 242, - "243": 243, - "244": 244, - "245": 245, - "246": 246, - "247": 247, - "248": 248, - "249": 249, - "250": 250, - "251": 251, - "252": 252, - "253": 253, - "254": 254, - "255": 255, - "256": 256, - "257": 257, - "258": 258, - "259": 259, - "260": 260, - "261": 261, - "262": 262, - "263": 263, - "264": 264, - "265": 265, - "266": 266, - "267": 267, - "268": 268, - "269": 269, - "270": 270, - "271": 271, - "272": 272, - "273": 273, - "274": 274, - "275": 275, - "276": 276, - "277": 277, - "278": 278, - "279": 279, - "280": 280, - "281": 281, - "282": 282, - "283": 283, - "284": 284, - "285": 285, - "286": 286, - "287": 287, - "288": 288, - "289": 289, - "290": 290, - "291": 291, - "292": 292, - "293": 293, - "294": 294, - "295": 295, - "296": 296, - "297": 297, - "298": 298, - "299": 299, - "300": 300, - "301": 301, - "302": 302, - "303": 303, - "304": 304, - "305": 305, - "306": 306, - "307": 307, - "308": 308, - "309": 309, - "310": 310, - "311": 311, - "312": 312, - "313": 313, - "314": 314, - "315": 315, - "316": 316, - "317": 317, - "318": 318, - "319": 319, - "320": 320, - "321": 321, - "322": 322, - "323": 323, - "324": 324, - "325": 325, - "326": 326, - "327": 327, - "328": 328, - "329": 329, - "330": 330, - "331": 331, - "332": 332, - "333": 333, - "334": 334, - "335": 335, - "336": 336, - "337": 337, - "338": 338, - "339": 339, - "340": 340, - "341": 341, - "342": 342, - "343": 343, - "344": 344, - "345": 345, - "346": 346, - "347": 347, - "348": 348, - "349": 349, - "350": 350, - "351": 351, - "352": 352, - "353": 353, - "354": 354, - "355": 355, - "356": 356, - "357": 357, - "358": 358, - "359": 359, - "360": 360, - "361": 361, - "362": 362, - "363": 363, - "364": 364, - "365": 365, - "366": 366, - "367": 367, - "368": 368, - "369": 369, - "370": 370, - "371": 371, - "372": 372, - "373": 373, - "374": 374, - "375": 375, - "376": 376, - "377": 377, - "378": 378, - "379": 379, - "380": 380, - "381": 381, - "382": 382, - "383": 383, - "384": 384, - "385": 385, - "386": 386, - "387": 387, - "388": 388, - "389": 389, - "390": 390, - "391": 391, - "392": 392, - "393": 393, - "394": 394, - "395": 395, - "396": 396, - "397": 397, - "398": 398, - "399": 399, - "400": 400, - "401": 401, - "402": 402, - "403": 403, - "404": 404, - "405": 405, - "406": 406, - "407": 407, - "408": 408, - "409": 409, - "410": 410, - "411": 411, - "412": 412, - "413": 413, - "414": 414, - "415": 415, - "416": 416, - "417": 417, - "418": 418, - "419": 419, - "420": 420, - "421": 421, - "422": 422, - "423": 423, - "424": 424, - "425": 425, - "426": 426, - "427": 427, - "428": 428, - "429": 429, - "430": 430, - "431": 431, - "432": 432, - "433": 433, - "434": 434, - "435": 435, - "436": 436, - "437": 437, - "438": 438, - "439": 439, - "440": 440, - "441": 441, - "442": 442, - "443": 443, - "444": 444, - "445": 445, - "446": 446, - "447": 447, - "448": 448, - "449": 449, - "450": 450, - "451": 451, - "452": 452, - "453": 453, - "454": 454, - "455": 455, - "456": 456, - "457": 457, - "458": 458, - "459": 459, - "460": 460, - "461": 461, - "462": 462, - "463": 463, - "464": 464, - "465": 465, - "466": 466, - "467": 467, - "468": 468, - "469": 469, - "470": 470, - "471": 471, - "472": 472, - "473": 473, - "474": 474, - "475": 475, - "476": 476, - "477": 477, - "478": 478, - "479": 479, - "480": 480, - "481": 481, - "482": 482, - "483": 483, - "484": 484, - "485": 485, - "486": 486, - "487": 487, - "488": 488, - "489": 489, - "490": 490, - "491": 491, - "492": 492, - "493": 493, - "494": 494, - "495": 495, - "496": 496, - "497": 497, - "498": 498, - "499": 499, - "500": 500, - "501": 501, - "502": 502, - "503": 503, - "504": 504, - "505": 505, - "506": 506, - "507": 507, - "508": 508, - "509": 509, - "510": 510, - "511": 511, - "512": 512, - "513": 513, - "514": 514, - "515": 515, - "516": 516, - "517": 517, - "518": 518, - "519": 519, - "520": 520, - "521": 521, - "522": 522, - "523": 523, - "524": 524, - "525": 525, - "526": 526, - "527": 527, - "528": 528, - "529": 529, - "530": 530, - "531": 531, - "532": 532, - "533": 533, - "534": 534, - "535": 535, - "536": 536, - "537": 537, - "538": 538, - "539": 539, - "540": 540, - "541": 541, - "542": 542, - "543": 543, - "544": 544, - "545": 545, - "546": 546, - "547": 547, - "548": 548, - "549": 549, - "550": 550, - "551": 551, - "552": 552, - "553": 553, - "554": 554, - "555": 555, - "556": 556, - "557": 557, - "558": 558, - "559": 559, - "560": 560, - "561": 561, - "562": 562, - "563": 563, - "564": 564, - "565": 565, - "566": 566, - "567": 567, - "568": 568, - "569": 569, - "570": 570, - "571": 571, - "572": 572, - "573": 573, - "574": 574, - "575": 575, - "576": 576, - "577": 577, - "578": 578, - "579": 579, - "580": 580, - "581": 581, - "582": 582, - "583": 583, - "584": 584, - "585": 585, - "586": 586, - "587": 587, - "588": 588, - "589": 589, - "590": 590, - "591": 591, - "592": 592, - "593": 593, - "594": 594, - "595": 595, - "596": 596, - "597": 597, - "598": 598, - "599": 599, - "600": 600, - "601": 601, - "602": 602, - "603": 603, - "604": 604, - "605": 605, - "606": 606, - "607": 607, - "608": 608, - "609": 609, - "610": 610, - "611": 611, - "612": 612, - "613": 613, - "614": 614, - "615": 615, - "616": 616, - "617": 617, - "618": 618, - "619": 619, - "620": 620, - "621": 621, - "622": 622, - "623": 623, - "624": 624, - "625": 625, - "626": 626, - "627": 627, - "628": 628, - "629": 629, - "630": 630, - "631": 631, - "632": 632, - "633": 633, - "634": 634, - "635": 635, - "636": 636, - "637": 637, - "638": 638, - "639": 639, - "640": 640, - "641": 641, - "642": 642, - "643": 643, - "644": 644, - "645": 645, - "646": 646, - "647": 647, - "648": 648, - "649": 649, - "650": 650, - "651": 651, - "652": 652, - "653": 653, - "654": 654, - "655": 655, - "656": 656, - "657": 657, - "658": 658, - "659": 659, - "660": 660, - "661": 661, - "662": 662, - "663": 663, - "664": 664, - "665": 665, - "666": 666, - "667": 667, - "668": 668, - "669": 669, - "670": 670, - "671": 671, - "672": 672, - "673": 673, - "674": 674, - "675": 675, - "676": 676, - "677": 677, - "678": 678, - "679": 679, - "680": 680, - "681": 681, - "682": 682, - "683": 683, - "684": 684, - "685": 685, - "686": 686, - "687": 687, - "688": 688, - "689": 689, - "690": 690, - "691": 691, - "692": 692, - "693": 693, - "694": 694, - "695": 695, - "696": 696, - "697": 697, - "698": 698, - "699": 699, - "700": 700, - "701": 701, - "702": 702, - "703": 703, - "704": 704, - "705": 705, - "706": 706, - "707": 707, - "708": 708, - "709": 709, - "710": 710, - "711": 711, - "712": 712, - "713": 713, - "714": 714, - "715": 715, - "716": 716, - "717": 717, - "718": 718, - "719": 719, - "720": 720, - "721": 721, - "722": 722, - "723": 723, - "724": 724, - "725": 725, - "726": 726, - "727": 727, - "728": 728, - "729": 729, - "730": 730, - "731": 731, - "732": 732, - "733": 733, - "734": 734, - "735": 735, - "736": 736, - "737": 737, - "738": 738, - "739": 739, - "740": 740, - "741": 741, - "742": 742, - "743": 743, - "744": 744, - "745": 745, - "746": 746, - "747": 747, - "748": 748, - "749": 749, - "750": 750, - "751": 751, - "752": 752, - "753": 753, - "754": 754, - "755": 755, - "756": 756, - "757": 757, - "758": 758, - "759": 759, - "760": 760, - "761": 761, - "762": 762, - "763": 763, - "764": 764, - "765": 765, - "766": 766, - "767": 767, - "768": 768, - "769": 769, - "770": 770, - "771": 771, - "772": 772, - "773": 773, - "774": 774, - "775": 775, - "776": 776, - "777": 777, - "778": 778, - "779": 779, - "780": 780, - "781": 781, - "782": 782, - "783": 783, - "784": 784, - "785": 785, - "786": 786, - "787": 787, - "788": 788, - "789": 789, - "790": 790, - "791": 791, - "792": 792, - "793": 793, - "794": 794, - "795": 795, - "796": 796, - "797": 797, - "798": 798, - "799": 799, - "800": 800, - "801": 801, - "802": 802, - "803": 803, - "804": 804, - "805": 805, - "806": 806, - "807": 807, - "808": 808, - "809": 809, - "810": 810, - "811": 811, - "812": 812, - "813": 813, - "814": 814, - "815": 815, - "816": 816, - "817": 817, - "818": 818, - "819": 819, - "820": 820, - "821": 821, - "822": 822, - "823": 823, - "824": 824, - "825": 825, - "826": 826, - "827": 827, - "828": 828, - "829": 829, - "830": 830, - "831": 831, - "832": 832, - "833": 833, - "834": 834, - "835": 835, - "836": 836, - "837": 837, - "838": 838, - "839": 839, - "840": 840, - "841": 841, - "842": 842, - "843": 843, - "844": 844, - "845": 845, - "846": 846, - "847": 847, - "848": 848, - "849": 849, - "850": 850, - "851": 851, - "852": 852, - "853": 853, - "854": 854, - "855": 855, - "856": 856, - "857": 857, - "858": 858, - "859": 859, - "860": 860, - "861": 861, - "862": 862, - "863": 863, - "864": 864, - "865": 865, - "866": 866, - "867": 867, - "868": 868, - "869": 869, - "870": 870, - "871": 871, - "872": 872, - "873": 873, - "874": 874, - "875": 875, - "876": 876, - "877": 877, - "878": 878, - "879": 879, - "880": 880, - "881": 881, - "882": 882, - "883": 883, - "884": 884, - "885": 885, - "886": 886, - "887": 887, - "888": 888, - "889": 889, - "890": 890, - "891": 891, - "892": 892, - "893": 893, - "894": 894, - "895": 895, - "896": 896, - "897": 897, - "898": 898, - "899": 899, - "900": 900, - "901": 901, - "902": 902, - "903": 903, - "904": 904, - "905": 905, - "906": 906, - "907": 907, - "908": 908, - "909": 909, - "910": 910, - "911": 911, - "912": 912, - "913": 913, - "914": 914, - "915": 915, - "916": 916, - "917": 917, - "918": 918, - "919": 919, - "920": 920, - "921": 921, - "922": 922, - "923": 923, - "924": 924, - "925": 925, - "926": 926, - "927": 927, - "928": 928, - "929": 929, - "930": 930, - "931": 931, - "932": 932, - "933": 933, - "934": 934, - "935": 935, - "936": 936, - "937": 937, - "938": 938, - "939": 939, - "940": 940, - "941": 941, - "942": 942, - "943": 943, - "944": 944, - "945": 945, - "946": 946, - "947": 947, - "948": 948, - "949": 949, - "950": 950, - "951": 951, - "952": 952, - "953": 953, - "954": 954, - "955": 955, - "956": 956, - "957": 957, - "958": 958, - "959": 959, - "960": 960, - "961": 961, - "962": 962, - "963": 963, - "964": 964, - "965": 965, - "966": 966, - "967": 967, - "968": 968, - "969": 969, - "970": 970, - "971": 971, - "972": 972, - "973": 973, - "974": 974, - "975": 975, - "976": 976, - "977": 977, - "978": 978, - "979": 979, - "980": 980, - "981": 981, - "982": 982, - "983": 983, - "984": 984, - "985": 985, - "986": 986, - "987": 987, - "988": 988, - "989": 989, - "990": 990, - "991": 991, - "992": 992, - "993": 993, - "994": 994, - "995": 995, - "996": 996, - "997": 997, - "998": 998, - "999": 999, - "1000": 1000, - "1001": 1001, - "1002": 1002, - "1003": 1003, - "1004": 1004, - "1005": 1005, - "1006": 1006, - "1007": 1007, - "1008": 1008, - "1009": 1009, - "1010": 1010, - "1011": 1011, - "1012": 1012, - "1013": 1013, - "1014": 1014, - "1015": 1015, - "1016": 1016, - "1017": 1017, - "1018": 1018, - "1019": 1019, - "1020": 1020, - "1021": 1021, - "1022": 1022, - "1023": 1023, - "1024": 1024, - "1025": 1025, - "1026": 1026, - "1027": 1027, - "1028": 1028, - "1029": 1029, - "1030": 1030, - "1031": 1031, - "1032": 1032, - "1033": 1033, - "1034": 1034, - "1035": 1035, - "1036": 1036, - "1037": 1037, - "1038": 1038, - "1039": 1039, - "1040": 1040, - "1041": 1041, - "1042": 1042, - "1043": 1043, - "1044": 1044, - "1045": 1045, - "1046": 1046, - "1047": 1047, - "1048": 1048, - "1049": 1049, - "1050": 1050, - "1051": 1051, - "1052": 1052, - "1053": 1053, - "1054": 1054, - "1055": 1055, - "1056": 1056, - "1057": 1057, - "1058": 1058, - "1059": 1059, - "1060": 1060, - "1061": 1061, - "1062": 1062, - "1063": 1063, - "1064": 1064, - "1065": 1065, - "1066": 1066, - "1067": 1067, - "1068": 1068, - "1069": 1069, - "1070": 1070, - "1071": 1071, - "1072": 1072, - "1073": 1073, - "1074": 1074, - "1075": 1075, - "1076": 1076, - "1077": 1077, - "1078": 1078, - "1079": 1079, - "1080": 1080, - "1081": 1081, - "1082": 1082, - "1083": 1083, - "1084": 1084, - "1085": 1085, - "1086": 1086, - "1087": 1087, - "1088": 1088, - "1089": 1089, - "1090": 1090, - "1091": 1091, - "1092": 1092, - "1093": 1093, - "1094": 1094, - "1095": 1095, - "1096": 1096, - "1097": 1097, - "1098": 1098, - "1099": 1099, - "1100": 1100, - "1101": 1101, - "1102": 1102, - "1103": 1103, - "1104": 1104, - "1105": 1105, - "1106": 1106, - "1107": 1107, - "1108": 1108, - "1109": 1109, - "1110": 1110, - "1111": 1111, - "1112": 1112, - "1113": 1113, - "1114": 1114, - "1115": 1115, - "1116": 1116, - "1117": 1117, - "1118": 1118, - "1119": 1119, - "1120": 1120, - "1121": 1121, - "1122": 1122, - "1123": 1123, - "1124": 1124, - "1125": 1125, - "1126": 1126, - "1127": 1127, - "1128": 1128, - "1129": 1129, - "1130": 1130, - "1131": 1131, - "1132": 1132, - "1133": 1133, - "1134": 1134, - "1135": 1135, - "1136": 1136, - "1137": 1137, - "1138": 1138, - "1139": 1139, - "1140": 1140, - "1141": 1141, - "1142": 1142, - "1143": 1143, - "1144": 1144, - "1145": 1145, - "1146": 1146, - "1147": 1147, - "1148": 1148, - "1149": 1149, - "1150": 1150, - "1151": 1151, - "1152": 1152, - "1153": 1153, - "1154": 1154, - "1155": 1155, - "1156": 1156, - "1157": 1157, - "1158": 1158, - "1159": 1159, - "1160": 1160, - "1161": 1161, - "1162": 1162, - "1163": 1163, - "1164": 1164, - "1165": 1165, - "1166": 1166, - "1167": 1167, - "1168": 1168, - "1169": 1169, - "1170": 1170, - "1171": 1171, - "1172": 1172, - "1173": 1173, - "1174": 1174, - "1175": 1175, - "1176": 1176, - "1177": 1177, - "1178": 1178, - "1179": 1179, - "1180": 1180, - "1181": 1181, - "1182": 1182, - "1183": 1183, - "1184": 1184, - "1185": 1185, - "1186": 1186, - "1187": 1187, - "1188": 1188, - "1189": 1189, - "1190": 1190, - "1191": 1191, - "1192": 1192, - "1193": 1193, - "1194": 1194, - "1195": 1195, - "1196": 1196, - "1197": 1197, - "1198": 1198, - "1199": 1199, - "1200": 1200, - "1201": 1201, - "1202": 1202, - "1203": 1203, - "1204": 1204, - "1205": 1205, - "1206": 1206, - "1207": 1207 - } - }, - "chunks": { - "byName": { - "debugger": 0, - "integration-tests": 1, - "pretty-print-worker": 2, - "source-map-worker": 3, - "parser-worker": 4, - "search-worker": 5 - }, - "byBlocks": {}, - "usedIds": { - "0": 0, - "2": 2, - "4": 4, - "5": 5 - } - }, - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/variables.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/variables.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/App.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/App.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/shared/menu.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/shared/reps.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/shared/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/SymbolModal.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/SymbolModal.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/shared/ResultList.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/shared/ResultList.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/shared/SearchInput.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/shared/SearchInput.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/shared/Button/Close.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/shared/Button/Close.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/shared/Svg.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/shared/Svg.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/shared/Modal.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/shared/Modal.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/Editor/Tabs.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/Editor/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/shared/Dropdown.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/shared/Dropdown.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/shared/Button/PaneToggle.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/shared/Button/PaneToggle.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/WelcomeBox.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/WelcomeBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/SecondaryPanes/SecondaryPanes.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/SecondaryPanes/SecondaryPanes.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/SecondaryPanes/Scopes.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/SecondaryPanes/Scopes.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../devtools-reps/src/object-inspector/index.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../devtools-reps/src/object-inspector/index.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../devtools-reps/src/reps/reps.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../devtools-reps/src/reps/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/shared/ManagedTree.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/shared/ManagedTree.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/SecondaryPanes/CommandBar.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/SecondaryPanes/CommandBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/shared/Accordion.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/shared/Accordion.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/SecondaryPanes/EventListeners.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/SecondaryPanes/EventListeners.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/SecondaryPanes/Frames/Frames.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/SecondaryPanes/Frames/Frames.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/SecondaryPanes/Frames/WhyPaused.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/SecondaryPanes/Frames/WhyPaused.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/SecondaryPanes/Frames/Group.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/SecondaryPanes/Frames/Group.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/SecondaryPanes/Expressions.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/SecondaryPanes/Expressions.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/SecondaryPanes/Breakpoints.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/SecondaryPanes/Breakpoints.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/Editor/Editor.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/Editor/Editor.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/Editor/Highlight.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/Editor/Highlight.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/Editor/CallSite.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/Editor/CallSite.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/Editor/Preview.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/Editor/Preview.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/shared/previewFunction.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/shared/previewFunction.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/shared/Popover.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/shared/Popover.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/shared/BracketArrow.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/shared/BracketArrow.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/Editor/SearchBar.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/Editor/SearchBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/Editor/Footer.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/Editor/Footer.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/Editor/ConditionalPanel.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/Editor/ConditionalPanel.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/PrimaryPanes/Sources.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/PrimaryPanes/Sources.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/PrimaryPanes/Outline.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/PrimaryPanes/Outline.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/ProjectSearch/ProjectSearch.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/ProjectSearch/ProjectSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/shared/Autocomplete.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/shared/Autocomplete.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/ProjectSearch/TextSearch.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/ProjectSearch/TextSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../devtools-splitter/src/SplitBox.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../devtools-splitter/src/SplitBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!components/Root.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!components/Root.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../devtools-contextmenu/menu.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../devtools-contextmenu/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!components/LandingPage.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!components/LandingPage.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!components/Sidebar.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!components/Sidebar.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!components/Tabs.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!components/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/variables.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/variables.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/App.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/App.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/shared/menu.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/shared/reps.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/SymbolModal.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/SymbolModal.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/shared/ResultList.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/ResultList.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/shared/SearchInput.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/SearchInput.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/shared/Button/Close.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/Button/Close.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/shared/Svg.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/Svg.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/shared/Modal.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/Modal.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/Editor/Tabs.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/Editor/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/shared/Dropdown.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/Dropdown.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/shared/Button/PaneToggle.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/Button/PaneToggle.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/WelcomeBox.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/WelcomeBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/SecondaryPanes/SecondaryPanes.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/SecondaryPanes/SecondaryPanes.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/SecondaryPanes/Scopes.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/SecondaryPanes/Scopes.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../devtools-reps/src/object-inspector/index.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../devtools-reps/src/object-inspector/index.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../devtools-reps/src/reps/reps.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../devtools-reps/src/reps/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/shared/ManagedTree.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/ManagedTree.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "1": 1 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/SecondaryPanes/CommandBar.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/SecondaryPanes/CommandBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/shared/Accordion.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/Accordion.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/SecondaryPanes/EventListeners.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/SecondaryPanes/EventListeners.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/SecondaryPanes/Frames/Frames.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/SecondaryPanes/Frames/Frames.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/SecondaryPanes/Frames/WhyPaused.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/SecondaryPanes/Frames/WhyPaused.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/SecondaryPanes/Frames/Group.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/SecondaryPanes/Frames/Group.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/SecondaryPanes/Expressions.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/SecondaryPanes/Expressions.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/SecondaryPanes/Breakpoints.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/SecondaryPanes/Breakpoints.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/Editor/Editor.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/Editor/Editor.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/Editor/Highlight.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/Editor/Highlight.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/Editor/CallSite.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/Editor/CallSite.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "1": 1 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/Editor/Preview.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/Editor/Preview.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/shared/previewFunction.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/previewFunction.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/shared/Popover.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/Popover.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/shared/BracketArrow.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/BracketArrow.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/Editor/SearchBar.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/Editor/SearchBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/Editor/Footer.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/Editor/Footer.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/Editor/ConditionalPanel.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/Editor/ConditionalPanel.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/PrimaryPanes/Sources.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/PrimaryPanes/Sources.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/PrimaryPanes/Outline.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/PrimaryPanes/Outline.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/ProjectSearch/ProjectSearch.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/ProjectSearch/ProjectSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/shared/Autocomplete.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/Autocomplete.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../../src/components/ProjectSearch/TextSearch.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/ProjectSearch/TextSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "1": 1 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../devtools-splitter/src/SplitBox.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../devtools-splitter/src/SplitBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!components/Root.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!components/Root.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../devtools-contextmenu/menu.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../devtools-contextmenu/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!components/LandingPage.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!components/LandingPage.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!components/Sidebar.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!components/Sidebar.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!components/Tabs.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!components/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/Editor/Preview/Popup.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/Editor/Preview/Popup.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "1": 1 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/shared/PreviewFunction.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/shared/PreviewFunction.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "1": 1 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/variables.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/variables.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/App.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/App.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/shared/menu.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/shared/reps.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/SymbolModal.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/SymbolModal.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/shared/ResultList.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/ResultList.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/shared/SearchInput.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/SearchInput.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/shared/Button/Close.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/Button/Close.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/shared/Svg.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/Svg.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/shared/Modal.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/Modal.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/Editor/Tabs.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/Editor/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/shared/Dropdown.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/Dropdown.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/shared/Button/PaneToggle.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/Button/PaneToggle.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/WelcomeBox.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/WelcomeBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/SecondaryPanes/SecondaryPanes.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/SecondaryPanes/SecondaryPanes.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/SecondaryPanes/Scopes.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/SecondaryPanes/Scopes.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../devtools-reps/src/object-inspector/index.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../devtools-reps/src/object-inspector/index.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../devtools-reps/src/reps/reps.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../devtools-reps/src/reps/reps.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/shared/ManagedTree.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/ManagedTree.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/SecondaryPanes/CommandBar.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/SecondaryPanes/CommandBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/shared/Accordion.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/Accordion.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/SecondaryPanes/EventListeners.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/SecondaryPanes/EventListeners.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/SecondaryPanes/Frames/Frames.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/SecondaryPanes/Frames/Frames.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/SecondaryPanes/Frames/WhyPaused.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/SecondaryPanes/Frames/WhyPaused.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/SecondaryPanes/Frames/Group.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/SecondaryPanes/Frames/Group.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/SecondaryPanes/Expressions.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/SecondaryPanes/Expressions.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/SecondaryPanes/Breakpoints.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/SecondaryPanes/Breakpoints.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/Editor/Editor.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/Editor/Editor.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/Editor/Highlight.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/Editor/Highlight.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/Editor/CallSite.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/Editor/CallSite.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/Editor/Preview/Popup.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/Editor/Preview/Popup.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/shared/PreviewFunction.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/PreviewFunction.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/shared/Popover.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/Popover.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/shared/BracketArrow.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/BracketArrow.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/Editor/SearchBar.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/Editor/SearchBar.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/Editor/Footer.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/Editor/Footer.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/Editor/ConditionalPanel.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/Editor/ConditionalPanel.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/PrimaryPanes/Sources.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/PrimaryPanes/Sources.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/PrimaryPanes/Outline.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/PrimaryPanes/Outline.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/ProjectSearch/ProjectSearch.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/ProjectSearch/ProjectSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/shared/Autocomplete.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/shared/Autocomplete.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/ProjectSearch/TextSearch.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/ProjectSearch/TextSearch.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../devtools-splitter/src/SplitBox.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../devtools-splitter/src/SplitBox.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!components/Root.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!components/Root.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../devtools-contextmenu/menu.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../devtools-contextmenu/menu.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!components/LandingPage.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!components/LandingPage.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!components/Sidebar.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!components/Sidebar.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!components/Tabs.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!components/Tabs.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/SecondaryPanes/Workers.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/SecondaryPanes/Workers.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--4-2!../../postcss-loader/lib/index.js??ref--4-3!../../../src/components/Editor/EmptyLines.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../postcss-loader/lib/index.js?{\"config\":{\"path\":\"/Users/jlaster/src/mozilla/debugger.html/node_modules/devtools-launchpad/postcss.config.js\"}}!../../../src/components/Editor/EmptyLines.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "0": 0 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/SecondaryPanes/Workers.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/SecondaryPanes/Workers.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "1": 1 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/Editor/EmptyLines.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/Editor/EmptyLines.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "1": 1 - } - } - } - ], - "extract-text-webpack-plugin ../../extract-text-webpack-plugin/dist ../../css-loader/index.js??ref--5-2!../../../src/components/ShortcutsModal.css": [ - { - "modules": { - "byIdentifier": { - "../../css-loader/index.js?{\"importLoaders\":1}!../../../src/components/ShortcutsModal.css": 0, - "../../css-loader/lib/css-base.js": 1 - }, - "usedIds": { - "0": 0, - "1": 1 - } - }, - "chunks": { - "byName": {}, - "byBlocks": {}, - "usedIds": { - "1": 1 - } - } - } - ] -} \ No newline at end of file diff --git a/assets/panel/debugger.properties b/assets/panel/debugger.properties deleted file mode 100644 index 970998bbeb..0000000000 --- a/assets/panel/debugger.properties +++ /dev/null @@ -1,792 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -# LOCALIZATION NOTE These strings are used inside the Debugger -# which is available from the Web Developer sub-menu -> 'Debugger'. -# The correct localization of this file might be to keep it in -# English, or another language commonly spoken among web developers. -# You want to make that choice consistent across the developer tools. -# A good criteria is the language in which you'd find the best -# documentation on web development on the web. - -# LOCALIZATION NOTE (collapsePanes): This is the tooltip for the button -# that collapses the left and right panes in the debugger UI. -collapsePanes=Collapse panes - -# LOCALIZATION NOTE (copySource): This is the text that appears in the -# context menu to copy the selected source of file open. -copySource=Copy -copySource.accesskey=y - -# LOCALIZATION NOTE (copySourceUri2): This is the text that appears in the -# context menu to copy the source URI of file open. -copySourceUri2=Copy source URI -copySourceUri2.accesskey=u - -# LOCALIZATION NOTE (copyFunction): This is the text that appears in the -# context menu to copy the function the user selected -copyFunction.label=Copy function -copyFunction.accesskey=F - -# LOCALIZATION NOTE (copyStackTrace): This is the text that appears in the -# context menu to copy the stack trace methods, file names and row number. -copyStackTrace=Copy stack trace -copyStackTrace.accesskey=c - -# LOCALIZATION NOTE (expandPanes): This is the tooltip for the button -# that expands the left and right panes in the debugger UI. -expandPanes=Expand panes - -# LOCALIZATION NOTE (pauseButtonTooltip): The tooltip that is displayed for the pause -# button when the debugger is in a running state. -pauseButtonTooltip=Pause %S - -# LOCALIZATION NOTE (pausePendingButtonTooltip): The tooltip that is displayed for -# the pause button after it's been clicked but before the next JavaScript to run. -pausePendingButtonTooltip=Waiting for next execution - -# LOCALIZATION NOTE (resumeButtonTooltip): The label that is displayed on the pause -# button when the debugger is in a paused state. -resumeButtonTooltip=Resume %S - -# LOCALIZATION NOTE (stepOverTooltip): The label that is displayed on the -# button that steps over a function call. -stepOverTooltip=Step over %S - -# LOCALIZATION NOTE (stepInTooltip): The label that is displayed on the -# button that steps into a function call. -stepInTooltip=Step in %S - -# LOCALIZATION NOTE (stepOutTooltip): The label that is displayed on the -# button that steps out of a function call. -stepOutTooltip=Step out %S - -# LOCALIZATION NOTE (workersHeader): The text to display in the events -# header. -workersHeader=Workers - -# LOCALIZATION NOTE (noWorkersText): The text to display in the workers list -# when there are no workers. -noWorkersText=This page has no workers. - -# LOCALIZATION NOTE (noSourcesText): The text to display in the sources list -# when there are no sources. -noSourcesText=This page has no sources. - -# LOCALIZATION NOTE (noEventListenersText): The text to display in the events tab -# when there are no events. -noEventListenersText=No event listeners to display. - -# LOCALIZATION NOTE (eventListenersHeader): The text to display in the events -# header. -eventListenersHeader=Event listeners - -# LOCALIZATION NOTE (noStackFramesText): The text to display in the call stack tab -# when there are no stack frames. -noStackFramesText=No stack frames to display - -# LOCALIZATION NOTE (eventCheckboxTooltip): The tooltip text to display when -# the user hovers over the checkbox used to toggle an event breakpoint. -eventCheckboxTooltip=Toggle breaking on this event - -# LOCALIZATION NOTE (eventOnSelector): The text to display in the events tab -# for every event item, between the event type and event selector. -eventOnSelector=on - -# LOCALIZATION NOTE (eventInSource): The text to display in the events tab -# for every event item, between the event selector and listener's owner source. -eventInSource=in - -# LOCALIZATION NOTE (eventNodes): The text to display in the events tab when -# an event is listened on more than one target node. -eventNodes=%S nodes - -# LOCALIZATION NOTE (eventNative): The text to display in the events tab when -# a listener is added from plugins, thus getting translated to native code. -eventNative=[native code] - -# LOCALIZATION NOTE (*Events): The text to display in the events tab for -# each group of sub-level event entries. -animationEvents=Animation -audioEvents=Audio -batteryEvents=Battery -clipboardEvents=Clipboard -compositionEvents=Composition -deviceEvents=Device -displayEvents=Display -dragAndDropEvents=Drag and Drop -gamepadEvents=Gamepad -indexedDBEvents=IndexedDB -interactionEvents=Interaction -keyboardEvents=Keyboard -mediaEvents=HTML5 Media -mouseEvents=Mouse -mutationEvents=Mutation -navigationEvents=Navigation -pointerLockEvents=Pointer Lock -sensorEvents=Sensor -storageEvents=Storage -timeEvents=Time -touchEvents=Touch -otherEvents=Other - -# LOCALIZATION NOTE (blackboxCheckboxTooltip2): The tooltip text to display when -# the user hovers over the checkbox used to toggle blackboxing its associated -# source. -blackboxCheckboxTooltip2=Toggle blackboxing - -# LOCALIZATION NOTE (sources.search.key2): Key shortcut to open the search for -# searching all the source files the debugger has seen. -sources.search.key2=CmdOrCtrl+P - -# LOCALIZATION NOTE (sources.search.alt.key): A second key shortcut to open the -# search for searching all the source files the debugger has seen. -sources.search.alt.key=CmdOrCtrl+O - -# LOCALIZATION NOTE (projectTextSearch.key): A key shortcut to open the -# full project text search for searching all the files the debugger has seen. -projectTextSearch.key=CmdOrCtrl+Shift+F - -# LOCALIZATION NOTE (functionSearch.key): A key shortcut to open the -# modal for searching functions in a file. -functionSearch.key=CmdOrCtrl+Shift+O - -# LOCALIZATION NOTE (toggleBreakpoint.key): A key shortcut to toggle -# breakpoints. -toggleBreakpoint.key=CmdOrCtrl+B - -# LOCALIZATION NOTE (toggleCondPanel.key): A key shortcut to toggle -# the conditional breakpoint panel. -toggleCondPanel.key=CmdOrCtrl+Shift+B - -# LOCALIZATION NOTE (stepOut.key): A key shortcut to -# step out. -stepOut.key=Shift+F11 - -# LOCALIZATION NOTE (shortcuts.header.editor): Sections header in -# the shortcuts modal for keyboard shortcuts related to editing. -shortcuts.header.editor=Editor - -# LOCALIZATION NOTE (shortcuts.header.stepping): Sections header in -# the shortcuts modal for keyboard shortcuts related to stepping. -shortcuts.header.stepping=Stepping - -# LOCALIZATION NOTE (shortcuts.header.search): Sections header in -# the shortcuts modal for keyboard shortcuts related to search. -shortcuts.header.search=Search - -# LOCALIZATION NOTE (projectTextSearch.placeholder): A placeholder shown -# when searching across all of the files in a project. -projectTextSearch.placeholder=Find in files… - -# LOCALIZATION NOTE (projectTextSearch.noResults): The center pane Text Search -# message when the query did not match any text of all files in a project. -projectTextSearch.noResults=No results found - -# LOCALIZATION NOTE (sources.noSourcesAvailable): Text shown when the debugger -# does not have any sources. -sources.noSourcesAvailable=This page has no sources - -# LOCALIZATION NOTE (sourceSearch.search.key2): Key shortcut to open the search -# for searching within a the currently opened files in the editor -sourceSearch.search.key2=CmdOrCtrl+F - -# LOCALIZATION NOTE (sourceSearch.search.placeholder): placeholder text in -# the source search input bar -sourceSearch.search.placeholder=Search in file… - -# LOCALIZATION NOTE (sourceSearch.search.again.key2): Key shortcut to highlight -# the next occurrence of the last search triggered from a source search -sourceSearch.search.again.key2=CmdOrCtrl+G - -# LOCALIZATION NOTE (sourceSearch.search.againPrev.key2): Key shortcut to highlight -# the previous occurrence of the last search triggered from a source search -sourceSearch.search.againPrev.key2=CmdOrCtrl+Shift+G - -# LOCALIZATION NOTE (sourceSearch.resultsSummary1): Shows a summary of -# the number of matches for autocomplete -sourceSearch.resultsSummary1=%d results - -# LOCALIZATION NOTE (noMatchingStringsText): The text to display in the -# global search results when there are no matching strings after filtering. -noMatchingStringsText=No matches found - -# LOCALIZATION NOTE (emptySearchText): This is the text that appears in the -# filter text box when it is empty and the scripts container is selected. -emptySearchText=Search scripts (%S) - -# LOCALIZATION NOTE (emptyVariablesFilterText): This is the text that -# appears in the filter text box for the variables view container. -emptyVariablesFilterText=Filter variables - -# LOCALIZATION NOTE (emptyPropertiesFilterText): This is the text that -# appears in the filter text box for the editor's variables view bubble. -emptyPropertiesFilterText=Filter properties - -# LOCALIZATION NOTE (searchPanelFilter): This is the text that appears in the -# filter panel popup for the filter scripts operation. -searchPanelFilter=Filter scripts (%S) - -# LOCALIZATION NOTE (searchPanelGlobal): This is the text that appears in the -# filter panel popup for the global search operation. -searchPanelGlobal=Search in all files (%S) - -# LOCALIZATION NOTE (searchPanelFunction): This is the text that appears in the -# filter panel popup for the function search operation. -searchPanelFunction=Search for function definition (%S) - -# LOCALIZATION NOTE (searchPanelToken): This is the text that appears in the -# filter panel popup for the token search operation. -searchPanelToken=Find in this file (%S) - -# LOCALIZATION NOTE (searchPanelGoToLine): This is the text that appears in the -# filter panel popup for the line search operation. -searchPanelGoToLine=Go to line (%S) - -# LOCALIZATION NOTE (searchPanelVariable): This is the text that appears in the -# filter panel popup for the variables search operation. -searchPanelVariable=Filter variables (%S) - -# LOCALIZATION NOTE (breakpointMenuItem): The text for all the elements that -# are displayed in the breakpoints menu item popup. -breakpointMenuItem.setConditional=Configure conditional breakpoint -breakpointMenuItem.enableSelf2.label=Enable -breakpointMenuItem.enableSelf2.accesskey=E -breakpointMenuItem.disableSelf2.label=Disable -breakpointMenuItem.disableSelf2.accesskey=D -breakpointMenuItem.deleteSelf2.label=Remove -breakpointMenuItem.deleteSelf2.accesskey=R -breakpointMenuItem.enableOthers2.label=Enable others -breakpointMenuItem.enableOthers2.accesskey=o -breakpointMenuItem.disableOthers2.label=Disable others -breakpointMenuItem.disableOthers2.accesskey=s -breakpointMenuItem.deleteOthers2.label=Remove others -breakpointMenuItem.deleteOthers2.accesskey=h -breakpointMenuItem.enableAll2.label=Enable all -breakpointMenuItem.enableAll2.accesskey=b -breakpointMenuItem.disableAll2.label=Disable all -breakpointMenuItem.disableAll2.accesskey=k -breakpointMenuItem.deleteAll2.label=Remove all -breakpointMenuItem.deleteAll2.accesskey=a -breakpointMenuItem.removeCondition2.label=Remove condition -breakpointMenuItem.removeCondition2.accesskey=c -breakpointMenuItem.addCondition2.label=Add condition -breakpointMenuItem.addCondition2.accesskey=A -breakpointMenuItem.editCondition2.label=Edit condition -breakpointMenuItem.editCondition2.accesskey=n -breakpointMenuItem.enableSelf=Enable breakpoint -breakpointMenuItem.enableSelf.accesskey=E -breakpointMenuItem.disableSelf=Disable breakpoint -breakpointMenuItem.disableSelf.accesskey=D -breakpointMenuItem.deleteSelf=Remove breakpoint -breakpointMenuItem.deleteSelf.accesskey=R -breakpointMenuItem.enableOthers=Enable others -breakpointMenuItem.enableOthers.accesskey=o -breakpointMenuItem.disableOthers=Disable others -breakpointMenuItem.disableOthers.accesskey=s -breakpointMenuItem.deleteOthers=Remove others -breakpointMenuItem.deleteOthers.accesskey=h -breakpointMenuItem.enableAll=Enable all breakpoints -breakpointMenuItem.enableAll.accesskey=b -breakpointMenuItem.disableAll=Disable all breakpoints -breakpointMenuItem.disableAll.accesskey=k -breakpointMenuItem.deleteAll=Remove all breakpoints -breakpointMenuItem.deleteAll.accesskey=a -breakpointMenuItem.removeCondition.label=Remove breakpoint condition -breakpointMenuItem.removeCondition.accesskey=c -breakpointMenuItem.editCondition.label=Edit breakpoint condition -breakpointMenuItem.editCondition.accesskey=n - -# LOCALIZATION NOTE (breakpoints.header): Breakpoints right sidebar pane header. -breakpoints.header=Breakpoints - -# LOCALIZATION NOTE (breakpoints.none): The text that appears when there are -# no breakpoints present -breakpoints.none=No breakpoints - -# LOCALIZATION NOTE (breakpoints.enable): The text that may appear as a tooltip -# when hovering over the 'disable breakpoints' switch button in right sidebar -breakpoints.enable=Enable breakpoints - -# LOCALIZATION NOTE (breakpoints.disable): The text that may appear as a tooltip -# when hovering over the 'disable breakpoints' switch button in right sidebar -breakpoints.disable=Disable breakpoints - -# LOCALIZATION NOTE (breakpoints.removeBreakpointTooltip): The tooltip that is displayed -# for remove breakpoint button in right sidebar -breakpoints.removeBreakpointTooltip=Remove breakpoint - -# LOCALIZATION NOTE (callStack.header): Call Stack right sidebar pane header. -callStack.header=Call stack - -# LOCALIZATION NOTE (callStack.notPaused): Call Stack right sidebar pane -# message when not paused. -callStack.notPaused=Not paused - -# LOCALIZATION NOTE (callStack.collapse): Call Stack right sidebar pane -# message to hide some of the frames that are shown. -callStack.collapse=Collapse rows - -# LOCALIZATION NOTE (callStack.expand): Call Stack right sidebar pane -# message to show more of the frames. -callStack.expand=Expand rows - -# LOCALIZATION NOTE (editor.searchResults): Editor Search bar message -# for the summarizing the selected search result. e.g. 5 of 10 results. -editor.searchResults=%d of %d results - -# LOCALIZATION NOTE (sourceSearch.singleResult): Copy shown when there is one result. -editor.singleResult=1 result - -# LOCALIZATION NOTE (editor.noResults): Editor Search bar message -# for when no results found. -editor.noResults=No results - -# LOCALIZATION NOTE (editor.searchResults.nextResult): Editor Search bar -# tooltip for traversing to the Next Result -editor.searchResults.nextResult=Next result - -# LOCALIZATION NOTE (editor.searchResults.prevResult): Editor Search bar -# tooltip for traversing to the Previous Result -editor.searchResults.prevResult=Previous result - -# LOCALIZATION NOTE (editor.searchTypeToggleTitle): Search bar title for -# toggling search type buttons(function search, variable search) -editor.searchTypeToggleTitle=Search for: - -# LOCALIZATION NOTE (editor.continueToHere.label): Editor gutter context -# menu item for jumping to a new paused location -editor.continueToHere.label=Continue to here -editor.continueToHere.accesskey=H - -# LOCALIZATION NOTE (editor.addBreakpoint): Editor gutter context menu item -# for adding a breakpoint on a line. -editor.addBreakpoint=Add breakpoint - -# LOCALIZATION NOTE (editor.disableBreakpoint): Editor gutter context menu item -# for disabling a breakpoint on a line. -editor.disableBreakpoint=Disable breakpoint - -# LOCALIZATION NOTE (editor.enableBreakpoint): Editor gutter context menu item -# for enabling a breakpoint on a line. -editor.enableBreakpoint=Enable breakpoint - -# LOCALIZATION NOTE (editor.removeBreakpoint): Editor gutter context menu item -# for removing a breakpoint on a line. -editor.removeBreakpoint=Remove breakpoint - -# LOCALIZATION NOTE (editor.editBreakpoint): Editor gutter context menu item -# for setting a breakpoint condition on a line. -editor.editBreakpoint=Edit breakpoint - -# LOCALIZATION NOTE (editor.addConditionalBreakpoint): Editor gutter context -# menu item for adding a breakpoint condition on a line. -editor.addConditionalBreakpoint=Add conditional breakpoint - -# LOCALIZATION NOTE (editor.conditionalPanel.placeholder): Placeholder text for -# input element inside ConditionalPanel component -editor.conditionalPanel.placeholder=This breakpoint will pause when the expression is true - -# LOCALIZATION NOTE (editor.conditionalPanel.placeholder): Tooltip text for -# close button inside ConditionalPanel component -editor.conditionalPanel.close=Cancel edit breakpoint and close - -# LOCALIZATION NOTE (editor.jumpToMappedLocation1): Context menu item -# for navigating to a source mapped location -editor.jumpToMappedLocation1=Jump to %S location - -# LOCALIZATION NOTE (framework.disableGrouping): This is the text that appears in the -# context menu to disable framework grouping. -framework.disableGrouping=Disable framework grouping -framework.disableGrouping.accesskey=u - -# LOCALIZATION NOTE (framework.enableGrouping): This is the text that appears in the -# context menu to enable framework grouping. -framework.enableGrouping=Enable framework grouping -framework.enableGrouping.accesskey=u - -# LOCALIZATION NOTE (generated): Source Map term for a server source location -generated=Generated - -# LOCALIZATION NOTE (original): Source Map term for a debugger UI source location -original=original - -# LOCALIZATION NOTE (expressions.placeholder): Placeholder text for expression -# input element -expressions.placeholder=Add watch expression - -# LOCALIZATION NOTE (sourceTabs.closeTab): Editor source tab context menu item -# for closing the selected tab below the mouse. -sourceTabs.closeTab=Close tab -sourceTabs.closeTab.accesskey=c - -# LOCALIZATION NOTE (sourceTabs.closeOtherTabs): Editor source tab context menu item -# for closing the other tabs. -sourceTabs.closeOtherTabs=Close other tabs -sourceTabs.closeOtherTabs.accesskey=o - -# LOCALIZATION NOTE (sourceTabs.closeTabsToEnd): Editor source tab context menu item -# for closing the tabs to the end (the right for LTR languages) of the selected tab. -sourceTabs.closeTabsToEnd=Close tabs to the right -sourceTabs.closeTabsToEnd.accesskey=e - -# LOCALIZATION NOTE (sourceTabs.closeAllTabs): Editor source tab context menu item -# for closing all tabs. -sourceTabs.closeAllTabs=Close all tabs -sourceTabs.closeAllTabs.accesskey=a - -# LOCALIZATION NOTE (sourceTabs.revealInTree): Editor source tab context menu item -# for revealing source in tree. -sourceTabs.revealInTree=Reveal in tree -sourceTabs.revealInTree.accesskey=r - -# LOCALIZATION NOTE (sourceTabs.copyLink): Editor source tab context menu item -# for copying a link address. -sourceTabs.copyLink=Copy link address -sourceTabs.copyLink.accesskey=l - -# LOCALIZATION NOTE (sourceTabs.prettyPrint): Editor source tab context menu item -# for pretty printing the source. -sourceTabs.prettyPrint=Pretty print source -sourceTabs.prettyPrint.accesskey=p - -# LOCALIZATION NOTE (sourceFooter.blackbox): Tooltip text associated -# with the blackbox button -sourceFooter.blackbox=Blackbox source -sourceFooter.blackbox.accesskey=B - -# LOCALIZATION NOTE (sourceFooter.unblackbox): Tooltip text associated -# with the blackbox button -sourceFooter.unblackbox=Unblackbox source -sourceFooter.unblackbox.accesskey=b - -# LOCALIZATION NOTE (sourceFooter.blackboxed): Text associated -# with a blackboxed source -sourceFooter.blackboxed=Blackboxed source - -# LOCALIZATION NOTE (sourceFooter.codeCoverage): Text associated -# with a code coverage button -sourceFooter.codeCoverage=Code coverage - -# LOCALIZATION NOTE (sourceTabs.closeTabButtonTooltip): The tooltip that is displayed -# for close tab button in source tabs. -sourceTabs.closeTabButtonTooltip=Close tab - -# LOCALIZATION NOTE (sourceTabs.newTabButtonTooltip): The tooltip that is displayed for -# new tab button in source tabs. -sourceTabs.newTabButtonTooltip=Search for sources (%S) - -# LOCALIZATION NOTE (scopes.header): Scopes right sidebar pane header. -scopes.header=Scopes - -# LOCALIZATION NOTE (scopes.notAvailable): Scopes right sidebar pane message -# for when the debugger is paused, but there isn't pause data. -scopes.notAvailable=Scopes unavailable - -# LOCALIZATION NOTE (scopes.notPaused): Scopes right sidebar pane message -# for when the debugger is not paused. -scopes.notPaused=Not paused - -# LOCALIZATION NOTE (scopes.block): Refers to a block of code in -# the scopes pane when the debugger is paused. -scopes.block=Block - -# LOCALIZATION NOTE (sources.header): Sources left sidebar header -sources.header=Sources - -# LOCALIZATION NOTE (outline.header): Outline left sidebar header -outline.header=Outline - -# LOCALIZATION NOTE (outline.noFunctions): Outline text when there are no functions to display -outline.noFunctions=No functions - -# LOCALIZATION NOTE (sources.search): Sources left sidebar prompt -# e.g. Cmd+P to search. On a mac, we use the command unicode character. -# On windows, it's ctrl. -sources.search=%S to search - -# LOCALIZATION NOTE (watchExpressions.header): Watch Expressions right sidebar -# pane header. -watchExpressions.header=Watch expressions - -# LOCALIZATION NOTE (watchExpressions.refreshButton): Watch Expressions header -# button for refreshing the expressions. -watchExpressions.refreshButton=Refresh - -# LOCALIZATION NOTE (welcome.search): The center pane welcome panel's -# search prompt. e.g. cmd+p to search for files. On windows, it's ctrl, on -# a mac we use the unicode character. -welcome.search=%S to search for sources - -# LOCALIZATION NOTE (welcome.findInFiles): The center pane welcome panel's -# search prompt. e.g. cmd+f to search for files. On windows, it's ctrl+shift+f, on -# a mac we use the unicode character. -welcome.findInFiles=%S to find in files - -# LOCALIZATION NOTE (welcome.searchFunction): Label displayed in the welcome -# panel. %S is replaced by the keyboard shortcut to search for functions. -welcome.searchFunction=%S to search for functions in file - -# LOCALIZATION NOTE (sourceSearch.search): The center pane Source Search -# prompt for searching for files. -sourceSearch.search=Search sources… - -# LOCALIZATION NOTE (sourceSearch.noResults): The center pane Source Search -# message when the query did not match any of the sources. -sourceSearch.noResults2=No results found - -# LOCALIZATION NOTE (ignoreExceptions): The pause on exceptions button tooltip -# when the debugger will not pause on exceptions. -ignoreExceptions=Ignore exceptions. Click to pause on uncaught exceptions - -# LOCALIZATION NOTE (pauseOnUncaughtExceptions): The pause on exceptions button -# tooltip when the debugger will pause on uncaught exceptions. -pauseOnUncaughtExceptions=Pause on uncaught exceptions. Click to pause on all exceptions - -# LOCALIZATION NOTE (pauseOnExceptions): The pause on exceptions button tooltip -# when the debugger will pause on all exceptions. -pauseOnExceptions=Pause on all exceptions. Click to ignore exceptions - -# LOCALIZATION NOTE (loadingText): The text that is displayed in the script -# editor when the loading process has started but there is no file to display -# yet. -loadingText=Loading\u2026 - -# LOCALIZATION NOTE (errorLoadingText3): The text that is displayed in the debugger -# viewer when there is an error loading a file -errorLoadingText3=Error loading this URI: %S - -# LOCALIZATION NOTE (addWatchExpressionText): The text that is displayed in the -# watch expressions list to add a new item. -addWatchExpressionText=Add watch expression - -# LOCALIZATION NOTE (addWatchExpressionButton): The button that is displayed in the -# variables view popup. -addWatchExpressionButton=Watch - -# LOCALIZATION NOTE (emptyVariablesText): The text that is displayed in the -# variables pane when there are no variables to display. -emptyVariablesText=No variables to display - -# LOCALIZATION NOTE (scopeLabel): The text that is displayed in the variables -# pane as a header for each variable scope (e.g. "Global scope, "With scope", -# etc.). -scopeLabel=%S scope - -# LOCALIZATION NOTE (watchExpressionsScopeLabel): The name of the watch -# expressions scope. This text is displayed in the variables pane as a header for -# the watch expressions scope. -watchExpressionsScopeLabel=Watch expressions - -# LOCALIZATION NOTE (globalScopeLabel): The name of the global scope. This text -# is added to scopeLabel and displayed in the variables pane as a header for -# the global scope. -globalScopeLabel=Global - -# LOCALIZATION NOTE (variablesViewErrorStacktrace): This is the text that is -# shown before the stack trace in an error. -variablesViewErrorStacktrace=Stack trace: - -# LOCALIZATION NOTE (variablesViewMoreObjects): the text that is displayed -# when you have an object preview that does not show all of the elements. At the end of the list -# you see "N more..." in the web console output. -# This is a semi-colon list of plural forms. -# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals -# #1 number of remaining items in the object -# example: 3 more… -variablesViewMoreObjects=#1 more…;#1 more… - -# LOCALIZATION NOTE (variablesEditableNameTooltip): The text that is displayed -# in the variables list on an item with an editable name. -variablesEditableNameTooltip=Double click to edit - -# LOCALIZATION NOTE (variablesEditableValueTooltip): The text that is displayed -# in the variables list on an item with an editable value. -variablesEditableValueTooltip=Click to change value - -# LOCALIZATION NOTE (variablesCloseButtonTooltip): The text that is displayed -# in the variables list on an item which can be removed. -variablesCloseButtonTooltip=Click to remove - -# LOCALIZATION NOTE (variablesEditButtonTooltip): The text that is displayed -# in the variables list on a getter or setter which can be edited. -variablesEditButtonTooltip=Click to set value - -# LOCALIZATION NOTE (variablesEditableValueTooltip): The text that is displayed -# in a tooltip on the "open in inspector" button in the the variables list for a -# DOMNode item. -variablesDomNodeValueTooltip=Click to select the node in the inspector - -# LOCALIZATION NOTE (configurable|...|Tooltip): The text that is displayed -# in the variables list on certain variables or properties as tooltips. -# Expanations of what these represent can be found at the following links: -# https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty -# https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/isExtensible -# https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/isFrozen -# https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/isSealed -# It's probably best to keep these in English. -configurableTooltip=configurable -enumerableTooltip=enumerable -writableTooltip=writable -frozenTooltip=frozen -sealedTooltip=sealed -extensibleTooltip=extensible -overriddenTooltip=overridden -WebIDLTooltip=WebIDL - -# LOCALIZATION NOTE (variablesSeparatorLabel): The text that is displayed -# in the variables list as a separator between the name and value. -variablesSeparatorLabel=: - -# LOCALIZATION NOTE (watchExpressionsSeparatorLabel2): The text that is displayed -# in the watch expressions list as a separator between the code and evaluation. -watchExpressionsSeparatorLabel2=\u0020→ - -# LOCALIZATION NOTE (functionSearchSeparatorLabel): The text that is displayed -# in the functions search panel as a separator between function's inferred name -# and its real name (if available). -functionSearchSeparatorLabel=← - -# LOCALIZATION NOTE(symbolSearch.search.functionsPlaceholder): The placeholder -# text displayed when the user searches for functions in a file -symbolSearch.search.functionsPlaceholder=Search functions… - -# LOCALIZATION NOTE(symbolSearch.search.variablesPlaceholder): The placeholder -# text displayed when the user searches for variables in a file -symbolSearch.search.variablesPlaceholder=Search variables… - -# LOCALIZATION NOTE(symbolSearch.search.key2): The Key Shortcut for -# searching for a function or variable -symbolSearch.search.key2=CmdOrCtrl+Shift+O - -# LOCALIZATION NOTE(symbolSearch.searchModifier.modifiersLabel): A label -# preceding the group of modifiers -symbolSearch.searchModifier.modifiersLabel=Modifiers: - -# LOCALIZATION NOTE(symbolSearch.searchModifier.regex): A search option -# when searching text in a file -symbolSearch.searchModifier.regex=Regex - -# LOCALIZATION NOTE(symbolSearch.searchModifier.caseSensitive): A search option -# when searching text in a file -symbolSearch.searchModifier.caseSensitive=Case sensitive - -# LOCALIZATION NOTE(symbolSearch.searchModifier.wholeWord): A search option -# when searching text in a file -symbolSearch.searchModifier.wholeWord=Whole word - -# LOCALIZATION NOTE (resumptionOrderPanelTitle): This is the text that appears -# as a description in the notification panel popup, when multiple debuggers are -# open in separate tabs and the user tries to resume them in the wrong order. -# The substitution parameter is the URL of the last paused window that must be -# resumed first. -resumptionOrderPanelTitle=There are one or more paused debuggers. Please resume the most-recently paused debugger first at: %S - -variablesViewOptimizedOut=(optimized away) -variablesViewUninitialized=(uninitialized) -variablesViewMissingArgs=(unavailable) - -anonymousSourcesLabel=Anonymous sources - -experimental=This is an experimental feature - -# LOCALIZATION NOTE (whyPaused.debuggerStatement): The text that is displayed -# in a info block explaining how the debugger is currently paused due to a `debugger` -# statement in the code -whyPaused.debuggerStatement=Paused on debugger statement - -# LOCALIZATION NOTE (whyPaused.breakpoint): The text that is displayed -# in a info block explaining how the debugger is currently paused on a breakpoint -whyPaused.breakpoint=Paused on breakpoint - -# LOCALIZATION NOTE (whyPaused.exception): The text that is displayed -# in a info block explaining how the debugger is currently paused on an exception -whyPaused.exception=Paused on exception - -# LOCALIZATION NOTE (whyPaused.resumeLimit): The text that is displayed -# in a info block explaining how the debugger is currently paused while stepping -# in or out of the stack -whyPaused.resumeLimit=Paused while stepping - -# LOCALIZATION NOTE (whyPaused.pauseOnDOMEvents): The text that is displayed -# in a info block explaining how the debugger is currently paused on a -# dom event -whyPaused.pauseOnDOMEvents=Paused on event listener - -# LOCALIZATION NOTE (whyPaused.breakpointConditionThrown): The text that is displayed -# in an info block when evaluating a conditional breakpoint throws an error -whyPaused.breakpointConditionThrown=Error with conditional breakpoint - -# LOCALIZATION NOTE (whyPaused.xhr): The text that is displayed -# in a info block explaining how the debugger is currently paused on an -# xml http request -whyPaused.xhr=Paused on XMLHttpRequest - -# LOCALIZATION NOTE (whyPaused.promiseRejection): The text that is displayed -# in a info block explaining how the debugger is currently paused on a -# promise rejection -whyPaused.promiseRejection=Paused on promise rejection - -# LOCALIZATION NOTE (whyPaused.assert): The text that is displayed -# in a info block explaining how the debugger is currently paused on an -# assert -whyPaused.assert=Paused on assertion - -# LOCALIZATION NOTE (whyPaused.debugCommand): The text that is displayed -# in a info block explaining how the debugger is currently paused on a -# debugger statement -whyPaused.debugCommand=Paused on debugged function - -# LOCALIZATION NOTE (whyPaused.other): The text that is displayed -# in a info block explaining how the debugger is currently paused on an event -# listener breakpoint set -whyPaused.other=Debugger paused - -# LOCALIZATION NOTE (ctrl): The text that is used for documenting -# keyboard shortcuts that use the control key -ctrl=Ctrl - -# LOCALIZATION NOTE (anonymous): The text that is displayed when the -# display name is null. -anonymous=(anonymous) - -# LOCALIZATION NOTE (shortcuts.toggleBreakpoint): text describing -# keyboard shortcut action for toggling breakpoint -shortcuts.toggleBreakpoint=Toggle Breakpoint - -# LOCALIZATION NOTE (shortcuts.toggleCondPanel): text describing -# keyboard shortcut action for toggling conditional panel keyboard -shortcuts.toggleCondPanel=Toggle Conditional Panel - -# LOCALIZATION NOTE (shortcuts.pauseOrResume): text describing -# keyboard shortcut action for pause of resume -shortcuts.pauseOrResume=Pause/Resume - -# LOCALIZATION NOTE (shortcuts.stepOver): text describing -# keyboard shortcut action for stepping over -shortcuts.stepOver=Step Over - -# LOCALIZATION NOTE (shortcuts.stepIn): text describing -# keyboard shortcut action for stepping in -shortcuts.stepIn=Step In - -# LOCALIZATION NOTE (shortcuts.stepOut): text describing -# keyboard shortcut action for stepping out -shortcuts.stepOut=Step Out - -# LOCALIZATION NOTE (shortcuts.fileSearch): text describing -# keyboard shortcut action for source file search -shortcuts.fileSearch=Source File Search - -# LOCALIZATION NOTE (shortcuts.searchAgain): text describing -# keyboard shortcut action for searching again -shortcuts.searchAgain=Search Again - -# LOCALIZATION NOTE (shortcuts.projectSearch): text describing -# keyboard shortcut action for full project search -shortcuts.projectSearch=Full Project Search - -# LOCALIZATION NOTE (shortcuts.functionSearch): text describing -# keyboard shortcut action for function search -shortcuts.functionSearch=Function Search diff --git a/assets/panel/index.html b/assets/panel/index.html deleted file mode 100644 index b913088096..0000000000 --- a/assets/panel/index.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - -
- - - - diff --git a/assets/panel/moz.build b/assets/panel/moz.build deleted file mode 100644 index ecf13ff91f..0000000000 --- a/assets/panel/moz.build +++ /dev/null @@ -1,13 +0,0 @@ -# vim: set filetype=python: -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -DevToolsModules( - 'debugger.css', - 'debugger.js', - 'panel.js', - 'parser-worker.js', - 'pretty-print-worker.js', - 'search-worker.js', -) diff --git a/assets/panel/panel.js b/assets/panel/panel.js deleted file mode 100644 index 1ec20834b9..0000000000 --- a/assets/panel/panel.js +++ /dev/null @@ -1,115 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -"use strict"; - -const { Task } = require("devtools/shared/task"); -var { LocalizationHelper } = require("devtools/shared/l10n"); - -const DBG_STRINGS_URI = "devtools/client/locales/debugger.properties"; -var L10N = new LocalizationHelper(DBG_STRINGS_URI); - -function DebuggerPanel(iframeWindow, toolbox) { - this.panelWin = iframeWindow; - this.panelWin.L10N = L10N; - this.toolbox = toolbox; -} - -DebuggerPanel.prototype = { - open: async function() { - if (!this.toolbox.target.isRemote) { - await this.toolbox.target.makeRemote(); - } - - const { - actions, - store, - selectors, - client - } = await this.panelWin.Debugger.bootstrap({ - threadClient: this.toolbox.threadClient, - tabTarget: this.toolbox.target, - debuggerClient: this.toolbox.target.client, - sourceMaps: this.toolbox.sourceMapService, - toolboxActions: { - // Open a link in a new browser tab. - openLink: this.openLink.bind(this) - } - }); - - this._actions = actions; - this._store = store; - this._selectors = selectors; - this._client = client; - this.isReady = true; - return this; - }, - - getVarsForTests() { - return { - store: this._store, - selectors: this._selectors, - actions: this._actions, - client: this._client - }; - }, - - _getState: function() { - return this._store.getState(); - }, - - openLink: function(url) { - const parentDoc = this.toolbox.doc; - if (!parentDoc) { - return; - } - - const win = parentDoc.querySelector("window"); - if (!win) { - return; - } - - const top = win.ownerDocument.defaultView.top; - if (!top || typeof top.openUILinkIn !== "function") { - return; - } - - top.openUILinkIn(url, "tab"); - }, - - getFrames: function() { - let frames = this._selectors.getFrames(this._getState()); - - // Frames is null when the debugger is not paused. - if (!frames) { - return { - frames: [], - selected: -1 - }; - } - - const selectedFrame = this._selectors.getSelectedFrame(this._getState()); - const selected = frames.findIndex(frame => frame.id == selectedFrame.id); - - frames.forEach(frame => { - frame.actor = frame.id; - }); - - return { frames, selected }; - }, - - selectSource(sourceURL, sourceLine) { - this._actions.selectSourceURL(sourceURL, { line: sourceLine }); - }, - - getSource(sourceURL) { - return this._selectors.getSourceByURL(this._getState(), sourceURL); - }, - - destroy: function() { - this.panelWin.Debugger.destroy(); - this.emit("destroyed"); - } -}; - -exports.DebuggerPanel = DebuggerPanel; diff --git a/assets/panel/prefs.js b/assets/panel/prefs.js deleted file mode 100644 index 0286d8a4d1..0000000000 --- a/assets/panel/prefs.js +++ /dev/null @@ -1,45 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ */ - -pref("devtools.debugger.new-debugger-frontend", true); - -// Enable the Debugger -pref("devtools.debugger.enabled", true); -pref("devtools.debugger.chrome-debugging-host", "localhost"); -pref("devtools.debugger.chrome-debugging-websocket", false); -pref("devtools.debugger.remote-host", "localhost"); -pref("devtools.debugger.remote-timeout", 20000); -pref("devtools.debugger.pause-on-exceptions", false); -pref("devtools.debugger.ignore-caught-exceptions", false); -pref("devtools.debugger.source-maps-enabled", true); -// Temporarily leave this in place, even though it is unused, so the -// options pane doesn't break. -// https://bugzilla.mozilla.org/show_bug.cgi?id=1371849 -pref("devtools.debugger.client-source-maps-enabled", true); -pref("devtools.debugger.pretty-print-enabled", true); -pref("devtools.debugger.auto-pretty-print", false); -pref("devtools.debugger.auto-black-box", true); -pref("devtools.debugger.workers", false); - -// The default Debugger UI settings -pref("devtools.debugger.prefs-schema-version", "1.0.0"); -pref("devtools.debugger.ui.panes-workers-and-sources-width", 200); -pref("devtools.debugger.ui.panes-instruments-width", 300); -pref("devtools.debugger.ui.panes-visible-on-startup", false); -pref("devtools.debugger.ui.variables-sorting-enabled", true); -pref("devtools.debugger.ui.variables-only-enum-visible", false); -pref("devtools.debugger.ui.variables-searchbox-visible", false); -pref("devtools.debugger.ui.framework-grouping-on", true); -pref("devtools.debugger.call-stack-visible", false); -pref("devtools.debugger.start-panel-collapsed", false); -pref("devtools.debugger.end-panel-collapsed", false); -pref("devtools.debugger.tabs", "[]"); -pref("devtools.debugger.pending-selected-location", "{}"); -pref("devtools.debugger.pending-breakpoints", "{}"); -pref("devtools.debugger.expressions", "[]"); -pref("devtools.debugger.file-search-case-sensitive", false); -pref("devtools.debugger.file-search-whole-word", false); -pref("devtools.debugger.file-search-regex-match", false); -pref("devtools.debugger.features.async-stepping", true); -pref("devtools.debugger.features.project-text-search", true); -pref("devtools.debugger.features.wasm", true); diff --git a/bin/check-warn-yarn-changed.js b/bin/check-warn-yarn-changed.js deleted file mode 100644 index 9b2bd17ce1..0000000000 --- a/bin/check-warn-yarn-changed.js +++ /dev/null @@ -1,26 +0,0 @@ -// MIT © Sindre Sorhus - sindresorhus.com -// via https://gist.github.com/sindresorhus/7996717 - -const { execFile } = require('child_process'); - -module.exports = function checkWarnIfYarnChanged(origHead, head) { - return new Promise((resolve, reject) => { - execFile( - 'git', - ['diff-tree', '-r', '--name-only', '--no-commit-id', origHead, head], - (error, stdout, stderr) => { - if (error) { - console.error('stderr', stderr); - reject(error); - return; - } - if (stdout.includes('yarn.lock')) { - console.log('🎅 yarn.lock changed; RUN: yarn install'); - resolve(true); - } else { - resolve(false); - } - } - ); - }); -}; diff --git a/bin/ci/build-firefox.sh b/bin/ci/build-firefox.sh deleted file mode 100755 index cf1c9d0ff8..0000000000 --- a/bin/ci/build-firefox.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -cd firefox -# We have to set that env variable otherwise -# ./mach build is going to be interactive and expect -# to be pressed to continue. Here travis would just be stuck... -export MOZBUILD_STATE_PATH=$(pwd)/mozbuild-state -[ -d $MOZBUILD_STATE_PATH ] || mkdir $MOZBUILD_STATE_PATH -echo $MOZBUILD_STATE_PATH - -echo "ac_add_options --enable-artifact-builds" > mozconfig -echo "mk_add_options AUTOCLOBBER=1" >> mozconfig -./mach build -cd .. diff --git a/bin/ci/clone-gecko.sh b/bin/ci/clone-gecko.sh deleted file mode 100755 index 7f8635f603..0000000000 --- a/bin/ci/clone-gecko.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -hg --version -rm -rf firefox/ -hg clone https://hg.mozilla.org/mozilla-unified/ firefox - -cd firefox -hg co $MC_COMMIT -cd .. diff --git a/bin/ci/install-yarn b/bin/ci/install-yarn deleted file mode 100755 index a976bde3d4..0000000000 --- a/bin/ci/install-yarn +++ /dev/null @@ -1,5 +0,0 @@ -if [[ ! -e ~/.yarn/bin/yarn || $(yarn --version) != "${YARN_VERSION}" ]]; then - echo "Installing Yarn $YARN_VERSION" - rm -rf ~/.yarn - curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version $YARN_VERSION -fi diff --git a/bin/ci/run-tests.sh b/bin/ci/run-tests.sh deleted file mode 100755 index baa37b2b6c..0000000000 --- a/bin/ci/run-tests.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -node ./bin/copy-assets.js --mc firefox -yarn mochi -exit $? diff --git a/bin/copy-assets.js b/bin/copy-assets.js deleted file mode 100644 index 3e7079b5ae..0000000000 --- a/bin/copy-assets.js +++ /dev/null @@ -1,91 +0,0 @@ -const { - tools: { makeBundle, symlinkTests, copyFile } -} = require("devtools-launchpad/index"); -const path = require("path"); -const minimist = require("minimist"); -var fs = require("fs"); - -const feature = require("devtools-config"); -const getConfig = require("./getConfig"); -const writeReadme = require("./writeReadme"); - -const envConfig = getConfig(); -feature.setConfig(envConfig); - -const args = minimist(process.argv.slice(2), { - boolean: ["watch", "symlink", "assets"], - string: ["mc"] -}); - -const shouldSymLink = args.symlink; -const updateAssets = args.assets; -const watch = args.watch; - -function start() { - console.log("start: copy assets"); - const projectPath = path.resolve(__dirname, ".."); - const mcModulePath = "devtools/client/debugger/new"; - let mcPath = args.mc ? args.mc : feature.getValue("firefox.mcPath"); - - // resolving against the project path in case it's relative. If it's absolute - // it will override whatever is in projectPath. - mcPath = path.resolve(projectPath, mcPath); - - copyFile( - path.join(projectPath, "./assets/panel/debugger.properties"), - path.join(mcPath, "devtools/client/locales/en-US/debugger.properties"), - { cwd: projectPath } - ); - - copyFile( - path.join(projectPath, "./assets/panel/prefs.js"), - path.join(mcPath, "devtools/client/preferences/debugger.js"), - { cwd: projectPath } - ); - - copyFile( - path.join(projectPath, "./assets/panel/index.html"), - path.join(mcPath, "devtools/client/debugger/new/index.html"), - { cwd: projectPath } - ); - - copyFile( - path.join(projectPath, "./assets/panel/panel.js"), - path.join(mcPath, "devtools/client/debugger/new/panel.js"), - { cwd: projectPath } - ); - - copyFile( - path.join(projectPath, "./assets/panel/moz.build"), - path.join(mcPath, "devtools/client/debugger/new/moz.build"), - { cwd: projectPath } - ); - - const projectTestPath = path.join(projectPath, "src/test/mochitest"); - const mcTestPath = path.join(mcPath, mcModulePath, "test/mochitest"); - if (shouldSymLink) { - symlinkTests({ projectPath, mcTestPath, projectTestPath }); - } else { - copyFile(projectTestPath, mcTestPath, { cwd: projectPath }); - } - - writeReadme(path.join(mcPath, "devtools/client/debugger/new/README.mozilla")); - - makeBundle({ - outputPath: path.join(mcPath, mcModulePath), - projectPath, - watch, - updateAssets - }) - .then(() => { - console.log("done: copy assets"); - }) - .catch(err => { - console.log( - "Uhoh, something went wrong. The error was written to assets-error.log" - ); - fs.writeFileSync("assets-error.log", JSON.stringify(err, null, 2)); - }); -} - -start(); diff --git a/bin/dev-server.js b/bin/dev-server.js deleted file mode 100644 index e8b2c41081..0000000000 --- a/bin/dev-server.js +++ /dev/null @@ -1,19 +0,0 @@ -const fs = require("fs"); -const path = require("path"); - -const toolbox = require("devtools-launchpad/index"); -const feature = require("devtools-config"); -const getConfig = require("./getConfig"); -const express = require("express"); - -const envConfig = getConfig(); -feature.setConfig(envConfig); - -let webpackConfig = require("../webpack.config"); - -let { app } = toolbox.startDevServer(envConfig, webpackConfig, __dirname); - -app.use("/integration/examples", express.static("src/test/mochitest/examples")); - -console.log("View debugger examples here:"); -console.log("https://github.com/devtools-html/debugger-examples"); diff --git a/bin/download-firefox-artifact b/bin/download-firefox-artifact deleted file mode 100755 index 7b6c6cf0b8..0000000000 --- a/bin/download-firefox-artifact +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env bash - -ROOT=`dirname $0` -FIREFOX_PATH="$ROOT/../firefox" - -# check that mercurial is installed -if [ -z "`command -v hg`" ]; then - echo >&2 "mercurial is required for mochitests, use 'brew install mercurial' on MacOS"; - exit 1; -fi - -if [ -d "$FIREFOX_PATH" ]; then - # convert path to absolute path - FIREFOX_PATH=$(cd "$ROOT/../firefox"; pwd) - - # If we already have Firefox locally, just update it - cd "$FIREFOX_PATH"; - - if [ -n "`hg status`" ]; then - read -p "There are local changes to Firefox which will be overwritten. Are you sure? [Y/n] " -r - if [[ $REPLY == "n" ]]; then - exit 0; - fi - - # If the mochitest dir has been symlinked, remove it as revert - # does not follow symlinks. - if [ -h "$FIREFOX_PATH/devtools/client/debugger/new/test/mochitest" ]; then - rm "$FIREFOX_PATH/devtools/client/debugger/new/test/mochitest"; - fi - - hg revert -a - fi - - hg pull - hg update -C -else - echo "Downloading Firefox source code, requires about 10-30min depending on connection" - hg clone https://hg.mozilla.org/mozilla-central/ "$FIREFOX_PATH" - # if somebody cancels (ctrl-c) out of the long download don't continue - if [ $? -ne 0 ]; then - exit 1; - fi - cd "$FIREFOX_PATH" - - # Make an artifact build so it builds much faster - echo " -ac_add_options --enable-artifact-builds -mk_add_options MOZ_OBJDIR=./objdir-frontend -" > .mozconfig -fi diff --git a/bin/getConfig.js b/bin/getConfig.js deleted file mode 100644 index 0cdeeb4763..0000000000 --- a/bin/getConfig.js +++ /dev/null @@ -1,25 +0,0 @@ -const merge = require("lodash/merge"); -const fs = require("fs"); -const path = require("path"); - -function getConfig() { - const applicationConfig = require("../configs/application.json"); - const firefoxConfig = require("../configs/firefox-panel.json"); - const developmentConfig = require("../configs/development.json"); - - let localConfig = {}; - if (fs.existsSync(path.resolve(__dirname, "../configs/local.json"))) { - localConfig = require("../configs/local.json"); - } - - if (process.env.TARGET === "firefox-panel") { - return firefoxConfig; - } - - const envConfig = process.env.TARGET === "application" ? - applicationConfig : developmentConfig; - - return merge({}, envConfig, localConfig); -} - -module.exports = getConfig; diff --git a/bin/intermitents.js b/bin/intermitents.js deleted file mode 100644 index 530790335b..0000000000 --- a/bin/intermitents.js +++ /dev/null @@ -1,117 +0,0 @@ -const shell = require("shelljs"); -const chalk = require("chalk"); -const path = require("path"); -const _ = require("lodash"); -const minimist = require("minimist"); -const emoji = require("node-emoji"); - -/** - * Checks for intermittents with one of two strategies: - * 1. runs each test a number of times - * 2. groups tests until failing tests are isolated - * - * params: - * --group enable test grouping - * --runs set the number of test runs (default: 10) - * --path filters tests given a path - */ - -const args = minimist(process.argv.slice(2), { - boolean: ["group"], - number: ["runs"], - string: ["path"] -}); - -const runs = args.runs || 10; -const testPath = args.path ? `--testPathPattern ${args.path}` : ""; -shell.env.PATH += `${path.delimiter}${__dirname}/../node_modules/jest-cli/bin`; -const child = shell.exec(`jest.js --listTests ${testPath}`, { silent: true }); -const tests = JSON.parse(child.stdout); -const log = require("single-line-log").stdout; - -const write = msg => process.stdout.write(msg); - -function runTest(test) { - const file = path.basename(test); - log(`${emoji.get("sweat_smile")} ${file} `); - - const startTime = Date.now(); - let failed = false; - let elapsedTime = 0; - let progress = []; - _.times(runs).forEach(() => { - const out = shell.exec(`jest.js ${test}`, { silent: true }); - const hasFailed = out.code !== 0; - failed = failed || hasFailed; - if (hasFailed) { - console.log(out.stderr); - } - const endTime = Date.now(); - elapsedTime = Math.round((endTime - startTime) / 1000); - if (failed) { - progress.push(chalk.red(".")); - } else { - progress.push("."); - } - const status = failed ? emoji.get("rage") : emoji.get("sweat_smile"); - const dots = progress.join(""); - log(`${status} ${file} ${dots}`); - }); - - const dots = progress.join(""); - const status = failed ? emoji.get("rage") : emoji.get("sweat_smile"); - log(`${status} ${file} ${dots} (${elapsedTime}s)`); - console.log(""); - nextTest(); -} - -let queue = tests; -function nextTest() { - const test = queue.pop(); - if (test) { - runTest(test); - } -} - -function split(list) { - return [list.slice(0, list.length / 2), list.slice(list.length / 2)]; -} - -function runTestGroup(tests) { - const files = tests.map(test => path.basename(test)).join(", "); - console.log(`${chalk.yellow(`starting`)} ${files}`); - - const startTime = Date.now(); - shell.exec( - `for i in \`seq 1 ${runs}\`; do jest ${tests.join(" ")} ; done`, - { silent: true }, - (code, stdout, stderr) => { - const failed = stderr.match(/removeEvent/gi); - const endTime = Date.now(); - const elapsedTime = Math.round((endTime - startTime) / 1000); - if (failed) { - console.log(`${chalk.red("failed")} (${elapsedTime}s) ${files}`); - nextGroup(tests); - } else { - console.log(`${chalk.blue("passed")} (${elapsedTime}s) ${files}`); - } - } - ); -} - -function nextGroup(_tests) { - const [first, second] = split(_.shuffle(_tests)); - if (first.length > 0) { - runTestGroup(first); - } - if (second.length > 0) { - runTestGroup(second); - } -} - -if (args.group) { - nextGroup(tests); -} else { - // we start with 5 files so we don't overwhelm your computer - new Array(5).fill().forEach(() => nextTest()); -} diff --git a/bin/nom.js b/bin/nom.js deleted file mode 100644 index 1dcf033895..0000000000 --- a/bin/nom.js +++ /dev/null @@ -1,12 +0,0 @@ -const rimraf = require("rimraf"); -const spawn = require("child_process").spawn; - -function start() { - console.log("Deleting node_modules and yarn.lock"); - rimraf("{node_modules,yarn.lock}", {}, () => { - console.log("Reinstalling packages"); - spawn("yarn install", { shell: true, stdio: "inherit" }); - }); -} - -start(); diff --git a/bin/post-checkout.js b/bin/post-checkout.js deleted file mode 100644 index 053532e264..0000000000 --- a/bin/post-checkout.js +++ /dev/null @@ -1,8 +0,0 @@ -const [origHead, head, flag] = process.env.GIT_PARAMS.split(' '); - -// Flag is 1 if we moved between branches. Flag is 0 if we merely checked out a file from another branch. -if (flag !== '1') { - process.exit(); -} - -require('./check-warn-yarn-changed.js')(origHead, head); diff --git a/bin/post-merge.js b/bin/post-merge.js deleted file mode 100644 index afb291e645..0000000000 --- a/bin/post-merge.js +++ /dev/null @@ -1 +0,0 @@ -require('./check-warn-yarn-changed.js')('ORIG_HEAD', 'HEAD'); diff --git a/bin/post-rewrite.js b/bin/post-rewrite.js deleted file mode 100644 index feb428b654..0000000000 --- a/bin/post-rewrite.js +++ /dev/null @@ -1,19 +0,0 @@ -// This is either 'rebase' or 'amend'. -if (process.env.GIT_PARAMS !== 'rebase') { - process.exit(); -} - -const checkWarnYarnChanged = require('./check-warn-yarn-changed.js'); - -const { createInterface } = require('readline'); - -const rl = createInterface({ - input: process.stdin, -}); - -rl.on('line', line => { - const [origHead, head] = line.split(' '); - checkWarnYarnChanged(origHead, head).then( - changed => changed && process.exit() - ); -}); diff --git a/bin/prepare-mochitests-dev b/bin/prepare-mochitests-dev deleted file mode 100755 index 53ff027c8b..0000000000 --- a/bin/prepare-mochitests-dev +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env bash - -ROOT=`dirname $0` -FIREFOX_PATH="$ROOT/../firefox" - -# This will either download or update the local Firefox repo -"$ROOT/download-firefox-artifact" - -# Update the debugger files, build firefox, and run all the mochitests -node "$ROOT/copy-assets.js" - -cd "$FIREFOX_PATH" -./mach build diff --git a/bin/prettier.js b/bin/prettier.js deleted file mode 100644 index f4ec848d7c..0000000000 --- a/bin/prettier.js +++ /dev/null @@ -1,38 +0,0 @@ -const path = require("path"); -const spawn = require("child_process").spawn; - -const isWindows = /^win/.test(process.platform); -const prettierCmd = path.resolve( - __dirname, - `../node_modules/.bin/${isWindows ? "prettier.cmd" : "prettier"}` -); - -const args = [ - "--trailing-comma=none", - "--bracket-spacing=true", - "--write", - "*.js", - "*.json", - "src/*.js", - "src/*/*.js", - "src/components/**/*.css", - "src/*/!(mochitest)**/*.js", - "src/*/!(mochitest)*/**/*.js" -]; - -const prettierArgs = process.argv.slice(2).concat(args); - -const prettierProc = spawn(prettierCmd, prettierArgs); - -prettierProc.stdout.on("data", data => console.log(`${data}`)); -prettierProc.stderr.on("data", data => console.log(`stderr: ${data}`)); -prettierProc.on("close", code => - console.log(`prettier exited with code ${code}`) -); -prettierProc.on("error", error => { - if (error.code == "ENOENT") { - console.log(`Hmm, could not find the path ${cmd}.`); - return; - } - console.log(error); -}); diff --git a/bin/run-mochitests-docker b/bin/run-mochitests-docker deleted file mode 100755 index 263d4b9fce..0000000000 --- a/bin/run-mochitests-docker +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/sh - -rm -rf ./assets/build -node ./bin/publish-assets - -docker run -it \ - -v `pwd`/assets/build/debugger.js:/gecko/devtools/client/debugger/new/debugger.js \ - -v `pwd`/assets/build/pretty-print-worker.js:/gecko/devtools/client/debugger/new/pretty-print-worker.js \ - -v `pwd`/assets/build/parser-worker.js:/gecko/devtools/client/debugger/new/parser-worker.js \ - -v `pwd`/assets/build/search-worker.js:/gecko/devtools/client/debugger/new/search-worker.js \ - -v `pwd`/assets/build/debugger.css:/gecko/devtools/client/debugger/new/debugger.css \ - -v `pwd`/assets/build/panel/debugger.properties:/gecko/devtools/client/locales/en-US/debugger.properties \ - -v `pwd`/assets/build/panel/prefs.js:/gecko/devtools/client/preferences/debugger.js \ - -v `pwd`/assets/build/panel/panel.js:/gecko/devtools/client/debugger/new/panel.js \ - -v `pwd`/assets/build/panel/index.html:/gecko/devtools/client/debugger/new/index.html \ - -v `pwd`/assets/build/panel/moz.build:/gecko/devtools/client/debugger/new/moz.build \ - -v `pwd`/assets/build/mochitest:/gecko/devtools/client/debugger/new/test/mochitest \ - -v `pwd`/node_modules/lodash/lodash.js:/gecko/devtools/client/shared/vendor/lodash.js \ - -v `pwd`/node_modules/wasmparser/dist/WasmParser.js:/gecko/devtools/client/shared/vendor/WasmParser.js \ - -v `pwd`/node_modules/wasmparser/dist/WasmDis.js:/gecko/devtools/client/shared/vendor/WasmDis.js \ - -v "/tmp/.X11-unix:/tmp/.X11-unix:rw" \ - -e "DISPLAY=unix$DISPLAY" \ - --ipc host \ - jryans/debugger-gecko \ - /bin/bash -c "export SHELL=/bin/bash; \ - touch devtools/client/debugger/new/test/mochitest/browser.ini \ - && awk 'NR==11{print \" \x27lodash.js\x27,\"}7' devtools/client/shared/vendor/moz.build \ - | awk 'NR==30{print \" \x27WasmDis.js\x27,\"}7' \ - | awk 'NR==31{print \" \x27WasmParser.js\x27\"}7' > foo \ - && mv foo devtools/client/shared/vendor/moz.build \ - && ./mach clobber \ - && ./mach build \ - && ./mach mochitest --subsuite devtools --setenv MOZ_HEADLESS=1 devtools/client/debugger/new/test/mochitest/ \ - " \ - > output.txt -test_exit_code=$? - -node ./bin/mochi.js --read output.txt -exit $test_exit_code; diff --git a/bin/writeReadme.js b/bin/writeReadme.js deleted file mode 100644 index ed50a721db..0000000000 --- a/bin/writeReadme.js +++ /dev/null @@ -1,70 +0,0 @@ -const fs = require("fs"); -const path = require("path"); -const spawn = require("child_process").spawn; - -function getGitSha() { - return new Promise((resolve, reject) => { - const proc = spawn("git", ["log", "--format=%H", "-n", "1"]); - - let version = ""; - - proc.stdout.on("data", data => { - version += data; - }); - proc.on("close", code => resolve(version.trim())); - proc.on("error", error => { - if (error.code == "ENOENT") { - reject(new Error("Could not find git.")); - return; - } - reject(error); - }); - }); -} - -function getPackageVersion(name) { - try { - const json = require(`${name}/package.json`); - const { version } = json; - return { name, version }; - } catch (ex) { - return { name, version: "n/a" }; - } -} - -const packageOfInterest = [ - "babel-plugin-transform-es2015-modules-commonjs", - "babel-preset-react", - "react", - "react-dom", - "webpack" -]; - -function getInterestingPackagesVersions() { - return Promise.all(packageOfInterest.map(p => getPackageVersion(p))); -} - -function writeReadme(target) { - const buffer = [ - "This is the debugger.html project output.", - "See https://github.com/devtools-html/debugger.html", - "" - ]; - return getGitSha() - .then(sha => { - buffer.push(`Taken from upstream commit: ${sha}`, ""); - return getInterestingPackagesVersions(); - }) - .then(packagesVersions => { - buffer.push("Packages:"); - packagesVersions.forEach(({ name, version }) => { - buffer.push(`- ${name} @${version}`); - }, this); - buffer.push(""); - }) - .then(() => { - fs.writeFileSync(target, buffer.join("\n")); - }); -} - -module.exports = writeReadme; diff --git a/circle-2.0.yml b/circle-2.0.yml deleted file mode 100644 index 60106d848d..0000000000 --- a/circle-2.0.yml +++ /dev/null @@ -1,143 +0,0 @@ -version: 2 -executorType: docker -containerInfo: - - image: node:7 - cmd: ["/bin/bash"] - - image: jasonlaster11/mochitest-runner:latest - env: - - DISPLAY=unix:99 - - SHELL=/bin/bash -stages: - build: - workDir: ~/debugger - steps: - - type: checkout - - - type: shell - name: Copy Config Files - shell: /bin/bash --login - command: cp configs/ci.json configs/local.json - - - type: shell - name: Install System Packages - shell: /bin/bash --login - command: | - apt-key adv --fetch-keys http://dl.yarnpkg.com/debian/pubkey.gpg - echo "deb http://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list - apt-get update -qq - apt-get install -y -qq yarn ocaml libelf-dev - - - type: cache-restore - keys: - - debugger-{{ checksum "yarn.lock" }} - # Providing keys in decreasing specificity means it's more likely a new cache can be built from an existing one. - - debugger- - - - type: shell - name: Yarn Install - shell: /bin/bash --login - command: yarn - - - type: cache-save - key: debugger-{{ checksum "yarn.lock" }} - paths: - - ~/.yarn-cache - - - type: shell - name: Yarn Lint - shell: /bin/bash --login - command: | - set -exu - yarn run license-check - yarn run lint-css - yarn run lint-js - yarn run lint-md - - - type: shell - name: Flow - shell: /bin/bash --login - command: | - set -exu - yarn run flow - environment: - TERM: dumb - - - type: shell - name: Yarn Check yarn.lock - shell: /bin/bash --login - command: | - set -exu - yarn check - - # Run tests - - type: shell - name: Node Unit Tests - shell: /bin/bash --login - command: | - set -exu - mkdir -p /tmp/test-results/mocha - node src/test/node-unit-tests.js --ci - environment: - MOCHA_FILE: "/tmp/artifacts/mocha/test-results.xml" - - # - type: shell - # name: Install Docker Client - # shell: /bin/bash --login - # command: | - # curl -L -o /tmp/docker.tgz https://get.docker.com/builds/Linux/x86_64/docker-1.12.6.tgz - # tar -xz -C /tmp -f /tmp/docker.tgz - # mv /tmp/docker/docker* /usr/bin/ - # - # - type: setup-docker-engine - # - # - type: shell - # name: Test Docker Client - # shell: /bin/bash --login - # command: | - # docker --version - # docker ps - # - # - type: shell - # name: Publish Assets - # shell: /bin/bash --login - # command: | - # node ./bin/publish-assets - # ls -R `pwd`/assets/build - # - # - type: shell - # name: Docker Mochitests - # shell: /bin/bash --login - # command: | - # docker run -it \ - # -v `pwd`/assets/build/debugger.js:/firefox/devtools/client/debugger/new/debugger.js \ - # -v `pwd`/assets/build/pretty-print-worker.js:/firefox/devtools/client/debugger/new/pretty-print-worker.js \ - # -v `pwd`/assets/build/integration-tests.js:/firefox/devtools/client/debugger/new/integration-tests.js \ - # -v `pwd`/assets/build/debugger.css:/firefox/devtools/client/debugger/new/debugger.css \ - # -v `pwd`/assets/build/panel/debugger.properties:/firefox/devtools/client/locales/en-US/debugger.properties \ - # -v `pwd`/assets/build/panel/prefs.js:/firefox/devtools/client/preferences/devtools.js \ - # -v `pwd`/assets/build/panel/panel.js:/firefox/devtools/client/debugger/new/panel.js \ - # -v `pwd`/assets/build/panel/index.html:/firefox/devtools/client/debugger/new/index.html \ - # -v `pwd`/assets/build/panel/moz.build:/firefox/devtools/client/debugger/new/moz.build \ - # -v `pwd`/assets/build/mochitest:/firefox/devtools/client/debugger/new/test/mochitest \ - # -v "/tmp/.X11-unix:/tmp/.X11-unix:rw" \ - # -e "DISPLAY=unix:99" \ - # --ipc host \ - # jasonlaster11/mochitest-runner:latest \ - # /bin/bash -c "export SHELL=/bin/bash; touch devtools/client/debugger/new/test/mochitest/browser.ini && ./mach build && ./mach mochitest --subsuite devtools devtools/client/debugger/new/test/mochitest/" - - # - type: shell - # name: Flow Coverage Report - # shell: /bin/bash --login - # command: | - # set -exu - # mkdir -p /tmp/test-results/flow-coverage - # yarn run flow-coverage -- -t json -o /tmp/test-results/flow-coverage - # bash <(curl -s https://codecov.io/bash) -f /tmp/test-results/flow-coverage/flow-coverage.json - - # - type: artifacts-store - # path: /tmp/artifacts - # destination: build - - # Upload test results - - type: test-results-store - path: /tmp/test-results diff --git a/circle.yml b/circle.yml deleted file mode 100644 index 7e98cda28a..0000000000 --- a/circle.yml +++ /dev/null @@ -1,61 +0,0 @@ -machine: - node: - version: 7.7.2 - services: - - docker - environment: - DOWNLOADS_PATH: "$HOME/downloads" - YARN_PATH: "$HOME/.yarn" - YARN_VERSION: 0.24.5 - PATH: "${PATH}:${HOME}/.yarn/bin:${HOME}/${CIRCLE_PROJECT_REPONAME}/node_modules/.bin" - post: - - mkdir -p $DOWNLOADS_PATH - - mkdir -p $YARN_PATH - -checkout: - post: - - cp configs/ci.json configs/local.json -test: - pre: - - greenkeeper-lockfile-update - override: - - mkdir -p $CIRCLE_TEST_REPORTS/mocha - - mkdir -p $CIRCLE_TEST_REPORTS/flow-coverage - - mkdir -p $CIRCLE_TEST_REPORTS/jest-coverage - - jest -i --testResultsProcessor jest-junit-reporter --coverage --coverageDirectory=$CIRCLE_TEST_REPORTS/jest-coverage - - yarn license-check - - yarn lint-css - - yarn lint-js - - yarn lint-md - - yarn flow - post: - - yarn flow-coverage -- -t json -o $CIRCLE_TEST_REPORTS/flow-coverage - - yarn check --integrity - - bash <(curl -s https://codecov.io/bash) -f $CIRCLE_TEST_REPORTS/jest-coverage/coverage-final.json - -dependencies: - pre: - - ./bin/ci/install-yarn - - yarn global add greenkeeper-lockfile@github:jasonLaster/greenkeeper-lockfile#146f2fcc27577 - cache_directories: - - ~/.cache/yarn - - ~/.yarn - override: - - yarn install - - yarn global add flow-coverage-report - -general: - artifacts: - - "yarn-error.log" - -experimental: - notify: - branches: - only: - - master - -deployment: - greenkeeper: - branch: /greenkeeper\/.*/ - commands: - - greenkeeper-lockfile-upload diff --git a/configs/README.md b/configs/README.md deleted file mode 100644 index 19ef02d9f5..0000000000 --- a/configs/README.md +++ /dev/null @@ -1,2 +0,0 @@ -## Debugger Config -`debugger.html` can be configured with multiple options by editing/creating `configs/local.json`. A sample of config file is [here](local.sample.json). diff --git a/configs/application.json b/configs/application.json deleted file mode 100644 index 002ea8b844..0000000000 --- a/configs/application.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "title": "Debugger", - "environment": "development", - "workers": { - "parserURL": "http://localhost:8000/assets/build/parser-worker.js", - "sourceMapURL": "http://localhost:8000/assets/build/source-map-worker.js", - "prettyPrintURL": "http://localhost:8000/assets/build/pretty-print-worker.js" - }, - "theme": "light", - "logging": { - "client": false, - "firefoxProxy": false, - "actions": false - }, - "performance": { - "actions": false - }, - "features": { - "chromeScopes": { - "label": "Chrome Scopes", - "enabled": false - }, - "eventListeners": { - "label": "Event Listeners", - "enabled": false - }, - "codeCoverage": { - "label": "Code Coverage", - "enabled": false - }, - "codeFolding": { - "label": "Code Folding", - "enabled": false - }, - "searchNav": { - "label": "Search Navigation", - "enabled": false - } - }, - "chrome": { - "debug": true, - "host": "localhost", - "port": 9222 - }, - "node": { - "debug": true, - "host": "localhost", - "port": 9229 - }, - "firefox": { - "webSocketConnection": false, - "proxyHost": "localhost:9000", - "webSocketHost": "localhost:6080" - }, - "development": { - "serverPort": 8000, - "examplesPort": 7999 - } -} diff --git a/configs/ci.json b/configs/ci.json deleted file mode 100644 index 6eff5f67b1..0000000000 --- a/configs/ci.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "features": { - "chromeScopes": { - "label": "Chrome Scopes", - "enabled": true - }, - "eventListeners": { - "label": "Event Listeners", - "enabled": true - }, - "codeCoverage": { - "label": "Code Coverage", - "enabled": true - } - }, - "chrome": { - "debug": true - } -} diff --git a/configs/development.json b/configs/development.json deleted file mode 100644 index c6c5f644b5..0000000000 --- a/configs/development.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "title": "Debugger", - "environment": "development", - "favicon": "assets/images/favicon.png", - "theme": "light", - "dir": "ltr", - "logging": { - "client": false, - "firefoxProxy": false, - "actions": false - }, - "performance": { - "actions": false - }, - "workers": { - "parserURL": "http://localhost:8000/assets/build/parser-worker.js", - "sourceMapURL": "http://localhost:8000/assets/build/source-map-worker.js", - "prettyPrintURL": - "http://localhost:8000/assets/build/pretty-print-worker.js", - "searchURL": "http://localhost:8000/assets/build/search-worker.js" - }, - "features": { - "blackbox": { - "label": "Black Box", - "enabled": true - }, - "previewWatch": { - "label": "Add watch expression from preview", - "enabled": true - }, - "chromeScopes": { - "label": "Chrome Scopes", - "enabled": false - }, - "eventListeners": { - "label": "Event Listeners", - "enabled": false - }, - "codeCoverage": { - "label": "Code Coverage", - "enabled": false - }, - "codeFolding": { - "label": "Code Folding", - "enabled": false - }, - "searchNav": { - "label": "Search Navigation", - "enabled": true - }, - "outline": { - "label": "Source Outline", - "enabled": true - }, - "collapseFrame": { - "label": "Collapse Call Frames", - "enabled": true - }, - "columnBreakpoints": { - "label": "Column Breakpoints", - "enabled": false - }, - "highlightScopeLines": { - "label": "Highlight the lines in scope", - "enabled": false - }, - "workers": { - "label": "Workers", - "enabled": false - } - }, - "chrome": { - "debug": true, - "host": "localhost", - "port": 9222 - }, - "node": { - "debug": true, - "host": "localhost", - "port": 9229 - }, - "firefox": { - "webSocketConnection": false, - "host": "localhost", - "webSocketPort": 9000, - "tcpPort": 6080, - "mcPath": "./firefox" - }, - - "development": { - "serverPort": 8000, - "examplesPort": 7999 - } -} diff --git a/configs/firefox-panel.json b/configs/firefox-panel.json deleted file mode 100644 index 1b0762a26c..0000000000 --- a/configs/firefox-panel.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "environment": "firefox-panel", - "logging": false, - "clientLogging": false, - "firefox": { - "mcPath": "./firefox" - }, - "workers": { - "parserURL": "resource://devtools/client/debugger/new/parser-worker.js", - "prettyPrintURL": "resource://devtools/client/debugger/new/pretty-print-worker.js", - "searchURL": "resource://devtools/client/debugger/new/search-worker.js" - }, - "features": { - "blackbox": { - "enabled": true - }, - "chromeScopes": { - "enabled": false - }, - "eventListeners": { - "enabled": false - }, - "codeCoverage": { - "enabled": false - }, - "codeFolding": { - "enabled": false - }, - "searchNav": { - "enabled": true - }, - "collapseFrame": { - "enabled": true - }, - "outline": { - "enabled": true - } - } -} diff --git a/configs/local.sample.json b/configs/local.sample.json deleted file mode 100644 index dc61878709..0000000000 --- a/configs/local.sample.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "theme": "light", - "hotReloading": false, - "logging": { - "actions": false - }, - "performance": { - "actions": false - }, - "features": { - "chromeScopes": { - "label": "Chrome Scopes", - "enabled": false - }, - "eventListeners": { - "label": "Event Listeners", - "enabled": false - }, - "codeCoverage": { - "label": "Code Coverage", - "enabled": false - }, - "codeFolding": { - "label": "Code Folding", - "enabled": false - }, - "searchNav": { - "label": "Search Navigation", - "enabled": false - } - } -} diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index 4883471dc6..0000000000 --- a/docs/README.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -permalink: docs/ ---- - -## debugger.html docs - -[debugger.html react / redux overview](./debugger-html-react-redux-overview.md) - -* [Getting Setup](./getting-setup.md) -* [Local Development](./local-development.md) -* [Remotely debuggable browsers](./remotely-debuggable-browsers.md) -* [Feature Flags](./feature-flags.md) -* [Mochitests](./mochitests.md) -* [Lerna](./lerna.md) -* [Debugging the debugger](./debugging-the-debugger.md) - diff --git a/docs/client.md b/docs/client.md deleted file mode 100644 index c554939883..0000000000 --- a/docs/client.md +++ /dev/null @@ -1,36 +0,0 @@ -## Debugger Architecture - -* [Debugger Protocol](#debugger-protocol) -* [Client and Actors](#clients-and-actors) - -### Debugger Protocol - -The client speaks with the server over a websocket with a JSON protocol. - -### Clients and Actors - -The Debugger client communicates with the server via clients and actors. - -* [BreakpointClient] -* [ThreadClient] -* [SourceClient] - -#### Commands -|method|Client|Actor| -|----|----------|------| -|setBreakpoint|[client][setBreakpointActor]|[actor][setBreakpointClient]| - -**Add Commands** - -#### Events - -**Add Events** - -[BreakpointClient]:https://github.com/devtools-html/devtools-core/blob/master/packages/devtools-sham-modules/shared/client/main.js#L3008 - -[SourceClient]:https://github.com/devtools-html/devtools-core/blob/master/packages/devtools-sham-modules/shared/client/main.js#L2751 - -[ThreadClient]:https://github.com/devtools-html/devtools-core/blob/master/packages/devtools-sham-modules/shared/client/main.js#L1700 - -[setBreakpointActor]:https://dxr.mozilla.org/mozilla-central/source/devtools/server/actors/source.js#654-678 -[setBreakpointClient]:https://github.com/devtools-html/devtools-core/blob/master/packages/devtools-sham-modules/shared/client/main.js#L2925-L2969 diff --git a/docs/debugger-html-react-redux-overview.md b/docs/debugger-html-react-redux-overview.md deleted file mode 100644 index 032b07f580..0000000000 --- a/docs/debugger-html-react-redux-overview.md +++ /dev/null @@ -1,681 +0,0 @@ -# Table of Contents -1. [Architecture](#architecture) -2. [Components](#components) -3. [Component Data](#component-data) -4. [Reducers](#reducers) -5. [Actions](#actions) - - - -debugger.html -============= - -Debugger.html is an open source project that is built on top of React and Redux that functions as a standalone debugger for Firefox, Chrome and Node. This project is being created to provide a debugger that is stand-alone and does not require a specific browser tool to do debugging. - -This document gives a detailed view of the components, actions and reducers that make up the debugger.html project. Prior knowledge of React and Redux is suggested. - -React documentation can be found [here](https://facebook.github.io/react/docs/getting-started.html). -Redux documentation can be found [here](http://redux.js.org/). - -As with most documentation related to code, this document may be out of date. The last edit date occurred on August 30, 2016. If you find issues in the documentation please file an issue as described in the [contributing](https://github.com/devtools-html/debugger.html/blob/master/CONTRIBUTING.md#writing-documentation-book) guide. - -# Architecture - - -Debugger.html is a React-Redux based application — the UI is constructed using React Components. the follow illustration provides a simplictic high level view: - -![](https://docs.google.com/drawings/d/1JTDI-62CG29M37rpTGIDh70rOTuCmJf1VqxCKPe9zxM/pub?w=960&h=720) -[Click here to Edit](https://docs.google.com/drawings/d/1JTDI-62CG29M37rpTGIDh70rOTuCmJf1VqxCKPe9zxM/edit?usp=sharing) - -Application-critical objects are stored in one -global state object (housed in a Redux store) that some components have -access to. Many components are not aware of this state but are passed in -values to render using React properties. - -In the Debugger.html project we -also often use React’s setState to manage component local state. For -example, storing the state of a tree in the sources view or using it in -the App component to remember if the file search box is being displayed -(cmd->p). - -When a user -manipulates the UI, Redux Actions are fired to collect payload -data, which affects the state of the application for the given -operation. Actions set a specific type of operation for the store and -dispatch the event. - -Reducers handle all actions and decide the new -application state based on the action type. You can think of a reducer -as a set of functions that take a specific action type and the current -state of the app as parameters and returns the new state of the -application. - -The Store is a JavaScript object that contains and manages -the state of the application. After the Reducers create a new version -of the state, the store will fire a re-rendering of all the -components. Note that a new state is created every time — the old state -is not modified. - -React uses a Virtual DOM; only required changes to the -actual DOM will be rendered. - -# Components - - -debbuger.html uses React [Components](https://github.com/devtools-html/debugger.html/tree/master/src/components) to render portions of the -application. Each component’s source code is located under the -src/components folder. In this section we will cover how the -presentation pieces fit together; later we will discuss -how debugger.html uses Redux to wire up data to each of the components. - -The top-level component is the App component; it encapsulates all -other components. Presented below is an overview of the component -architectural relationships: - - -![](https://docs.google.com/drawings/d/1cIa-Cf2pPi3vCKvsCrUSfC1_1LG3XDH7GpNKmWIIKWY/pub?w=960&h=720) -[Click here to Edit](https://docs.google.com/drawings/d/1cIa-Cf2pPi3vCKvsCrUSfC1_1LG3XDH7GpNKmWIIKWY/edit) - - -The App component uses two SplitBox components to separate the -presentation of the app into three different sections. Two Draggable -components are used to allow each of the sections to be expanded or -collapsed. - -![](https://docs.google.com/drawings/d/1lAEyyci8SQZzh4Dk-EowX0wGnvyOISGO3sqdtzgQqoo/pub?w=960&h=720) -[Click here to Edit](https://docs.google.com/drawings/d/1lAEyyci8SQZzh4Dk-EowX0wGnvyOISGO3sqdtzgQqoo/edit?usp=sharing) -## Source tree view - -The left-most section of the application displays the source tree for -the application being debugged. Three components are used to manage -the display of this data: - -* The Sources component is -aware of the Redux state and the other components are not — it passes required properties to be rendered down to the other -two. - -* The SourcesTree component is primarily responsible for rendering -the tree with a set of files/folders that are passed in as a property. - -* The ManagedTree component uses React local State to track which nodes -have been expanded or collapsed and which node or leaf on the tree has -focus. - -The Sources component encapsulates SourcesTree and -SourcesTree encapsulates ManagedTree. - -![](https://docs.google.com/drawings/d/1dOCy4BePfX77ky3yUTlZRnAeeFIIi4UAJcYaYmYvUcY/pub?w=960&h=720) -[Click here to Edit](https://docs.google.com/drawings/d/1dOCy4BePfX77ky3yUTlZRnAeeFIIi4UAJcYaYmYvUcY/edit?usp=sharing) - -## Source editor/file search - -The center portion of the application displays either the source editor or a file search entry box. If the editor is displayed rendering is handled by three main components and one dynamic component. - -* At the top of the editor is the SourceTabs component, which is responsible for rendering tabs for every open file and highlighting the tab of the file currently open. - -* The Editor component is responsible for rendering the text, gutters and breakpoints for the currently selected file. Debugger.html uses the CodeMirror npm package to do the actual rendering. The Editor component manages calls to CodeMirror. - -* Any time a breakpoint is set, the Editor creates a dynamic component called Breakpoint. The Breakpoint component is contained in the EditorBreakpoint.js file. The BreakPoint component also makes calls to CodeMirror for actual rendering of the breakpoint within the editor. - -* The last component on the page is the SourceFooter component. This component renders buttons for blackboxing and prettify source functions. - -![](https://docs.google.com/drawings/d/1PC63VABa0x-W3hACi7ASXgawQeowbAvA_aqN_Z1wpRI/pub?w=960&h=720) -[Click here to Edit](https://docs.google.com/drawings/d/1PC63VABa0x-W3hACi7ASXgawQeowbAvA_aqN_Z1wpRI/edit?usp=sharing) - -At any time a user can search the sources for a specific string by -pressing cmd->p. This will replace all of the components in the -center section with a search box. The search box is rendered using the -Autocomplete component. - -![](images/search.png) - -## Tools view - -The farthest right section of the application is handled by many components. At the top of the component architecture is the RightSidebar component, which renders the play/pause command bar and encapsulates the Accordion component, responsible for formatting and rendering the layout including the arrow icons and headers. This component encapsulates the Breakpoints, Frames, and Scopes component: - -* The Breakpoints component renders a list of all existing breakpoints. - -* The Frames component is responsible for rendering the current call stack when a breakpoint is reached. - -* The Scopes component is responsible for rendering the current variable scopes for the given breakpoint. It uses the ObjectInspector component to render the tree for all scopes and variables. The state of which nodes are collapsed/expanded are maintained using a ManagedTree component, in similar fashion to the SourcesTree component. - -![](https://docs.google.com/drawings/d/1zHogPebNmOFT9Xx6cZsaA6R6cTQLUzBXePV9sf62chA/pub?w=960&h=720) -[Click here to Edit](https://docs.google.com/drawings/d/1zHogPebNmOFT9Xx6cZsaA6R6cTQLUzBXePV9sf62chA/edit?usp=sharing) - -# Component Data - -Some components in Debugger.html are aware of the Redux store; others are -not and are just rendering passed in properties. The Redux-aware -components are connected to the Redux store using the connect() method, as illustrated by the following code: - -```javascript -const React = require("react"); -const { connect } = require("react-redux"); -const { bindActionCreators } = require("redux"); -. -. -const actions = require("../actions"); -. -. -. - -module.exports = connect( - state => ({ - pauseInfo: getPause(state), - expressions: getExpressions(state) - }), - dispatch => bindActionCreators(actions, dispatch) -)(Expressions); -``` - -This example shows the Expressions component, which should be aware of -the Redux state. We are using Redux’s connect() method to connect to the -Redux store. This example is pulling in pauseInfo and Expressions from -the Redux state. Finally, all of the actions in the actions folder are -combined and the contained actionCreators in each of the files are setup -so the actions can be called directly from the component. - -# Reducers - - -The [Reducers](https://github.com/devtools-html/debugger.html/tree/master/src/reducers) are all located in the src/reducers folder and are -all combined using Redux’s combineReducers() function. This function is -executed in main.js as follows: - -```javascript -const reducers = require("./reducers"); - -. - -. - -const store = createStore(combineReducers(reducers)); -``` - -All of the reducers are combined using the index.js file in the -reducers folder. In the Debbuger.html project, each reducer has an -update() function to handle actions for its slice of state. - -## Async-requests - -The **async-requests** reducer creates an array that stores a unique -sequence number for every promise being executed from an action. -It removes the sequence number from the array when a specific promise -resolves or rejects. The following image shows a snapshot of the -debugger.html state with an active promise. - -![](images/asynchreducer.png) - -## Breakpoints - -The **breakpoints reducer** is responsible for handling breakpoint -state. It adds an Immutable Map of breakpoint objects and a Boolean -value for whether breakpoints are disabled to the application state. - -![](images/breakpoints1.png) - -Each breakpoint object in the map contains information like the -location, the actual source file, whether the breakpoint is disabled, -a unique id, and the text for the breakpoint. The following is an example -of what the breakpoints state looks like for a selected breakpoint: - -![](images/breakpoints2.png) - -The breakpoints reducer handles several action types. The actions -handled by this reducer are all fired wrapped in a promise. The status -of the promise can be checked in the action object using code similar to -the following: - -```javascript -if (action.status === "start") { -``` - -Valid values are start, done and error. - -The following action types are handled: - -- ADD\_BREAKPOINT - This command adds breakpoints to the state as - shown in the image above. While the promise is being fulfilled the - loading attribute is set to true and a basic breakpoint object - is created. If the promise is completed, the location is updated - and the loading attribute is set to false. If the promise fails, the - breakpoint is deleted from the state. - -- TOGGLE\_BREAKPOINTS - Sets the value of the breakpointsDisabled - attribute and is used to disable or enable all breakpoints. - -- SET\_BREAKPOINT\_CONDITION - This action sets the condition - attribute for a specific breakpoint. This functionality is currently not implemented in the UI. - -- REMOVE\_BREAKPOINT - This action actually handles disabling or - removing a breakpoint. If the breakpoint is being disabled the - disabled attribute of the breakpoint is set to false. If - the breakpoint is removed it is deleted from the breakpoints state. - - -The breakpoints reducer additionally supplies functions to -retrieve information from the breakpoints state. For example the -getBreakpointsForSource() function returns all breakpoints for a given -source file. The editor component uses this to retrieve all the -breakpoints for the currently opened file. - - - -## Events-listeners - -The **events-listeners** reducer is responsible for managing the state -for the current list of DOM events that currently have listeners bound -in the web application being debugged. This reducer also stores the -current listeners selected for the debugger to break on. Additionally -this reducer manages state that keeps track of when the event listeners -are being fetched with the fetchingListeners flag. - -\*\*As of this moment the UI for this feature is not implemented. I also -did not see gThreadClient created. - -![](images/eventlisteners.png) - -## Pause - -The **pause** reducer is responsible for managing state variables needed -to primarily handle pause and resume conditions in the debugger. These -pause conditions can occur because of a set breakpoint in code being -debugged, an exception, or an event listener being -debugged. - -![](images/pause.png) - -* The pause object stores information like why the debugger paused, the -current call stack frame, the current source location, and the current -variable scope. - -* The frames object stores all the frames for the current -call stack. - -* The selectedFrame object stores the call stack frame -currently selected in the Debugger.html UI. - -* The loadedObjects object -stores the currently selected and expanded variable in the scopes pane. - -\*\*The expressions object stores all of the current watch expressions, -which is not implemented in the UI yet. - -The pause reducer handles the following action types: - -- PAUSE – Handles loading and updating the state for all the variables - described above. - -- RESUME – Clears all state variables associated with a pause. - -- BRAKE\_ON\_NEXT – This action type is triggered when a user presses - the pause button and informs the JavaScript engine to break on the - next JavaScript statement. Until the engine actually breaks, a flag that tracks the status is stored in state. - -- LOADED\_FRAMES – This action type occurs when all the frames for the - call stack have been retrieved. As stated above these are stored in - the application state. - -- SELECT\_FRAME - This action type occurs when a user is selecting - different frames of the call stack while the debugger is paused. - -- LOAD\_OBJECT\_PROPERTIES – This action type occurs when a user is - expanding the variable tree under the scope pane. The currently - expanded variable is then stored in state. - -- PAUSE\_ON\_EXCEPTIONS – This action type occurs when the settings - (pause on exceptions and ignore caught exceptions) for the debugger - are changed. These values are then stored in state. - -- ADD\_EXPRESSION – This action type occurs when a new watch - expression has been added. - -- EVALUATE\_EXPRESSION – This action type is triggered when a watch - expression is being evaluated. - -- UPDATE\_EXPRESSION – This action type is triggered when updating a - watch expression. - -- DELETE\_EXPRESSION – This action type is triggered when a watch - expression is deleted. - -The pause reducer also has many getter functions to retrieve portions of -state that are stored by this reducer. - - -## Sources - -The **sources** reducer is responsible for maintaining state variables -that are used in the managing of opening and closing source files in the -debugger. The state variables for this reducer contain elements that -manage things like sources in the source tree, the currently open file, the -source text for all open files, source maps for source files, and open -tabs within the editor. - -* The sources object contains an array of all the sources in the source -tree and is built when a project is loaded into the debugger. When the -prettify source button is selected a new source is added to the sources -object representing the new text prettified. - -* The selectedSource object -contains information on the currently opened file in the editor and is -altered when new files are opened or tabs are switched. - -* The sourcesText -state variable is an array of objects where each object contains the -source text for an open file in the debugger. - -* The sourceMaps object is -similar to sourcesText but it contains the associated source map text. - -* The tabs object manages how many tabs are opened and what file is -associated with each. - -![](images/sources.png) - -The sources reducer handles the following action types: - -- ADD\_SOURCE – This action type occurs when a project is loading and - source files are being added to the source tree. Additionally - prettify source will add additional files. - -- ADD\_SOURCES – This type is similar to ADD\_SOURCE but takes a map - of source files. Currently this type is not used in the debugger. - -- LOAD\_SOURCE\_MAP – This action type occurs when a source map is - loaded for a specific source file. - -- SELECT\_SOURCE – This action type is triggered when a file is opened - or a different tab is selected in the debugger. - -- SELECT\_SOURCE\_URL – This action type is triggered when a URL - designates the selected source file. Need more data on this one. - -- CLOSE\_TAB – This action type is triggered when a tab is closed in - the debugger. The tab is cleared from state and the proper source - is selected. - -- LOAD\_SOURCE\_TEXT – This event is triggered when the text of a file - is being loaded. The event is wrapped in a promise so it will be - called twice — once when it is started and once when it is complete. - Once loaded the text is loaded in the sourcesText state object. - -- BLACKBOX – This event is triggered when black boxing is enabled and - the button is selected for a given source. The black box status for - each file is stored in the sources state object. - -- TOGGLE\_PRETTY\_PRINT – The event is triggered when a toggling of - the prettify source button is selected. The reducer updates the - sourcesText with the new text and updates the isPrettyPrinted flag - in the sources state object. - -The sources reducer also has many getter functions to retrieve portions -of state that are handled in this reducer. - -## Tabs - -The **tabs** reducer is used to track which connected application is -being debugged. When the main debugger is started every connected -application will be displayed. For example, all the open tabs in a -Firefox browser that are connected to the debugger will be shown. - -![](images/maintab.png) - -This reducer stores two objects in state: - -* The tabs object stores an -array of connected applications. - -* The selectedTab object stores the -current application that is being debugged. - -![](images/tabs.png) - -The tabs reducer handles the following action types: - -- ADD\_TABS – This action type is triggered for every connected - application when the debugger is started. - -- SELECT\_TAB – This action type is triggered when a specific - application is selected for debugging. - -# Actions - -The [actions](https://github.com/devtools-html/debugger.html/tree/master/src/actions) in debugger.html are all located in the -src/actions folder; there is an action file corresponding to - each reducer, which is responsible for dispatching the -proper event when the application state needs to be modified. In this -section we will cover each action file. As stated earlier, many of the -actions defined in these files are actionCreators that are setup to use -in a component via the bindActionsCreator() Redux method. - -## breakpoints - -The **breakpoints** action file handles manipulating breakpoints in the -debugger - -The breakpoints file exports the following functions: - -- enableBreakpoint() - This function dispatches the ADD\_BREAKPOINT - action and is called from the breakpoints component when a user - selects the checkbox next to a breakpoint listed in the Breakpoints - category on the right bar. Breakpoints listed here are currently enabled or previously - enabled and now disabled, therefore this function is only called - when re-enabling an existing breakpoint. - -- addBreakpoint() - This function dispatches the ADD\_BREAKPOINT action - and is called from the Editor component when a user clicks on the - left gutter next to the source text and no breakpoint is currently - on this line. - -- disableBreakpoint - This function dispatches the REMOVE\_BREAKPOINT - action and is called from the breakpoints component when clicking on - the checkbox next to a breakpoint listed in the right bar under the - Breakpoints category. Ultimately the breakpoint is not removed — - the disabled flag is set for the specific breakpoint, which is - handled in the breakpoints reducer. - -- removeBreakpoint() - This function dispatches the REMOVE\_BREAKPOINT action - and is called from the editor component when a user clicks on an - existing breakpoint from the left side gutter. - -- toggleAllBreakpoints() – This function dispatches the - TOGGLE\_BREAKPOINTS action and is called from the RightSideBar - component when the disable/enable all breakpoints button is clicked. - This results in either disableBreakpoint() or enableBreakpoint() being - called for every breakpoint currently active. - -- setBreakpointCondition() – Currently not implemented. - -## event-listeners - -The **event-listeners** action file handles retrieving a list of all the -DOM events that currently have listeners bound in the web application -being debugged. In addition, it handles selecting specific ones for the -debugger to break on. - -The event-listeners file exports the following functions: - -- updateEventBreakpoints() – This function passes an array of DOM events that should cause the debugger to break to the connected client - being debugged. Next it dispatches the - UPDATE\_EVENT\_BREAKPOINTS action. The UI is not yet built - for this. - -- fetchEventListeners() – This function retrieves a list of DOM events that - currently have listeners bound for the application being debugged. - Once retrieved the fetchEventListeners() function dispatches the - FETCH\_EVENT\_LISTENERS action. - -## pause - -The **pause** action file handles all functions responsible for -pausing, resuming and manipulating the debugger by stepping through -code. The functions contained in this file handle several calls back and -forth with the connected client (Firefox, Chrome, Node). Most of the -client functions are defined in the -src/clients/specificclient/events.js and -src/clients/specificclient/commands.js files. The pause action -file exports the following functions: - -- addExpression() – Called from the - Expressions component, this function dispatches the ADD\_EXPRESSION action. - Expressions are passed and evaluated by the connected client. - -- updateExpression() - Called from the - Expressions component, this function dispatches the UPDATE\_EXPRESSION action. - . Expressions are passed and evaluated by the connected client. - -- deleteExpression() - Called from the - Expressions component, this function dispatches the DELETE\_EXPRESSION action. - . Expressions are passed and evaluated by the connected client. - -- resumed() – Called from the connected client, this function - dispatches the RESUME action. This - function is called anytime the connected client resumes execution - after a pause. This includes using a step function to advance - execution by one line. - -- paused() – Called from the connected client - anytime the client pauses and dispatches a PAUSED action. Before - dispatching the call stack frames, current frame, and reason - for the pause are retrieved from the connected client. These values - are all passed in the dispatched action. - -- pauseOnExceptions() – This function is called from the RightSideBar - component and dispatches the PAUSE\_ON\_EXCEPTIONS action. Before - doing this the connected client is called and passes two values to - instruct the connected client to (pause/not pause) on exceptions and - whether to ignore caught exceptions. - -- command() – This function is called indirectly by the - RightSideBar component. This is a generic function that sends - different commands to the connected client. After the command is - executed the COMMAND action is dispatched. The client commands are - defined in the src/clients/specificclient/commands.js file. - -- stepIn() – This function is called from the RightSideBar. This - function calls the command() function to pass it - to the connected client. - -- stepOut() - This function is called from the RightSideBar. This - function calls the command() function to pass it - to the connected client. - -- stepOver() - This function is called from the RightSideBar. - This function calls the command() function to pass it to the connected client. - -- resume() – This function is called from the RightSideBar when the play - button is pressed and the debugger is currently paused. This - function calls the command() function to pass it - to the connected client. - -- breakOnNext() – This function is called from the RightSideBar when the - pause button is pressed and the debugger is currently not paused. - This function calls the connected clients breakOnNext() function, - which is defined in the - src/clients/specificclient/commands.js file. After returning - from the client call the BREAK\_ON\_NEXT action is dispatched. - -- selectFrame() – This function is called from the Frames component when - a user selects a specific frame under the Call Stack UI. This - function first calls selectSource() function, which is defined in the - sources action. This loads up the editor with text for the - specific frame. The SELECT\_FRAME action is then dispatched. - -- loadObjectProperties() – This function is called from the Scopes - component, which passes the data to the ObjectInspector component as - a property to display in the variable tree under the Scopes panel. - This function is also called directly from the ObjectInspector as - the variable tree is expanded. The function calls the connected - client to retrieve the values and dispatches the - LOAD\_OBJECT\_PROPERTIES action. - - -## sources - -The **sources** action is responsible for providing functions that -support opening files in the editor, managing the tabs within the -editor and supplying black box and pretty print functionality. The sources -action file exports the following functions: - -- newSource() – This function is called from the connected - client as defined in src/clients/specificclient/events.js when - a project is loaded. In addition newSource() is called whenever a - source map is loaded to add it to the project. This function checks - to see if a source map needs to be loaded and if so dispatches the - LOAD\_SOURCE\_MAP action, then - the ADD\_SOURCE action. Finally, if this source is to be displayed - in the editor the selectSource() function is called. - -- selectSource() – This function is called any place in the - UI where a specific source needs to be displayed in the editor. This - can happen from the source tree, the tabs across the top of the - editor, in the Call Stack panel, and when the Prettify Source button - is pressed. These locations correspond to the SourcesTree, - SourceTabs, Breakpoints, and SourceFooter components. The function - first dispatches the LOAD\_SOURCE\_TEXT action, which is wrapped in - a promise. The SELECT\_SOURCE action is then dispatched. This - usually results in a LOAD\_SOURCE\_TEXT action firing first then the - SELECT\_SOURCE followed by another LOAD\_SOURCE\_TEXT when the - promise completes and the text is loaded. - -- selectSourceURL() – Currently this function is only exposed in the - src/main.js file to external clients. The function first - dispatches a SELECT\_SOURCE action and then dispatches the - SELECT\_SOURCE\_URL action. As stated above the text is loaded with - the selectSource() function. - -- closeTab() – This function is called from the SourceTabs() component - whenever a tab is closed. The function dispatches the - CLOSE\_TAB action. - -- blackbox() – This function is called from the SourceFooter component - whenever the blackBox button is pressed. The button acts as a toggle - for the file currently open in the editor. The function dispatches the - BLACKBOX action and calls the connected client to either enable or - disable black boxing on a specific file. - -- togglePrettyPrint() - This function is called from the SourceFooter - component whenever the Prettify Source button is pressed. This - function first creates a new URL for the formatted text and then - dispatches an ADD\_SOURCE action through an internal function, which - adds the new file to the project. Next, the function dispatches a - TOGGLE\_PRETTY\_PRINT action, which contains a promise that starts a - Worker thread to transform the source. The worker is defined - in assets/build/pretty-print-worker.js. The selectSource() function is then - called to select the new source. - -- loadSourceText() – This function is called whenever a source is - selected using the selectSource() function (described above) and - whenever getTextForSources() is called (described below). The - loadSourceText() function is responsible for loading the source text - for an individual file. The function first checks to see if the text - for the selected file is already is already stored in the state. If - it is, the function returns this text. If the text is not already - stored, the LOAD\_SOURCE\_TEXT action is dispatched and is wrapped - in a promise. This function will dispatch the LOAD\_SOURCE\_TEXT - once for the start of the promise and once for when it completes. It - returns the source text and if a source map is used, the text for - the source map will also be returned. These are then stored in state - by the reducer. - -- getTextForSources() – This function takes a set of source files and - calls loadSourceText() to load each file. Currently this function is - not used in debugger.html. - -## tabs - -The **tabs** action is responsible for gathering all connected -clients that can be debugged, and gathering the tabs for each application that can be debugged on the connected client. The tabs action -file exports the following functions: - -- newTabs() – This function is called from src/main.js and sets - the action type to ADD\_TABS. The action is dispatched from the - src/main.js when debugger.html is loading and displaying - the main page or when starting to debug when a specific tab - is selected. - -- selectTab() – This function is called from src/main.js when a - user has selected a specific tab from a connected application - to debug. It sets the action type to SELECT\_TAB and the action is - then dispatched in src/main.js. diff --git a/docs/debugging-the-debugger.md b/docs/debugging-the-debugger.md deleted file mode 100644 index f58ded817e..0000000000 --- a/docs/debugging-the-debugger.md +++ /dev/null @@ -1,101 +0,0 @@ -# Debugging the Debugger - -Debugging the Debugger is one of the highest levels of inception. Before you begin, prepare yourself for a mind-bending trip of self discovery. - -### Playing with the debugger - -Setup the Debugger so that your environment looks like this [gif][debugger-intro-gif]. - -If you have any questions, go back to the [getting setup][getting-setup] -instructions. - - -### Design a new theme :snowflake: - -Lets design a new theme for the debugger, it's not too hard! Our goal here is to style the source tree, editor, and other UI components. - -Share your a screenshot of your theme [here][getting-started-issue]! Here's an example camo [theme][camo-theme] that I designed the other day. - - -### Make breakpoints dance :dancers: - -Adding a breakpoint is a critical piece in the inception game... -Lets make the debugger do something special when a breakpoint is added. - -```diff -diff --git a/src/components/Editor.js b/src/components/Editor.js -index ae71d2d..66e0c04 100644 ---- a/src/components/Editor.js -+++ b/src/components/Editor.js -@@ -78,11 +78,14 @@ const Editor = React.createClass({ - return this.closeConditionalPanel(line); - } - -+ // => hamster dance -+ - this.toggleBreakpoint(line); - }, -``` - -We currently don't have anything awesome as a demo. If you come up with something cool, feel free to share it [here][getting-started-issue] and we can add it to the doc! - -### Pausing FTW :red_circle: - -When the debugger pauses, the fun begins. Here's a [gif](http://g.recordit.co/qutDioRQvy.gif) of what the debugger does normally when it pauses. Your mission if you choose to accept it, is to make it do something truly weird. - -Here's a patch to get you started where we check in the Editor to see if we're paused in a re-render. - -```diff -diff --git a/src/components/Editor.js b/src/components/Editor.js -index ae71d2d..6690d05 100644 ---- a/src/components/Editor.js -+++ b/src/components/Editor.js -@@ -78,11 +78,14 @@ const Editor = React.createClass({ - return this.closeConditionalPanel(line); - } - - const line = this.editor.codeMirror.lineAtHeight(event.clientY); - const bp = breakpointAtLine(this.props.breakpoints, line); - this.showGutterMenu(event, line, bp); -@@ -329,6 +332,11 @@ const Editor = React.createClass({ - this.showSourceText(sourceText, selectedLocation); - } - -+ // the debugger is paused -+ if (nextProps.selectedFrame) { -+ // do something really cool here -+ } -``` - -### Debugger Philosophy - -Here's the debugger philosophy in a nutshell. - -1. When you inspect the running debugger app, you're debugging a web app -2. The Debugger like other applications has an API to communicate with the browser -3. There's no magic here. If you can build a web app, you can hack on the debugger! -4. You are the debugger's principal customer. Remember, the customer is always right! - -Please let us know if we're missing something zen [here][getting-started-issue]. - - -### Next Steps - -Now that you've internalized the debugger philosophy, it's time to start putting this wisdom to use. - -**Share what you know** Give a talk in school, work, or a local meetup. I'm willing to bet your audience will not know the debugger is a web app! Write a blog post. We'd be happy to link to it here and it could go a really long way towards helping a newcomer grok the philosophy. - -- here are @amitzur's [slides][amit-slides] from his [talk][amit-tweet] - -**Contribute back** take a look at how you can [contributing][contributing]. We would love the help! - - - -[contributing]: ../CONTRIBUTING.md -[getting-setup]: ./getting-setup.md -[getting-started-issue]:https://github.com/devtools-html/debugger.html/issues/1247 - -[debugger-intro-gif]:http://g.recordit.co/WjHZaXKifZ.gif -[amit-slides]:https://docs.google.com/presentation/d/1jdnvL-BwwxEuFbb9tiRxcT6UT-Ua0jGhy9FKBT4b43E/edit -[amit-tweet]:https://twitter.com/amitzur/status/790153843946426369 -[camo-theme]:https://cloud.githubusercontent.com/assets/254562/20683683/ec030354-b57a-11e6-98bc-c8da75721e78.png diff --git a/docs/debugging.md b/docs/debugging.md deleted file mode 100644 index fb4dce3ff0..0000000000 --- a/docs/debugging.md +++ /dev/null @@ -1,111 +0,0 @@ -## Debugging Tips - -+ [Components](#components) -+ [Actions](#actions) -+ [Reducers](#reducers) -+ [Client](#client) -+ [Communication](#communication) - -The best thing about React and Redux is that it simplifies the development workflow. - -Generally speaking, code belongs in one of four buckets: component, action, reducer, or client. - -There are different strategies for debugging each bucket, which we'll outline below. - -Also, because the Debugger is just a web page, all of your web development debugging strategies will carry over as well. - -### Components - -The first thing you want to find the component to work on. -The react devtools extension is useful for finding the correct component. - -Once you find the component, check the component's state and props and monitor the render calls. -The easiest way to do this is to add a breakpoint in the render function. - -![react-dt] - -### Actions - -Actions are the Debugger's API for adding breakpoints, stepping, and everything else. - -Sometimes you want to know how to invoke an action or figure out why it's not working. -Sometimes you want to understand why the state is what it is and what actions have occurred. - -A good place to start is logging. You can log the Debugger's actions by enabling `logging.actions` in your local config. You can also use Redux's devtools to see the actions that are invoked and how they updated the state. - -Once you've narrowed the question down to an action you can debug it either in the console or unit tests. - -It's easy to try invoking an action in the console with the `getGlobalsForTesting` helper: - -```js -getGlobalsForTesting().actions.selectSource() -``` - -We have unit tests for several of our actions in `src/actions/tests`. -It's nice to look at the unit tests to see how an action *should* be called. If you don't see the use case you're looking for, add a unit test to try it out. Once you get it working you can PR the new unit test and everyone benefits :) - -![redux-dt] - -### Reducers - -It's really common to want to know what data the Debugger has. -For instance, what does a breakpoint look like? -In Redux, the reducers are like the application database and it's tremendously useful to be able to inspect them. - -It's easy to view the current Debugger state in the console with -the `appStore` global. Because the data is immutable, you'll need to request the state each time you want to see it. - -```js -appStore.getState().sources.toJS() -``` - -You can also test out a selector in the console with the `getGlobalsForTesting` helper: - -```js -getGlobalsForTesting().selectors.getBreakpoints(appStore.getState()) -``` - -### Client - -Perhaps, the most interesting question you can ask about the Debugger is how does it work? -This question often takes the form of, "how is a breakpoint added?" or "what happens when the debugger pauses?". - -To answer these questions, you need to look at the Debugger's client, which talks to the server over a websocket. - -The client commands are available on the console at `client` for testing purposes: - -```js -client.setBreakpoint(...) // will add a breakpoint -client.resume() // will resume when paused -``` - -The best way to see what the client does is the view the communication over the websocket. - -Here's a sample of some websocket frames from the Debugger attaching: - -```json -{"to":"server2.conn7.child1/27","type":"attach","options":{}} -{"from":"server2.conn7.child1/27","type":"paused","actor":"server2.conn7.child1/pause28","poppedFrames":[],"why":{"type":"attached"}} -{"to":"server2.conn7.child1/27","type":"resume","resumeLimit":null} -{"from":"server2.conn7.child1/27","type":"resumed"} 54 -{"from":"server2.conn7.child1/tab1","type":"newSource","source":{"actor":"server2.conn7.child1/29","generatedUrl":null,"url":"http://localhost:7999/mutating.html","isBlackBoxed":false,"isPrettyPrinted":false,"isSourceMapped":false,"sourceMapURL":null,"introductionUrl":null,"introductionType":null}} -{"from":"server2.conn7.child1/27","type":"newSource","source":{"actor":"server2.conn7.child1/29","generatedUrl":null,"url":"http://localhost:7999/mutating.html","isBlackBoxed":false,"isPrettyPrinted":false,"isSourceMapped":false,"sourceMapURL":null,"introductionUrl":null,"introductionType":null}} -{"sources":[{"actor":"server2.conn7.child1/29","generatedUrl":null,"url":"http://localhost:7999/mutating.html","isBlackBoxed":false,"isPrettyPrinted":false,"isSourceMapped":false,"sourceMapURL":null,"introductionUrl":null,"introductionType":null}],"from":"server2.conn7.child1/27"} -{"to":"server2.conn7.child1/29","type":"source"} -``` - -### Communication - -Lastly, it's worth mentioning that Developer Tools is an *advanced* subject -you're actually inquiring into how JS works. It's awesome that you're curious and there -are lots of people in our [slack] channel who are learning alongside of you. - -The best thing to do is to join our slack and share what you're learning and ask others questions. -They'll be plenty of people who are curious and happy to share what they know. -Also, down the road, this is a subject that plenty of people are interested in learning and great fodder for [talks]. - -[slack]: https://devtools-html-slack.herokuapp.com/ -[talks]: ../CONTRIBUTING.md#give-a-talk-speech_balloon - -[react-dt]: https://cloud.githubusercontent.com/assets/254562/25345125/2cdc225e-28e2-11e7-9642-c7ead9916218.png -[redux-dt]: https://cloud.githubusercontent.com/assets/254562/25345124/2cd6cf8e-28e2-11e7-8d4a-00a566240e74.png diff --git a/docs/feature-flags.md b/docs/feature-flags.md deleted file mode 100644 index 4c26088ee3..0000000000 --- a/docs/feature-flags.md +++ /dev/null @@ -1,43 +0,0 @@ -## Feature Flags - -The debugger.html project has a system for [feature flags](https://en.wikipedia.org/wiki/Feature_toggle), a system that allows us to ship certain features which are off by default. Features must be in active development with the intention of landing in the core; feature flags are not intended for landing broken code or features which are not under active development. - -Feature flags toggle features that are either: - -* experimental or in a testing phase -* designed to be configured locally - -Periodically feature flags are removed as features are either out of the experimental phase and merged into the core or are removed and no longer available. In the future we may turn on certain features for subsets of the population. - -## Configure - -All feature flags are configured in the [configs directory](../configs/). See the [config/README][configs-readme] for descriptions of each flag. - -## Development - -When developing features behind a feature flag there are resources within the codebase to help you. Here are steps to follow when creating a feature flag. - -- Add an option to the [configs/development.json](../configs/development.json) file, default to `false` (off) -- Create a corresponding entry in the [configs/README][configs-readme] that describes the flag -- Add the code required to create the feature flag - -The `isEnabled` function checks the truthy value of a feature flag. Pass in the full object name and location for the value. Features are located within the `features` object and therefore have the name `features.X` where `X` is the name of the feature being described. - -### Example - -Search for [isEnabled](https://github.com/devtools-html/debugger.html/search?utf8=%E2%9C%93&q=isEnabled) in the code to find more examples. - -```js -// within the components directory you can require isEnabled -const { isEnabled } = require("devtools-config"); - -// feature check can be done in render() method -render() { - if (!isEnabled("pokemon-go")) { - return null; - } - return dom.div(null, 'pokestop!'); -} -``` - -[configs-readme]: ../configs/README.md diff --git a/docs/flow.md b/docs/flow.md deleted file mode 100644 index 6e54c728df..0000000000 --- a/docs/flow.md +++ /dev/null @@ -1,168 +0,0 @@ -## Flow - -- [Adding flow to a file](#adding-flow-to-a-file) -- [Running flow](#running-flow) -- [Missing Annotation](#missing-annotation) -- [Where are types defined?](#where-are-types-defined) -- [Checking flow coverage](#checking-flow-coverage) -- [Flow Conventions](#flow-conventions) -- [Common Errors](#common-errors) - - [Required property](#required-property) - - [Missing Annotation](#missing-annotation) - - [Type Inconsistencies](#type-inconsistencies) - - -The debugger uses Facebook's [flow](https://flowtype.org/) type checker. - -Rationale: -* *code clarity* - helps team members understand the code -* *refactoring* - guarantees functions integrate well -* *code reviews* - adds a static check like linting - -### Running flow -``` -yarn run flow -``` - -Go checkout the [Flow related issues][flow-issues] - -### Adding flow to a file - -Add `// @flow` to the top of the file. - -```diff -diff --git a/src/components/Editor.js b/src/components/Editor.js -index b0fe9a6..8889a56 100644 ---- a/src/components/Editor.js -+++ b/src/components/Editor.js -@@ -1,3 +1,5 @@ -+// @flow -+ -``` - -Then run `yarn run flow` in your terminal. The first run will likely take 30 seconds to initialize, but subsequent runs will be fast. - -Here's a [gif](http://g.recordit.co/QYAyms9n3C.gif) of flow being added to the SearchBar and a couple of issues being resolved. - -### Where are types defined? - -* Debugger [types](https://github.com/devtools-html/debugger.html/blob/master/src/types.js) -* Debugger action [types](https://github.com/devtools-html/debugger.html/blob/master/src/actions/types.js) -* Useful React and Global [types](http://www.saltycrane.com/blog/2016/06/flow-type-cheat-sheet/) -* Builtin [types](https://flowtype.org/docs/quick-reference.html) - - -### Checking flow coverage - -``` -flow coverage --color -yarn run flow-coverage -yarn run flow-redux -yarn run flow-react -yarn run flow-utils -``` - -### Flow Conventions - -### Flow type conventions - -We are currently using the following conventions - -- the type names should be CamelCased (e.g. `SourceText`) -- the types used to annotate functions or methods defined in a module should be exported only when - they are supposed to be used by other modules (`export type ExtensionManifest = ...`) -- any type imported from the other modules should be in the module preamble (near to the regular ES6 imports) -- all the flow type definitions should be as close as possible to the function they annotate - -### Common Errors - -#### Required property - -Problem: In this case, flow is not sure that the editor property is defined. - -``` -src/components/Editor/SearchBar.js:172 -172: const ctx = { ed, cm: ed.codeMirror }; - ^^^^^^^^^^ property `codeMirror`. Property cannot be accessed on possibly undefined value -172: const ctx = { ed, cm: ed.codeMirror }; - ^^ undefined -``` - -Solution: make sure that the property is required. - -```diff ---- a/src/components/Editor/SearchBar.js -+++ b/src/components/Editor/SearchBar.js -@@ -22,7 +22,7 @@ function countMatches(query, text) { - const SearchBar = React.createClass({ - - propTypes: { -+ editor: PropTypes.object.isRequired, -- editor: PropTypes.object, - sourceText: ImPropTypes.map.isRequired, - selectedSource: ImPropTypes.map - }, -@@ -144,7 +144,8 @@ const SearchBar = Rea -``` - - -#### Missing annotation - -This is a pretty common flow error and it is usually the simplest to fix. - -It means that the new code added in the sources doesn't define the types -of the functions and methods parameters, e.g. on the following snippet: - -```js -export default async function getValidatedManifest(sourceDir) { - ... -} -``` - -flow is going to raise the error: - -``` -src/util/manifest.js:32 - 32: sourceDir - ^^^^^^^^^ parameter `sourceDir`. Missing annotation -``` - -which is fixed by annotating the function correctly, e.g.: - -```js -export default async function getValidatedManifest( - sourceDir: string -): Promise { - ... -} -``` - -#### Type inconsistencies - -Some of the flow errors are going to contain references to the two sides -of the flowtype errors: - -``` -tests/unit/test-cmd/test.build.js:193 -193: manifestData: basicManifest, - ^^^^^^^^^^^^^ property `applications`. Property not found in - 24: export type ExtensionManifest = {| - ^ object type. See: src/util/manifest.js:24 - -``` - -- The first part points to the offending code (where the type violation has been found) -- The second part points to the violated type annotation (where the type has been defined) - -When flow raises this kind of error (e.g. it is pretty common during a refactoring), -we have to evaluate which one of the two sides is wrong. - -As an example, by reading the above error it is not immediately clear which part should be fixed. - -To be sure about which is the proper fix, we have to look at the code near to both the lines -and evaluate the actual reason, e.g.: - -- it is possible that we wrote some of the property names wrong (in the code or in the type definitions) -- or the defined type is supposed to contain a new property and it is not yet in the related type definitions - -[flow-issues]: https://github.com/devtools-html/debugger.html/issues?q=is%3Aopen+is%3Aissue+label%3Aflow diff --git a/docs/getting-setup.md b/docs/getting-setup.md deleted file mode 100644 index 67d77d0c16..0000000000 --- a/docs/getting-setup.md +++ /dev/null @@ -1,195 +0,0 @@ -## Getting Setup - -![][debugger-intro-gif] - -### Step 1. Installing the Debugger - -First, we'll clone the debugger locally, then we'll install its -dependencies with [Yarn]. If you don't have Yarn, you can install it [here][yarn-install]. - -Also, before you start, it's helpful to make sure you have node 7. -We recommend, [nvm] for updating the latest node. - -```bash -git clone https://github.com/devtools-html/debugger.html.git -cd debugger.html -yarn install -``` - -*What should I do if I get an error?* - -Ask in our [slack] channel or file an issue [issue][yarn-issue] here. - -*Why Yarn and not NPM?* - -We like [Yarn] because it makes sure everyone is using the same library versions. - -### Step 2. Start the Debugger - -Next, we'll start the debugger and run it [locally][dev-server]. - -```bash -yarn start -``` - -Open `http://localhost:8000` in any browser and launch -Firefox or Chrome. You should now be able to select a -tab to debug. - -![][launchpad-screenshot] - -Congratulations! You're now up and running. :sweat_smile: - -*What should I do if I get an error?* - -Ask in our [slack] channel or file an issue [issue][yarn-run-firefox-fails] here. - -### Next Steps - -Try this [first activity][first-activity] if you want to start debugging the debugger! :clap: - -## Appendix - -### Quick Setup - -This setup is for people on the DevTools team and DevTools wizards. - -```bash -curl -o- -L https://yarnpkg.com/install.sh | bash -s -git clone git@github.com:devtools-html/debugger.html.git -cd debugger.html -yarn install - -# close firefox if it's already running -/Applications/Firefox.app/Contents/MacOS/firefox-bin --start-debugger-server 6080 -P development - -# create a new terminal tab -cd debugger.html -yarn start -``` - -### Starting Firefox - -If you're looking for an alternative to `yarn run firefox`, you have several -alternatives. - -#### Firefox CLI - -##### 1. Run `firefox-bin` from the command line -```bash -/Applications/Firefox.app/Contents/MacOS/firefox-bin --start-debugger-server 6080 -P development -``` - -You'll be shown a prompt to create a new "development" profile. The development profile is where your remote development user settings will be kept. *It's a good thing :)* - -##### 2. Go to `about:config` and set these preferences - -Navigate to `about:config` and accept any warning message. Then search for the following preferences and double click them to toggle their values to the following. [example](http://g.recordit.co/3VsHIooZ9q.gif) - -* `devtools.debugger.remote-enabled` to `true` -* `devtools.chrome.enabled` to `true` -* `devtools.debugger.prompt-connection` to `false` - -##### 3. Restart Firefox - -Close firefox and re-open it with the `firefox-bin` command. - -#### Firefox GCLI - -1. Open Firefox -2. Press shift+F2 to open GCLI -3. Type `listen 6080` into GCLI - -NOTE: This assumes that you've already set the other preferences in -`about:config`. - -#### Firefox using WebSocket transport - -The default, traditional way to connect to Firefox uses a custom TCP protocol. -However, Firefox also now supports connecting via WebSockets as well. To use -this mode: - -##### 1. Create a `configs/local.json` file in your `debugger.html` clone with: -``` -{ - "firefox": { - "webSocketConnection": true, - "webSocketHost": "localhost:6080" - } -} -``` -##### 2. Enable WebSocket mode when opening the server socket - * With the Firefox CLI approach, add the `ws:` prefix to the port: - ```bash - /Applications/Firefox.app/Contents/MacOS/firefox-bin --start-debugger-server ws:6080 -P development - ``` - * With the GCLI approach, enter `listen 6080 websocket` - - -### Starting Chrome - -There are two ways to run chrome. Here's the easy way to run chrome - -```bash -yarn run chrome -``` - -Here's the slightly harder way. - -```bash - /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --no-first-run --user-data-dir=/tmp/chrome-dev-profile -``` - -Note that the [script](https://github.com/devtools-html/devtools-core/blob/master/packages/devtools-launchpad/bin/chrome-driver.js) just automates the command :) - -### Starting Node - -It's easy to start Node in a mode where DevTools will find it: - -* `--inspect` - tells node to open a debugger server -* `--debug-brk` - tells node to pause on the first statement - -```bash -node --inspect --debug-brk ./node_modules/.bin/webpack -``` - -**Note** *./node_modules/.bin/webpack* could be anything. We're often debugging webpack these days so it's often appropriate :unamused: - -**Note:** Currently Node.js debugging is limited in some ways, there isn't support for seeing variables or the console, but you can manage breakpoints and navigate code execution (pause, step-in, step-over, etc.) in the debugger across various sources. - -### Windows + Linux setup - -Windows and Linux should *just work*, but unfortunately there are several edge cases. - -If you find any issues on these two platforms comment on these issues: -* [windows][windows-issue] -* [linux][linux-issue] - -**Firefox windows command** - -```bash -"C:\Program Files (x86)\Mozilla Firefox\firefox.exe" -start-debugger-server 6080 -P development -``` - -### Debugger examples - -Starting Firefox or Chrome following the previous steps opens the browser on [the online debugger examples][debugger-examples]. - -If you want to hack the debugger even with being offline, you might want to get [the repo containing those examples][debugger-examples] to run them locally. - -[debugger-intro-gif]:http://g.recordit.co/WjHZaXKifZ.gif -[debugger-examples]:https://devtools-html.github.io/debugger-examples/ -[debugger-examples-repo]:https://github.com/devtools-html/debugger-examples -[yarn-run-firefox-fails]:https://github.com/devtools-html/debugger.html/issues/1341 -[linux-issue]:https://github.com/devtools-html/debugger.html/issues/1082 -[windows-issue]:https://github.com/devtools-html/debugger.html/issues/1248 -[yarn-issue]:https://github.com/devtools-html/debugger.html/issues/1216 -[yarn-update]:https://github.com/devtools-html/debugger.html/pull/1483 -[Yarn]:https://yarnpkg.com -[yarn-install]:https://yarnpkg.com/en/docs/install -[dev-server]:https://github.com/devtools-html/devtools-core/blob/master/packages/devtools-launchpad/README.md#dev-server -[first-activity]: ./debugging-the-debugger.md -[slack]:https://devtools-html-slack.herokuapp.com/ - -[launchpad-screenshot]:https://cloud.githubusercontent.com/assets/2134/22162697/913777b2-df04-11e6-9150-f6ad676c31ef.png -[nvm]:https://github.com/creationix/nvm diff --git a/docs/images/asynchreducer.png b/docs/images/asynchreducer.png deleted file mode 100644 index b661c81387..0000000000 Binary files a/docs/images/asynchreducer.png and /dev/null differ diff --git a/docs/images/breakpoints1.png b/docs/images/breakpoints1.png deleted file mode 100644 index 23c95daf37..0000000000 Binary files a/docs/images/breakpoints1.png and /dev/null differ diff --git a/docs/images/breakpoints2.png b/docs/images/breakpoints2.png deleted file mode 100644 index 8865a417c6..0000000000 Binary files a/docs/images/breakpoints2.png and /dev/null differ diff --git a/docs/images/eventlisteners.png b/docs/images/eventlisteners.png deleted file mode 100644 index bff0837d0c..0000000000 Binary files a/docs/images/eventlisteners.png and /dev/null differ diff --git a/docs/images/maintab.png b/docs/images/maintab.png deleted file mode 100644 index b657eaef8a..0000000000 Binary files a/docs/images/maintab.png and /dev/null differ diff --git a/docs/images/pause.png b/docs/images/pause.png deleted file mode 100644 index 21f83a5c81..0000000000 Binary files a/docs/images/pause.png and /dev/null differ diff --git a/docs/images/search.png b/docs/images/search.png deleted file mode 100644 index ac0c8fb4d4..0000000000 Binary files a/docs/images/search.png and /dev/null differ diff --git a/docs/images/sources.png b/docs/images/sources.png deleted file mode 100644 index 5f9daa7ba9..0000000000 Binary files a/docs/images/sources.png and /dev/null differ diff --git a/docs/images/tabs.png b/docs/images/tabs.png deleted file mode 100644 index 531e946e92..0000000000 Binary files a/docs/images/tabs.png and /dev/null differ diff --git a/docs/issues.md b/docs/issues.md deleted file mode 100644 index 2d9e23ea3e..0000000000 --- a/docs/issues.md +++ /dev/null @@ -1,212 +0,0 @@ -## Issues - -* [Issue Titles](#issue-titles) -* [Issue Descriptions](#issue-descriptions) -* [Claiming Issues](#claiming-issues) -* [Labels](#labels) -* [Available Issues](#available-issues) -* [Triaging](#triaging) -* [Issue Organization](#issue-organization) -* [Community Friendly](#community-friendly) - -### Issue Titles - -**Components** - -Issues are organized in terms of components. -Issue titles should include a component at the front e.g. `[Editor]` - -|Editor|SecondaryPanes|UI|Other| -|----------|------|-----|----| -|Editor|CommandBar|SourceTree|Accessibility| -|SourceTabs|WatchExpressions|SourcesSearch|Theme| -|SearchBar|Breakpoints|WelcomePane|Reducer| -|SourceFooter|CallStack||Action| -||Scopes|||RTL| - -**User Perspective** - -The best issue titles are framed in terms of the impact on the user. i.e. - -* `[Editor] search skips odd matches` -* `[WatchExpressions] can't remove an expression after it's been edited` - -Things to try and avoid in the title -* implementation details where possible. Refactoring is an exception where it's okay -* vague language like e.g "debugger crashes", "can't install" -* inflammatory language "Search is terrible". Negative language has two effects, it can make someone feel guilty for breaking something. It can guilt trip someone into feeling like they *have* to fix it now. - - -### Issue Descriptions - -**Steps to Reproduce** *STR* - -Include the steps to reproduce what you found. - -**System Details** - -Often it is nice to know, which browser you were using, version of node, platform (windows, linux). You don't need to go over the top though, for instance if you're filing a UI bug then it doesn't matter which version of node you're using. - -**Screenshots** - -Include screenshots and animated GIFs in your pull request whenever possible. - -**Recording GIFs** There are many great tools for recording a GIF. On a mac, we recommend [recordit](http://recordit.co/), which is a free lightweight app. - -
- - GIF Example - - -![](http://g.recordit.co/6dE0EmM29Z.gif) - -``` -![](http://g.recordit.co/6dE0EmM29Z.gif) -``` - -
- -**Tables**: When there are multiple screenshots, such as a style change that affects different themes or rtl, it can be nice to use a table for the screenshots [docs][github-tables] - -
- - Table Example - - -|Firebug|Light| -|----------|------| -|![firebug](https://cloud.githubusercontent.com/assets/1755089/22209733/94970458-e1ad-11e6-83d4-8b082217b989.png)|![light](https://cloud.githubusercontent.com/assets/1755089/22209736/9b194f2a-e1ad-11e6-9de0-561dd529d5f0.png)| - - -``` -|Firebug|Light| -|----------|------| -|![firebug](https://cloud.githubusercontent.com/assets/1755089/22209733/94970458-e1ad-11e6-83d4-8b082217b989.png)|![light](https://cloud.githubusercontent.com/assets/1755089/22209736/9b194f2a-e1ad-11e6-9de0-561dd529d5f0.png)| -``` - -
- -### Claiming Issues - -If you'd like to work on an issue, `/claim` it in the issue and it'll be marked `in-progress`. - -* We'll check up regularly to see how it's progressing and if we can help -* Don't hesitate to ask questions on the issue or in our slack channel. Communication is the most important part. Don't worry about over communicating! -* Don't feel bad taking yourself off the issue if you no longer have the time or interest in the issue. - - -![cl] - -[cl]: https://shipusercontent.com/51cd3f15f1679d995cc20e3547827ea0/Screen%20Shot%202017-10-03%20at%209.47.25%20AM.png - -### Labels - - -These are the [labels](https://github.com/devtools-html/debugger.html/labels) we use to help organize and communicate the state of issues and pull requests in the project. If you find a label being used that isn't described here please file an issue to get it listed. - -| Label name | query:mag_right: | Description | -| --- | --- | --- | -| `available` | [search][labels-available] | Good for contributors to work on | -| `difficulty:easy` | [search][labels-difficulty-easy] | Work that is small changes, updating tests, updating docs, expect very little review | -| `difficulty:medium` | [search][labels-difficulty-medium] | Work that adapts existing code, adapts existing tests, expect quick review | -| `difficulty:hard` | [search][labels-difficulty-hard] | Work that requires new tests, new code, and a good understanding of project; expect lots of review | -| `docs` | [search][labels-docs] | Issues with our documentation | -| `design` | [search][labels-design] | Issues that require design work | -| `enhancement` | [search][labels-enhancement] | [Requests](../CONTRIBUTING.md#suggesting-enhancements-new) for features | -| `bug` | [search][labels-bug] | [Reported Bugs](../CONTRIBUTING.md#reporting-bugs-bug) with the current code | -| `chrome` | [search][labels-chrome] | Chrome only issues | -| `firefox` | [search][labels-firefox] | Firefox only issues | -| `infrastructure` | [search][labels-infrastructure] | Issues with testing / build infrastructure | -| `discussion` | [search][labels-discussion] | Issues need clearer requirements before work can be started | -| `needs-description` | [search][labels-needs-description] | Issue needs a clear description and code sketch so a contributor can work on it | -| `needs-str` | [search][labels-needs-str] | Issue needs a clear STR so that others can reproduce | -| `needs-investigation` | [search][labels-needs-investigation] | Issue needs to be researched | - - - -### Available Issues - -[available][labels-available] issues have clear requirements and a difficulty level. - -They often have a patch, which should be a good starting off point. -Sometimes the patches are enough to fix the bug! - -One reason we file `available` issues when the solution is somewhat simple is that it's great to get a second set of eyes. Running the fix locally and QAing it thoroughly is a huge help. A lot of times you'll discover things that we missed. - -### Triaging - -Triaging is the act of reviewing the open issues and making sure they're up to date. -It's one of the most helpful ways to help a project. - -There are a couple of ways to think about it: -* it's great to be able to close issues that are done or stale -* it's great to make issue descriptions as clear as possible. Our goal is for every issue to be `available` i.e. it's clear what needs to be done. -* it's really helpful to double check a new bug and see if you can reproduce it. -* it's great to ask questions that help make the issue available or call out vague issues. -* it's great to sort the issues by oldest first and help make stale issues available. - -#### Process - -1. Issues that are not likely to be worked on in the next 6 weeks will be closed and documented in the [bugs][bugs-board] or [enhancements][enhancements-board]. -2. Issues will often be grouped in tracking issues around shippable goals. -3. Current work is included in 2 week sprint milestones -4. The [roadmap] document is updated at the beginning of every sprint, with our current progress and realistic expectations. - -#### What is a triaged issue? - -When triaging, you can think of the following description as a guide: -a triaged issue is: - -* no more than 6 weeks old -* in line with the goals of the debugger -* a single bigger issue that is still manageable - *or* a set of smaller issues around a shippable goal (for example, transition the code base to JSX from `dom.div` syntax) -* labeled (see [Labels](#labels) for more info) -* ready to be worked on, - *or* has a request for more information - *or* has a clear next step - -An issue that does not fullfill those traits should probably be moved to one of the boards and -closed. - -### Issue Organization - -In addition to labels and components, we use a couple of boards to organize our work. - -**Features** [features][features-board] a prioritized list of features that are planned or in progress. The features are often tracking issues. - -**Bugs** [bugs][bugs-board] a prioritized list of reported bugs. - -**Enhancements** [enhancements-board] a list of feature suggestions that are reviewed twice a quarter. - - -### Community Friendly - -We focus on being community friendly for many reasons. - -* There's an educational value in having a large community of engineers who understand DevTools. -* There's an incredible diversity of talent to help us with topics ranging from testing to internationalization. -* Focusing on *contributor experience* helps us build the best development environment. For instance, if you find it's hard to describe how to make an accessibility change, maybe we should improve how we support tab navigation. - -[labels-available]:https://github.com/devtools-html/debugger.html/labels/available -[labels-first-timers-only]:https://github.com/devtools-html/debugger.html/labels/first-timers-only -[labels-difficulty-easy]:https://github.com/devtools-html/debugger.html/labels/difficulty%3A%20easy -[labels-difficulty-medium]:https://github.com/devtools-html/debugger.html/labels/difficulty%3A%medium -[labels-difficulty-hard]:https://github.com/devtools-html/debugger.html/labels/difficulty%3A%hard -[labels-docs]:https://github.com/devtools-html/debugger.html/labels/docs -[labels-design]:https://github.com/devtools-html/debugger.html/labels/design -[labels-enhancement]:https://github.com/devtools-html/debugger.html/labels/enhancement -[labels-bug]:https://github.com/devtools-html/debugger.html/labels/bug -[labels-chrome]:https://github.com/devtools-html/debugger.html/labels/chrome -[labels-firefox]:https://github.com/devtools-html/debugger.html/labels/firefox -[labels-infrastructure]:https://github.com/devtools-html/debugger.html/labels/infrastructure -[labels-discussion]:https://github.com/devtools-html/debugger.html/labels/discussion -[github-tables]: ./pull-requests.md#screenshots -[labels-needs-description]:https://github.com/devtools-html/debugger.html/labels/needs-description -[labels-needs-str]:https://github.com/devtools-html/debugger.html/labels/needs-str -[labels-needs-investigation]:https://github.com/devtools-html/debugger.html/labels/needs-investigation - -[enhancements-board]: https://github.com/devtools-html/debugger.html/projects/6 -[bugs-board]: https://github.com/devtools-html/debugger.html/projects/11 -[features-board]: https://github.com/devtools-html/debugger.html/projects/10 -[roadmap]: ../ROADMAP.md diff --git a/docs/lerna.md b/docs/lerna.md deleted file mode 100644 index 25fd069aef..0000000000 --- a/docs/lerna.md +++ /dev/null @@ -1,17 +0,0 @@ -## Lerna - -The debugger uses [Lerna](https://github.com/lerna/lerna) to manage setting up -the Debugger and its packages. - -### How does it work? - -Lerna does two things to help setup the Debugger. First it links the Debugger's internal packages, then it installs the external dependencies. -During the linking phase, lerna figures out which packages depend on each other and installs symlinks in each packages' node_modules directory. -This setup has several benefits: - -* Packages can easily require one another -* It is easy to work on the entire project without worrying about re-installing different packages - -### Why is lerna forked? - -Lerna is forked so that the top-level package (debugger.html) can be linked with the sub-packages. This feature will hopefully be merged into Lerna soon. diff --git a/docs/local-development.md b/docs/local-development.md deleted file mode 100644 index 2aa680fdb1..0000000000 --- a/docs/local-development.md +++ /dev/null @@ -1,833 +0,0 @@ -## Development Guide␊ - -* [Themes](#themes) -* [Internationalization](#internationalization) - * [L10N](#l10n) - * [RTL](#rtl) -* [Prefs](#prefs) -* [SVGs](#svgs) -* [ContextMenus](#context-menus) -* [Flow](#flow) -* [Logging](#logging) -* [Testing](#testing) - * [Unit Tests](#unit-tests) -* [Linting](#linting) - * [Lint JS](#lint-js) - * [Lint CSS](#lint-css) -* [Colors](#colors) -* [Configs](#configs) -* [Workers](#workers) - * [Adding a Task](#adding-a-task) -* [Hot Reloading](#hot-reloading-fire) -* [Contributing to other packages](#contributing-to-other-packages) -* [Errors](#errors) -* [Getting Help](#getting-help) - -### Themes - -The local debugger supports three themes: - -Light|Dark|Firebug ----------|---------|--------- -light-theme|dark-theme|firebug-theme - -#### Set a theme - -You can change the theme by going to the Settings panel in the launchpad and changing the theme to either `firebug` or `dark`. - -#### Update a theme style - -It is possible to add a theme specific selector. For example, this selector updates the dark debugger button colors: - -```css -.theme-dark .command-bar > span { - fill: var(--theme-body-color); -} -``` - -### Internationalization - -The Debugger supports two types of internationalization RTL (right to left) layout and L10N (localization). - -#### L10N - -[L10N][l10n] is a global module with two methods `getStr` and `getFormatStr`. The [docs][l10n-docs] include best practices for naming keys, localization notes, and other useful topics. - -```js -L10N.getStr("scopes.header") -L10N.getFormatStr("editor.searchResults", index + 1, count) -``` - -Translated strings are added to the [debugger properties][debugger-properties] file. - -#### RTL - -RTL stands for right to left and is an important feature for arabic languages and hebrew. Here's what the debugger looks like right to left [screenshot][rtl-screenshot]. - -*How do I set the Debugger to right to left?* - -Set the `dir` field in your the local config to either "rtl" or "ltr". - -`configs/local.json` -```json -"dir": "rtl" -``` - -*How do I change how something looks in rtl?* - -We use [postcss-bidirection][bidirection] to support [logical CSS][logical] properties. In practice, this means we can write `float:left` or `margin-inline-block: start`, and it just works. Under the hood, `float: left` gets translated into two different CSS rules for `html[dir="rtl"]` and `html:not([dir="rtl"])`. - -`public/js/components/SourceFooter.css` - -```css -html:not([dir="rtl"]) .source-footer .command-bar { - float: right; -} - -html[dir="rtl"] .source-footer .command-bar { - float: left; -} -``` - - -### Prefs - -User preferences are stored in Prefs. Prefs uses localStorage locally and firefox's profiles in the panel. - -**Setting a default value** - -```js -pref("devtools.debugger.pause-on-exceptions", true); -``` - -**Adding a pref** -```js -const prefs = new PrefsHelper("devtools", { - clientSourceMapsEnabled: ["Bool", "debugger.pause-on-exceptions"], -}); -``` - -**Reading a pref** -```js -const { prefs } = require("./utils/prefs"); -console.log(prefs.clientSourceMapsEnabled) -``` - -**Setting a pref** -```js -const { prefs } = require("./utils/prefs"); -prefs.clientSourceMapsEnabled = false; -``` - -### SVGs - -We use SVGs in DevTools because they look good at any resolution. - -**Adding a new SVG** - -* add the SVG in [assets/images](../assets/images) -* add it to [Svg.js](../assets/images/Svg.js) - -```diff -diff --git a/assets/images/Svg.js b/assets/images/Svg.js -index 775aecf..6a7c19d 100644 ---- a/assets/images/Svg.js -+++ b/assets/images/Svg.js -@@ -24,7 +24,8 @@ const svg = { - "subSettings": require("./subSettings.svg"), - "toggleBreakpoints": require("./toggle-breakpoints.svg"), - "worker": require("./worker.svg"), -- "sad-face": require("./sad-face.svg") -+ "sad-face": require("./sad-face.svg"), -+ "happy-face": require("./happy-face.svg") - }; -``` - -**Using an SVG** - -* import the `Svg` module -* call `Svg()` - -```diff -diff --git a/src/components/Breakpoints.js b/src/components/Breakpoints.js -index 8c79f4d..6893673 100644 ---- a/src/components/Breakpoints.js -+++ b/src/components/Breakpoints.js -@@ -4,6 +4,7 @@ const { bindActionCreators } = require("redux"); - const ImPropTypes = require("react-immutable-proptypes"); - const classnames = require("classnames"); - const actions = require("../actions"); -+const Svg = require("./shared/Svg"); - const { getSource, getPause, getBreakpoints } = require("../selectors"); - const { makeLocationId } = require("../reducers/breakpoints"); -@@ -89,6 +90,7 @@ const Breakpoints = React.createClass({ - key: locationId, - onClick: () => this.selectBreakpoint(breakpoint) - }, -+ Svg("happy-face"), - dom.input({ - type: "checkbox", - className: "breakpoint-checkbox", -``` - -**Styling an SVG element** - -You can style several SVG elements (*svg*, *i*, *path*) just as you would other elements. - -* *fill* is especially useful for changing the color - - -```diff -diff --git a/src/components/Breakpoints.css b/src/components/Breakpoints.css -index 5996700..bb828d8 100644 ---- a/src/components/Breakpoints.css -+++ b/src/components/Breakpoints.css -@@ -69,3 +69,11 @@ - .breakpoint:hover .close { - display: block; - } -+ -+.breakpoint svg { -+ width: 16px; -+ position: absolute; -+ top: 12px; -+ left: 10px; -+ fill: var(--theme-graphs-full-red); -+} -``` - -### Context Menus - -The Debugger can create its own [context menus][context-menus]. In the launchpad, it uses a [shimmed][shimmed-context-menus] context menu library. In Firefox, it has special permission to create native context menus. - -Here's a simple example: - -```js -const { showMenu } = require("devtools-launchpad"); - -function onClick(event) { - const copySourceUri2Label = L10N.getStr("copySourceUri2"); - const copySourceUri2Key = L10N.getStr("copySourceUri2.accesskey"); - - showMenu(event, [{ - id: "node-menu-copy-source", - label: copySourceUri2Label, - accesskey: copySourceUri2Key, - disabled: false, - click: () => copyToClipboad(url), - hidden: () => url.match(/chrome:\/\//) - }]); -} -``` - -Notes: - -- `id` helps screen readers and accessibility -- `label` menu item label shown -- `accesskey` keyboard shortcut used -- `disabled` inert item -- `click` on click callback -- `hidden` dynamically hide items - -#### Access Keys - -Access Keys are keyboard shortcuts for an item in the context menu and are only used when the context menu is open. They are an accessibility feature. Access keys take precedence over all other keyboard shortcuts when the context menu is open except for CodeMirror shortcuts. -Access Keys are defined in the properties file next to the menu item's string. You can use any key that is not already added, but try to use your own discretion about which key makes the most sense - - -``` -# LOCALIZATION NOTE (copySourceUri2): This is the text that appears in the -# context menu to copy the source URL of file open. -copySourceUri2=Copy Source Url - -# LOCALIZATION NOTE (copySourceUri2.accesskey): Access key to copy the source URL of a file from -# the context menu. -copySourceUri2.accesskey=u -``` - - -#### Context Menu Groups - -You can use a menu item separator to create menu groups. - -```js -const { showMenu } = require("devtools-launchpad"); - -function onClick(event) { - const copySourceUri2Label = L10N.getStr("copySourceUri2"); - const copySourceUri2Key = L10N.getStr("copySourceUri2.accesskey"); - - const menuItem = { - id: "node-menu-copy-source", - label: copySourceUri2Label, - accesskey: copySourceUri2Key, - disabled: false, - click: () => copyToClipboad(url), - hidden: () => url.match(/chrome:\/\//) - } - - showMenu(event, [ - menuItem, - { item: { type: "separator" } }, - ]); -} -``` - -### Flow - -- [Adding flow to a file](./flow.md#adding-flow-to-a-file) -- [Running flow](./flow.md#running-flow) -- [Missing Annotation](./flow.md#missing-annotation) -- [Where are types defined?](./flow.md#where-are-types-defined) -- [Checking flow coverage](./flow.md#checking-flow-coverage) -- [Common Errors](./flow.md#common-errors) - - [Required property](./flow.md#required-property) - - [Missing Annotation](./flow.md#missing-annotation) - - [Type Inconsistencies](./flow.md#type-inconsistencies) - -### Reducers - -Our reducers are where we store the debugger state. We try to follow Redux best -practices, but have added our own flavor as well with the help of Flow and Immutable - -#### Flow - -We type our stores so that we can document the shape of the data and guarantee -the data coming in and out is well formed. - -Lets look at the expressions reducer and see how it is typed - -```js -type ExpressionState = { - expressions: List -}; - -export const State = makeRecord( - ({ - expressions: List() - }: ExpressionState) -); - -function update( - state: Record = State(), - action: Action -): Record { - // ... -} - -type OuterState = { expressions: Record }; - -export function getExpressions(state: OuterState, input: string) { - return getExpressions(state).find(exp => exp.input == input); -} -``` - -The `ExpressionState` documents the reducers fields. We use it in three places: - -1. `State` - an Immutable expression state record -2. `update` - the reducer function which receives the expression state record -3. `OuterState` - a local type representing the application state passed into selectors - -#### Immutable - -We try to wrap our state in Immutable records when we can for two reasons. -First it means that the state can only be modified in the reducers. -Second, it helps our connected components avoid unnecessary renders. - -Connect will trigger a re-render when it sees new state, even if it has not changed. -Immutable, will creates new objects if and only if the data changes, -which means our components only render when it's approriate. - -The one situation where we do not use immutable is when it is too slow to do so. -We avoid wrapping our pause state in immutable, because it takes too long to serialize the data. - -Lets take a look at the Expressions reducer to see how we use Immutable. - -```js -type ExpressionState = { - expressions: List -}; - -export const State = makeRecord( - ({ - expressions: List() - }: ExpressionState) -); - -function update( - state: Record = State(), - action: Action -): Record { - case "DELETE_EXPRESSION": - return deleteExpression(state, action.input); - // ... -} - -type OuterState = { expressions: Record }; - -function deleteExpression(state: State, input: string) { - const index = getExpressions({ expressions: state }).findKey( - e => e.input == input - ); - return state.deleteIn(["expressions", index]); -} -``` - -The first thing to notice is that the expression is an Immutable list. -We document that here `List` and here `expressions: List()`. - -The second thing to note is that we use the Immutable api to update the state. -We do that in `deleteExpression` here `state.deleteIn`. There [docs][immutable-docs] are really helpful. - -The third item is Immutable Records. Records are a special type of Immutable Map, that act like named structs. -We use them when defining our reducer states, but they can be used more broadly as well. -We define the `State` record above with `makeRecord`, which wraps Immutable Record so that we can -tell Flow that we're creating an Expression State record. - -### Logging - -Logging information can be very useful when developing, and there are a few logging options available to you. - -To enable logging: - -* [Create a local config file][create-local-config] if you don't already have one -* Edit your local config, changing the value of the logger type you want to see to `true` - -```json - "logging": { - "client": false, - "firefoxProxy": false, - "actions": true - } -``` - -* Restart your development server by typing ctrl+c in the Terminal and run `yarn start` again - - -Let's cover the logging types. - -* client - This option is currently unused. - -* firefoxProxy - This logger outputs a verbose output of all the Firefox protocol packets to your shell. - -* actions - This logger outputs the Redux actions fired to the browser console. - -### Testing - -Your code must pass all tests to be merged in. Your tests should pass locally before you create a PR and the CI should run an automated test that also passes. - -Here's how can run all the unit tests, lints, and integration tests at once: - -```bash -yarn run test-all -``` - -#### Unit Tests - -`yarn test` - Run tests with [jest]. - -* [matchers][jest-matchers] -* [mock functions][jest-mock] - -Running all the tests tends to be really slow. Most of the time it is really useful to run a single test. You can do this by invoking jest directly like this: - -```bash -node_modules/jest/bin/jest.js -o -``` - -This will run all the tests that have not been commited. Basically all the files that are returned by the `git status` command. - -If the snapshot changes then update it with: - -```bash -node_modules/jest/bin/jest.js -o -u -``` - -##### Testing Components - -There are two styles of component tests: interaction, snapshot. - -###### Interaction Testing - -We shallow render the component and simulate an UI interaction like `click`. - -```js -it("should call handleClick function", () => { - const onClick = jest.genMockFunction(); - const wrapper = shallow(new CloseButton({ handleClick: onClick })); - - wrapper.simulate("click"); - expect(onClick).toBeCalled(); -}); -``` - -###### Snapshot Testing - -We shallow render the component to a JSON and save it to a fixture. Subsequent runs are compared to the fixture. - -```js -it("should render a button", () => { - const onClick = jest.genMockFunction(); - const buttonClass = "class"; - const wrapper = shallow( - new CloseButton({ - handleClick: onClick, - buttonClass: buttonClass, - tooltip: "Close button" - }) - ); - - expect(wrapper).toMatchSnapshot(); -}); -``` - -#### Fixing Intermittents - -When CI is showing a jest intermittent, it's usually possible to reproduce it locally. - -The `intermittents` script will run tests several times until you find the failing suite. - -```bash -node bin/intermittents # run all of the tests 10 times -node bin/intermittents --path src/actions -node bin/intermittents --path src/actions/tests/pending-breakpoints --runs 50 -node bin/intermittents --group # will run the tests in groups -`` - -![](https://shipusercontent.com/8967081056f24707b3e67b1aaa79e6be/Screen%20Shot%202017-08-24%20at%2012.20.15%20AM.png) - -When you find a file that has an intermittent, it sometimes helps to focus on a single test -with the `jest --watch` test filter command. - -When you have a test that is flakey, you can look at the code and try and find the problem. -90% of the time it will be an asynchronous call we don\'t wait for. Here is a recent fix. -Notice that `sourceMaps.generatedToOriginalId` was asynchronous, but we didn't wait for it. - -```diff -diff --git a/src/actions/sources/createPrettySource.js b/src/actions/sources/createPrettySource.js -index a3b2ba6..cd5a8e7 100644 ---- a/src/actions/sources/createPrettySource.js -+++ b/src/actions/sources/createPrettySource.js -@@ -7,7 +7,7 @@ export function createPrettySource(sourceId) { - return async ({ dispatch, getState, sourceMaps }) => { - const source = getSource(getState(), sourceId).toJS(); - const url = getPrettySourceURL(source.url); -- const id = sourceMaps.generatedToOriginalId(sourceId, url); -+ const id = await sourceMaps.generatedToOriginalId(sourceId, url); -``` - - -### Linting - -| Type | Command | -| ---- | ------- | -| all | `yarn run lint` | -| css | `yarn run lint-css` | -| js | `yarn run lint-js` | -| markdown | `yarn run lint-md` | - -#### Lint CSS - -We use [Stylelint](http://stylelint.io/) to maintain our CSS styles. The [.stylelintrc](../.stylelintrc) file contains the style definitions, please adhere to those styles when making changes. - -To test your CSS changes run the command: - -```bash -yarn run lint-css -``` - -#### Lint JS - -We use [eslint](http://eslint.org/) to maintain our JavaScript styles. The [.eslintrc](../.eslintrc) file contains our style definitions, please adhere to those styles when making changes. - -To automatically fix many errors run the command: - -```bash -yarn run lint-fix -``` - -#### Lint Markdown - -We use [remark](https://github.com/wooorm/remark-lint) to help lint our markdown. It checks for broken images, links, and a set of style rules. - -### Colors - -The Debugger has a [styleguide][mdn-colors] that we use to keep the colors consistent across tools and themes. - -The common colors are represented as [css variables] in a [devtools variables][devtools-css-variables] file. This lets define the colors -for each theme: [light][light-theme], [dark][dark-theme], [firebug][firebug-theme]. - -#### Making a color change - -Most color changes can be made by finding a different [css variable][devtools-css-variables]. -For instance, `--theme-splitter-color` is often good for border colors. The advantage to using an existing variable is that you know it'll look good in all the themes. - -When you need to update a variable, you should check to make sure it looks good in the other places it is being used. -Often, it is more practicle to create a new variable. - -It's helpful to share the changes as a themes [table][pr-table] when you're done. - -#### Checking Contrast - -It's important to make sure that the contrast ratio is sufficient. - -You can check the background / text color contrast ratio with this [tool][contrast-ratio-tool]. - -### Configs - -The Debugger uses configs for settings like `theme`, `hotReloading` - -The default development configs are in [development-json]. It's easy to change a setting in the Launchpad's settings tab or by updating your `configs/local.json` file. - -### Workers - -The Debugger takes advantage of [web wokers][web-workers] to delegate work to -other processes. Some examples of this are source maps, parsing, and search. -In these cases, the debugger asks the worker to do potentially difficult work -so that the main thread doesn't have to. - -#### Adding a Task - -There are a couple of steps needed to make a function a worker task. - -1. add a task to the worker index e.g. (`dispatcher.task("getMatches")`) -2. add the function to the worker handler `workerHandler({ getMatches })` - -Here's the full example. - -```diff -diff --git a/src/utils/search/index.js b/src/utils/search/index.js -index 2ec930c..fcb55bb 100644 ---- a/src/utils/search/index.js -+++ b/src/utils/search/index.js -@@ -6,3 +6,4 @@ export const startSearchWorker = dispatcher.start.bind(dispatcher); - export const stopSearchWorker = dispatcher.stop.bind(dispatcher); - - export const countMatches = dispatcher.task("countMatches"); -+export const getMatches = dispatcher.task("getMatches"); -diff --git a/src/utils/search/worker.js b/src/utils/search/worker.js -index dbba6c1..75f7b2c 100644 ---- a/src/utils/search/worker.js -+++ b/src/utils/search/worker.js -@@ -1,4 +1,6 @@ - import buildQuery from "./utils/build-query"; -+import getMatches from "./getMatches"; -+ - import { workerUtils } from "devtools-utils"; - const { workerHandler } = workerUtils; - -@@ -14,4 +16,4 @@ export function countMatches( - return match ? match.length : 0; - } - --self.onmessage = workerHandler({ countMatches }); -+self.onmessage = workerHandler({ countMatches, getMatches }); -``` - -#### Creating a new Feature Flag - -When you're starting a new feature, it's always good to ask yourself if the feature should be added behind a feature flag. - -* does this feature need testing or introduce risk? -* will this feature be built over several PRs? -* is it possible we'll want to turn it off quickly? - -It's easy to add a new feature flag to the project. - -1. add the flag to `assets/panel/prefs.js` and `utils/prefs.js` -2. add `isEnabled` calls in the code - -Here's an example of adding a new feature "awesome sauce" to the Debugger: - -```diff -diff --git a/assets/panel/prefs.js b/assets/panel/prefs.js -index 1cfe2da..7e3068f 100644 ---- a/assets/panel/prefs.js -+++ b/assets/panel/prefs.js -@@ -44,3 +44,4 @@ pref("devtools.debugger.file-search-regex-match", false); - pref("devtools.debugger.features.async-stepping", true); - pref("devtools.debugger.features.project-text-search", true); - pref("devtools.debugger.features.wasm", true); -+pref("devtools.debugger.features.awesome", false); -diff --git a/src/components/Editor/index.js b/src/components/Editor/index.js -index 47714d3..540c98d 100644 ---- a/src/components/Editor/index.js -+++ b/src/components/Editor/index.js -@@ -152,7 +152,7 @@ class Editor extends PureComponent { - codeMirror.on("gutterContextMenu", (cm, line, eventName, event) => - this.onGutterContextMenu(event) - ); -- -+ - codeMirror.on("contextmenu", (cm, event) => this.openMenu(event, cm)); - } else { - codeMirrorWrapper.addEventListener("contextmenu", event => -diff --git a/src/utils/prefs.js b/src/utils/prefs.js -index 429d56c..dadb36c 100644 ---- a/src/utils/prefs.js -+++ b/src/utils/prefs.js -@@ -28,6 +28,7 @@ if (isDevelopment()) { - pref("devtools.debugger.features.async-stepping", true); - pref("devtools.debugger.features.wasm", true); - pref("devtools.debugger.features.shortcuts", true); -+ pref("devtools.debugger.features.awesome", true); - } - - export const prefs = new PrefsHelper("devtools", { -@@ -54,6 +55,7 @@ export const features = new PrefsHelper("devtools.debugger.features", { - projectTextSearch: ["Bool", "project-text-search", true], - wasm: ["Bool", "wasm", true], - shortcuts: ["Bool", "shortcuts", false] -+ awesome: ["Bool", "shortcuts", false] - }); - - if (prefs.debuggerPrefsSchemaVersion !== prefsSchemaVersion) { -``` - -### Hot Reloading :fire: - -:construction: Hot Reloading is currently broken as we need to upgrade `react-hot-reloader` 3.0 [issue](https://github.com/devtools-html/devtools-core/issues/195) - -Hot Reloading watches for changes in the React Components JS and CSS and propagates those changes up to the application without changing the state of the application. You want this turned on. - -To enabled Hot Reloading: - -* [Create a local config file][create-local-config] if you don't already have one -* edit `hotReloading` - -```diff -diff --git a/configs/local.json b/configs/local.json -index fdbdb4e..4759c14 100644 ---- a/configs/local.json -+++ b/configs/local.json -@@ -1,6 +1,6 @@ - { - "theme": "light", -- "hotReloading": false, -+ "hotReloading": true, - "logging": { - "actions": false - }, -``` - -* Restart your development server by typing ctrl+c in the Terminal and run `yarn start` again - -### Contributing to other packages - -The debugger depends on several other devtools packages. Sometimes a debugger feature will necessitate working on one of these other packages. In these cases, you'll need to get the project and work on it directly. - -| | | -|:----:|:---:| -|[Launchpad]|Development environment| -|[Reps]|Variable formatter| -|[Client Adapters]|Browser connection library| -|[Modules]|Shared modules| -|[Source Maps]|Library for working with source maps| - -#### Testing a change in the debugger - -There are three ways to test a change to a 3rd party package. - -1. [yarn link](https://yarnpkg.com/lang/en/docs/cli/link/) -2. create a local version with **npm pack** and [yarn add](https://yarnpkg.com/lang/en/docs/cli/add/#toc-adding-dependencies) -3. change the file directly in the debugger's `node_modules` directory. - -### Errors - -#### Pulling - -If you're running into errors associated with updating your files locally, try: - -1. `git checkout .` -2. `yarn nom` -3. `git pull --rebase` - -Another option is to reset your branch to master: - -1. `git fetch origin` -2. `git checkout master` -3. `git reset --hard origin/master` -4. `yarn nom` to update node modules -5. `yarn start` to restart local server - -### Getting Help - -There are lots of helpful folks who'd be happy to answer -your questions on [slack][slack]. - -|Component||:dog: :panda_face: :hamster:| -|----------|------|-----| -|Editor|![][editor]| ![][jasonlaster] [@jasonlaster][@jasonlaster]
![][jbhoosreddy] [@jbhoosreddy][@jbhoosreddy] | -|Sources|![][sources]| ![][arthur801031] [@arthur801031][@arthur801031]
![][bomsy] [@bomsy][@bomsy] | -|Call Stack|![][call-stack]|![][zacqary] [@zacqary][@zacqary]
![][wldcordeiro] [@wldcordeiro][@wldcordeiro]| -|Scopes & Variables|![][scopes]|![][bomsy] [@bomsy][@bomsy]
![][arthur801031] [@arthur801031][@arthur801031]| -|Breakpoints|![][breakpoints]|![][wldcordeiro] [@wldcordeiro][@wldcordeiro]
![][jbhoosreddy] [@jbhoosreddy][@jbhoosreddy]| -|Product & UI||![][clarkbw] [@clarkbw][@clarkbw]
![][jasonlaster] [@jasonlaster][@jasonlaster]| - -[devtools-config-readme]:https://github.com/devtools-html/devtools-core/blob/master/packages/devtools-config/README.md -[create-local-config]:https://github.com/devtools-html/devtools-core/blob/master/packages/devtools-config/README.md#local-config -[l10n-issues]:https://github.com/devtools-html/debugger.html/labels/localization -[flow-issues]:https://github.com/devtools-html/debugger.html/labels/flow -[bidirection]:https://github.com/gasolin/postcss-bidirection -[logical]:https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Logical_Properties - -[scopes]:https://cloud.githubusercontent.com/assets/254562/22392764/019de6e6-e4cb-11e6-8445-2c4ec87cb4a6.png -[call-stack]:https://cloud.githubusercontent.com/assets/254562/22392766/019eca70-e4cb-11e6-8b1a-e92b33a7cecb.png -[editor]:https://cloud.githubusercontent.com/assets/254562/22392767/01a45fbc-e4cb-11e6-80e7-59ae74d587fe.png -[sources]:https://cloud.githubusercontent.com/assets/254562/22392768/01a51c2c-e4cb-11e6-8fb0-4ededa83ed5e.png -[breakpoints]:https://cloud.githubusercontent.com/assets/254562/22392822/9a15d1f4-e4cb-11e6-9519-04ed772e6f1a.png -[jasonlaster]:https://avatars.githubusercontent.com/jasonlaster?size=56 -[bomsy]:https://avatars.githubusercontent.com/bomsy?size=56 -[wldcordeiro]:https://avatars.githubusercontent.com/wldcordeiro?size=56 -[clarkbw]:https://avatars.githubusercontent.com/clarkbw?size=56 -[jbhoosreddy]:https://avatars.githubusercontent.com/jbhoosreddy?size=56 -[arthur801031]:https://avatars.githubusercontent.com/arthur801031?size=56 -[zacqary]:https://avatars.githubusercontent.com/zacqary?size=56 -[@jasonlaster]:https://github.com/jasonlaster -[@bomsy]:https://github.com/bomsy -[@wldcordeiro]:https://github.com/wldcordeiro -[@clarkbw]:https://github.com/clarkbw -[@jbhoosreddy]:https://github.com/jbhoosreddy -[@arthur801031]:https://github.com/arthur801031 -[@zacqary]:https://github.com/zacqary - -[slack]:https://devtools-html-slack.herokuapp.com/ -[kill-strings]:https://github.com/devtools-html/devtools-core/issues/57 -[l10n]:https://github.com/devtools-html/devtools-core/blob/master/packages/devtools-launchpad/src/utils/L10N.js -[rtl-screenshot]:https://cloud.githubusercontent.com/assets/394320/19226865/ef18b0d0-8eb9-11e6-82b4-8c4da702fe91.png - -[jest]: https://facebook.github.io/jest/ -[jest-matchers]: https://facebook.github.io/jest/docs/using-matchers.html#content -[jest-mock]: https://facebook.github.io/jest/docs/mock-functions.html#content - -[strings-json]: ../src/strings.json -[debugger-properties]: ../assets/panel/debugger.properties -[development-json]: ../configs/development.json - -[mdn-colors]: https://developer.mozilla.org/en-US/docs/Tools/DevToolsColors -[light-theme]: https://github.com/devtools-html/devtools-core/blob/master/packages/devtools-launchpad/src/lib/themes/light-theme.css#L1 -[dark-theme]: https://github.com/devtools-html/devtools-core/blob/master/packages/devtools-launchpad/src/lib/themes/dark-theme.css#L1 -[firebug-theme]: https://github.com/devtools-html/devtools-core/blob/master/packages/devtools-launchpad/src/lib/themes/firebug-theme.css#L1 -[devtools-css-variables]: https://github.com/devtools-html/devtools-core/blob/master/packages/devtools-launchpad/src/lib/themes/variables.css#L1 -[css variables]: https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_variables - -[firebug-ui-screen]: https://cloud.githubusercontent.com/assets/1755089/22209733/94970458-e1ad-11e6-83d4-8b082217b989.png -[light-ui-screen]: https://cloud.githubusercontent.com/assets/1755089/22209736/9b194f2a-e1ad-11e6-9de0-561dd529d5f0.png -[pr-table]: ./pull-requests.md#screenshots - -[mochitest]: ./mochitests.md -[mocha]: ./integration-tests.md -[contrast-ratio-tool]: http://leaverou.github.io/contrast-ratio/#rgb%28204%2C%20209%2C%20213%29-on-rgb%28252%2C%20252%2C%20252%29 - -[Launchpad]: https://github.com/devtools-html/devtools-core/tree/master/packages/devtools-launchpad -[Reps]: https://github.com/devtools-html/reps -[Client Adapters]: https://github.com/devtools-html/devtools-core/tree/master/packages/devtools-client-adapters -[Modules]: https://github.com/devtools-html/devtools-core/tree/master/packages/devtools-modules -[Source Maps]: https://github.com/devtools-html/devtools-core/tree/master/packages/devtools-source-map - -[shimmed-context-menus]: https://github.com/devtools-html/devtools-core/blob/master/packages/devtools-launchpad/src/menu.js -[context-menus]: https://github.com/devtools-html/devtools-core/blob/master/packages/devtools-modules/client/framework/menu.js -[web-workers]: https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers -[l10n-docs]: https://developer.mozilla.org/en-US/docs/Mozilla/Localization/Localization_content_best_practices#Choose_good_key_IDs - -[immutable-docs]: https://facebook.github.io/immutable-js/docs/#/ diff --git a/docs/maintainer.md b/docs/maintainer.md deleted file mode 100644 index 2b4f81613a..0000000000 --- a/docs/maintainer.md +++ /dev/null @@ -1,100 +0,0 @@ -## Maintainer Tips - -Helping maintain a project is the best way to contribute to its overall health. - -+ [Pushing to a branch](#pushing-to-a-branch) -+ [Triaging issues](#triaging-issues) -+ [Adding a Patch](#adding-a-patch) - -### Triaging Issues - -#### Closing Stale Issues - -We define *stale* as issues that are 30 days or older. Stale is often an indicator of another issue: it is unnecessary, too vague, too broad, or a low priority. - -* *unnecessary* - close it -* *vague* - clarify the issue and make it more available -* *broad* - create more focused issues, such as "add flow types to `WhyPaused` component" -* *low priority* - close it and add it to the [enhancements board] - -#### Making Issues `available` - -Available is short for two things: - -1. a clearly defined specification (end-state) -2. a clear implementation plan - -Our goal is to have 100% of our issues available or blocked by another available ticket. -If you find an issue that is not available you can: - -1. investigate the issue and answer questions that you have -2. share questions or offer reasonable solutions that can be implemented -3. [add a patch](#adding-a-patch) to help the person who picks up the issue - -#### Following up on "In Progress" work - -Following up on in progress work is delicate, but tremendously important. - -When done well, the recipient feels like their work is appreciated and feels comfortable asking questions that could be blocking the work. - -When done poorly, the recipient feels like they're being rushed and is not sure how to complete it. - -Some good rules of thumb are: - -1. asking what their timeline is -2. asking if they are blocked or if you can help -3. offer to pair or talk on slack. -4. try to breakdown the work so small pieces can be merged - -#### Ship - -I recommend [ship] for tracking issues. - -![][ship-screenshot] - -### Adding a patch - -Patches are a great way to clarify what work needs to be done. - -Patches on `available` issues help clarify where the code should go and are often clearer than English. - -Tips: - -* write some pseudo-code or add comments where code should go -* add a diff with diff code blocks -* use the \[gist] cli to make diffs. I have a shortcut for `git diff | gist --type diff` -* when gists are long you can include a link to a gist and this snippet in the issue `curl | git apply` - -### Pushing to a branch - -Here are the steps for getting a PR branch and then updating it - -Getting Setup: - -1. **http remote** [github help][github-remote] -2. **2fa** [github help][github-2fa] -3. **personal access tokens** [github help][github-pat] - -Steps: - -```bash -git remote add https://github.com//debugger.html.git -git fetch -git checkout --track / -git pull --rebase # if you want to get new changes -git push -git push -f # sadly you often need to push force -```` - -Notes: - -* Don't worry about including `--force`, often it's inevitable if you're helping with a rebase. -* It's best to include your work as a separate commit so the contributor can easily see the patch. - -[enhancements board]: https://github.com/devtools-html/debugger.html/projects/5 -[ship]: https://www.realartists.com -[ship-screenshot]: https://cloud.githubusercontent.com/assets/254562/23369201/8fe98b82-fcde-11e6-9dac-3e40547f29ad.png - -[github-2fa]:https://help.github.com/articles/securing-your-account-with-two-factor-authentication-2fa/ -[github-pat]:https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/ -[github-remote]:https://help.github.com/articles/adding-a-remote/ diff --git a/docs/mochitests.md b/docs/mochitests.md deleted file mode 100644 index 16e5a5f226..0000000000 --- a/docs/mochitests.md +++ /dev/null @@ -1,147 +0,0 @@ -## Mochitests - - - [Getting Started](#getting-started) - - [Running the tests](#running-the-tests) - - [Mochi](#mochi) - - [Writing Tests](#writing-tests) - - [Debugging Intermittents](#debugging-intermittents) - -We use [mochitests] to do integration testing. Mochitests are part of Firefox and allow us to test the debugger literally as you would use it (as a devtools panel). - -![](http://g.recordit.co/dp6qbK0Jnf.gif) - -### Getting Started - -**Requirements** - -* mercurial ( `brew install mercurial` ) -* autoconf213 ( `brew install autoconf@2.13 && brew unlink autoconf` ) - - -**Setup Firefox** - -``` -./bin/prepare-mochitests-dev -``` - -This command will either clone `mozilla-central` (the firefox repo) or update it. -It also sets up a symlink for the tests so that changes in `src/test/mochitest` are -reflected in the new firefox directory. - -### Running the tests - -* `yarn copy-assets-watch` copies new bundles into the firefox directory -* `yarn mochi` runs the tests in a second process - -### Mochi - -`mochi` passes its params along to `mochitest`, so you can include `--jsdebugger` and test globs - -* `yarn mochi -- --jsdebugger` opens a browser toolbox -* `yarn mochi browser_dbg-editor-highlight` runs just one test - -## Writing Tests - -Here are a few tips for writing mochitests: - -* There are lots of great helper methods in [head] -* Try to write async user actions that involve a user action like clicking a button or typing a key press followed by a redux action to listen for. For example, the user step in action involvesthe user clicking the step in button followed by the "stepIn" action firing. -* The `dbg` object has several helpful properties (actions, selectors, getState, store, toolbox, win) - -### Testing the DOM - -You can find common elements in the debugger with the `findElement` function, -which use shared selectors. You can also find any element with the -`findElementWithSelector` function. - -### Evaluating in the debuggee - -If you want to evaluate a function in the debuggee context you can use -the `invokeInTab` function. Under the hood it is using `ContentTask.spawn`. - -```js -ContentTask.spawn(gBrowser.selectedBrowser, null, function* () { - content.wrappedJSObject.foo(); -}); -``` - -The above calls the function `foo` that exists in the page itself. You can also access the DOM this way: `content.document.querySelector`, if you want to click a button or do other things. You can even you use assertions inside this callback to check DOM state. - -#### Debugging Intermittents - -Intermittents are when a test succeeds most the time (95%) of the time, but not all the time. -There are several easy traps that result in intermittents: - -* **browser inconsistencies** sometimes the server is not as consistent as you would like. For instance, reloading can sometimes cause sources to load out of order. Also stepping too quickly can cause the debugger to enter a bad state. A memorable example of this type of inconsistency came when debugging stepping behavior. It turns out that 1% of the time the browser toolbox will step into an [unexpected location][server-oops]. The solution is too loosen our expections :) -* **missed actions** sometimes action "B" can fire before action "A" is done. This is a race condition that can be hard to track down. When you suspect this might happen, it is a good practice to start listening for "B" before you fire action "A". Here's an example where this happened with [reloading][waiting]. -* **state changes** One common way tests start failing occurs when the redux actions introduces a new asynchronous operation. A good way to safe guard your tests is to wait on state to have certain values. An example, of a test that we recently fixed was [pretty printing][pretty-printing]. The test initially waited for the "select source" action to fire, which was occasionally racey. Switching the test to wait for the formatted source to exist simplified the test tremendously. - -### Appendix - -#### Mochitest CLI - -The mochitest cli has a lot of advanced options that are worth learning about. -Here is a quick intro in how it can be used - -``` -cd firefox -./mach mochitest devtools/client/debugger/new # runs all the debugger tests -./mach mochitest browser_dbg-editor-highlight # runs one test -./mach mochitest --jsdebugger browser_dbg-editor-highlight # runs one test with the browser toolbox open -``` - -Visit the [mochitest](https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Mochitest) MDN page to learn more about mochitests and more advanced arguments. A few tips: - - -#### For Windows Developers - -The detailed instructions for setting up your environment to build Firefox for Windows can be found [here](https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/Windows_Prerequisites). You need to install the latest `MozBuild` package. You can open a unix-flavor shell by starting: - -``` -C:\mozilla-build\start-shell.bat -``` - -In the shell, navigate to the debugger.html project folder, and follow the Getting Started instructions as mentioned. - -### Watching for Changes - -The mochitest are running against the compiled debugger bundle inside the Firefox checkout. This means that you need to update the bundle whenever you make code changes. `prepare-mochitests-dev` does this for you initially, but you can manually update it with: - -``` -yarn copy-assets -``` - -That will build the debugger and copy over all the relevant files into `firefox`, including mochitests. If you want it to only symlink the mochitests directory, pass `--symlink-mochitests` (which is what `prepare-mochitests-dev` does). - -It's annoying to have to manually update the bundle every single time though. If you want to automatically update the bundle in Firefox whenever you make a change, run this: - -``` -yarn copy-assets-watch -``` - -Now you can make code changes the the bundle will be automatically built for you inside `firefox`, and you can simply run mochitests and edit code as much as you like. - -## Adding New Tests - -If you add new tests, make sure to list them in the `browser.ini` file. You will see the other tests there. Add a new entry with the same format as the others. You can also add new JS or HTML files by listing in under `support-files`. - -## API - -In addition to the standard mochtest API, we provide the following functions to help write tests. All of these expect a `dbg` context which is returned from `initDebugger` which should be called at the beginning of the test. An example skeleton test looks like this: - -```js -add_task(function* () { - const dbg = yield initDebugger("doc_simple.html", "code_simple.js"); - // do some stuff - ok(state.foo, "Foo is OK"); -}); -``` - -The Debugger Mochitest API Documentation can be found [here](https://devtools-html.github.io/debugger.html/reference#mochitest). - -[head]: https://github.com/devtools-html/debugger.html/blob/master/src/test/mochitest/head.js -[mochitests]: https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Mochitest - -[waiting]: https://github.com/devtools-html/debugger.html/commit/7b4762d9333108b15d81bc41e12182370c81e81c -[server-oops]: https://github.com/devtools-html/debugger.html/commit/7e54e6b46181b747a828ab2dc1db96c88313db95#diff-4fb7729ef51f162ae50b7c3bc020a1e3 -[pretty-printing]: https://github.com/devtools-html/debugger.html/commit/6a66ce54faf8239fb358462c53c022a75615aae6#diff-a81153d2e92178917a135261f4245c39R12 diff --git a/docs/pull-requests.md b/docs/pull-requests.md deleted file mode 100644 index ff5a211fc8..0000000000 --- a/docs/pull-requests.md +++ /dev/null @@ -1,157 +0,0 @@ -## Pull Requests - -* [Screenshots](#screenshots) -* [Test Steps](#test-steps) -* [Testing](#testing) -* [Reviews](#reviews) -* [Updates](#updates) -* [CI](#ci) - -### Screenshots - -Include screenshots and animated GIFs in your pull request whenever possible. - -**Recording GIFs** There are many great tools for recording a GIF. On a mac, we recommend [recordit](http://recordit.co/), which is a free lightweight app. - -
- - GIF Example - - -![](http://g.recordit.co/6dE0EmM29Z.gif) - -``` -![](http://g.recordit.co/6dE0EmM29Z.gif) -``` - -
- -**Tables**: When there are multiple screenshots, such as a style change that affects different themes or rtl, it can be nice to use a table for the screenshots [docs][github-tables] - -
- - Table Example - - -|Firebug|Light| -|----------|------| -|![firebug](https://cloud.githubusercontent.com/assets/1755089/22209733/94970458-e1ad-11e6-83d4-8b082217b989.png)|![light](https://cloud.githubusercontent.com/assets/1755089/22209736/9b194f2a-e1ad-11e6-9de0-561dd529d5f0.png)| - - -``` -|Firebug|Light| -|----------|------| -|![firebug](https://cloud.githubusercontent.com/assets/1755089/22209733/94970458-e1ad-11e6-83d4-8b082217b989.png)|![light](https://cloud.githubusercontent.com/assets/1755089/22209736/9b194f2a-e1ad-11e6-9de0-561dd529d5f0.png)| -``` - -
- -### Test Steps - -List any steps necessary to trigger the feature you've created or bug you are fixing - -Often it's helpful to list the different scenarios that you tested as well. - -
- - Test Steps Example - - -If you're working on style change to the close button you could say: - -- [x] Works in tabs -- [x] Works in breakpoints pane -- [x] Works in autocomplete - -
- - -### Testing - -We use [husky](https://github.com/typicode/husky) to check the PR before it is pushed. - -Here are docs on [tests][test-docs] and [linting][linting-docs], which you can run locally. - -The integration tests will be run automatically by the CI. Our integration tests are run with [mochitest][mochitest]. The local setup process is documented [here][mochitest-docs], but the process is a bit cumbersome, so reviewers will generally help debug. - -### Reviews -#### Receiving Reviews - -Once the tests have passed in the PR you must receive a review using the GitHub review system - -We have a number of contributors reviewing PRs fairly quickly, if you feel yours has been neglected please mention the team name **@devtools-html/debugger** in the PR - -#### Reviewing a PR - -Giving valuable feedback is one of the best ways to contribute. - -Tips: - -1. It's not reserved to project maintainers. In fact, it's a great way to learn about the project and pick up on conventions -2. Don't be afraid to ask a question or comment on style inconsistencies. -3. Ask for screenshots and steps to reproduce. Often if it's not clear to you, it's not clear to others :) - -**Testing locally** - -Testing locally is the best way to pick up on inconsistencies. -Many times you'll find small things like console warnings or small visual regressions. - -Steps: - -1. Find the username and branch name in the PR -2. Add the user's remote: `git remote add ` this is the URL you'd use to clone the user's fork. -3. Fetch the user's branches `git fetch ` -4. checkout the user's branch `git checkout --track /`. `--track` is helpful if you later want to pull down subsequent changes to the PR. - - -### Updates - -We value landing PRs smoothly. One way we minimize back and forth is by pushing updates directly to PR branches. - -There are a couple times when we do this: -* it's a small syntax or style change that's blocking a merge -* we want to suggest a refactor. At this point, feel free to offer your opinion. - -Here are the steps for [pushing to a branch]. - -### CI - -We use [Circle] for CI, which is generally pretty great. Our test run is defined in [circle.yml]. - -#### Testing on CI - -If a test is failing on CI and you're not sure why, it can be helpful to SSH in and debug -it locally. There are three steps: - -1. Rebuild with SSH -2. copy the SSH command -3. `cd debugger.html` -4. `jest src` - -##### Rebuild with SSH - -![](https://shipusercontent.com/c9c0c7b79785237686a784fae7d710b2/ssh%20button.png) - -##### SSH Command - -![](https://shipusercontent.com/34e3daec48feed0eba96059d42829e84/ssh%20URL.png) - -##### SSH from the terminal - -![](https://shipusercontent.com/5b5a98a8f42f537b754540dd9f80c2d1/terminal.png) - - - -[github-tables]:https://help.github.com/articles/organizing-information-with-tables/ -[github-remote]:https://help.github.com/articles/which-remote-url-should-i-use/ -[github-2fa]:https://help.github.com/articles/providing-your-2fa-authentication-code/ -[github-pat]:https://help.github.com/articles/creating-an-access-token-for-command-line-use - -[mochitest]:https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Mochitest -[mochitest-docs]: ./mochitests.md -[test-docs]: ./local-development.md#unit-tests -[linting-docs]: ./local-development.md#linting -[pushing to a branch]: ./maintainer.md#pushing-to-a-branch - -[Circle]: https://circleci.com/ -[circle.yml]: ../circle.yml diff --git a/docs/remotely-debuggable-browsers.md b/docs/remotely-debuggable-browsers.md deleted file mode 100644 index b0347bc7ff..0000000000 --- a/docs/remotely-debuggable-browsers.md +++ /dev/null @@ -1,177 +0,0 @@ -## Remotely debuggable browsers - -#### Table Of Contents - -* [Firefox](#firefox) - * [MacOS](#macos) - * [Firefox](#firefox-release) - * [Firefox Nightly](#firefox-nightly) - * [Windows](#windows) - * [Firefox (all versions)](#firefox-all-versions) - * [Firefox (64 bit)](#firefox-64-bit) - * [Android](#android) - -* [Chrome](#chrome) - * [MacOS](#macos-1) - * [Chrome (release)](#chrome-release) - * [Chrome Canary](#chrome-canary) - * [Windows](#windows-1) - * [Chrome (all versions)](#chrome-all-versions) - * [Chrome (64 bit)](#chrome-64-bit) - -* [Safari](#safari) - * [iOS Simulator](#ios-simulator-mac-only) - -Here are quick instructions for getting the Firefox and Chrome web browsers running in a remotely debuggable state. - -On the Mac all instructions assume you've opened a window in the Terminal application. On Windows all instructions assume you've opened the `cmd` application. - -### Firefox - -Here are the instructions for starting a new profile of Firefox on MacOS and Windows. Please file issues or make pull requests for any errors you encounter. - -**Required Flags** - -Running the Firefox profile you intended to debug navigate to `about:config` and use the search to find the following preferences. Double clicking the boolean preferences is the fastest way to toggle them. **You must restart Firefox** once you've made these changes. - -* `devtools.debugger.remote-enabled` to `true` -* `devtools.chrome.enabled` to `true` -* `devtools.debugger.prompt-connection` to `false` - -> **Already running Firefox?** If you would like to make your current Firefox remotely debuggable; press `shift+F2` and type `listen` in the command bar. Make sure you have enabled the required preferences above. - -#### MacOS - -On the Mac Firefox installs different application names for each release channel (release, beta, aurora, nightly) instead of overwriting the existing application. - -**Flags** - -These are the flags necessary to start the remote debug server and use an alternate profile. - -* debug server `--start-debugger-server 6080` -* temporary profile `--profile $TMPDIR/fx-dev-profile` - -##### Firefox (release) - -``` -$ /Applications/Firefox.app/Contents/MacOS/firefox-bin --start-debugger-server 6080 --profile $TMPDIR/fx-dev-profile -``` - -> For Firefox Beta or Developer Edition (Aurora) replace the `Firefox.app` from the command above with the following app names -> * FirefoxBeta.app -> * FirefoxDeveloperEdition.app - -##### Firefox Nightly - -``` -$ /Applications/FirefoxNightly.app/Contents/MacOS/firefox-bin --start-debugger-server 6080 --profile $TMPDIR/fx-dev-profile -``` - -#### Windows - -**Flags** - -* debug server `-start-debugger-server 6080` -* temporary profile `-profile %TEMP%\fx-dev-profile` - -**64 bit Windows** - -For users with a 64 bit machine Firefox may have installed in the: `C:\Program Files (x86)` folder. - -##### Firefox (all versions) - -``` -$ "C:\Program Files\Mozilla Firefox\firefox.exe" -start-debugger-server 6080 -profile %TEMP%\fx-dev-profile -``` - -##### Firefox (64 bit) - -``` -$ "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" -start-debugger-server 6080 -profile %TEMP%\fx-dev-profile -``` - -#### Android - -Firefox for Android creates a Unix socket and listens there for debugger connections. To connect to it, use the [adb](https://developer.android.com/studio/command-line/adb.html) tool's port forwarding feature: - -``` -adb forward tcp:6080 localfilesystem:/data/data/org.mozilla.fennec/firefox-debugger-socket -``` - -The exact path to the socket differs based on release channel. You can find the right value in Firefox on Android by loading about:config and checking the value of the preference ``devtools.debugger.unix-domain-socket``. - -### Chrome - -Here are the instructions for starting a new temporary profile of Chrome on MacOS and Windows. Please file issues or make pull requests for any errors you encounter. - -#### MacOS - -**Flags** - -* debug server `--remote-debugging-port=9222` -* ignore first run setup `--no-first-run` -* temporary profile `--user-data-dir=$TMPDIR/chrome-dev-profile` - -##### Chrome (release) - -``` -/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --no-first-run --user-data-dir=$TMPDIR/chrome-dev-profile -``` - -##### Chrome Canary - -``` -/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary --remote-debugging-port=9222 --no-first-run --user-data-dir=$TMPDIR/chrome-dev-profile -``` - -#### Windows - -**Flags** - -* debug server `--remote-debugging-port=9222` -* ignore first run setup `--no-first-run` -* temporary profile `--user-data-dir=%TEMP%\chrome-dev-profile` - -##### Chrome (all versions) - -``` -$ "C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 --no-first-run --user-data-dir=%TEMP%\chrome-dev-profile -``` - -##### Chrome (64 bit) - -``` -$ "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 --no-first-run --user-data-dir=%TEMP%\chrome-dev-profile -``` - -### Safari - -These are the instructions for getting the debugger.html project to connect to and debug Safari on various platforms. Please file issues or make pull requests for any errors you encounter. - -#### iOS Simulator (Mac only) - -**Requirements** - -* Xcode - * Download and install [Xcode](https://developer.apple.com/xcode/) from Apple -* [ios-webkit-debug-proxy](https://github.com/google/ios-webkit-debug-proxy) - * `brew install ios-webkit-debug-proxy` - -##### Safari - -* Start the iOS Simulator - * Launch Xcode and then launch the simulator using the following instructions - -![xcode-start-simulator](https://cloud.githubusercontent.com/assets/2134/18512759/debce848-7a8a-11e6-981f-1a0017eb098e.png) - - -* Run the proxy in a terminal - -```shell -ios_webkit_debug_proxy -``` - -* Run the [debugger.html](https://github.com/devtools-html/debugger.html) - * `npm start` -* Connect using the following URL - * [http://localhost:8000/?ws=localhost:9222/devtools/page/1](http://localhost:8000/?ws=localhost:9222/devtools/page/1) diff --git a/docs/running-as-firefox-panel.md b/docs/running-as-firefox-panel.md deleted file mode 100644 index 879731f364..0000000000 --- a/docs/running-as-firefox-panel.md +++ /dev/null @@ -1,97 +0,0 @@ -# Running as the firefox panel - -* [Getting Started with Firefox Nightly](#getting-started-with-firefox-nightly) - * [For Windows Developers](#for-windows-developers) -* [Configuring Firefox path in the debugger](#configuring-firefox-path-in-the-debugger) -* [Running Nightly with the local debugger](#running-nightly-with-the-local-debugger) -* [Watching for Changes](#watching-for-changes) -* [Getting Help](#getting-help) - -## Getting Started with Firefox Nightly - -Running Firefox is similar to running [Mochitests](./mochitests.md) (our integration tests) - -**Requirements** - -* mercurial ( `brew install mercurial` ) -* autoconf213 ( `brew install autoconf@2.13 && brew unlink autoconf` ) - -On the first run, this will download a local copy of Firefox and set up an [artifact build](https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/Artifact_builds) (just think of a super fast Firefox build). It may take a while (10-15 minutes) to download and build Firefox. - -There are two commands that you will need. `./mach build` and `./mach run` these can be run together -each time things change with `./mach build && ./mach run` - -If you update your Firefox build infrequently, you may need to [Clobber the -tree](https://wiki.mozilla.org/Clobbering_the_Tree) - -* The first time you run the project you will need to use `./mach build` but after the first run you can use `./mach build faster`! The full command looks like this`./mach build faster && ./mach run` (for more info about this take a look at the [mach docs](https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/mach) - -You should now have a fresh copy of nightly open up! You can pass a few properties to it as well, -such as -P if you want to use a specific profile - -### For Windows Developers - -The detailed instructions for setting up your environment to build Firefox for Windows can be found [here](https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/Windows_Prerequisites). You need to install the latest `MozBuild` package. You can open a unix-flavor shell by starting: - -``` -C:\mozilla-build\start-shell.bat -``` - -In the shell, navigate to the debugger.html project folder, and follow the Getting Started instructions as mentioned. - -## Configuring Firefox path in the debugger - -You will need to copy your new debugger code into firefox each time you change something. By default -we have the location of firefox to be within the devtools directory. - -However if you have firefox installed elsewhere you can update this in `configs/local.json`. There you will find a configuration -called - -```json -mcPath: './firefox' // expecting firefox to be under `debugger.html/firefox` -``` - -You can change this to what works for you! - -## Running Nightly with the local debugger - -Now we can put these pieces together. After you copy over the assets, you can run firefox with the -debugger inside the panel! - -in debugger project (`projects/debugger.html` or wherever you have it!): -``` -yarn copy-assets -``` - -in firefox project (`projects/firefox` or wherever you have it!): -``` -./mach build faster && ./mach run -``` - -## Watching for Changes - -On to the fun stuff. Each time you change something you will need to copy over your assets, you can -do this like so! - -in yarn: -``` -yarn copy-assets -``` - -That will build the debugger and copy over all the relevant files into `firefox`. - -It's annoying to have to manually update the bundle every single time though. If you want to automatically update the bundle in Firefox whenever you make a change, run this: - -``` -yarn copy-assets-watch -``` - -Now you can make code changes the the bundle will be automatically built for you inside `firefox`. - - -### Getting Help - -There are lots of helpful folks who'd be happy to answer -your questions on [slack][slack]. - -[slack]:https://devtools-html-slack.herokuapp.com/ diff --git a/docs/screenshots/active.png b/docs/screenshots/active.png deleted file mode 100644 index b8dfcb2da4..0000000000 Binary files a/docs/screenshots/active.png and /dev/null differ diff --git a/docs/screenshots/cypress-runner.png b/docs/screenshots/cypress-runner.png deleted file mode 100644 index 02b1a664a0..0000000000 Binary files a/docs/screenshots/cypress-runner.png and /dev/null differ diff --git a/docs/screenshots/paused.png b/docs/screenshots/paused.png deleted file mode 100644 index 669523e89e..0000000000 Binary files a/docs/screenshots/paused.png and /dev/null differ diff --git a/docs/updates/5-1-2017-flow.md b/docs/updates/5-1-2017-flow.md deleted file mode 100644 index d01a00be7c..0000000000 --- a/docs/updates/5-1-2017-flow.md +++ /dev/null @@ -1,153 +0,0 @@ -### Flow Coverage Report (May 1st) - -We're currently using Flow 0.47 and have 60% coverage. Here's a quick run down of how we're doing. - - -#### Components - -* **54%** coverage -* 44 components are typed (almost all) -* `yarn flow-react` - creates a flow report for components - -Typing our components helps us with rendering logic, which can take advantage -of our domain objects such as `Frame`. - -```js -function renderFrameTitle(frame: Frame) { - const displayName = formatDisplayName(frame); - return dom.div({ className: "title" }, displayName); -} -``` - -We are not yet typing our props and state, which would be a helpful way -to get additional coverage. We currently use `PropTypes`, which do not include -flow types. We will hopefully switch to [props] soon to take advantage of static typing. - -```js -shouldComponentUpdate(nextProps, nextState) { - const { frames, selectedFrame } = this.props; - const { showAllFrames } = this.state; - return ( - frames !== nextProps.frames || - selectedFrame !== nextProps.selectedFrame || - showAllFrames !== nextState.showAllFrames - ); -} -``` - -There have been a couple places where flow types have been difficult to get right. - -1. **covariants** `this.toggleFramesDisplay = this.toggleFramesDisplay.bind(this)`. We have an [issue](https://github.com/devtools-html/debugger.html/issues/3172) to improve this. -2. **defaultProps** and other class properties have been awkward to add types for. - -Overall, typing our components has been a nice win though as it gives us additional confidence our UI will behave appropriately and catches several lifecycle edge-cases -where properties could be null or racey. - -#### Utilities - -* **59%** coverage -* **60** files -* `yarn flow-utils` - creates a flow report for utils - -We started typing our utility functions. Starting with utilities helped us -document our primary business logic and made them easier to refactor. - -In this example, we added types to a parser utility that checks to see if an -expression is in a particular scope. - -```js -export function isExpressionInScope(expression: string, scope?: Scope) { - if (!scope) { - return false; - } - - const variables = getVariablesInScope(scope); - const firstPart = expression.split(/\./)[0]; - return variables.includes(firstPart); -} -``` - -We are not currently typing our test files, but I think it would be helpful if -we did. In this example, we are searching for all of the functions in a given -source, but because we did not provide a type for `getSourceText`, flow can -not use `getSymbols`'s types to tell us if we're writing a reasonable test. - -```js -it("finds functions", () => { - const fncs = getSymbols(getSourceText("func")).functions; - const names = fncs.map(f => f.value); - expect(names).to.eql(["square", "child", "anonymous"]); -}); -``` - -Overall, typing our utilities was a great first step. And the more that we type -the components, actions, and reducers that call the utilities, the more value -we will get out of them. Already, the types are forcing an internal consistency -that helps us achieve a better API for our utils. - -#### Actions / Reducers - -Our Actions and Reducers are generally very well covered. - -* **78%** coverage -* **19** files -* `yarn flow-redux` - creates a flow report for actions and reducers - -Actions like breakpoints and pause have a coverage score of over 80%. -We initially, typed our action dispatcher params. We've recently added -types for `ThunkArgs` and `State`. Typing `State`, allows flow to type check -our selectors and utils. - - -```js -export function newSource(source: Source) { - return ({ dispatch, getState }: ThunkArgs) => { - if (prefs.clientSourceMapsEnabled) { - dispatch(loadSourceMap(source)); - } - - dispatch({ type: constants.ADD_SOURCE, source }); - - checkSelectedSource(getState(), dispatch, source); - checkPendingBreakpoints(getState(), dispatch, source); - }; -} -``` - -Our reducers are 80% covered and some reducers like breakpoints and pause are 80+ -percent covered. Breakpoints is actually 97% covered. Most of the coverage comes -from our State type and Action union types. - -The `State` type describes the state of the the reducer store. Typing the State -and action types lets us fully describe our reducers and get a high flow coverage -score. - -```js -export type BreakpointsState = { - breakpoints: I.Map, - pendingBreakpoints: any[], - breakpointsDisabled: false -}; -``` - -Typing our actions gives us confidence that the action dispatched will be -what our reducers expect to handle. - -```js -type BreakpointAction = - | { type: "ADD_BREAKPOINT", - breakpoint: Breakpoint, - condition: string, - value: BreakpointResult - } - | { - type: "REMOVE_BREAKPOINT", - breakpoint: Breakpoint, - disabled: boolean - } -... -export type Action = SourceAction | BreakpointAction | PauseAction | UIAction; -``` - - -[props]: https://flow.org/en/docs/frameworks/react/#toc-adding-types-for-react-component-props diff --git a/docs/updates/5-1-2017-tests.md b/docs/updates/5-1-2017-tests.md deleted file mode 100644 index 637cdc7a4f..0000000000 --- a/docs/updates/5-1-2017-tests.md +++ /dev/null @@ -1,139 +0,0 @@ -## Test Coverage Report (May 1st) - -### Unit Tests - Jest - -#### Components - -* **6** files -* **80+** coverage -* **60** files of coverage - -We use Jest to test our React Component. We mostly do snapshot testing to -check for changes over time. We also have interaction tests where we test to see -if user input like a "click" will fire the appropriate handler. - -Jest's default react shallow renderer with enzyme works well for us because it -limits the scope of the test and lets us focus on the component under testing and -not necessarily the children. We also test wrapped components to avoid the connected function and passing in the full application state. - -With that said, a typical component test will still exercise several the utilities -and other imported dependencies. We just started writing component tests and our 6 tests -cover 60 files! We're not trying to write isolated unit tests! - - -##### Snapshot Test - -```js -it("should render the component", () => { - const wrapper = shallow(ResultList(payload)); - expect(wrapper).toMatchSnapshot(); -}); -``` - -##### Interaction Test - -```js -it("should call onClick function", () => { - const wrapper = shallow(ResultList(payload)); - - wrapper.childAt(selectedIndex).simulate("click"); - expect(selectItem).toBeCalled(); -}); -``` - -#### Utilities - -Our utilities are the best tested part of the debugger. We try to move as much -logic to a util so that we can reasonably test them in isolation. - -The best example of this is our parser utils, which are like the brain of the -debugger. Here's a really cool example of how we test getting local variables. -The best part about these tests is that they're really easy to TDD and get -confidence. It lets us have 90-100% coverage and refactor really easily. - -```js -it("only gets local variables", () => { - const scope = getClosestScope(getSourceText("math"), { - line: 3, - column: 5 - }); - - var vars = getVariablesInLocalScope(scope); - - expect(vars.map(v => v.name)).to.eql(["n"]); - expect(vars[0].references[0].node.loc.start).to.eql({ - column: 4, - line: 3 - }); -}); -``` - -#### Actions / Reducers - -* **4** files and 37 tests -* **80%** coverage -* **50** files of coverage - -The old Debugger UI only had integration tests. When we switched to React, we -knew we wanted to write tests that covered our Redux system. - -The first we wrote tested our breakpoint logic. I still think it reads really -well and covers a lot of ground. Notice that we have a mock client that we pass -into the store so that we don't make any API calls. - -```js -it("should add a breakpoint", async () => { - const { dispatch, getState } = createStore(simpleMockThreadClient); - - await dispatch(actions.addBreakpoint({ sourceId: "a", line: 5 })); - await dispatch(actions.addBreakpoint({ sourceId: "b", line: 6 })); - - expect(selectors.getBreakpoints(getState()).size).to.be(2); -}); -``` - -We've recently made a concerted effort to add more redux integration test. -We're now testing all of our action files and have good coverage in everything, -but source actions. - ---- - -### Integration Tests - -While we try to get most of our coverage with unit tests, it is still helpful -to have integration tests to confirm that we did not break an important code path -like pausing on a breakpoint. - -Switching to redux has helped us write really clean tests, -that are both fun to write, and easy to debug. - -Here is a typical test where we open the debugger, toggle breakpoints by clicking in the gutter, and check the redux store if the beakpoint is registered. - -```js -async function toggle(ctx) { - const { ok, is, info } = ctx; - const dbg = await initDebugger("doc-scripts.html", "simple2"); - - // Create two breakpoints - await selectSource(dbg, "simple2"); - await addBreakpoint(dbg, "simple2", 3); - await addBreakpoint(dbg, "simple2", 5); - - // Disable the first one - await disableBreakpoint(dbg, 1); - let bp1 = findBreakpoint(dbg, "simple2", 3); - let bp2 = findBreakpoint(dbg, "simple2", 5); - is(bp1.disabled, true, "first breakpoint is disabled"); - is(bp2.disabled, false, "second breakpoint is enabled"); - - // Disable and Re-Enable the second one - await disableBreakpoint(dbg, 2); - await enableBreakpoint(dbg, 2); - bp2 = findBreakpoint(dbg, "simple2", 5); - is(bp2.disabled, false, "second breakpoint is enabled"); -} -``` - -Our integration tests are our last line of defense and -have caught the most would be bugs. We are currently making a push to test -all of our UI components with at least one integration test. diff --git a/docs/updates/README.md b/docs/updates/README.md deleted file mode 100644 index 7a261d8b8a..0000000000 --- a/docs/updates/README.md +++ /dev/null @@ -1,230 +0,0 @@ ---- -permalink: docs/updates ---- - -### Weekly Updates - -### [September 26th](./updates-9-26-2017.md) - -* UCOSP Students -* UX/UI -* Shortcuts -* Preview -* Outline View -* Photon -* Project Search -* Watch Expressions -* Context Menu -* Map Minified variables -* List Workers -* Accessibility -* Breakpoints -* Infrastructure -* Performance - -### [September 5th](./updates-9-5-2017.md) - - -* **AST Breakpoints** landed the final changes for finding a breakpoint ast location and setting an ast location when a breakpoint is created. We should be able to land AST Breakpoints this week! -* **Async Stepping** landed the utilities for identifying async expressions, and the logical "next" statement to step to. Async Stepping will land in the next release. -* **WASM** We enabled wasm debugging in the new UI and it is now turned on in nightly. Debugging WASM source code in the native language (C, C++) is a blast. -* **Worker List** added a new Workers right sidebar pane and populating the pane with debuggee workers. The next step is to add the about:debugging util for launching a new toolbox. -* **Mapping minified variables** started working on mapping minified variables, which will show the the "original" variable name in the scopes pane, and enable preview, watch expressions and the console to work with original * expressions. -* **Project Search** continued to polish project search. This week he fixed keyboard navigation of streaming results, and made result orders deterministic. -* **Syncing CSS** removed the theme's CSS class namespace, which will make it easy to sync themes with m-c. -* **Accidental Breakpoints** fixed and uplifted a bug to 56, where the debugger created new breakpoints when the user changed original code and reloaded. -* **File Search** improved file search performance and fixed a bug where the debugger would crash on large files. -* **Empty Lines** landed disabled empty lines where the debugger disables lines that do not have any executable code. -* **Photon** started styling the debugger for the new photon design. It is looking great! -* **Welcome Box** styled the welcome box and added some additional shortcuts. -* **Release** released a new version of the debugger to nightly, which included the last month of work. We'll start getting feedback on it now that it's in nightly. - - -### [August 29nd](./updates-8-29-2017.md) - -* Finished move to JSX for all of our components -* Improved testing of intermittents, we now have a script that finds them -* Progress on the AST breakpoints -- we have added a util and tests for finding ast locations. Next step, add to breakpoint syncing -* Improved breakpoints syncing -- we can now delete breakpoints that move outside of a source - -#### User Visible -* the search combination keys for text are now displayed and style -* Added copy functionality to the context menu of the editor - -### [August 22nd](./updates-8-22-2017.md) - -* new release this week will include project search and outline view -* empty line gutters are no longer going to be clickable: PR -* Async/await stepping is in progress. Jaideep did a lot of great work. -* Improved development experience for windows users -* Source tree now handles files and folders with the same name in a reasonable manner -* Source tree has also been generally cleaned up -* Debugger uses the Object Inspector from Core (same as the console) - -### [August 15th](./updates-8-15-2017.md) - -* We're switching to JSX -* Project Search is getting close -* Lots of test and code quality fixes -* Lots of small paper cut fixes - -### [August 1st](./updates-8-1-2017.md) - -* UI Polish -* Bug Fixes -* Project Search - -### [July 25th](./updates-7-25-2017.md) - -* lots of polish as we prepare for releasing in 56 -* breakpoints are more stable -* project text search is getting closer -* wasm support is coming to the debugger - -### [July 11th](./updates-7-11-2017.md) -lots happened since the last update: - -* Edge Cases: pretty print, symmetric breakpoints, … -* Performance: stepping, preview -* UI: New symbol modal, full project text search -* Experiments: Call Site Breakpoints, Async stepping - -### Types and Tests Review - -* [Flow Review](./5-1-2017-flow.md) -* [Tests Review](./5-1-2017-tests.md) - -### [June 20th](./updates-6-20-2017.md) -It's been a quieter week than last week. This weeks highlights include: - -* new UI improvements to search (thankyou to [@ruturajv]! -* some new documentation -* WTR runner - -### [June 13th](./updates-6-13-2017.md) - -We focused this week on getting lots of bugfixes and community prs in - -* Nightly is up to date with the latest debugger updates -* new styling for the Outline View, big thanks to [@amelzer] -* searchbar had a lot of improvements -* lots of dependancies were updated, thanks to [@zaggy] -* further work on getting more frameworks included on our framework frames. Thanks to - [@andreicristianpetcu] - -### [June 6th](./updates-6-6-2017.md) - -This was a really great week for QA improvements as the debugger is getting more stable each week. - -* We now disable out of scope lines when the debugger pauses. -* We have huge updates to preview - it's faster, more consistent, and works for HTML elements -* Breakpoints are kept in sync as code changes. Big thanks to [codehag][@codehag] -* We're chipping away at two new features: Outline View and Project Search - -### [May 23rd](./updates-5-23-2017.md) - -We focused this week on UI polish, bug fixing, and performance as we focus on getting ready for the June 15th Firefox 55 release. - -* Intelligently place preview popups and tooltips -* Add an option for disabling Framework Frames -* Polish the search bar -* Speed up stepping performance - -### [May 16th](./updates-5-16-2017.md) - -Here are some highlights from the week: - -* :yellow_heart: Function highlighting -* :police_car: License checking for our dependencies -* :nail_care: Lots of UI polish - -### [When the World Stops](./when-the-world-stops.md) - -One of the most interesting debugger questions is what happens when the debugger stops? This post is a quick run-through that will give you some context so that you can dig in and answer your own questions. - -### [May 9th](./updates-5-9-2017.md) - -* [Adam][@asolove] dramatically improved our startup performance. [pr][pr-6] -* [Ryan][@ryanjduffy] completed the heroic and insane project of getting babel working with HTML inline JS. [pr][pr-23] -* [Diéssica][@diessica] jumped in and polished our Tabs UI -* We started converting our Prop Types to Flow Props. Thanks [Mateusz][@Andarist] and others for the help kicking this off! -* We added several new Jest component tests. Big thanks to [Andrei][@andreicristianpetcu] for tackling async component updates. It was not an easy task! -* We re-added storybook this week and wrote our first stories for Frames and Tabs! The stories are also being tested on CI with the great [percy.io](http://percy.io). - -### [May 2nd](./updates-5-2-2017.md) - -* :bullettrain_front: Column Breakpoints -* :spaghetti: Framework Frames -* :speech_balloon: Watch Expressions -* :spaghetti: Copy Call Stack - -### [April 25th](./updates-4-25-2017.md) - -* :corn: We started working on proper code folding -* :mag: landed support for getter values - -### [April 18th](./updates-4-18-2017.md) - -* :orange_book: Framework Frames -* :mag: Previewing Windows -* :ant: Component + Integration Tests - -#### [April 11th](./updates-4-11-2017.md) - -* :ant: Bucket Window Properties -* :eyes: Display popover intelligently -* :baby: Formatting Functions - -#### [April 10th - Call Stack Plans](./call-stack-4-10-2017.md) - -* :diamond_shape_with_a_dot_inside: Highlighting libraries -* :envelope: Simplifying Function Names -* :spaghetti: Collapsing Libarary frames -* :baby: Naming Library frames -* :black_medium_small_square: Blackboxing libraries - -#### [April 4th - Weekly Update](./updates-4-4-2017.md) - -* :black_medium_small_square: Blackboxing -* :kissing_heart: ES6 -* :eyes: Preview -* :phone: client - -#### [March 28th - Weekly Update](./updates-3-28-2017.md) - -* :mag: Function Search -* :traffic_light: Code Coverage - -#### [March 21st - Weekly Update](./updates-3-21-2017.md) - -* :nail_care: Prettier -* :red_circle: Persisted Breakpoints - -#### [March 14th - Weekly Update](./updates-3-14-2017.md) - -* :smiling_imp: Jest -* :mag: File Search -* :eyes: Preview - -#### [March 7th - Weekly Update](./updates-3-7-2017.md) - -* :mag: Function Search -* :waning_gibbous_moon: Dark Theme Polish - -#### [February 28th - Weekly Update](./updates-2-28-2017.md) - -* :red_circle: Testing Improvements -* :ant: Lots of bug squashing - - -[@asolove]:http://github.com/asolove -[@ryanjduffy]:http://github.com/ryanjduffy -[@diessica]:http://github.com/diessica -[@codehag]:http://github.com/codehag -[@andreicristianpetcu]:http://github.com/andreicristianpetcu -[@Andarist]:http://github.com/Andarist -[pr-6]:https://github.com/devtools-html/debugger.html/pull/2784 -[pr-23]:https://github.com/devtools-html/debugger.html/pull/2810 -[@zaggy]:http://github.com/zaggy -[@amelzer]:http://github.com/amelzer -[@ruturajv]:http://github.com/ruturajv diff --git a/docs/updates/call-stack-4-10-2017.md b/docs/updates/call-stack-4-10-2017.md deleted file mode 100644 index e9b41af414..0000000000 --- a/docs/updates/call-stack-4-10-2017.md +++ /dev/null @@ -1,93 +0,0 @@ - -### The Evolution of the Call Stack - -Call Stacks are one of the most important tools in the debugger. They help answer the questions: - -1. how did we get here? -2. what happened over there? - -Unfortunately, call stacks have become increasingly confusing over time to the point -that they have become a feature that only the most advanced users take advantage of. - -We have five features that will make the Call Stack a lot more usable: - -* :diamond_shape_with_a_dot_inside: Highlighting libraries -* :envelope: Simplifying Function Names -* :spaghetti: Collapsing Library frames -* :baby: Naming Library frames -* :black_medium_small_square: Blackboxing libraries - -![evolution] - -Lets look at each feature in depth and see how we can improve a pretty simple Backbone call stack. - -![original] - -#### :diamond_shape_with_a_dot_inside: Highlighting libraries - -We're going to start highlighting library frames in the call stack. We'll do this by replacing the file URL and line location with the library name and logo. - -This will help users differentiate between application and library frames. - -![highlight] - -#### :envelope: Simplifying Anonymous Function Names - -The call stack currently gives verbose function names to anonymous functions in the call stack. -In practice, the function `success` could be named `app.AppView<.success`. - -It's important to be able to scan the call stack. So in this context, it's helpful to see the simplest name possible. - - -![simplify] - -#### :spaghetti: Collapsing Library frames - -We're going to experiment with collapsing library frames by default. This will shrink framework call stacks dramatically and reduce a lot of the visual noise. - -![collapse] - - -#### :baby: Naming Library frames - -One of the benefits of collapsing the library frames is that it gives an opportunity to -describe what the library is doing. For example, instead of showing two frames for jQuery \[`elemData.handle`, `event.dispatch`], we can simply show `event`. - -Describing the library functions will help make it clear when a framework is rendering, routing, or doing any other task. - -![naming] - -#### :black_medium_small_square: Blackboxing libraries - -Sometimes you want to ignore a library completely. When this is the case you'll can blackbox the library and it will not show up in the call stack. We've always had this feature, but today it is more discoverable. - -![blackbox] - - -#### React Case Study - -We wanted to see what the new Call Stack would look like in a real world React application -so we took a look at the Debugger while it was rendering the Call Stack. - -![inception] - -When you compare what the call stack that you see when you're paused in a render cycle, -the difference is striking. Here is what the call stack looked like before and after the change. - -![react] - -#### Conclusion - -We're really excited about how the new call stack will help users think about their applications in the future. This is just the beginning, we hope to introduce more framework improvements in the near future! - -[inception]: https://cloud.githubusercontent.com/assets/254562/25029800/ab35cea4-208e-11e7-8ba2-71ba8b8c240c.jpg -[react]: https://cloud.githubusercontent.com/assets/254562/25029620/14e2205c-208d-11e7-8177-cc5baeb8d53c.jpg -[blackbox]: https://cloud.githubusercontent.com/assets/254562/25029619/14e1ffc8-208d-11e7-8393-fd08ebe00847.jpg -[collapse]: https://cloud.githubusercontent.com/assets/254562/25029623/14eb47a4-208d-11e7-9b74-1f41de0aeb5f.jpg -[simplify]: https://cloud.githubusercontent.com/assets/254562/25029624/14ee346e-208d-11e7-89ec-cd0385f3d69f.jpg -[highlight]: https://cloud.githubusercontent.com/assets/254562/25029622/14ea24fa-208d-11e7-9c12-824879f64bb5.jpg - -[naming]: https://cloud.githubusercontent.com/assets/254562/25029999/ff7e7fd2-208f-11e7-925d-66449a19c213.jpg - -[original]: https://cloud.githubusercontent.com/assets/254562/24866189/69ce5d32-1dd7-11e7-8252-c3e33f2b7d15.jpg -[evolution]: https://cloud.githubusercontent.com/assets/254562/24866748/19d640fe-1dd9-11e7-86d9-b30c8cec7b7e.jpg diff --git a/docs/updates/updates-2-28-2017.md b/docs/updates/updates-2-28-2017.md deleted file mode 100644 index 483bbdc08d..0000000000 --- a/docs/updates/updates-2-28-2017.md +++ /dev/null @@ -1,236 +0,0 @@ -### February 28th - -#### Overview - -Last week was nothing short or epic. - -1. We made tons of progress on function search, text search, and editor preview -2. We squashed mountains of UI and perf bugs -3. We added great features to the scopes pane -4. We focused on integration testing and general QA. - -There's no way we could have gotten this done without the help of many people: [@rrandom], [@arthur801031], [@bomsy], [@wldcordeiro], [@jryans], [@irfanhudda], [@soapdog], [@amitzur], [@juliandescottes], [@Garbee], [@zystvan], [@najamkhn], [@jcreighton], [@jbhoosreddy], [@tromey], [@ryanjduffy], [@sole], [@lasfin]! - -#### UI - -We fixed UI bugs ranging from themes, to accessibility, to RTL. It was an unbelievable team effort. - -* [Fix tab close button positioning][pr-12] - [@wldcordeiro] -* [Issue 1946: adding Conditional Breakpoint guillemet][pr-19] - [@soapdog] -* [Restore tooltips for debug buttons][pr-20] - [@irfanhudda] -* [Expand source directories on click][pr-23] - [@wldcordeiro] -* [Make the command bar sticky.][pr-35] - [@Garbee] -* [Align Text Vertically in Watch Expressions Panel Section][pr-36] - [@zystvan] -* [fix frame location color change on hover][pr-43] - [@jcreighton] -* [use scrollIntoView to improve result scrolling (#2106)][pr-44] - [@jbhoosreddy] -* [Refactor Searching UI into smaller components and clean up function search UI][pr-45] - [@wldcordeiro] -* [Add close button to conditional breakpoint panel][pr-49] - [@ryanjduffy] -* [Style the searchbar height so the result list doesn't go on forever][pr-52] - [@wldcordeiro] -* [Fix icons dark theme][pr-54] - [@jcreighton] -* [add chrome scrolling polyfill][pr-59] - [@jasonLaster] -* [(Accessibility) select frame on enter][pr-66] - [@lasfin] -* [Polish ui catchall][pr-67] - [@jasonLaster] -* [refactor why-paused component to use a react class and props][pr-9] - [@jasonLaster] - - -#### Bug Fixes - -Thanks [@juliandescottes], [@bomsy], [@irfanhudda] for coming in and fixing some pretty embarrassing bugs! - -* [Fix source navigation, when switching from vertical to horizontal layouunlink][pr-32] - [@juliandescottes] -* [Fix watch expression editing][pr-28] - [@bomsy] -* [Address perf issues with source maps][pr-42] - [@jasonLaster] -* [Fix sources highlight][pr-53] - [@irfanhudda] -* [Speed up opening the editor][pr-68] - [@jasonLaster] - -#### Text Search - -Text search `cmd+f` is a surprisingly challenging feature that we've been working on since September. -This week, we nailed down some of the most complicated behavior around iterating through results, especially when cursor state changes. - -* [Improve text search result count][pr-0] - [@rrandom] -* [EditorSearch index fix][pr-11] - [@jasonLaster] -* [Fix search selection][pr-13] - [@jasonLaster] -* [Add a search bottom bar and move the search modifiers to the bottom bar.][pr-21] - [@wldcordeiro] -* [Fix whole word search modifier clearing search and count showing as NaN][pr-63] - [@wldcordeiro] -* [Fix modifier buttons in chrome][pr-64] - [@wldcordeiro] -* [Don't run text search when function search is enabled.][pr-69] - [@wldcordeiro] - -#### Function Search - -Function Search was a stretch goal for our release going into the week. -Thanks to [babel.js](https://babeljs.io/) having a fantastic API and the heroic effort of [@clarkbw] and [@wldcordeiro] -on the UI we'll be able to launch a really beautiful feature. - -* [use a unique id to show multiple matches in function search][pr-2] - [@clarkbw] -* [implement the function search compact design][pr-5] - [@clarkbw] -* [Update parser][pr-24] - [@jasonLaster] -* [Move the function search into the editor search bar][pr-27] [2][pr-30] - [@wldcordeiro] -* [Disable the search modifiers when function search is enabled.][pr-60] - [@wldcordeiro] -* [Fix search results height in chrome.][pr-65] - [@wldcordeiro] -* [Polish search toggle UX][pr-70] - [@wldcordeiro] -* [Add summary messages for the function searching][pr-71] - [@wldcordeiro] - -#### Scopes - -The scopes component is one of the most used features of a Debugger and also introduces some of the most complexity. -This week we looked at showing promises, large arrrays, sparse arrays. -[@Bomsy] also tackled keeping variables expanded as the debugger steps through the code. This was a difficulty `hard` bug! - -* [Persist scopes as you step][pr-6] - [@bomsy] -* [Add buckets for objects and keys][pr-22] - [@jasonLaster] -* [Show promises special properties (status, reason)][pr-51] - [@arthur801031] -* [Show falsey return values][pr-58] - [@tromey] - -#### Editor Preview - -Editor Preview is the one new **must** have feature of the release. -We were blocked on adding the feature, while we waited for parser support. This week we built a fantastic V1, which supports hovering on local variables and a really nice custom preview for functions and objects. In the case of functions, we also provide a link to the function definition. - -* [Editor popover][pr-29] - [@amitzur] -* [Add Popup Preview (V1)][pr-40] - [@jasonLaster] -* [Preview objects, functions, and reps][pr-57] - [@jasonLaster] -* [Show editor preview on hover][pr-61] - [@bomsy] - - -#### Infrastructure - -* [Add flow to Scopes.js, WhyPaused.js, SourcesTree.js,...][pr-1] - [@arthur801031] -* [fix the invalid source texts in the failing tests][pr-4] - [@bomsy] -* [add yarn run links script][pr-8] - [@clarkbw] -* [Add flow to Autocomplete.js, Close.js, PaneToggle.js,...][pr-10] - [@arthur801031] -* [update lint script to better capture directory layout][pr-14] - [@clarkbw] -* [Document Firefox WebSocket workflow][pr-15] - [@jryans] -* [Replace custom utilities with lodash utils where possible][pr-25] - [@clarkbw] -* [Fix the nom command to remove yarn.lock file][pr-41] - [@najamkhn] - -#### Miscellaneous - -* [cleanup l10n accesskey properties][pr-55] - [@jasonLaster] -* [Remove required status from prop in searchbar and fix flow issues.][pr-48] - [@wldcordeiro] - -#### Testing - -* [add Tests for Return values][pr-33] - [@jasonLaster] -* [Additional integration tests][pr-18] - [@jasonLaster] -* [fix failing tests][pr-3] - [@jasonLaster] -* [Add Expressions test][pr-37] - [@bomsy] -* [fix console link test][pr-38] - [@jasonLaster] - -#### Docs - -* [(WIP) integration test docs][pr-16] - [@jasonLaster] -* [clean up testing docs][pr-34] - [@jasonLaster] -* [Add some maintainer docs][pr-47] - [@jasonLaster] - -#### Screenshots - -|Persist Scopes| -|----------------| -|![gif-1]| - -|Editor Preview| -|----------------| -|![gif-2]| - -|Text Search| -|-------------| -|![gif-3]| - - -[gif-1]:https://cloud.githubusercontent.com/assets/792924/23188424/948ff100-f886-11e6-9420-bab20d56d289.gif -[gif-2]:https://cloud.githubusercontent.com/assets/792924/23385436/b5e22ae2-fd47-11e6-9a55-e26365b3849e.gif -[gif-3]:https://camo.githubusercontent.com/c528900a4ca7a817e34cd43bd0d8a9f44c4c3a6e/687474703a2f2f672e7265636f726469742e636f2f494d385370645a784d722e676966 - -[pr-0]:https://github.com/devtools-html/debugger.html/pull/2005 -[pr-1]:https://github.com/devtools-html/debugger.html/pull/2048 -[pr-2]:https://github.com/devtools-html/debugger.html/pull/2058 -[pr-3]:https://github.com/devtools-html/debugger.html/pull/2061 -[pr-4]:https://github.com/devtools-html/debugger.html/pull/2062 -[pr-5]:https://github.com/devtools-html/debugger.html/pull/2047 -[pr-6]:https://github.com/devtools-html/debugger.html/pull/2064 -[pr-7]:https://github.com/devtools-html/debugger.html/pull/2074 -[pr-8]:https://github.com/devtools-html/debugger.html/pull/2073 -[pr-9]:https://github.com/devtools-html/debugger.html/pull/2071 -[pr-10]:https://github.com/devtools-html/debugger.html/pull/2069 -[pr-11]:https://github.com/devtools-html/debugger.html/pull/2067 -[pr-12]:https://github.com/devtools-html/debugger.html/pull/2043 -[pr-13]:https://github.com/devtools-html/debugger.html/pull/2068 -[pr-14]:https://github.com/devtools-html/debugger.html/pull/2086 -[pr-15]:https://github.com/devtools-html/debugger.html/pull/2111 -[pr-16]:https://github.com/devtools-html/debugger.html/pull/2095 -[pr-17]:https://github.com/devtools-html/debugger.html/pull/2110 -[pr-18]:https://github.com/devtools-html/debugger.html/pull/2089 -[pr-19]:https://github.com/devtools-html/debugger.html/pull/2088 -[pr-20]:https://github.com/devtools-html/debugger.html/pull/2099 -[pr-21]:https://github.com/devtools-html/debugger.html/pull/2119 -[pr-22]:https://github.com/devtools-html/debugger.html/pull/2026 -[pr-23]:https://github.com/devtools-html/debugger.html/pull/2087 -[pr-24]:https://github.com/devtools-html/debugger.html/pull/2092 -[pr-25]:https://github.com/devtools-html/debugger.html/pull/2114 -[pr-26]:https://github.com/devtools-html/debugger.html/pull/2063 -[pr-27]:https://github.com/devtools-html/debugger.html/pull/2121 -[pr-28]:https://github.com/devtools-html/debugger.html/pull/2118 -[pr-29]:https://github.com/devtools-html/debugger.html/pull/2090 -[pr-30]:https://github.com/devtools-html/debugger.html/pull/2139 -[pr-31]:https://github.com/devtools-html/debugger.html/pull/2138 -[pr-32]:https://github.com/devtools-html/debugger.html/pull/2129 -[pr-33]:https://github.com/devtools-html/debugger.html/pull/2133 -[pr-34]:https://github.com/devtools-html/debugger.html/pull/2136 -[pr-35]:https://github.com/devtools-html/debugger.html/pull/2128 -[pr-36]:https://github.com/devtools-html/debugger.html/pull/2142 -[pr-37]:https://github.com/devtools-html/debugger.html/pull/2145 -[pr-38]:https://github.com/devtools-html/debugger.html/pull/2147 -[pr-39]:https://github.com/devtools-html/debugger.html/pull/2168 -[pr-40]:https://github.com/devtools-html/debugger.html/pull/2153 -[pr-41]:https://github.com/devtools-html/debugger.html/pull/2152 -[pr-42]:https://github.com/devtools-html/debugger.html/pull/2140 -[pr-43]:https://github.com/devtools-html/debugger.html/pull/2155 -[pr-44]:https://github.com/devtools-html/debugger.html/pull/2166 -[pr-45]:https://github.com/devtools-html/debugger.html/pull/2150 -[pr-46]:https://github.com/devtools-html/debugger.html/pull/2183 -[pr-47]:https://github.com/devtools-html/debugger.html/pull/2181 -[pr-48]:https://github.com/devtools-html/debugger.html/pull/2188 -[pr-49]:https://github.com/devtools-html/debugger.html/pull/2179 -[pr-50]:https://github.com/devtools-html/debugger.html/pull/2189 -[pr-51]:https://github.com/devtools-html/debugger.html/pull/2146 -[pr-52]:https://github.com/devtools-html/debugger.html/pull/2170 -[pr-53]:https://github.com/devtools-html/debugger.html/pull/2176 -[pr-54]:https://github.com/devtools-html/debugger.html/pull/2174 -[pr-55]:https://github.com/devtools-html/debugger.html/pull/2162 -[pr-56]:https://github.com/devtools-html/debugger.html/pull/2212 -[pr-57]:https://github.com/devtools-html/debugger.html/pull/2187 -[pr-58]:https://github.com/devtools-html/debugger.html/pull/2216 -[pr-59]:https://github.com/devtools-html/debugger.html/pull/2202 -[pr-60]:https://github.com/devtools-html/debugger.html/pull/2198 -[pr-61]:https://github.com/devtools-html/debugger.html/pull/2191 -[pr-62]:https://github.com/devtools-html/debugger.html/pull/2201 -[pr-63]:https://github.com/devtools-html/debugger.html/pull/2200 -[pr-64]:https://github.com/devtools-html/debugger.html/pull/2197 -[pr-65]:https://github.com/devtools-html/debugger.html/pull/2210 -[pr-66]:https://github.com/devtools-html/debugger.html/pull/2182 -[pr-67]:https://github.com/devtools-html/debugger.html/pull/2209 -[pr-68]:https://github.com/devtools-html/debugger.html/pull/2190 -[pr-69]:https://github.com/devtools-html/debugger.html/pull/2192 -[pr-70]:https://github.com/devtools-html/debugger.html/pull/2211 -[pr-71]:https://github.com/devtools-html/debugger.html/pull/2194 -[@rrandom]:http://github.com/rrandom -[@arthur801031]:http://github.com/arthur801031 -[@clarkbw]:http://github.com/clarkbw -[@jasonLaster]:http://github.com/jasonLaster -[@bomsy]:http://github.com/bomsy -[@wldcordeiro]:http://github.com/wldcordeiro -[@jryans]:http://github.com/jryans -[@irfanhudda]:http://github.com/irfanhudda -[@soapdog]:http://github.com/soapdog -[@amitzur]:http://github.com/amitzur -[@juliandescottes]:http://github.com/juliandescottes -[@Garbee]:http://github.com/Garbee -[@zystvan]:http://github.com/zystvan -[@najamkhn]:http://github.com/najamkhn -[@jcreighton]:http://github.com/jcreighton -[@jbhoosreddy]:http://github.com/jbhoosreddy -[@tromey]:http://github.com/tromey -[@ryanjduffy]:http://github.com/ryanjduffy -[@sole]:http://github.com/sole -[@lasfin]:http://github.com/lasfin diff --git a/docs/updates/updates-3-14-2017.md b/docs/updates/updates-3-14-2017.md deleted file mode 100644 index 1cecd44403..0000000000 --- a/docs/updates/updates-3-14-2017.md +++ /dev/null @@ -1,173 +0,0 @@ -### March 14th - -This week we made progress on several key features: File Search and Preview. -File Search got variable search and a lot faster. Preview got support for showing `this` and made progress towards properties. - -We also migrated to Jest and got lots of polish from many nice folks! - -[@arthur801031], [@jasonLaster], [@jcreighton], [@DanUgelow], [@wldcordeiro], [@aklt], [@bomsy], [@montogeek], [@MarkPollmann], [@jbhoosreddy], [@jryans], [@ThomasCrevoisier], [@AnshulMalik], [@rrandom], [@magsout], [@clarkbw], [@amitzur], [@irfanhudda], [@ryanjduffy] - -#### UI - -There were a lot of papercut fixes this week from seven different people. -The end result is that the debugger is feeling better every day. - -I especially appreciate Mark's fix for large array buckets in RTL, which shows just how many edge cases there are in a debugger! - -Also, big thanks to Dan and Guillaume, who's first PRs make the UI feel much more solid. Dan, lined up toggle buttons and command bar buttons and Guillaume fixed the way we calculated the Editor Height to reflect the footer. - -* [Polish colors in dark theme][pr-35] - [@amitzur] -* [Make close button appear correctly upon opening the conditional panel][pr-8] - [@aklt] -* [fix for bucket range showing up backwards][pr-17] - [@MarkPollmann] -* [Increase pane toggle button size and margin][pr-3] - [@DanUgelow] -* [Fix command bar background][pr-6] - [@jasonLaster] -* [Fix typo in transition timing property value][pr-37] - [@irfanhudda] -* [fix the object inspector bug][pr-19] - [@bomsy] -* [Fixes Editor Height][pr-28] - [@magsout] - - -#### Editor - -We're continue to add support for new languages and clean up some UI interaction like context menus. - -* [add clojure syntax mode for editor (#2307)][pr-14] - [@jbhoosreddy] -* [Fix editor context menu][pr-15] - [@jasonLaster] -* [Follow up actors fix][pr-16] - [@bomsy] - - -#### File Search - -File search continues to get a lot of love. We now support variable search in addition -to function search. We also did a lot of UI and UX polish! - -* [Tweak the search bar appearance][pr-7] - [@jasonLaster] -* [Variable Search UI][pr-4] - [@wldcordeiro] -* [Cmd+f without a selection should refocus the search bar][pr-10] - [@aklt] -* [Trigger search when changing the type of symbol searched][pr-22] - [@ThomasCrevoisier] -* [Add a parser worker to the project.][pr-27] - [@wldcordeiro] -* [Improve searchbar and search performance on large files][pr-38] - [@ryanjduffy] - -#### Preview - -Preview is the other major feature that received a lot of love. We made progression previewing member expressions, which in practice is every object property like `obj.foo.bar.bazz`. We also, landed support for preview `this`, which is a special property. - -* [Begin member expressions][pr-9] - [@bomsy] -* [show `this` when it’s in scope][pr-18] - [@jcreighton] - - -#### Infrastructure - -The two big infrastructure wins this week were: - -1. switching to Jest, which will let us write unit tests for react components, gather coverage metrics, and write better tests with their mock library. -2. moving our source map worker to a separate package. This will let tools like the console and perf get source map support. I also hope other project will use it to translate bundle addresses into original adresses for instance `debugger.js#L2222` => `Editor/Searchbar.js#L12` - -* [Migrate tests to jest][pr-11] [2][pr-30] [3][pr-20] - [@montogeek] -* [Add flow to ObjectInspector.js, Rep.js, Svg.js,...][pr-0] - [@arthur801031] -* [addExpression expected string not object][pr-2] - [@jcreighton] -* [Use devtools-source-map package, remove extracted files][pr-21] - [@jryans] -* [fix console error for selectedLocation][pr-24] - [@jbhoosreddy] -* [Fix failing test on windows][pr-25] - [@rrandom] -* [Update docker image][pr-29] - [@jasonLaster] - -#### ES6 Refactoring - -We continue to chip away at converting our source code to ES6 modules and classes. Big thanks to [@AnshulMalik] who's making a lot of progress here! - -* [converted src/components/App.js to es6][pr-23] - [@AnshulMalik] -* [Refactor(ES6) src/components/Sources.js][pr-26] - [@AnshulMalik] -* [Refactor(ES6) src/components/SourcesTree.js][pr-31] - [@AnshulMalik] -* [Es module secondary panes][pr-32] - [@clarkbw] -* [convert WelcomeBox to es modules][pr-34] - [@clarkbw] - -#### Docs - -* [Update debugging-the-debugger.md][pr-13] - [@MarkPollmann] -* [#2335 : Mention the debugger examples repo on the getting setup docs][pr-33] - [@ThomasCrevoisier] - - -#### Clojure Syntax - -|Old | New| -|-----|-----| -|![old-clojure]|![new-clojure]| - -#### Editor Polish - -![editor-polish] - -#### Dark Theme Polish - -|Before|After| -|---|--| -|![new-ui]|![old-ui]| - -![](http://g.recordit.co/13KfTeqCFK.gif) - - -[old-clojure]:https://cloud.githubusercontent.com/assets/2481105/23819572/0d5333a2-05d6-11e7-8ba9-0ba5cdb89a3e.png -[new-clojure]:https://cloud.githubusercontent.com/assets/2481105/23818604/b623f2ca-05ca-11e7-8d99-12ad2f15a020.png - -[old-ui]:https://cloud.githubusercontent.com/assets/254562/23834846/7995e376-0733-11e7-8172-9fc834147eb8.png -[new-ui]:https://cloud.githubusercontent.com/assets/254562/23834847/799a1982-0733-11e7-966f-99c64c66751f.png - -[editor-polish]:https://cloud.githubusercontent.com/assets/254562/23680633/f0ad3ef6-0359-11e7-9241-96ff93ab079f.png - -[pr-0]:https://github.com/devtools-html/debugger.html/pull/2295 -[pr-1]:https://github.com/devtools-html/debugger.html/pull/2298 -[pr-2]:https://github.com/devtools-html/debugger.html/pull/2303 -[pr-3]:https://github.com/devtools-html/debugger.html/pull/2301 -[pr-4]:https://github.com/devtools-html/debugger.html/pull/2251 -[pr-5]:https://github.com/devtools-html/debugger.html/pull/2311 -[pr-6]:https://github.com/devtools-html/debugger.html/pull/2308 -[pr-7]:https://github.com/devtools-html/debugger.html/pull/2288 -[pr-8]:https://github.com/devtools-html/debugger.html/pull/2314 -[pr-9]:https://github.com/devtools-html/debugger.html/pull/2297 -[pr-10]:https://github.com/devtools-html/debugger.html/pull/2247 -[pr-11]:https://github.com/devtools-html/debugger.html/pull/2315 -[pr-12]:https://github.com/devtools-html/debugger.html/pull/2322 -[pr-13]:https://github.com/devtools-html/debugger.html/pull/2330 -[pr-14]:https://github.com/devtools-html/debugger.html/pull/2313 -[pr-15]:https://github.com/devtools-html/debugger.html/pull/2325 -[pr-16]:https://github.com/devtools-html/debugger.html/pull/2338 -[pr-17]:https://github.com/devtools-html/debugger.html/pull/2328 -[pr-18]:https://github.com/devtools-html/debugger.html/pull/2340 -[pr-19]:https://github.com/devtools-html/debugger.html/pull/2337 -[pr-20]:https://github.com/devtools-html/debugger.html/pull/2320 -[pr-21]:https://github.com/devtools-html/debugger.html/pull/2329 -[pr-22]:https://github.com/devtools-html/debugger.html/pull/2346 -[pr-23]:https://github.com/devtools-html/debugger.html/pull/2342 -[pr-24]:https://github.com/devtools-html/debugger.html/pull/2334 -[pr-25]:https://github.com/devtools-html/debugger.html/pull/2343 -[pr-26]:https://github.com/devtools-html/debugger.html/pull/2345 -[pr-27]:https://github.com/devtools-html/debugger.html/pull/2312 -[pr-28]:https://github.com/devtools-html/debugger.html/pull/2331 -[pr-29]:https://github.com/devtools-html/debugger.html/pull/2361 -[pr-30]:https://github.com/devtools-html/debugger.html/pull/2354 -[pr-31]:https://github.com/devtools-html/debugger.html/pull/2353 -[pr-32]:https://github.com/devtools-html/debugger.html/pull/2352 -[pr-33]:https://github.com/devtools-html/debugger.html/pull/2356 -[pr-34]:https://github.com/devtools-html/debugger.html/pull/2348 -[pr-35]:https://github.com/devtools-html/debugger.html/pull/2344 -[pr-36]:https://github.com/devtools-html/debugger.html/pull/2360 -[pr-37]:https://github.com/devtools-html/debugger.html/pull/2358 -[pr-38]:https://github.com/devtools-html/debugger.html/pull/2332 -[@arthur801031]:http://github.com/arthur801031 -[@jasonLaster]:http://github.com/jasonLaster -[@jcreighton]:http://github.com/jcreighton -[@DanUgelow]:http://github.com/DanUgelow -[@wldcordeiro]:http://github.com/wldcordeiro -[@aklt]:http://github.com/aklt -[@bomsy]:http://github.com/bomsy -[@montogeek]:http://github.com/montogeek -[@MarkPollmann]:http://github.com/MarkPollmann -[@jbhoosreddy]:http://github.com/jbhoosreddy -[@jryans]:http://github.com/jryans -[@ThomasCrevoisier]:http://github.com/ThomasCrevoisier -[@AnshulMalik]:http://github.com/AnshulMalik -[@rrandom]:http://github.com/rrandom -[@magsout]:http://github.com/magsout -[@clarkbw]:http://github.com/clarkbw -[@amitzur]:http://github.com/amitzur -[@irfanhudda]:http://github.com/irfanhudda -[@ryanjduffy]:http://github.com/ryanjduffy diff --git a/docs/updates/updates-3-21-2017.md b/docs/updates/updates-3-21-2017.md deleted file mode 100644 index 58688bd2a7..0000000000 --- a/docs/updates/updates-3-21-2017.md +++ /dev/null @@ -1,119 +0,0 @@ -### March 21st - -Last week we landed a couple long anticipated features: - -* persisted breakpoints - lets users close and re-open the debugger and keep the breakpoints -* previewing variables in outer scopes - lets users hover over a variable defined in an outer scope and see a popup -* prioritized hostnames - shows the debuggee hostname first in the sources tree - -Also: - -* [@bomsy] landed [prettier]! -* [@AnshulMalik] and [@ryanjduffy] are converting our codebase to ES6 classes and modules. We're half way there. -* [@sole] helped us rename "up for grabs" issues to "available" to be more international friendly! - -Thanks everyone for a great week! - -[@AnshulMalik], [@aklt], [@jasonLaster], [@ktamir], [@bomsy], [@Dalimil], [@wldcordeiro], [@ryanjduffy], [@noamshemesh], [@karenyavine], [@arthur801031], [@julienw], [@irfanhudda], [@yuliaSharabi], [@sole], [@mykmelez], [@gasolin] - -#### UI - -* [Persist expressions][pr-18] - [@bomsy] -* [Show message when there are no sources for a page (no files to debug)][pr-3] - [@ktamir] -* [remove flash of 'not available'][pr-4] - [@bomsy] -* [Show hostname first (#1374)][pr-5] - [@Dalimil] -* [Move search state to redux][pr-6] - [@wldcordeiro] -* [Overlap breakpoints list scrollbar (#1997) #goodnessSquad][pr-8] - [@noamshemesh] -* [localized keyshortcuts - #goodnessSquad (#2382)][pr-9] - [@karenyavine] -* [Tweak close-btn styles][pr-13] - [@irfanhudda] -* [Css fixes][pr-16] - [@yuliaSharabi] -* [Bring editor preview to foreground][pr-21] - [@AnshulMalik] - - -#### Bug Fixes - -* [accommodate objects without a prototype (fixes #2407)][pr-19] - [@mykmelez] -* [Fix close function in ProjectSearch][pr-20] - [@irfanhudda] - -#### Breakpoints - -* [persist across sessions][pr-10] - [@arthur801031] - -#### Preview - -* [Preview variables from outer scopes][pr-11] - [@julienw] - -#### ES6 Refactor - -* [Refactor(ES6) components/Editor/Tabs.js][pr-0] - [@AnshulMalik] -* [Convert SecondaryPanes to ES6 classes][pr-7] - [@ryanjduffy] -* [Refactor(ES6) components/shared/Button/*][pr-14] - [@AnshulMalik] - -#### Infrastructure - -* [remove executable bit from files not needing it][pr-1] - [@aklt] -* [use uptodate docker][pr-2] - [@jasonLaster] -* [Add prettier][pr-12] - [@bomsy] -* [Jest cleanup][pr-15] - [@jasonLaster] -* [lint fix for webpack.config.js][pr-22] - [@gasolin] - -#### Docs - -* [Rename `up for grabs` with `available` ][pr-17] - [@sole] - -|Source Search|Breakpoint pane| -|----|----| -|![source-search-before](https://cloud.githubusercontent.com/assets/1755089/24050410/bb79d714-0b54-11e7-9356-ed297222d1c0.png)|![breakpoint-before](https://cloud.githubusercontent.com/assets/1755089/24050416/c07eedee-0b54-11e7-91e9-b199c61a0659.png) -|![source-search-after](https://cloud.githubusercontent.com/assets/1755089/24050433/c96d008a-0b54-11e7-84aa-429d06e5736c.png)|![breakpoint-after](https://cloud.githubusercontent.com/assets/1755089/24050440/ce5fcdde-0b54-11e7-8a95-dbe21b68ddf2.png)| - - -| | | | -|----|----|----| -|![popup-2]|![popup-1]|![popup-3]| - -[popup-2]:https://cloud.githubusercontent.com/assets/7821757/24079705/37d70880-0cb4-11e7-9cdf-5a4e686d80ce.jpg -[popup-1]:https://cloud.githubusercontent.com/assets/7821757/24079709/3d9eb22c-0cb4-11e7-8321-38703f5616f0.jpg -[popup-3]:https://cloud.githubusercontent.com/assets/7821757/24079715/50ef3b94-0cb4-11e7-923b-76e379d51bef.jpg - - -[pr-0]:https://github.com/devtools-html/debugger.html/pull/2376 -[pr-1]:https://github.com/devtools-html/debugger.html/pull/2377 -[pr-2]:https://github.com/devtools-html/debugger.html/pull/2375 -[pr-3]:https://github.com/devtools-html/debugger.html/pull/2385 -[pr-4]:https://github.com/devtools-html/debugger.html/pull/2374 -[pr-5]:https://github.com/devtools-html/debugger.html/pull/2316 -[pr-6]:https://github.com/devtools-html/debugger.html/pull/2365 -[pr-7]:https://github.com/devtools-html/debugger.html/pull/2391 -[pr-8]:https://github.com/devtools-html/debugger.html/pull/2383 -[pr-9]:https://github.com/devtools-html/debugger.html/pull/2384 -[pr-10]:https://github.com/devtools-html/debugger.html/pull/2318 -[pr-11]:https://github.com/devtools-html/debugger.html/pull/2271 -[pr-12]:https://github.com/devtools-html/debugger.html/pull/2389 -[pr-13]:https://github.com/devtools-html/debugger.html/pull/2403 -[pr-14]:https://github.com/devtools-html/debugger.html/pull/2380 -[pr-15]:https://github.com/devtools-html/debugger.html/pull/2401 -[pr-16]:https://github.com/devtools-html/debugger.html/pull/2386 -[pr-17]:https://github.com/devtools-html/debugger.html/pull/2400 -[pr-18]:https://github.com/devtools-html/debugger.html/pull/2366 -[pr-19]:https://github.com/devtools-html/debugger.html/pull/2408 -[pr-20]:https://github.com/devtools-html/debugger.html/pull/2409 -[pr-21]:https://github.com/devtools-html/debugger.html/pull/2410 -[pr-22]:https://github.com/devtools-html/debugger.html/pull/2415 -[@AnshulMalik]:http://github.com/AnshulMalik -[@aklt]:http://github.com/aklt -[@jasonLaster]:http://github.com/jasonLaster -[@ktamir]:http://github.com/ktamir -[@bomsy]:http://github.com/bomsy -[@Dalimil]:http://github.com/Dalimil -[@wldcordeiro]:http://github.com/wldcordeiro -[@ryanjduffy]:http://github.com/ryanjduffy -[@noamshemesh]:http://github.com/noamshemesh -[@karenyavine]:http://github.com/karenyavine -[@arthur801031]:http://github.com/arthur801031 -[@julienw]:http://github.com/julienw -[@irfanhudda]:http://github.com/irfanhudda -[@yuliaSharabi]:http://github.com/yuliaSharabi -[@sole]:http://github.com/sole -[@mykmelez]:http://github.com/mykmelez -[@gasolin]:http://github.com/gasolin -[prettier]:https://github.com/jlongster/prettier diff --git a/docs/updates/updates-3-28-2017.md b/docs/updates/updates-3-28-2017.md deleted file mode 100644 index ad377e8731..0000000000 --- a/docs/updates/updates-3-28-2017.md +++ /dev/null @@ -1,82 +0,0 @@ -### March 28th - -This week we added some nice polish to the UI and function search. - -We also landed Jest [code coverage], which shows us where we need to add additional unit tests. - -Special thanks to: - -* [Ruturaj][@ruturajv] who helped us improve function search by infering function names from the variables they're assigned to. -* [Sam][@samjwalker] who fixed a UI nit where the debugger would highlight the previously selected line on open. - -and everyone else who helped this week! - -[@wildskyf], [@ruturajv], [@clarkbw], [@samjwalker], [@abhishekg785], [@jacobjzhang], [@arthur801031], [@AnshulMalik], [@jasonLaster] - -### UI - -* [Re-add accordion focus inner style][pr-0] - [@jasonLaster] -* [Stop the previously highlighted line flashing after refreshing the debugger.][pr-6] - [@samjwalker] -* [Add a separate highlight animation for dark theme][pr-15] - [@jacobjzhang] - -### Function Search - -* [Name functions based on their var][pr-2] - [@ruturajv] -* [Name Functions defined via an expression][pr-13] - [@ruturajv] - -```js -function incrementCounter(counter) { - return counter++; -} - -const sum = (a, b) => a + b; -``` - -### Infrastructure -* [Fix table layout for markdown on GitHub][pr-1] - [@wildskyf] -* [Jest coverage][pr-3] - [@clarkbw] -* [[prettier] switch es5 commas][pr-4] - [@jasonLaster] -* [[docs] add table markdown linting][pr-5] - [@jasonLaster] -* [[tests] Fix requiring workers in jest][pr-7] - [@jasonLaster] -* [Fix duplicate locale][pr-9] - [@jasonLaster] -* [broken table fixed][pr-10] - [@abhishekg785] -* [Bump source-map to 2.2.4][pr-12] - [@jasonLaster] -* [3rd party docs][pr-16] - [@jasonLaster] -* [Upgrade to flow `0.41`][pr-17] - [@arthur801031] -* [Refactor(ES6) components/shared/Dropdown.js][pr-18] - [@AnshulMalik] - -![](http://g.recordit.co/KEEn6tvCCX.gif) - -![cov-screen] - -[cov-screen]:https://cloud.githubusercontent.com/assets/254562/24416335/700b5bde-13b2-11e7-9380-aba9ab13d71b.png - -[pr-0]:https://github.com/devtools-html/debugger.html/pull/2420 -[pr-1]:https://github.com/devtools-html/debugger.html/pull/2422 -[pr-2]:https://github.com/devtools-html/debugger.html/pull/2404 -[pr-3]:https://github.com/devtools-html/debugger.html/pull/2417 -[pr-4]:https://github.com/devtools-html/debugger.html/pull/2432 -[pr-5]:https://github.com/devtools-html/debugger.html/pull/2423 -[pr-6]:https://github.com/devtools-html/debugger.html/pull/2430 -[pr-7]:https://github.com/devtools-html/debugger.html/pull/2431 -[pr-8]:https://github.com/devtools-html/debugger.html/pull/2369 -[pr-9]:https://github.com/devtools-html/debugger.html/pull/2445 -[pr-10]:https://github.com/devtools-html/debugger.html/pull/2456 -[pr-11]:https://github.com/devtools-html/debugger.html/pull/2454 -[pr-12]:https://github.com/devtools-html/debugger.html/pull/2459 -[pr-13]:https://github.com/devtools-html/debugger.html/pull/2452 -[pr-14]:https://github.com/devtools-html/debugger.html/pull/2449 -[pr-15]:https://github.com/devtools-html/debugger.html/pull/2466 -[pr-16]:https://github.com/devtools-html/debugger.html/pull/2457 -[pr-17]:https://github.com/devtools-html/debugger.html/pull/2462 -[pr-18]:https://github.com/devtools-html/debugger.html/pull/2464 -[@jasonLaster]:http://github.com/jasonLaster -[@wildskyf]:http://github.com/wildskyf -[@ruturajv]:http://github.com/ruturajv -[@clarkbw]:http://github.com/clarkbw -[@samjwalker]:http://github.com/samjwalker -[@abhishekg785]:http://github.com/abhishekg785 -[@jacobjzhang]:http://github.com/jacobjzhang -[@arthur801031]:http://github.com/arthur801031 -[@AnshulMalik]:http://github.com/AnshulMalik -[code coverage]:https://codecov.io/gh/devtools-html/debugger.html diff --git a/docs/updates/updates-3-7-2017.md b/docs/updates/updates-3-7-2017.md deleted file mode 100644 index c456829705..0000000000 --- a/docs/updates/updates-3-7-2017.md +++ /dev/null @@ -1,125 +0,0 @@ -### March 7th - -We released the new Debugger this week! We also added lots of polish to the UI to improve the look and feel. - -Thanks to everyone who helped make the release possible and chipped in on last minute polish -[@wldcordeiro], [@julienw], [@ThomasCrevoisier], [@amitzur], [@jcreighton], [@zystvan], [@juliandescottes], [@tromey], [@AlanCezarAraujo], [@irfanhudda], [@rrandom] - -#### UI - -We focused mostly on dark theme, vertical mode, and the new search bar and preview. -Special shoutout to [@amitzur] who landed a great editor popup for previewing variables. - -* [Fix border stacking for the result list in function search.][pr-2] - [@wldcordeiro] -* [Fix close button display for watch expression][pr-6] - [@ThomasCrevoisier] -* [Polish dark theme ui][pr-9] - [@jcreighton] -* [Fix Tab Dropdown in RTL Mode][pr-10] - [@zystvan] -* [Polish overlay clearing][pr-13] - [@wldcordeiro] -* [Add variables.css to debugger.html and remove references to undefined css var][pr-15] - [@juliandescottes] -* [Change the breakpoint used to switch between horizontal and vertical …][pr-16] - [@julienw] -* [Fixed max-height in Result List][pr-19] - [@AlanCezarAraujo] -* [Quote property names when required][pr-17] - [@tromey] -* [Center tab close button and increase its size][pr-21] - [@irfanhudda] -* [Popover tip and position][pr-8] - [@amitzur] - -#### Function Search - -Function search took a big jump this week. It now supports searching for ES6 shorthand functions, class methods, and a whole assortment of function types making it the best function search available. Expect more wins in this department as babel is really great for this kind of work. - -* [Add parsing support for ES6 object method shorthand and class methods.][pr-1] - [@wldcordeiro] -* [Function Search wins][pr-7] - [@jasonLaster] -* [Rework function parser helpers into symbol parser helpers that parse functions, variables, and classes][pr-18] - [@wldcordeiro] - -#### Bugs - -We're continuing to fix the embarrassing bugs. This pause on exception bug was a long standing bug where the pause button would stay highlighted when the debugger opened even if the debugger was not going to pause on exceptions. - -* [Persist Pause On Exceptions][pr-0] - [@jasonLaster] - -#### Infrastructure - -The most frustrating aspect of last week was integrating with mozilla-central and getting the tests to -pass consistently on different platforms in debug mode. We disabled `visible` checks and the new web test runner tests, which were causing some intermittents. - -* [Extract getScopes + Refactor returnvalue tests][pr-3] - [@jasonLaster] -* [Enable features + style tweaks][pr-4] - [@jasonLaster] -* [Fix the copy-assets script to support an absolute path to m-c, and su…][pr-5] - [@julienw] -* [disable all new debugger tests on debug platforms][pr-12] - [@juliandescottes] -* [revert wtr conversion][pr-14] - [@jasonLaster] -* [Fix linting table][pr-20] - [@wldcordeiro] -* [Remove unused expressions field][pr-22] - [@jasonLaster] -* [remove isVisible checks][pr-23] - [@jasonLaster] -* [Hardcoded string to contants in actions/sources][pr-24] - [@rrandom] - - - -|Preview Popup| -|----------------| -|![gif-1]| - -|Dark Theme Updates| -|----| -|![png-1]| -|![png-2]| - - -#### ES6 Shorthand & Class Methods -```js - -// ES6 shorthand -const TodoView = Backbone.View.extend({ - doThing() { - console.log('hi'); - }, -}); - -// classes -class Test { - constructor() { - this.foo = "foo" - } -} -``` - - -[gif-1]:https://cloud.githubusercontent.com/assets/394320/23443190/c2a9ada6-fe35-11e6-9b01-563ec6e335f3.gif -[png-1]:https://cloud.githubusercontent.com/assets/5232812/23445290/5e6314ae-fe08-11e6-8a21-e6875881ecc4.png -[png-2]:https://cloud.githubusercontent.com/assets/5232812/23445256/3266940c-fe08-11e6-8b55-e2cf293838f7.png - -[pr-0]:https://github.com/devtools-html/debugger.html/pull/2225 -[pr-1]:https://github.com/devtools-html/debugger.html/pull/2236 -[pr-2]:https://github.com/devtools-html/debugger.html/pull/2223 -[pr-3]:https://github.com/devtools-html/debugger.html/pull/2217 -[pr-4]:https://github.com/devtools-html/debugger.html/pull/2243 -[pr-5]:https://github.com/devtools-html/debugger.html/pull/2244 -[pr-6]:https://github.com/devtools-html/debugger.html/pull/2237 -[pr-7]:https://github.com/devtools-html/debugger.html/pull/2234 -[pr-8]:https://github.com/devtools-html/debugger.html/pull/2224 -[pr-9]:https://github.com/devtools-html/debugger.html/pull/2229 -[pr-10]:https://github.com/devtools-html/debugger.html/pull/2222 -[pr-11]:https://github.com/devtools-html/debugger.html/pull/2261 -[pr-12]:https://github.com/devtools-html/debugger.html/pull/2254 -[pr-13]:https://github.com/devtools-html/debugger.html/pull/2252 -[pr-14]:https://github.com/devtools-html/debugger.html/pull/2259 -[pr-15]:https://github.com/devtools-html/debugger.html/pull/2253 -[pr-16]:https://github.com/devtools-html/debugger.html/pull/2245 -[pr-17]:https://github.com/devtools-html/debugger.html/pull/2255 -[pr-18]:https://github.com/devtools-html/debugger.html/pull/2250 -[pr-19]:https://github.com/devtools-html/debugger.html/pull/2270 -[pr-20]:https://github.com/devtools-html/debugger.html/pull/2273 -[pr-21]:https://github.com/devtools-html/debugger.html/pull/2272 -[pr-22]:https://github.com/devtools-html/debugger.html/pull/2275 -[pr-23]:https://github.com/devtools-html/debugger.html/pull/2276 -[pr-24]:https://github.com/devtools-html/debugger.html/pull/2286 -[@jasonLaster]:http://github.com/jasonLaster -[@wldcordeiro]:http://github.com/wldcordeiro -[@julienw]:http://github.com/julienw -[@ThomasCrevoisier]:http://github.com/ThomasCrevoisier -[@amitzur]:http://github.com/amitzur -[@jcreighton]:http://github.com/jcreighton -[@zystvan]:http://github.com/zystvan -[@juliandescottes]:http://github.com/juliandescottes -[@tromey]:http://github.com/tromey -[@AlanCezarAraujo]:http://github.com/AlanCezarAraujo -[@irfanhudda]:http://github.com/irfanhudda -[@rrandom]:http://github.com/rrandom diff --git a/docs/updates/updates-4-11-2017.md b/docs/updates/updates-4-11-2017.md deleted file mode 100644 index 673b156bd9..0000000000 --- a/docs/updates/updates-4-11-2017.md +++ /dev/null @@ -1,135 +0,0 @@ -### April 11th - -We landed some really great previewing features this week. - -* **Bucket Window Properties** - We're grouping default properties so that user properties are on top! [@bomsy] -* **Display popover intelligently** - We're showing the preview popup in a position where you'll always be able to see it [@AnshulMalik] -* **Simplify function names** - Previously we had highly specific anonymous function names `App.TodoView { - it("should call handleClick function", () => { - const onClick = jest.genMockFunction(); - const wrapper = shallow(new CloseButton({ handleClick: onClick })); - - wrapper.simulate("click"); - expect(onClick).toBeCalled(); - }); - - it("should render a button", () => { - const onClick = jest.genMockFunction(); - const buttonClass = "class"; - const wrapper = shallow( - new CloseButton({ - handleClick: onClick, - buttonClass: buttonClass, - tooltip: "Close button" - }) - ); - - expect(wrapper).toMatchSnapshot(); - }); -}); -``` - - -[gap-before]: https://cloud.githubusercontent.com/assets/2481105/24934571/57da2a70-1eea-11e7-86ba-f71f53df37fb.png -[gap-after]: https://cloud.githubusercontent.com/assets/2481105/24934569/51875a9e-1eea-11e7-854e-232802f60c3d.png -[window-after]: https://cloud.githubusercontent.com/assets/792924/24918230/9867b87c-1ed7-11e7-9167-36b127ff95ea.png -[window-before]: https://cloud.githubusercontent.com/assets/792924/24918083/fe5ceac2-1ed6-11e7-83fa-6d6ca1f12ad3.png - -[post]: https://devtools-html.github.io/debugger.html/docs/updates/call-stack-4-10-2017.html -[pr-0]:https://github.com/devtools-html/debugger.html/pull/2593 -[pr-1]:https://github.com/devtools-html/debugger.html/pull/2623 -[pr-2]:https://github.com/devtools-html/debugger.html/pull/2613 -[pr-3]:https://github.com/devtools-html/debugger.html/pull/2617 -[pr-4]:https://github.com/devtools-html/debugger.html/pull/2622 -[pr-5]:https://github.com/devtools-html/debugger.html/pull/2607 -[pr-6]:https://github.com/devtools-html/debugger.html/pull/2625 -[pr-7]:https://github.com/devtools-html/debugger.html/pull/2620 -[pr-8]:https://github.com/devtools-html/debugger.html/pull/2621 -[pr-9]:https://github.com/devtools-html/debugger.html/pull/2627 -[pr-10]:https://github.com/devtools-html/debugger.html/pull/2441 -[pr-11]:https://github.com/devtools-html/debugger.html/pull/2628 -[pr-12]:https://github.com/devtools-html/debugger.html/pull/2596 -[pr-13]:https://github.com/devtools-html/debugger.html/pull/2633 -[pr-14]:https://github.com/devtools-html/debugger.html/pull/2635 -[pr-15]:https://github.com/devtools-html/debugger.html/pull/2640 -[pr-16]:https://github.com/devtools-html/debugger.html/pull/2642 -[pr-17]:https://github.com/devtools-html/debugger.html/pull/2639 -[pr-18]:https://github.com/devtools-html/debugger.html/pull/2629 -[pr-19]:https://github.com/devtools-html/debugger.html/pull/2648 -[pr-20]:https://github.com/devtools-html/debugger.html/pull/2624 -[pr-21]:https://github.com/devtools-html/debugger.html/pull/2649 -[pr-22]:https://github.com/devtools-html/debugger.html/pull/2661 -[pr-23]:https://github.com/devtools-html/debugger.html/pull/2655 -[pr-24]:https://github.com/devtools-html/debugger.html/pull/2657 -[pr-25]:https://github.com/devtools-html/debugger.html/pull/2664 -[pr-26]:https://github.com/devtools-html/debugger.html/pull/2665 -[@jasonLaster]:http://github.com/jasonLaster -[@bomsy]:http://github.com/bomsy -[@mquander]:http://github.com/mquander -[@AnshulMalik]:http://github.com/AnshulMalik -[@arthur801031]:http://github.com/arthur801031 -[@samjwalker]:http://github.com/samjwalker -[@jbhoosreddy]:http://github.com/jbhoosreddy -[@tommai78101]:http://github.com/tommai78101 -[@irfanhudda]:http://github.com/irfanhudda -[@nchevobbe]:http://github.com/nchevobbe -[@AlfonsoML]:http://github.com/AlfonsoML diff --git a/docs/updates/updates-4-25-2017.md b/docs/updates/updates-4-25-2017.md deleted file mode 100644 index 65f33f4918..0000000000 --- a/docs/updates/updates-4-25-2017.md +++ /dev/null @@ -1,102 +0,0 @@ -### April 25th - -* We started working on proper code folding [@irfanhudda] [@AnshulMalik] -* [@arthur801031] landed support for getter values - -Big thanks to everyone who helped out this week! [@irfanhudda], [@arthur801031], [@tommai78101], [@MFry], [@wldcordeiro], [@PunitGr], [@juliandescottes], [@bomsy], [@shlomif] - -#### UI - -* [[SearchBar] Check before scrolling to result in result-list][pr-3] - [@irfanhudda] -* [Adding missing e.preventDefault()][pr-5] - [@tommai78101] -* [CodeFolding - hide fold markers unless hovering on the gutter][pr-8] - [@irfanhudda] -* [Fix issue with multiple scopes having the same path][pr-6] - [@jasonLaster] -* [Fix call stack logos styling][pr-16] - [@PunitGr] -* [Show the exception message if one exists][pr-19] - [@bomsy] -* [Fix previewing scope params][pr-20] - [@jasonLaster] -* [Move symbol search state to redux.][pr-14] - [@wldcordeiro] - -#### Preview - -* [Address some scope inconsistencies][pr-9] - [@jasonLaster] -* [Fix previewing this][pr-11] - [@jasonLaster] -* [Fix Location reps property][pr-4] - [@arthur801031] - -#### Testing - -* [Add tests for breakpoint actions][pr-21] - [@bomsy] -* [Test Tabs with reloading][pr-25] - [@jasonLaster] - -#### Infrastructure - -* [Remove duplicate prop][pr-0] - [@jasonLaster] -* [Upgrade prettier][pr-2] - [@jasonLaster] -* [Synchronize changes from mozilla-central][pr-17] - [@juliandescottes] -* [noParse to ignore mocha][pr-22] - [@juliandescottes] -* [Update the yarn version in circle.yml.][pr-26] - [@shlomif] - -#### ES6 - -* [Convert constants to es module][pr-23] - [@irfanhudda] - -#### Docs - -* [Docs: Changed git clone to use https][pr-13] - [@MFry] -* [add dt docs][pr-24] - [@jasonLaster] - - -##### Getter Values - -![getter] - -##### Code Folding - -![folding] - -#### Call Stack Logos - -![logos] - -[getter]: https://cloud.githubusercontent.com/assets/4562118/25111578/5801f436-241e-11e7-810c-a23dfe8e2b47.png -[folding]: https://cloud.githubusercontent.com/assets/1755089/24874000/b2d84182-1e40-11e7-8e9a-dc361c76b324.gif -[logos]: https://cloud.githubusercontent.com/assets/9111111/25224863/5d6c6e40-25dd-11e7-9305-e0002cd0c565.png - -[pr-0]:https://github.com/devtools-html/debugger.html/pull/2666 -[pr-1]:https://github.com/devtools-html/debugger.html/pull/2675 -[pr-2]:https://github.com/devtools-html/debugger.html/pull/2681 -[pr-3]:https://github.com/devtools-html/debugger.html/pull/2670 -[pr-4]:https://github.com/devtools-html/debugger.html/pull/2674 -[pr-5]:https://github.com/devtools-html/debugger.html/pull/2673 -[pr-6]:https://github.com/devtools-html/debugger.html/pull/2695 -[pr-7]:https://github.com/devtools-html/debugger.html/pull/2682 -[pr-8]:https://github.com/devtools-html/debugger.html/pull/2610 -[pr-9]:https://github.com/devtools-html/debugger.html/pull/2672 -[pr-10]:https://github.com/devtools-html/debugger.html/pull/2582 -[pr-11]:https://github.com/devtools-html/debugger.html/pull/2697 -[pr-12]:https://github.com/devtools-html/debugger.html/pull/2696 -[pr-13]:https://github.com/devtools-html/debugger.html/pull/2693 -[pr-14]:https://github.com/devtools-html/debugger.html/pull/2705 -[pr-15]:https://github.com/devtools-html/debugger.html/pull/2706 -[pr-16]:https://github.com/devtools-html/debugger.html/pull/2698 -[pr-17]:https://github.com/devtools-html/debugger.html/pull/2699 -[pr-18]:https://github.com/devtools-html/debugger.html/pull/2709 -[pr-19]:https://github.com/devtools-html/debugger.html/pull/2684 -[pr-20]:https://github.com/devtools-html/debugger.html/pull/2701 -[pr-21]:https://github.com/devtools-html/debugger.html/pull/2714 -[pr-22]:https://github.com/devtools-html/debugger.html/pull/2724 -[pr-23]:https://github.com/devtools-html/debugger.html/pull/2722 -[pr-24]:https://github.com/devtools-html/debugger.html/pull/2720 -[pr-25]:https://github.com/devtools-html/debugger.html/pull/2719 -[pr-26]:https://github.com/devtools-html/debugger.html/pull/2723 - -[@jasonLaster]:http://github.com/jasonLaster -[@irfanhudda]:http://github.com/irfanhudda -[@arthur801031]:http://github.com/arthur801031 -[@tommai78101]:http://github.com/tommai78101 -[@MFry]:http://github.com/MFry -[@wldcordeiro]:http://github.com/wldcordeiro -[@PunitGr]:http://github.com/PunitGr -[@juliandescottes]:http://github.com/juliandescottes -[@bomsy]:http://github.com/bomsy -[@shlomif]:http://github.com/shlomif -[@AnshulMalik]:http://github.com/AnshulMalik diff --git a/docs/updates/updates-4-4-2017.md b/docs/updates/updates-4-4-2017.md deleted file mode 100644 index f5ddae8bd4..0000000000 --- a/docs/updates/updates-4-4-2017.md +++ /dev/null @@ -1,148 +0,0 @@ -### April 4th - -This week we landed some nice features and had help from new contributors. - -* **Blackboxing** - we landed an MVP version this week! -* **ES6** - we got lots of great help converting our code to ES6 modules and classes! Special shout out to [@peterschussheim], [@Erica42], and [@wldcordeiro] for their help! -* **Preview** - [@ryanjduffy] helped make preview inert on out of scope code -* **client** - we moved the firefox and chrome API back into the debugger! - -[@jasonLaster], [@irfanhudda], [@Erica42], [@wldcordeiro], [@clarkbw], [@jeffpape], [@willr], [@jacobjzhang], [@NikoLewis], [@jryans], [@bomsy], [@ruturajv], [@DanUgelow], [@peterschussheim], [@ryanjduffy], [@kristoforusrp], [@AlanCezarAraujo], [@gabrielluong] - -#### UI - -* [Polish updateSearchResults][pr-12] - [@jasonLaster] -* [Hiding Expressions][pr-17] - [@bomsy] -* [Merge Class search into variables list][pr-20] - [@ruturajv] -* [SearchBar - Fix cursor for disabled search modifier][pr-21] - [@irfanhudda] -* [Add search modifier tooltips][pr-30] - [@DanUgelow] -* [Fix vertical footer][pr-34] - [@jasonLaster] -* [FunctionSearch - Not updating selected item on click][pr-38] - [@AlanCezarAraujo] -* [Fix NaN bug when toggling function search][pr-13] - [@jacobjzhang] - -#### Blackboxing - -We built an MVP blackboxing solution this week that supports black boxing sources and hiding frames from that file. Some of the UI highlights are: - -* improved blackbox badge in the footer -* the editor UI shows the source with the source breakpoints hidden -* the editor context menus only shows "unblackbox sources" - -[(WIP) Add Blackbox][pr-41] - [@jasonLaster] - -#### Source Outline - -Gabriel started working on a source outline view, which will show a sources functions in the left sidebar. We hope this will help users find the function they want to debug a little faster. - -[Add initial source outline][pr-42] - [@gabrielluong] - -#### Preview - -Have you ever noticed that you could hover over random variables while paused and see a popup preview? [Ryan][@ryanjduffy] added a fantastic feature to preview to first check if a variable was in the paused scope before showing the preview popup. - -[Prevent previewing tokens out of scope of the selected frame][pr-33] - [@ryanjduffy] - -#### Infrastructure -* [remove the extra husky dependency][pr-14] - [@clarkbw] -* [Update Gecko in CI Docker image to include devtools-source-map v0.3.0][pr-16] - [@jryans] -* [Fix worker test failures][pr-18] - [@jasonLaster] -* [Upgrade yarn and docs][pr-19] - [@clarkbw] -* [Use source map service from toolbox in Firefox][pr-22] - [@jryans] -* [Fix source maps][pr-24] - [@jasonLaster] -* [Add pull request documentation link][pr-28] - [@DanUgelow] -* [Tiny text fix][pr-39] - [@bomsy] -* [Use Devtools Splitter][pr-40] - [@jasonLaster] - - -#### Cleanup - -* [Refactor editor][pr-6] - [@jasonLaster] -* [(WIP) Add client to debugger][pr-11] - [@jasonLaster] -* [improve readibility of readme][pr-15] - [@NikoLewis] -* [Fix up Docker mapping to use latest files again][pr-25] - [@jryans] -* [Standardize prettier options][pr-26] - [@jryans] -* [Fix mochitests - add testing vars][pr-27] - [@jasonLaster] - -#### Prettier improvements - -* [Fix the tests][pr-29] - [@jasonLaster] -* [tweak script][pr-36] - [@jasonLaster] -* [Fix arguments][pr-37] - [@jasonLaster] - -#### ES6 - -* [ResultList and Accordion][pr-1] - [@irfanhudda] -* [Expressions][pr-2] - [@Erica42] -* [Convert actions][pr-3] - [@wldcordeiro] -* [Shared/menu][pr-4] - [@clarkbw] -* [Fix ES6 actions imports][pr-5] - [@wldcordeiro] -* [updated file to es module][pr-7] - [@jeffpape] -* [Rep][pr-8] - [@willr] -* [Event listeners reducer][pr-9] - [@Erica42] -* [SearchInput][pr-31] - [@irfanhudda] -* [Editor/Breakpoint][pr-32] - [@peterschussheim] -* [Footer.js][pr-35] - [@kristoforusrp] -* [followup tweaks][pr-23] - [@jasonLaster] - - -[pr-0]:https://github.com/devtools-html/debugger.html/pull/2479 -[pr-1]:https://github.com/devtools-html/debugger.html/pull/2477 -[pr-2]:https://github.com/devtools-html/debugger.html/pull/2482 -[pr-3]:https://github.com/devtools-html/debugger.html/pull/2481 -[pr-4]:https://github.com/devtools-html/debugger.html/pull/2469 -[pr-5]:https://github.com/devtools-html/debugger.html/pull/2483 -[pr-6]:https://github.com/devtools-html/debugger.html/pull/2428 -[pr-7]:https://github.com/devtools-html/debugger.html/pull/2472 -[pr-8]:https://github.com/devtools-html/debugger.html/pull/2474 -[pr-9]:https://github.com/devtools-html/debugger.html/pull/2473 -[pr-10]:https://github.com/devtools-html/debugger.html/pull/2480 -[pr-11]:https://github.com/devtools-html/debugger.html/pull/2478 -[pr-12]:https://github.com/devtools-html/debugger.html/pull/2488 -[pr-13]:https://github.com/devtools-html/debugger.html/pull/2484 -[pr-14]:https://github.com/devtools-html/debugger.html/pull/2502 -[pr-15]:https://github.com/devtools-html/debugger.html/pull/2494 -[pr-16]:https://github.com/devtools-html/debugger.html/pull/2495 -[pr-17]:https://github.com/devtools-html/debugger.html/pull/2453 -[pr-18]:https://github.com/devtools-html/debugger.html/pull/2504 -[pr-19]:https://github.com/devtools-html/debugger.html/pull/2501 -[pr-20]:https://github.com/devtools-html/debugger.html/pull/2486 -[pr-21]:https://github.com/devtools-html/debugger.html/pull/2461 -[pr-22]:https://github.com/devtools-html/debugger.html/pull/2506 -[pr-23]:https://github.com/devtools-html/debugger.html/pull/2510 -[pr-24]:https://github.com/devtools-html/debugger.html/pull/2515 -[pr-25]:https://github.com/devtools-html/debugger.html/pull/2507 -[pr-26]:https://github.com/devtools-html/debugger.html/pull/2512 -[pr-27]:https://github.com/devtools-html/debugger.html/pull/2508 -[pr-28]:https://github.com/devtools-html/debugger.html/pull/2517 -[pr-29]:https://github.com/devtools-html/debugger.html/pull/2505 -[pr-30]:https://github.com/devtools-html/debugger.html/pull/2516 -[pr-31]:https://github.com/devtools-html/debugger.html/pull/2522 -[pr-32]:https://github.com/devtools-html/debugger.html/pull/2520 -[pr-33]:https://github.com/devtools-html/debugger.html/pull/2530 -[pr-34]:https://github.com/devtools-html/debugger.html/pull/2535 -[pr-35]:https://github.com/devtools-html/debugger.html/pull/2519 -[pr-36]:https://github.com/devtools-html/debugger.html/pull/2531 -[pr-37]:https://github.com/devtools-html/debugger.html/pull/2541 -[pr-38]:https://github.com/devtools-html/debugger.html/pull/2524 -[pr-39]:https://github.com/devtools-html/debugger.html/pull/2538 -[pr-40]:https://github.com/devtools-html/debugger.html/pull/2521 -[pr-41]:https://github.com/devtools-html/debugger.html/pull/2523 -[pr-42]:https://github.com/devtools-html/debugger.html/pull/2544 -[@jasonLaster]:http://github.com/jasonLaster -[@irfanhudda]:http://github.com/irfanhudda -[@Erica42]:http://github.com/Erica42 -[@wldcordeiro]:http://github.com/wldcordeiro -[@clarkbw]:http://github.com/clarkbw -[@jeffpape]:http://github.com/jeffpape -[@willr]:http://github.com/willr -[@jacobjzhang]:http://github.com/jacobjzhang -[@NikoLewis]:http://github.com/NikoLewis -[@jryans]:http://github.com/jryans -[@bomsy]:http://github.com/bomsy -[@ruturajv]:http://github.com/ruturajv -[@DanUgelow]:http://github.com/DanUgelow -[@peterschussheim]:http://github.com/peterschussheim -[@ryanjduffy]:http://github.com/ryanjduffy -[@kristoforusrp]:http://github.com/kristoforusrp -[@AlanCezarAraujo]:http://github.com/AlanCezarAraujo -[@gabrielluong]:http://github.com/gabrielluong diff --git a/docs/updates/updates-5-16-2017.md b/docs/updates/updates-5-16-2017.md deleted file mode 100644 index 7939e55066..0000000000 --- a/docs/updates/updates-5-16-2017.md +++ /dev/null @@ -1,139 +0,0 @@ -### May 16th Update - -Here are some highlights from the week: - -* [@jcreighton] added function highlighting -* [@diessica] polished the tabs UI -* [@Sequoia] added Node libraries for framework frames -* [@peterschussheim] polished our Preview popup -* [@bomsy] fixed a crazy tab bug -* [@jasonLaster] updated the pause line styling :) -* [@ohana54] and [@roieu] are chipping away at column breakpoints! -* [@codehag] styled functions in outline view! -* [@tromey] added license checking for our dependencies - -Also, a warm welcome to [Yulia][@codehag] who joined the team last week. -She's already helped us up our testing game and wrangle saved breakpoints! :wave: - -And thanks to everyone who contributed last week [@diessica], [@galtalmor], [@codehag], [@bomsy], [@ohana54], -[@tromey], [@sharathnarayanph], [@Sequoia], [@wooorm], [@karthikJagadeesh], [@peterschussheim], [@roieu]! - - -#### UI - -This week we focused on tidying up the look and feel of the debugger. -One of the highlights was the Tabs polish from [@diessica]. As a side note, it was great to see [percy] pick up on all of the UI tweaks and help inform the process. - -* [Fix tab height flusing with the header bug][pr-0] - [@diessica] -* [Polish Breakpoint alignment][pr-4] - [@galtalmor] -* [Style the list of functions in OutlineView][pr-5] - [@codehag] -* [Format Node libraries in the call stack][pr-12] - [@Sequoia] -* [Make source tab's UI and tests consistent in RTL mode][pr-14] - [@diessica] -* [Don't show undef][pr-17] - [@peterschussheim] -* [Fix Object Inspector toggling][pr-22] - [@jasonLaster] -* [Update the pause line][pr-26] - [@jasonLaster] - -#### Bug Fixes - -As we get closer to launching, we're increasingly focusing on bug fixes. This week we fixed some really big bugs with saved breakpoints, tabs, and preview. - -* [Fix for the last closed tab not getting persisted][pr-6] - [@bomsy] -* [Fix default bucketing][pr-19] - [@jasonLaster] -* [fix weird fromJS bug][pr-20] - [@jasonLaster] -* [Refactor Pending Breakpoints to fix reloading][pr-21] - [@jasonLaster] - -#### Column Breakpoints - -We're continuing to chip away at column breakpoints. This week we added an -improved breakpoint marker and now show the column number in the breakpoint list. - -* [Styled breakpoint marker][pr-8] - [@ohana54] -* [Show column number in the breakpoint][pr-18] - [@roieu] - -#### Infrastructure - -* [enable search nav][pr-2] - [@jasonLaster] -* [Use the license checker][pr-9] - [@tromey] -* [bump Jest][pr-13] - [@jasonLaster] -* [Fix remark][pr-15] - [@wooorm] -* [fixed the unnecessary firing of TOGGLE_PROJECT_SEARCH action][pr-16] - [@karthikJagadeesh] -* [bump percy to 0.1.4][pr-23] - [@jasonLaster] -* [bump eslint-config-prettier][pr-24] - [@jasonLaster] - - -#### Refactoring - -* [Switch Expressions from PropTypes to Flow Props][pr-10] - [@sharathnarayanph] - - -#### Testing - -* [add a story for preview][pr-11] - [@jasonLaster] - ---- - -#### Function Highlighting - -![high] - - -#### Polished Tabs - -![tabs] - -#### Node Frames - -![node] - -#### Pause line - -![pause] - -[pause]:https://camo.githubusercontent.com/92cb527aa857f7839c088cb9bf96c42fcca04571/687474703a2f2f672e7265636f726469742e636f2f37716a7579594a694c752e676966 -[high]:https://cloud.githubusercontent.com/assets/5232812/26038199/aed62a5e-38d0-11e7-8941-0a1db931b2c3.gif -[tabs]:https://cloud.githubusercontent.com/assets/5303585/25777111/8f275250-32a9-11e7-931c-89b438eabae9.png -[node]:https://cloud.githubusercontent.com/assets/317498/26003249/27b05d28-3700-11e7-8bc1-c678f05c55e0.png - -[pr-0]:https://github.com/devtools-html/debugger.html/pull/2835 -[pr-1]:https://github.com/devtools-html/debugger.html/pull/2855 -[pr-2]:https://github.com/devtools-html/debugger.html/pull/2851 -[pr-3]:https://github.com/devtools-html/debugger.html/pull/2856 -[pr-4]:https://github.com/devtools-html/debugger.html/pull/2866 -[pr-5]:https://github.com/devtools-html/debugger.html/pull/2854 -[pr-6]:https://github.com/devtools-html/debugger.html/pull/2721 -[pr-7]:https://github.com/devtools-html/debugger.html/pull/2860 -[pr-8]:https://github.com/devtools-html/debugger.html/pull/2867 -[pr-9]:https://github.com/devtools-html/debugger.html/pull/2862 -[pr-10]:https://github.com/devtools-html/debugger.html/pull/2876 -[pr-11]:https://github.com/devtools-html/debugger.html/pull/2869 -[pr-12]:https://github.com/devtools-html/debugger.html/pull/2868 -[pr-13]:https://github.com/devtools-html/debugger.html/pull/2879 -[pr-14]:https://github.com/devtools-html/debugger.html/pull/2870 -[pr-15]:https://github.com/devtools-html/debugger.html/pull/2880 -[pr-16]:https://github.com/devtools-html/debugger.html/pull/2882 -[pr-17]:https://github.com/devtools-html/debugger.html/pull/2829 -[pr-18]:https://github.com/devtools-html/debugger.html/pull/2865 -[pr-19]:https://github.com/devtools-html/debugger.html/pull/2897 -[pr-20]:https://github.com/devtools-html/debugger.html/pull/2892 -[pr-21]:https://github.com/devtools-html/debugger.html/pull/2877 -[pr-22]:https://github.com/devtools-html/debugger.html/pull/2890 -[pr-23]:https://github.com/devtools-html/debugger.html/pull/2893 -[pr-24]:https://github.com/devtools-html/debugger.html/pull/2888 -[pr-25]:https://github.com/devtools-html/debugger.html/pull/2717 -[pr-26]:https://github.com/devtools-html/debugger.html/pull/2906 - -[@diessica]:http://github.com/diessica -[@jasonLaster]:http://github.com/jasonLaster -[@galtalmor]:http://github.com/galtalmor -[@codehag]:http://github.com/codehag -[@bomsy]:http://github.com/bomsy -[@ohana54]:http://github.com/ohana54 -[@tromey]:http://github.com/tromey -[@sharathnarayanph]:http://github.com/sharathnarayanph -[@Sequoia]:http://github.com/Sequoia -[@wooorm]:http://github.com/wooorm -[@karthikJagadeesh]:http://github.com/karthikJagadeesh -[@peterschussheim]:http://github.com/peterschussheim -[@roieu]:http://github.com/roieu -[@jcreighton]:https://github.com/jcreighton -[percy]:https://percy.io/ diff --git a/docs/updates/updates-5-2-2017.md b/docs/updates/updates-5-2-2017.md deleted file mode 100644 index 6d9ce2fb08..0000000000 --- a/docs/updates/updates-5-2-2017.md +++ /dev/null @@ -1,157 +0,0 @@ -### May 2nd Update - -This week was a really exciting week for both new feature and general quality improvements. - -We started working on some really nice features - -* :bullettrain_front: Column Breakpoints -* :spaghetti: Framework Frames -* :speech_balloon: Watch Expressions -* :spaghetti: Copy Call Stack - -We also made a lot of progress on - -* :kissing_heart: converting to ES6. Big thanks to [@peterschussheim] -* 🤡 Adding component unit tests [@AnshulMalik] [@mbarzeev] -* :chart_with_upwards_trend: Improving our render performance [@asolove] - -Thanks to everyone who helped us this week [@assafdd], [@amitzur] [@virzen], [@clarkbw], [@irfanhudda], [@asolove], [@ruturajv], [@fujifish], [@AnshulMalik], [@roieu], [@peterschussheim], [@andreicristianpetcu], [@mbarzeev], [@adamki], [@sharathnarayanph], [@zivkaziv], [@bomsy] - -#### UI - -* [Adding to watch Expressions, commented mouseLeave][pr-9] - [@ruturajv] -* [Blackbox source icon][pr-12] - [@roieu] -* [adds hover styles and tooltips to search arrow buttons][pr-20] - [@adamki] -* [Fix toggle pane in RTL][pr-24] - [@sharathnarayanph] -* [Copy stack trace to clipboard][pr-25] - [@zivkaziv] - -##### Column Breakpoints - -[Column breakpoints][pr-23] is very early on. This prototype adds the -support for adding column breakpoints in our redux store and showing them -in the editor. We still want to style the markers, add some AST validation, -and work on the general UX. Big thanks to [@assafdd] [@amitzur] who helped with -the prototype. - -#### Framework Frames - -[Framework Frames][pr-30] groups the framework frames so that you can easily -see the application code and when you're interested view the framework frames -as well. - -#### Bug Fixes -* [Return on null AST][pr-5] - [@jasonLaster] -* [Fix Outline CPU usage (and unrelated test failure)][pr-8] - [@asolove] -* [Fix broken source search][pr-11] - [@AnshulMalik] -* [fixes broken ui][pr-26] - [@bomsy] - -#### ES6 + Refactoring - -* [Convert remaining of reducers to ES modules][pr-3] - [@virzen] -* [Convert sources reducer to ES modules][pr-7] - [@virzen] -* [Convert components to ES modules][pr-13] - [@peterschussheim] -* [Convert shared components to es6 modules][pr-16] - [@peterschussheim] -* [Refactored components][pr-19] - [@AnshulMalik] -* [remove editor preview feature flag][pr-10] - [@fujifish] -* [remove feature flag for symbol search][pr-14] - [@fujifish] -* [removed feature flag for Watch Expressions #2678][pr-17] - [@andreicristianpetcu] -* [removed feature flag for search modifiers #2685][pr-21] - [@andreicristianpetcu] -* [Convert to ES modules][pr-27] - [@peterschussheim] -* [(WIP) Refactor to es modules][pr-28] - [@peterschussheim] - -#### Docs -* [Update docs for remotely debuggable browsers][pr-4] - [@clarkbw] -* [changelog podcast][pr-29] - [@jasonLaster] - -#### Tests -* [Add jest test for ResultList][pr-15] - [@AnshulMalik] -* [Preview function unit tests][pr-18] - [@mbarzeev] -* [Add a test for changing the selected frame][pr-22] - [@jasonLaster] -* [Re-Added Storybook for Editor Tabs][pr-31] [@jasonLaster] - -#### Infrastructure -* [Remove L10N setup from utils/tests/scopes.js][pr-6] - [@irfanhudda] - ----- - -##### Watch Expressions - -![watch] - -##### Column Breakpoints - -It still needs some styling work and AST validation, but how cool is that! - -![column] - -##### Framework Frames - -![frames] - - -##### Blackbox Icon - -![blackbox] - -##### Storybook - -![storybook] - -[watch]:https://cloud.githubusercontent.com/assets/254562/25305897/a418302a-2751-11e7-83ba-83e0b6e13798.png -[blackbox]:https://cloud.githubusercontent.com/assets/4980440/25448489/4e01f4c8-2ac1-11e7-8ca9-704fb37e374a.png -[column]:https://cloud.githubusercontent.com/assets/254562/25475857/318c1bf8-2b06-11e7-9e10-96ed6549aa03.png -[frames]:https://camo.githubusercontent.com/00eeea03c674a65e9e55b11f9e6a15a8fbf1bef2/687474703a2f2f672e7265636f726469742e636f2f767662786457515130422e676966 -[storybook]:https://camo.githubusercontent.com/742899a7255d7bfd0f02a860b1aaac78d54c6fbf/687474703a2f2f672e7265636f726469742e636f2f6b76435a50447135636b2e676966 - - -[pr-0]:https://github.com/devtools-html/debugger.html/pull/2732 -[pr-1]:https://github.com/devtools-html/debugger.html/pull/2737 -[pr-2]:https://github.com/devtools-html/debugger.html/pull/2734 -[pr-3]:https://github.com/devtools-html/debugger.html/pull/2739 -[pr-4]:https://github.com/devtools-html/debugger.html/pull/2740 -[pr-5]:https://github.com/devtools-html/debugger.html/pull/2725 -[pr-6]:https://github.com/devtools-html/debugger.html/pull/2733 -[pr-7]:https://github.com/devtools-html/debugger.html/pull/2736 -[pr-8]:https://github.com/devtools-html/debugger.html/pull/2738 -[pr-9]:https://github.com/devtools-html/debugger.html/pull/2713 -[pr-10]:https://github.com/devtools-html/debugger.html/pull/2749 -[pr-11]:https://github.com/devtools-html/debugger.html/pull/2748 -[pr-12]:https://github.com/devtools-html/debugger.html/pull/2751 -[pr-13]:https://github.com/devtools-html/debugger.html/pull/2754 -[pr-14]:https://github.com/devtools-html/debugger.html/pull/2752 -[pr-15]:https://github.com/devtools-html/debugger.html/pull/2750 -[pr-16]:https://github.com/devtools-html/debugger.html/pull/2741 -[pr-17]:https://github.com/devtools-html/debugger.html/pull/2762 -[pr-18]:https://github.com/devtools-html/debugger.html/pull/2756 -[pr-19]:https://github.com/devtools-html/debugger.html/pull/2755 -[pr-20]:https://github.com/devtools-html/debugger.html/pull/2757 -[pr-21]:https://github.com/devtools-html/debugger.html/pull/2761 -[pr-22]:https://github.com/devtools-html/debugger.html/pull/2763 -[pr-23]:https://github.com/devtools-html/debugger.html/pull/2760 -[pr-24]:https://github.com/devtools-html/debugger.html/pull/2770 -[pr-25]:https://github.com/devtools-html/debugger.html/pull/2759 -[pr-26]:https://github.com/devtools-html/debugger.html/pull/2779 -[pr-27]:https://github.com/devtools-html/debugger.html/pull/2777 -[pr-28]:https://github.com/devtools-html/debugger.html/pull/2765 -[pr-29]:https://github.com/devtools-html/debugger.html/pull/2768 -[pr-30]:https://github.com/devtools-html/debugger.html/pull/2774 -[pr-31]:https://github.com/devtools-html/debugger.html/pull/2776 - -[@assafdd]:https://github.com/assafdd -[@amitzur]:https://github.com//amitzur -[@jasonLaster]:http://github.com/jasonLaster -[@virzen]:http://github.com/virzen -[@clarkbw]:http://github.com/clarkbw -[@irfanhudda]:http://github.com/irfanhudda -[@asolove]:http://github.com/asolove -[@ruturajv]:http://github.com/ruturajv -[@fujifish]:http://github.com/fujifish -[@AnshulMalik]:http://github.com/AnshulMalik -[@roieu]:http://github.com/roieu -[@peterschussheim]:http://github.com/peterschussheim -[@andreicristianpetcu]:http://github.com/andreicristianpetcu -[@mbarzeev]:http://github.com/mbarzeev -[@adamki]:http://github.com/adamki -[@sharathnarayanph]:http://github.com/sharathnarayanph -[@zivkaziv]:http://github.com/zivkaziv -[@bomsy]:http://github.com/bomsy diff --git a/docs/updates/updates-5-23-2017.md b/docs/updates/updates-5-23-2017.md deleted file mode 100644 index c676890283..0000000000 --- a/docs/updates/updates-5-23-2017.md +++ /dev/null @@ -1,133 +0,0 @@ -### May 23rd - -We focused this week on UI polish, bug fixing, and performance as we focus on getting ready for the June 15th Firefox 55 release. - -* Intelligently place preview popups and tooltips [@AnshulMalik] -* Add an option for disabling Framework Frames [@codehag] -* Polish the search bar [@anbarasiu] [@sharathnarayanph] -* Speed up stepping performance [@bomsy] - -Big thanks to everyone who helped this week [@AnshulMalik], [@jcreighton], [@irfanhudda], [@clarkbw], [@sharathnarayanph], [@ryanjduffy], [@bomsy], [@anbarasiu], [@peterschussheim], [@arthur801031], [@karthikJagadeesh], [@Eccenux] - -#### UI - -* [Update paused styles][pr-2] [2][pr-5] - [@jasonLaster] -* [Resize conditional breakpoint panel after splitbox is resized][pr-4] - [@irfanhudda] -* [[Frames] Add a group context menu][pr-10] - [@codehag] -* [fix commandbar shortcut types][pr-12] - [@jasonLaster] -* [Align preview horizontally][pr-13] - [@AnshulMalik] -* [Toggle framework frames][pr-21] - [@codehag] -* [Truncate “search for"][pr-23] - [@anbarasiu] -* [Show preview on hovering over false booleans][pr-24] - [@peterschussheim] -* [Show dropdown when resizing with splitter][pr-30] - [@irfanhudda] -* [Save Search Modifiers as Prefs][pr-31] - [@sharathnarayanph] -* [simplify function name in tooltip][pr-32] - [@karthikJagadeesh] -* [Support sources and outline toggle][pr-33] - [@AnshulMalik] -* [Hide search modifiers when symbol search enabled][pr-34] - [@anbarasiu] -* [Support blackboxing from call stack][pr-26] - [@AnshulMalik] -* [ExtJS recognition for call stack collapsing][pr-36] - [@Eccenux] -* [Fix function preview max width][pr-37] - [@AnshulMalik] - - -#### Bug Fixes - -* [Fix bp adding][pr-8] - [@jasonLaster] -* [add block statements to lexical scope determination][pr-17] - [@ryanjduffy] -* [Fix blackbox frame filtering][pr-35] - [@jasonLaster] - -#### Perf - -* [Remove immutable from the pause reducer ][pr-19] - [@bomsy] - -#### Infrastructure - -* [query CM from the dom][pr-6] - [@jasonLaster] -* [Update circle to use yarn@0.24.5][pr-7] - [@clarkbw] -* [bump devtools-source-map][pr-9] - [@jasonLaster] -* [add some inline docs][pr-11] [2][pr-16] - [@jasonLaster] -* [Update community calls][pr-20] - [@jasonLaster] -* [Upgrade remark][pr-28] - [@jasonLaster] -* [[flow] upgrade from 0.43 to 0.46][pr-29] - [@arthur801031] - -#### Refactoring - -* [Convert utils to es6 modules][pr-0] - [@AnshulMalik] -* [Switch CommandBar from PropTypes to Flow Props ][pr-15] - [@sharathnarayanph] -* [Splitup the parser][pr-27] [2][pr-38] - [@jasonLaster] - -#### Testing - -* [Fix storybook preview][pr-14] - [@jasonLaster] -* [Fix frames stories][pr-25] - [@jasonLaster] - - ---- - - -#### Intelligently place Preview - -![](https://cloud.githubusercontent.com/assets/7821757/26097479/4ee5bc36-3a42-11e7-8232-57b0da8350c4.gif) - -#### New Pause style - -![](https://camo.githubusercontent.com/92cb527aa857f7839c088cb9bf96c42fcca04571/687474703a2f2f672e7265636f726469742e636f2f37716a7579594a694c752e676966) - -![](https://camo.githubusercontent.com/4b65c8181fcd851ab5caec6c1f9b82cce5a78b59/687474703a2f2f672e7265636f726469742e636f2f367a563741425a736e452e676966) - -[pr-0]:https://github.com/devtools-html/debugger.html/pull/2910 -[pr-1]:https://github.com/devtools-html/debugger.html/pull/2916 -[pr-2]:https://github.com/devtools-html/debugger.html/pull/2906 -[pr-3]:https://github.com/devtools-html/debugger.html/pull/2717 -[pr-4]:https://github.com/devtools-html/debugger.html/pull/2917 -[pr-5]:https://github.com/devtools-html/debugger.html/pull/2915 -[pr-6]:https://github.com/devtools-html/debugger.html/pull/2920 -[pr-7]:https://github.com/devtools-html/debugger.html/pull/2935 -[pr-8]:https://github.com/devtools-html/debugger.html/pull/2940 -[pr-9]:https://github.com/devtools-html/debugger.html/pull/2926 -[pr-10]:https://github.com/devtools-html/debugger.html/pull/2912 -[pr-11]:https://github.com/devtools-html/debugger.html/pull/2932 -[pr-12]:https://github.com/devtools-html/debugger.html/pull/2931 -[pr-13]:https://github.com/devtools-html/debugger.html/pull/2911 -[pr-14]:https://github.com/devtools-html/debugger.html/pull/2930 -[pr-15]:https://github.com/devtools-html/debugger.html/pull/2885 -[pr-16]:https://github.com/devtools-html/debugger.html/pull/2939 -[pr-17]:https://github.com/devtools-html/debugger.html/pull/2951 -[pr-18]:https://github.com/devtools-html/debugger.html/pull/2919 -[pr-19]:https://github.com/devtools-html/debugger.html/pull/2921 -[pr-20]:https://github.com/devtools-html/debugger.html/pull/2953 -[pr-21]:https://github.com/devtools-html/debugger.html/pull/2950 -[pr-22]:https://github.com/devtools-html/debugger.html/pull/2958 -[pr-23]:https://github.com/devtools-html/debugger.html/pull/2960 -[pr-24]:https://github.com/devtools-html/debugger.html/pull/2914 -[pr-25]:https://github.com/devtools-html/debugger.html/pull/2973 -[pr-26]:https://github.com/devtools-html/debugger.html/pull/2938 -[pr-27]:https://github.com/devtools-html/debugger.html/pull/2959 -[pr-28]:https://github.com/devtools-html/debugger.html/pull/2972 -[pr-29]:https://github.com/devtools-html/debugger.html/pull/2961 -[pr-30]:https://github.com/devtools-html/debugger.html/pull/2981 -[pr-31]:https://github.com/devtools-html/debugger.html/pull/2977 -[pr-32]:https://github.com/devtools-html/debugger.html/pull/2976 -[pr-33]:https://github.com/devtools-html/debugger.html/pull/2975 -[pr-34]:https://github.com/devtools-html/debugger.html/pull/2968 -[pr-35]:https://github.com/devtools-html/debugger.html/pull/2970 -[pr-36]:https://github.com/devtools-html/debugger.html/pull/2886 -[pr-37]:https://github.com/devtools-html/debugger.html/pull/2966 -[pr-38]:https://github.com/devtools-html/debugger.html/pull/2967 - - - - -[@AnshulMalik]:http://github.com/AnshulMalik -[@jasonLaster]:http://github.com/jasonLaster -[@jcreighton]:http://github.com/jcreighton -[@irfanhudda]:http://github.com/irfanhudda -[@clarkbw]:http://github.com/clarkbw -[@codehag]:http://github.com/codehag -[@sharathnarayanph]:http://github.com/sharathnarayanph -[@ryanjduffy]:http://github.com/ryanjduffy -[@bomsy]:http://github.com/bomsy -[@anbarasiu]:http://github.com/anbarasiu -[@peterschussheim]:http://github.com/peterschussheim -[@arthur801031]:http://github.com/arthur801031 -[@karthikJagadeesh]:http://github.com/karthikJagadeesh -[@Eccenux]:http://github.com/Eccenux diff --git a/docs/updates/updates-5-30-2017.md b/docs/updates/updates-5-30-2017.md deleted file mode 100644 index 181b62615a..0000000000 --- a/docs/updates/updates-5-30-2017.md +++ /dev/null @@ -1,71 +0,0 @@ -### May 30th - -This week we made a lot of progress polishing the UI and improving the qulity: - -We fixed three sizable bugs: - -* a server-side issue with previewing out of scope variables -* a reload issue where disabled breakpoints were re-enabled -* a connection issue where sources files were not done loading - -We also got some great help from the community: - -Thanks [@sejoker] for adding function params when we're searching for symbols. And [@gururajbn] for vertically aligning our secondary sidebar labels. - -[@AnshulMalik], [@irfanhudda], [@zimbabao], [@Andarist], [@gururajbn], [@sejoker] - -#### UI - -* [Better position tooltip horizontally][pr-0] - [@AnshulMalik] -* [Hide outline toggle button when outline is disabled][pr-3] - [@irfanhudda] -* [Fix accesskeys][pr-4] - [@jasonLaster] -* [Add search highlighting][pr-6] - [@jasonLaster] -* [Disable text search match index][pr-7] - [@jasonLaster] -* [Align labels vertically in the secondary pane ][pr-14] - [@gururajbn] - - -#### Bug Fixes - -* [Have firefox onConnect wait for newSources][pr-1] - [@tromey] -* [breakpoints nightly won't delete breakpoints][pr-16] - [@codehag] - -#### Parsing - -* [Create an AST redux backend][pr-10] - [@jasonLaster] -* [gets function params while loading symbols for a file][pr-15] - [@sejoker] - -#### Infrastructure - -* [Use L10N for unit test][pr-8] - [@irfanhudda] -* [Use jest assertion in place of expect][pr-9] - [@zimbabao] -* [Converted PropTypes to flow types in HitMarker.js][pr-13] - [@Andarist] -* [Switch PaneToggle from PropTypes to flow props][pr-17] - [@irfanhudda] - - -[pr-0]:https://github.com/devtools-html/debugger.html/pull/2989 -[pr-1]:https://github.com/devtools-html/debugger.html/pull/2997 -[pr-2]:https://github.com/devtools-html/debugger.html/pull/2992 -[pr-3]:https://github.com/devtools-html/debugger.html/pull/2996 -[pr-4]:https://github.com/devtools-html/debugger.html/pull/3009 -[pr-5]:https://github.com/devtools-html/debugger.html/pull/2990 -[pr-6]:https://github.com/devtools-html/debugger.html/pull/2985 -[pr-7]:https://github.com/devtools-html/debugger.html/pull/3008 -[pr-8]:https://github.com/devtools-html/debugger.html/pull/3007 -[pr-9]:https://github.com/devtools-html/debugger.html/pull/3003 -[pr-10]:https://github.com/devtools-html/debugger.html/pull/3015 -[pr-11]:https://github.com/devtools-html/debugger.html/pull/3014 -[pr-12]:https://github.com/devtools-html/debugger.html/pull/3013 -[pr-13]:https://github.com/devtools-html/debugger.html/pull/3023 -[pr-14]:https://github.com/devtools-html/debugger.html/pull/3025 -[pr-15]:https://github.com/devtools-html/debugger.html/pull/3026 -[pr-16]:https://github.com/devtools-html/debugger.html/pull/2994 -[pr-17]:https://github.com/devtools-html/debugger.html/pull/3021 -[@AnshulMalik]:http://github.com/AnshulMalik -[@tromey]:http://github.com/tromey -[@jasonLaster]:http://github.com/jasonLaster -[@irfanhudda]:http://github.com/irfanhudda -[@zimbabao]:http://github.com/zimbabao -[@Andarist]:http://github.com/Andarist -[@gururajbn]:http://github.com/gururajbn -[@sejoker]:http://github.com/sejoker -[@codehag]:http://github.com/codehag diff --git a/docs/updates/updates-5-9-2017.md b/docs/updates/updates-5-9-2017.md deleted file mode 100644 index d56c05ea08..0000000000 --- a/docs/updates/updates-5-9-2017.md +++ /dev/null @@ -1,156 +0,0 @@ -### May 9th, 2017 - -* [Adam][@asolove] dramatically improved our startup performance. [pr][pr-6] -* [Ryan][@ryanjduffy] completed the heroic and insane project of getting babel working with HTML inline JS. [pr][pr-23] -* We landed framework call stack toggling. [pr][pr-1] -* [Diéssica][@diessica] jumped in and polished our Tabs UI -* We started converting our Prop Types to Flow Props. Thanks [Mateusz][@Andarist] and others for the help kicking this off! -* We added several new Jest component tests. Big thanks to [Andrei][@andreicristianpetcu] for tackling async component updates. It was not an easy task! -* We re-added storybook this week and wrote our first stories for Frames and Tabs! The stories are also being tested on CI with the great [percy.io](http://percy.io). - -Big thanks to everyone who helped this week [@adamki], [@asolove], [@irfanhudda], [@clarkbw], [@andreicristianpetcu], [@sharathnarayanph], [@Andarist], [@zacanger], [@DanUgelow], [@ryanjduffy], [@bomsy], [@diessica], [@Sequoia], [@AgtLucas] - -#### UI - -* [Add Frame Toggling][pr-1] - [@jasonLaster] -* [Add right border to command bar in rtl mode][pr-11] - [@irfanhudda] -* [hide folding in the panel][pr-15] - [@jasonLaster] -* [Fix symbol search shortcut][pr-16] - [@jasonLaster] -* [Add key modifiers to shortcut values][pr-18] - [@sharathnarayanph] -* [Fix the Windows key issues][pr-20] - [@jasonLaster] -* [Improve source tree and search results][pr-28] - [@diessica] -* [Fix secondary pane toggle button in vertical mode][pr-29] - [@diessica] -* [Format Reference Errors][pr-33] - [@sharathnarayanph] - -#### Performance - -* [Add reselect and reduce unnecessary renders][pr-6] - [@asolove] -* [Fix tabs reselect][pr-8] - [@jasonLaster] -* [SourceFooter to extend PureComponent instead of Component][pr-12] - [@clarkbw] -* [Redux performance user timing middleware][pr-25] - [@clarkbw] -* [More performance improvements][pr-27] - [@asolove] - - -#### Bug Fixing - -* [Remove expand actor caching][pr-24] - [@bomsy] -* [Previewing values in editor when paused][pr-26] - [@asolove] - - -#### Flow Typing -* [Switch Footer from PropTypes to flow props][pr-13] - [@clarkbw] -* [Converted PropTypes to flow types in EventListeners.js][pr-19] - [@Andarist] -* [Use Flow instead of PropTypes in Breakpoint and ColumnBreakpoint.][pr-21] - [@zacanger] -* [Converted PropTypes to flow types in SearchBar.js][pr-30] - [@Andarist] -* [Convert propTypes to Flow Props][pr-34] - [@AgtLucas] - - -#### Preview - -We use Babel's parser in the client to statically analyze our JS. -This works really well for us, but presents the problem of how we will parse -our inline JS. Ryan wrote a great library for extracting the JS from our html files [here](https://github.com/ryanjduffy/parse-script-tags). The test in the PR says it all. - -* [Add parser support for HTML files][pr-23] - [@ryanjduffy] - -#### Testing - -* [Re-add storybook][pr-4] - [@jasonLaster] -* [Add percy snapshot testing][pr-14] - [@jasonLaster] -* [Add jest test for Outline][pr-17] - [@andreicristianpetcu] -* [Add stories for Frames][pr-36] - [@jasonLaster] - -#### infrastructure - -* [removes showSource feature-flag remnants][pr-0] - [@adamki] -* [Drop version number][pr-2] - [@jasonLaster] -* [Add 5-2 weekly update][pr-3] - [@jasonLaster] -* [bump lp][pr-5] - [@jasonLaster] -* [Fix snapshot][pr-7] - [@jasonLaster] -* [bump to launchpad 76][pr-9] - [@jasonLaster] -* [backport bz patch][pr-10] - [@jasonLaster] -* [update the properties][pr-31] - [@jasonLaster] -* [fix keyshortcut labels][pr-35] - [@jasonLaster] - -#### Docs - -* [add error section to dev doc][pr-22] - [@DanUgelow] -* [Remove extraneous note on node.js setup][pr-32] - [@Sequoia] - - -#### Storybook - -![tabs](https://camo.githubusercontent.com/742899a7255d7bfd0f02a860b1aaac78d54c6fbf/687474703a2f2f672e7265636f726469742e636f2f6b76435a50447135636b2e676966) - -![frames](https://camo.githubusercontent.com/50bc8493ff3dfeafc6652a4620ac1dd2c05e9791/687474703a2f2f672e7265636f726469742e636f2f747063303952794f6f552e676966) - -#### Framework frames - -![frames](https://camo.githubusercontent.com/00eeea03c674a65e9e55b11f9e6a15a8fbf1bef2/687474703a2f2f672e7265636f726469742e636f2f767662786457515130422e676966) - -#### Tab UI polish - -![tab-fixes](https://cloud.githubusercontent.com/assets/5303585/25777111/8f275250-32a9-11e7-931c-89b438eabae9.png) - -#### Toggle UI Polish - -![toggle](https://cloud.githubusercontent.com/assets/5303585/25778251/53503398-32cf-11e7-9664-a346fbb599b5.gif) - -#### Format Watch Expression errors - -![](https://cloud.githubusercontent.com/assets/16179366/25773629/4945144c-3246-11e7-92d2-7cccac19b28b.png) - - -[pr-0]:https://github.com/devtools-html/debugger.html/pull/2766 -[pr-1]:https://github.com/devtools-html/debugger.html/pull/2774 -[pr-2]:https://github.com/devtools-html/debugger.html/pull/2789 -[pr-3]:https://github.com/devtools-html/debugger.html/pull/2783 -[pr-4]:https://github.com/devtools-html/debugger.html/pull/2776 -[pr-5]:https://github.com/devtools-html/debugger.html/pull/2803 -[pr-6]:https://github.com/devtools-html/debugger.html/pull/2784 -[pr-7]:https://github.com/devtools-html/debugger.html/pull/2795 -[pr-8]:https://github.com/devtools-html/debugger.html/pull/2799 -[pr-9]:https://github.com/devtools-html/debugger.html/pull/2793 -[pr-10]:https://github.com/devtools-html/debugger.html/pull/2802 -[pr-11]:https://github.com/devtools-html/debugger.html/pull/2798 -[pr-12]:https://github.com/devtools-html/debugger.html/pull/2816 -[pr-13]:https://github.com/devtools-html/debugger.html/pull/2805 -[pr-14]:https://github.com/devtools-html/debugger.html/pull/2811 -[pr-15]:https://github.com/devtools-html/debugger.html/pull/2807 -[pr-16]:https://github.com/devtools-html/debugger.html/pull/2821 -[pr-17]:https://github.com/devtools-html/debugger.html/pull/2815 -[pr-18]:https://github.com/devtools-html/debugger.html/pull/2819 -[pr-19]:https://github.com/devtools-html/debugger.html/pull/2830 -[pr-20]:https://github.com/devtools-html/debugger.html/pull/2820 -[pr-21]:https://github.com/devtools-html/debugger.html/pull/2823 -[pr-22]:https://github.com/devtools-html/debugger.html/pull/2824 -[pr-23]:https://github.com/devtools-html/debugger.html/pull/2810 -[pr-24]:https://github.com/devtools-html/debugger.html/pull/2826 -[pr-25]:https://github.com/devtools-html/debugger.html/pull/2825 -[pr-26]:https://github.com/devtools-html/debugger.html/pull/2818 -[pr-27]:https://github.com/devtools-html/debugger.html/pull/2828 -[pr-28]:https://github.com/devtools-html/debugger.html/pull/2836 -[pr-29]:https://github.com/devtools-html/debugger.html/pull/2837 -[pr-30]:https://github.com/devtools-html/debugger.html/pull/2831 -[pr-31]:https://github.com/devtools-html/debugger.html/pull/2845 -[pr-32]:https://github.com/devtools-html/debugger.html/pull/2847 -[pr-33]:https://github.com/devtools-html/debugger.html/pull/2833 -[pr-34]:https://github.com/devtools-html/debugger.html/pull/2842 -[pr-35]:https://github.com/devtools-html/debugger.html/pull/2846 -[pr-36]:https://github.com/devtools-html/debugger.html/pull/2839 - -[@adamki]:http://github.com/adamki -[@jasonLaster]:http://github.com/jasonLaster -[@asolove]:http://github.com/asolove -[@irfanhudda]:http://github.com/irfanhudda -[@clarkbw]:http://github.com/clarkbw -[@andreicristianpetcu]:http://github.com/andreicristianpetcu -[@sharathnarayanph]:http://github.com/sharathnarayanph -[@Andarist]:http://github.com/Andarist -[@zacanger]:http://github.com/zacanger -[@DanUgelow]:http://github.com/DanUgelow -[@ryanjduffy]:http://github.com/ryanjduffy -[@bomsy]:http://github.com/bomsy -[@diessica]:http://github.com/diessica -[@Sequoia]:http://github.com/Sequoia -[@AgtLucas]:http://github.com/AgtLucas diff --git a/docs/updates/updates-6-13-2017.md b/docs/updates/updates-6-13-2017.md deleted file mode 100644 index 7821e15c76..0000000000 --- a/docs/updates/updates-6-13-2017.md +++ /dev/null @@ -1,137 +0,0 @@ -### June 13th - -We focused this week on getting lots of bugfixes and community prs in - -* Nightly is up to date with the latest debugger updates -* new styling for the Outline View, big thanks to [@amelzer] -* searchbar had a lot of improvements - -Thanks to everyone who helped out [@zaggy], [@jasonLaster], [@codehag], [@ryanjduffy], [@jbhoosreddy], [@peterschussheim], [@ofiron01], [@anbarasiu], [@borisstgermain], [@clarkbw], [@andreicristianpetcu], [@amelzer], [@amitzur] - -#### UI - -A few UI adjustments and additions. We are continuing on with adding more frameworks to the -callstack, and small styling adjustments. Also some great work done on the Outline view, which is -looking like its ready to go for nightly! - - * [style exceptions in WhyPaused as red][pr-20] - [@zaggy] - * [[WhyPaused] Move why paused to the call stack][pr-22] - [@zaggy] - * [ #2980 added lodash and underscore detection][pr-23] - [@andreicristianpetcu] - * [stop folding in the panel][pr-24] - [@jasonLaster] - * [Style functions in outline view][pr-30] - [@amelzer] - -#### SearchBar - -We are adjusting the searchbar functionality. Along with fixing up some behavior, we are now going -to have an Atom style modal for symbol searches. - -* [[FunctionSearch] clear query after selecting an item #2526][pr-9] - [@ofiron01] -* [Bug/2963 search shows no results after switching to another tool and switching back to - debugger][pr-10] - [@codehag] -* [Create search worker][pr-25] - [@jasonLaster] -* [Search bar doesn't get focus if already open][pr-32] - [@amitzur] -* [Move getClosestExpression into worker][pr-3] - [@ryanjduffy] - -#### Editor -Some polishing on the editor and function preview - -* [fix object property styling on window property names (#2946)][pr-4] - [@jbhoosreddy] -* [Fix 3146 - editor occasionally doesn't jump to a line][pr-28] - [@jasonLaster] -* [fix null][pr-1] - [@jasonLaster] - -#### Releases - -We released a new version of the debugger this week to nightly - -* [Q3 Roadmap][pr-17] - [@jasonLaster] -* [Release a new version of the debugger][pr-6] - [@jasonLaster] - -#### Breakpoints - -There were a few open issues with breakpoints from last week, including sliding breakpoints on the -refresh of the debuggee, and problems with the column breakpoint. Those have been resolved - -* [Polish conditional breakpoint][pr-0] - [@zaggy] -* [Revert breakpoint clearing][pr-14] - [@jasonLaster] -* [Remove column breakpoint][pr-15] - [@anbarasiu] - -#### AST - -We had a failing ast test for quite some time, and that has now been fixed - -* [fix actions/ast test][pr-13] - [@jasonLaster] - -#### Chores -* [ remove getVisibleVariablesFromScope][pr-12] - [@jasonLaster] -* [#3083: change 'Copy Link Address' id][pr-16] - [@borisstgermain] - - -#### Infrastructure - -Lots of work keeping up to date with our libraries. - -* [Continue conversion from commonjs to es modules][pr-7] - [@peterschussheim] -* [Get environment][pr-11] - [@jasonLaster] -* [Switch to use greenkeeper-lockfile-update for yarn.lock file][pr-18] - [@clarkbw] -* [replace commonjs with imports][pr-19] - [@jasonLaster] -* [bump prettier][pr-8] - [@jasonLaster] -* [fix(package): update devtools-launchpad to version 0.0.84][pr-26] - [@jasonLaster] -* [Update outdated deps][pr-27] - [@clarkbw] -* [Use \react-dom\ instead of \../../node_modules/react-dom/dist/react-dom\][pr-2] - [@codehag] - -#### Code Health - -We did some work to improve our code health, especially updating the flow library and making our -types more specific - -* [Add void types][pr-29] - [@jasonLaster] -* [bump launchpad to 83][pr-21] - [@jasonLaster] -* [Bump flow bin version][pr-31] - [@zaggy] - - -[pr-0]:https://github.com/devtools-html/debugger.html/pull/3101 -[pr-1]:https://github.com/devtools-html/debugger.html/pull/3114 -[pr-2]:https://github.com/devtools-html/debugger.html/pull/3102 -[pr-3]:https://github.com/devtools-html/debugger.html/pull/3104 -[pr-4]:https://github.com/devtools-html/debugger.html/pull/3099 -[pr-5]:https://github.com/devtools-html/debugger.html/pull/3105 -[pr-6]:https://github.com/devtools-html/debugger.html/pull/3098 -[pr-7]:https://github.com/devtools-html/debugger.html/pull/3126 -[pr-8]:https://github.com/devtools-html/debugger.html/pull/3125 -[pr-9]:https://github.com/devtools-html/debugger.html/pull/3117 -[pr-10]:https://github.com/devtools-html/debugger.html/pull/3121 -[pr-11]:https://github.com/devtools-html/debugger.html/pull/3115 -[pr-12]:https://github.com/devtools-html/debugger.html/pull/3124 -[pr-13]:https://github.com/devtools-html/debugger.html/pull/3122 -[pr-14]:https://github.com/devtools-html/debugger.html/pull/3113 -[pr-15]:https://github.com/devtools-html/debugger.html/pull/3120 -[pr-16]:https://github.com/devtools-html/debugger.html/pull/3127 -[pr-17]:https://github.com/devtools-html/debugger.html/pull/3031 -[pr-18]:https://github.com/devtools-html/debugger.html/pull/3134 -[pr-19]:https://github.com/devtools-html/debugger.html/pull/3131 -[pr-20]:https://github.com/devtools-html/debugger.html/pull/3136 -[pr-21]:https://github.com/devtools-html/debugger.html/pull/3133 -[pr-22]:https://github.com/devtools-html/debugger.html/pull/3119 -[pr-23]:https://github.com/devtools-html/debugger.html/pull/3129 -[pr-24]:https://github.com/devtools-html/debugger.html/pull/3137 -[pr-25]:https://github.com/devtools-html/debugger.html/pull/3139 -[pr-26]:https://github.com/devtools-html/debugger.html/pull/3149 -[pr-27]:https://github.com/devtools-html/debugger.html/pull/3142 -[pr-28]:https://github.com/devtools-html/debugger.html/pull/3147 -[pr-29]:https://github.com/devtools-html/debugger.html/pull/3157 -[pr-30]:https://github.com/devtools-html/debugger.html/pull/3128 -[pr-31]:https://github.com/devtools-html/debugger.html/pull/3155 -[pr-32]:https://github.com/devtools-html/debugger.html/pull/3153 -[@zaggy]:http://github.com/zaggy -[@jasonLaster]:http://github.com/jasonLaster -[@codehag]:http://github.com/codehag -[@ryanjduffy]:http://github.com/ryanjduffy -[@jbhoosreddy]:http://github.com/jbhoosreddy -[@peterschussheim]:http://github.com/peterschussheim -[@ofiron01]:http://github.com/ofiron01 -[@anbarasiu]:http://github.com/anbarasiu -[@borisstgermain]:http://github.com/borisstgermain -[@clarkbw]:http://github.com/clarkbw -[@andreicristianpetcu]:http://github.com/andreicristianpetcu -[@amelzer]:http://github.com/amelzer -[@amitzur]:http://github.com/amitzur diff --git a/docs/updates/updates-6-20-2017.md b/docs/updates/updates-6-20-2017.md deleted file mode 100644 index 067189582d..0000000000 --- a/docs/updates/updates-6-20-2017.md +++ /dev/null @@ -1,56 +0,0 @@ -### June 20th - -It's been a quieter week than last week. This weeks highlights include: - -* new UI improvements to search (thankyou to [@ruturajv]! -* some new documentation -* WTR runner - -Thanks to everyone who helped out [@codehag], [@jasonLaster], [@ruturajv] - -#### UI -We made some improvements and starting points in the project scope, so that other contributors can -join in. - -* [WIP - Bug 3038 editor search add text search button][pr-4] - [@ruturajv] -* [Speed up Out Of Scope lines][pr-8] - [@jasonLaster] -* [Start project search][pr-7] - [@jasonLaster] - -#### Chores -* [bump lp to 86][pr-2] - [@jasonLaster] -* [Test report][pr-3] - [@jasonLaster] -* [Make it easy to test prefs][pr-5] - [@jasonLaster] -* [bump launchpad to 87][pr-6] - [@jasonLaster] -* [prettify css][pr-10] - [@jasonLaster] - - -#### Infrastructure -* [Add WTR Runner][pr-1] - [@jasonLaster] - - -#### Documentation -The new documentation introduces contributors to how to run the debugger inside of firefox -* [[Documentation] running the debugger as part of a firefox build][pr-9] - [@codehag] - - -#### bugs -This was a particularily nasty bug, that ultimately came down to a small mistake! - -* [Bug/3049 debugger is blank when clicking on stacktrace in netmonitor first][pr-0] - [@codehag] - - -[pr-0]:https://github.com/devtools-html/debugger.html/pull/3166 -[pr-1]:https://github.com/devtools-html/debugger.html/pull/3138 -[pr-2]:https://github.com/devtools-html/debugger.html/pull/3173 -[pr-3]:https://github.com/devtools-html/debugger.html/pull/2780 -[pr-4]:https://github.com/devtools-html/debugger.html/pull/3100 -[pr-5]:https://github.com/devtools-html/debugger.html/pull/3171 -[pr-6]:https://github.com/devtools-html/debugger.html/pull/3183 -[pr-7]:https://github.com/devtools-html/debugger.html/pull/3177 -[pr-8]:https://github.com/devtools-html/debugger.html/pull/3184 -[pr-9]:https://github.com/devtools-html/debugger.html/pull/3174 -[pr-10]:https://github.com/devtools-html/debugger.html/pull/3187 -[@codehag]:http://github.com/codehag -[@jasonLaster]:http://github.com/jasonLaster -[@ruturajv]:http://github.com/ruturajv - diff --git a/docs/updates/updates-6-6-2017.md b/docs/updates/updates-6-6-2017.md deleted file mode 100644 index 13e9fabd15..0000000000 --- a/docs/updates/updates-6-6-2017.md +++ /dev/null @@ -1,90 +0,0 @@ -### June 6th - -This was a really great week for QA improvements as the debugger is getting more stable each week. - -* We now disable out of scope lines when the debugger pauses. -* We have huge updates to preview - it's faster, more consistent, and works for HTML elements -* Breakpoints are kept in sync as code changes. Big thanks to [@codehag] -* We're chipping away at two new features: Outline View and Project Search - -Thanks to everyone who helped out [@bomsy], [@irfanhudda], [@peterschussheim], [@amelzer], [@codehag] - -#### UI - -* [Disable active line][pr-2] - [@jasonLaster] -* [fix annoying expression duplicate keys warning][pr-5] - [@bomsy] -* [Fix input font size][pr-6] - [@jasonLaster] -* [[Frames] Show collapse row button when there are more than NUM_FRAMES_SHOWN frames][pr-7] - [@irfanhudda] -* [cleanup source tree][pr-11] - [@jasonLaster] - -#### Out Of Scope Locations - -We are now disabling the code that's out of scope when you pause. This is a really nice win for users because it is more clear what code they should look at. It also means that other code is not a minefield for popups. We can prevent preview popups when they hover over other code. - -* [Highlight Lines V1][pr-0] - [@jasonLaster] - -#### Preview - -Preview got a lot of love last week. -We fixed a bug where HTML elements were not being previewed. We also, refactored the way we get the preview, which makes it significantly faster and more robust. And we tidied up how promises were shown and the alignment of keys! - -* [Refactor Preview][pr-1] - [@jasonLaster] -* [Vertically align variable keys when inspecting objects][pr-8] - [@peterschussheim] -* [Fix DOM event properties not showing up in the OI][pr-4] - [@bomsy] -* [Promise fixes][pr-3] - [@jasonLaster] - - -#### Outline View - -[Anna][@amelzer] helped us add outline view tabs for toggling between sources and outline view. -[PR][pr-9] - -![](https://cloud.githubusercontent.com/assets/1628866/26779038/217584e6-49e4-11e7-9545-0b225594af56.gif) - - -#### Project Search - -We started working on project text search, which is one of the major parity features missing today. [PR][pr-10] - [@jasonLaster] - -#### Breakpoints - -We fixed a bug where if you were debugging your app which used source maps, -you would pause in random places when you changed your code. This happened because the debugger server stored breakpoints in -bundle (generated) locations and the client kept them in (mapped locations) original. [bug][pr-12] - [@codehag] - -#### Refactor - -* [[WIP] consolidate source text][pr-13] - [@jasonLaster] - -#### Infrastructure - -* [bump percy][pr-14] - [@jasonLaster] - ---- - -#### HTML Elements are previewed :) - -![](https://cloud.githubusercontent.com/assets/792924/26710979/4d08d27a-4755-11e7-8722-43f578ce6651.png) - - -[pr-0]:https://github.com/devtools-html/debugger.html/pull/3051 -[pr-1]:https://github.com/devtools-html/debugger.html/pull/3057 -[pr-2]:https://github.com/devtools-html/debugger.html/pull/3067 -[pr-3]:https://github.com/devtools-html/debugger.html/pull/3064 -[pr-4]:https://github.com/devtools-html/debugger.html/pull/3061 -[pr-5]:https://github.com/devtools-html/debugger.html/pull/3060 -[pr-6]:https://github.com/devtools-html/debugger.html/pull/3065 -[pr-7]:https://github.com/devtools-html/debugger.html/pull/3077 -[pr-8]:https://github.com/devtools-html/debugger.html/pull/3079 -[pr-9]:https://github.com/devtools-html/debugger.html/pull/3087 -[pr-10]:https://github.com/devtools-html/debugger.html/pull/3089 -[pr-11]:https://github.com/devtools-html/debugger.html/pull/3082 -[pr-12]:https://github.com/devtools-html/debugger.html/pull/3039 -[pr-13]:https://github.com/devtools-html/debugger.html/pull/3081 -[pr-14]:https://github.com/devtools-html/debugger.html/pull/3086 -[@jasonLaster]:http://github.com/jasonLaster -[@bomsy]:http://github.com/bomsy -[@irfanhudda]:http://github.com/irfanhudda -[@peterschussheim]:http://github.com/peterschussheim -[@amelzer]:http://github.com/amelzer -[@codehag]:http://github.com/codehag diff --git a/docs/updates/updates-7-11-2017.md b/docs/updates/updates-7-11-2017.md deleted file mode 100644 index 70544c6ee1..0000000000 --- a/docs/updates/updates-7-11-2017.md +++ /dev/null @@ -1,139 +0,0 @@ -### July 11th - -We had quite the work week, along with two weeks of work surrounding that. Lots of new experimental -features, as well as a few important bug fixes and performance improvements - -* Faster Out of Scope Lines -* Show breakpoints on both generated and original source - - -Thanks to everyone who helped out -[@jasonLaster], [@codehag], [@sarahlim], [@ohana54], [@Dalimil], [@arthur801031], [@bomsy], [@aklt], [@wldcordeiro], [@jbhoosreddy], [@bomsy], [@zaggy], [@amitzur], [@zimbabao] - -#### UI - -Lots of small fixes to the UI, as well as more work on the project text search. Some cool new -features from the SF Workweek - -* [Change default case sensitive search modifier to off][pr-5] - [@ohana54] -* [Style command bar animations][pr-6] - [@jasonLaster] -* [[SourceTree] fails to render the root directory][pr-9] - [@codehag] -* [[SoucesTree] Show the host domain first when the debugger opens][pr-11] - [@Dalimil] -* [highlight pause expressions][pr-12] - [@jasonLaster] -* [[Preview] Show undefineds in a tooltip][pr-17] - [@arthur801031] -* [fix toggling function search][pr-20] - [@jasonLaster] -* [Support highlighting the full expression][pr-21] - [@bomsy] -* [Fix reloading issue with selected tabs + breakpoints][pr-22] - [@jasonLaster] -* [Stop scrolling when we toggle tools][pr-23] - [@jasonLaster] -* [get bracketarrow working again][pr-24] - [@aklt] -* [Symbol Search Modal][pr-25] - [@wldcordeiro] -* [[WIP] Symbols][pr-26] - [@jasonLaster] -* [Fix empty index.html breakpoints][pr-33] - [@bomsy] -* [Added angular and rxjs to Library Frames][pr-34] - [@zaggy] -* [[WIP] toggle project text search][pr-35] - [@jasonLaster] -* [Html syntax highlight bug][pr-38] - [@jbhoosreddy] -* [Include comments in \out of scope\ locations][pr-39] - [@amitzur] -* [Show index during search traversal.][pr-40] - [@zimbabao] -* [Fix source search][pr-41] - [@jasonLaster] -* [fix selectSource prop][pr-43] - [@jasonLaster] -* [Bugfix: Cannot set debugger breakpoint on generatedSource][pr-44] - [@codehag] -* [[Scopes] Horizontal scrolling][pr-45] - [@codehag] -* [(WIP) call sites][pr-47] - [@jasonLaster] -* [Bugfix: ctrl-clicking gutter prematurely added breakpoint][pr-4] - [@sarahlim] - -#### Chores - -Lots of refactoring work to get the code more polished and clean - -* [prettify css][pr-2] - [@jasonLaster] -* [format snapshots][pr-7] - [@jasonLaster] -* [(WIP) Replace sourcetext w/ source][pr-8] - [@jasonLaster] -* [update mochitests][pr-10] - [@jasonLaster] -* [add jest:watch command][pr-14] - [@codehag] -* [switch bpclient ids to location ids][pr-16] - [@jasonLaster] -* [Simplify stories][pr-18] - [@jasonLaster] -* [fix source text refs in wtr][pr-19] - [@jasonLaster] -* [removes SourceText type][pr-28] - [@jbhoosreddy] -* [Search worker][pr-27] - [@wldcordeiro] -* [add sagas][pr-29] - [@codehag] -* [simplify selectors][pr-30] - [@jasonLaster] -* [Moving sources/outline stuff into a \PrimaryPanes\ component/dir.][pr-31] - [@wldcordeiro] -* [Remove editor expression prop][pr-36] - [@jasonLaster] -* [ignore tag files][pr-42] - [@codehag] -* [Refactor breakpoints actions][pr-46] - [@jasonLaster] - -#### Documentation - -Two new pieces of documentation - -* [[Documentation] running the debugger as part of a firefox build][pr-1] - [@codehag] -* [document adding a task to a worker][pr-37] - [@jasonLaster] - -#### Performance - -* [Speed up Out Of Scope lines][pr-0] - [@jasonLaster] -* [bail early on closestExpression][pr-15] - [@jasonLaster] - - - -[pr-0]:https://github.com/devtools-html/debugger.html/pull/3184 -[pr-1]:https://github.com/devtools-html/debugger.html/pull/3174 -[pr-2]:https://github.com/devtools-html/debugger.html/pull/3187 -[pr-3]:https://github.com/devtools-html/debugger.html/pull/3193 -[pr-4]:https://github.com/devtools-html/debugger.html/pull/3196 -[pr-5]:https://github.com/devtools-html/debugger.html/pull/3199 -[pr-6]:https://github.com/devtools-html/debugger.html/pull/3194 -[pr-7]:https://github.com/devtools-html/debugger.html/pull/3198 -[pr-8]:https://github.com/devtools-html/debugger.html/pull/3190 -[pr-9]:https://github.com/devtools-html/debugger.html/pull/3192 -[pr-10]:https://github.com/devtools-html/debugger.html/pull/3202 -[pr-11]:https://github.com/devtools-html/debugger.html/pull/2957 -[pr-12]:https://github.com/devtools-html/debugger.html/pull/3195 -[pr-13]:https://github.com/devtools-html/debugger.html/pull/3206 -[pr-14]:https://github.com/devtools-html/debugger.html/pull/3212 -[pr-15]:https://github.com/devtools-html/debugger.html/pull/3210 -[pr-16]:https://github.com/devtools-html/debugger.html/pull/3163 -[pr-17]:https://github.com/devtools-html/debugger.html/pull/3211 -[pr-18]:https://github.com/devtools-html/debugger.html/pull/3208 -[pr-19]:https://github.com/devtools-html/debugger.html/pull/3219 -[pr-20]:https://github.com/devtools-html/debugger.html/pull/3201 -[pr-21]:https://github.com/devtools-html/debugger.html/pull/3205 -[pr-22]:https://github.com/devtools-html/debugger.html/pull/3220 -[pr-23]:https://github.com/devtools-html/debugger.html/pull/3225 -[pr-24]:https://github.com/devtools-html/debugger.html/pull/3224 -[pr-25]:https://github.com/devtools-html/debugger.html/pull/3161 -[pr-26]:https://github.com/devtools-html/debugger.html/pull/3229 -[pr-27]:https://github.com/devtools-html/debugger.html/pull/3249 -[pr-28]:https://github.com/devtools-html/debugger.html/pull/3244 -[pr-29]:https://github.com/devtools-html/debugger.html/pull/3250 -[pr-30]:https://github.com/devtools-html/debugger.html/pull/3248 -[pr-31]:https://github.com/devtools-html/debugger.html/pull/3245 -[pr-32]:https://github.com/devtools-html/debugger.html/pull/3268 -[pr-33]:https://github.com/devtools-html/debugger.html/pull/3227 -[pr-34]:https://github.com/devtools-html/debugger.html/pull/3241 -[pr-35]:https://github.com/devtools-html/debugger.html/pull/3266 -[pr-36]:https://github.com/devtools-html/debugger.html/pull/3265 -[pr-37]:https://github.com/devtools-html/debugger.html/pull/3262 -[pr-38]:https://github.com/devtools-html/debugger.html/pull/3271 -[pr-39]:https://github.com/devtools-html/debugger.html/pull/3200 -[pr-40]:https://github.com/devtools-html/debugger.html/pull/3230 -[pr-41]:https://github.com/devtools-html/debugger.html/pull/3281 -[pr-42]:https://github.com/devtools-html/debugger.html/pull/3278 -[pr-43]:https://github.com/devtools-html/debugger.html/pull/3291 -[pr-44]:https://github.com/devtools-html/debugger.html/pull/3284 -[pr-45]:https://github.com/devtools-html/debugger.html/pull/3293 -[pr-46]:https://github.com/devtools-html/debugger.html/pull/3289 -[pr-47]:https://github.com/devtools-html/debugger.html/pull/3240 -[@bomsy]:http://github.com/bomsy -[@zaggy]:http://github.com/zaggy -[@amitzur]:http://github.com/amitzur -[@zimbabao]:http://github.com/zimbabao -[@jasonLaster]:http://github.com/jasonLaster -[@codehag]:http://github.com/codehag -[@sarahlim]:http://github.com/sarahlim -[@ohana54]:http://github.com/ohana54 -[@Dalimil]:http://github.com/Dalimil -[@arthur801031]:http://github.com/arthur801031 -[@aklt]:http://github.com/aklt -[@wldcordeiro]:http://github.com/wldcordeiro -[@jbhoosreddy]:http://github.com/jbhoosreddy diff --git a/docs/updates/updates-7-25-2017.md b/docs/updates/updates-7-25-2017.md deleted file mode 100644 index 7a10471e34..0000000000 --- a/docs/updates/updates-7-25-2017.md +++ /dev/null @@ -1,183 +0,0 @@ -### July 25th - -[@bomsy], [@belen-albeza], [@jbhoosreddy], [@aklt], [@yurydelendik], [@clarkbw], [@wldcordeiro], [@giltayar], [@jasonLaster], [@julienw], [@codehag], - -#### Polish - -* [Align 'this page has no sources' message][pr-10] - [@belen-albeza] -* [Show a horizontal scrollbar in the right panel][pr-11] - [@jasonLaster] -* [Improve source tree line height][pr-8], [2][pr-21], [3][pr-34] - [@bomsy] -* [Vuejs callstack][pr-28] - [@clarkbw] - -#### Bug Fixes - -* [WatchExpressions no longer appear in the editor][pr-43] - [@jasonLaster] -* [Fix React onChange input warning][pr-36] - [@jasonLaster] -* [Fix source search shortcut][pr-29] - [@jasonLaster] -* [Fix watch expression inputs keyboard controls][pr-7] - [@jasonLaster] -* [fix service workers][pr-25] - [@jasonLaster] - -#### Preview - -We switched to using [symbols] as the basis of preview this week, -which is a really big deal for a couple of reasons. - -Symbols are our system for finding functions, variables, and now -member expressions, object expressions, and array expressions. This is a -big deal because we can now do one sweep of a file and find all of the interesting expressions a user might mouse over. Previously, we would wait for the user to hover on a token and then try to figure out what the logical expression was. This was a full AST traversal every time! - -The other reason why using symbols is amazing is that we can resolve -some really tricky cases. Take a look at these [expressions]. We can -now begin supporting hovering on object keys, array items, and even object keys INSIDE OF arrays :) This will make preview much more powerful. - -* [Start using symbols in preview][pr-22] - [@codehag] -* [Touchup preview dark theme styles][pr-48] - [@jasonLaster] - -![][preview] - -#### Wasm - -* [WebAssembly text generation on debugger side][pr-27] - [@yurydelendik] -* [Adding types to the editor position/range objects.][pr-32] - [@yurydelendik] -* [Disable updating line number formats][pr-39] - [@jasonLaster] - -![][wasm] - -#### Breakpoints - -It's hard to understate how much more stable breakpoints in the new debugger are. -[@codehag] and I obsessed over 4 edge cases and found lots of stability bugs: - -1. reloading - with changed sources -2. Source Maps - adding a breakpoiint in either source and toggling between them -3. Sliding - adding breakpoints before functions or on lines with comments -4. Switching between vertical and horizontal layouts - -* [fix getBreakpointsFromSource][pr-0] - [@jasonLaster] -* [Refactor Breakpoints to be location symmetric][pr-1] - [@jasonLaster] -* [fix toggling sources][pr-2] - [@jasonLaster] -* [Refactor add breakpoint][pr-12] - [@codehag] -* [Toggle between original and generated files][pr-19] - [@jasonLaster] -* [Fix pending bps][pr-23] - [@jasonLaster] -* [Breakpoints disappear on layout change][pr-26] - [@codehag] -* [Fix editor state][pr-40] [2][pr-41] - [@jasonLaster] -* [include debug line editor guard][pr-45] - [@jasonLaster] -* [BugFix: Debug Line hangs around when the layout changes][pr-47] - [@codehag] - - -#### Symbol Modal - -In June, we switched from showing function search results in the search bar pane to showing them -in an editor style modal. Since then, there's been a lot of polish to smooth over the rough edges. -@wldcordeiro has a really nice animation in the works too! - -* [Expose clearSymbols handler on worker][pr-17] - [@jbhoosreddy] -* [Style the symbol modal][pr-14] - [@jasonLaster] -* [prevent Ctrl+Shift+O from opening bookmarks organizer under Linux][pr-18] - [@aklt] -* [fix rest spread][pr-33] - [@jasonLaster] -* [Clear the symbol search query on close.][pr-37] - [@wldcordeiro] -* [fix popup shortcut][pr-44] - [@jasonLaster] -* [#3032: added drop shadow to preview popup][pr-46] - [@giltayar] - - -![][modal] - -#### Project Text Search - -We started working on editor style Project Search in SF and [@bomsy] has been -making really good progress here. - -We can now open project search with `cmd+shift+f`, search across all sources, -and display the results. There's still some polish needed here before we turn -it on in nightly. - -* [Project text search wip][pr-5] - [@bomsy] -* [Project text search styling][pr-9] - [@bomsy] -* [Load sources text][pr-13] - [@bomsy] -* [Tidy up project search][pr-15] - [@jasonLaster] -* [Move Search state to redux][pr-35] - [@bomsy] - -![][search] - -#### Infrastructure - -* [Add more cases to warn for yarn lock changes, and run prepush script in parallel][pr-3] - [@julienw] -* [updates-7-11-2017.md][pr-4] - [@codehag] -* [disable percy][pr-6] - [@jasonLaster] -* [bump launchpad + sourcemaps][pr-16] - [@jasonLaster] -* [update lockfile][pr-20] - [@jasonLaster] -* [Bump dependencies][pr-24] - [@jasonLaster] -* [Update remark-cli to the latest version 🚀 (#3393)][pr-30] - [@jasonLaster] -* [Release a new version][pr-31] - [@jasonLaster] -* [Bump master][pr-38] - [@jasonLaster] -* [Bump master][pr-42] - [@jasonLaster] - -[preview]:https://camo.githubusercontent.com/91e287555bcecefe68401ffc4fb3d8ab6ba4656e/687474703a2f2f672e7265636f726469742e636f2f58424f686b75594f65792e676966 - -[wasm]:https://pbs.twimg.com/media/DFM--yMVwAIYNOp.jpg:large -[modal]:http://g.recordit.co/yyWsC53Jgq.gif -[expressions]:https://github.com/devtools-html/debugger.html/blob/next/src/workers/parser/tests/fixtures/expression.js -[symbols]:https://github.com/devtools-html/debugger.html/blob/next/src/workers/parser/getSymbols.js -[search]:https://user-images.githubusercontent.com/254562/28581593-96b00506-7130-11e7-8fb8-6e660fc58076.png - - -[pr-0]:https://github.com/devtools-html/debugger.html/pull/3298 -[pr-1]:https://github.com/devtools-html/debugger.html/pull/3294 -[pr-2]:https://github.com/devtools-html/debugger.html/pull/3324 -[pr-3]:https://github.com/devtools-html/debugger.html/pull/3309 -[pr-4]:https://github.com/devtools-html/debugger.html/pull/3303 -[pr-5]:https://github.com/devtools-html/debugger.html/pull/3276 -[pr-6]:https://github.com/devtools-html/debugger.html/pull/3325 -[pr-7]:https://github.com/devtools-html/debugger.html/pull/3333 -[pr-8]:https://github.com/devtools-html/debugger.html/pull/3337 -[pr-9]:https://github.com/devtools-html/debugger.html/pull/3328 -[pr-10]:https://github.com/devtools-html/debugger.html/pull/3330 -[pr-11]:https://github.com/devtools-html/debugger.html/pull/3334 -[pr-12]:https://github.com/devtools-html/debugger.html/pull/3322 -[pr-13]:https://github.com/devtools-html/debugger.html/pull/3341 -[pr-14]:https://github.com/devtools-html/debugger.html/pull/3327 -[pr-15]:https://github.com/devtools-html/debugger.html/pull/3352 -[pr-16]:https://github.com/devtools-html/debugger.html/pull/3348 -[pr-17]:https://github.com/devtools-html/debugger.html/pull/3339 -[pr-18]:https://github.com/devtools-html/debugger.html/pull/3349 -[pr-19]:https://github.com/devtools-html/debugger.html/pull/3351 -[pr-20]:https://github.com/devtools-html/debugger.html/pull/3359 -[pr-21]:https://github.com/devtools-html/debugger.html/pull/3361 -[pr-22]:https://github.com/devtools-html/debugger.html/pull/3363 -[pr-23]:https://github.com/devtools-html/debugger.html/pull/3364 -[pr-24]:https://github.com/devtools-html/debugger.html/pull/3287 -[pr-25]:https://github.com/devtools-html/debugger.html/pull/3373 -[pr-26]:https://github.com/devtools-html/debugger.html/pull/3387 -[pr-27]:https://github.com/devtools-html/debugger.html/pull/3238 -[pr-28]:https://github.com/devtools-html/debugger.html/pull/3391 -[pr-29]:https://github.com/devtools-html/debugger.html/pull/3384 -[pr-30]:https://github.com/devtools-html/debugger.html/pull/3394 -[pr-31]:https://github.com/devtools-html/debugger.html/pull/3408 -[pr-32]:https://github.com/devtools-html/debugger.html/pull/3409 -[pr-33]:https://github.com/devtools-html/debugger.html/pull/3395 -[pr-34]:https://github.com/devtools-html/debugger.html/pull/3382 -[pr-35]:https://github.com/devtools-html/debugger.html/pull/3370 -[pr-36]:https://github.com/devtools-html/debugger.html/pull/3401 -[pr-37]:https://github.com/devtools-html/debugger.html/pull/3416 -[pr-38]:https://github.com/devtools-html/debugger.html/pull/3425 -[pr-39]:https://github.com/devtools-html/debugger.html/pull/3417 -[pr-40]:https://github.com/devtools-html/debugger.html/pull/3424 -[pr-41]:https://github.com/devtools-html/debugger.html/pull/3407 -[pr-42]:https://github.com/devtools-html/debugger.html/pull/3422 -[pr-43]:https://github.com/devtools-html/debugger.html/pull/3413 -[pr-44]:https://github.com/devtools-html/debugger.html/pull/3397 -[pr-45]:https://github.com/devtools-html/debugger.html/pull/3429 -[pr-46]:https://github.com/devtools-html/debugger.html/pull/3197 -[pr-47]:https://github.com/devtools-html/debugger.html/pull/3420 -[pr-48]:https://github.com/devtools-html/debugger.html/pull/3376 -[@jasonLaster]:http://github.com/jasonLaster -[@julienw]:http://github.com/julienw -[@codehag]:http://github.com/codehag -[@bomsy]:http://github.com/bomsy -[@belen-albeza]:http://github.com/belen-albeza -[@jbhoosreddy]:http://github.com/jbhoosreddy -[@aklt]:http://github.com/aklt -[@yurydelendik]:http://github.com/yurydelendik -[@clarkbw]:http://github.com/clarkbw -[@wldcordeiro]:http://github.com/wldcordeiro -[@giltayar]:http://github.com/giltayar diff --git a/docs/updates/updates-8-1-2017.md b/docs/updates/updates-8-1-2017.md deleted file mode 100644 index 68edaccde0..0000000000 --- a/docs/updates/updates-8-1-2017.md +++ /dev/null @@ -1,121 +0,0 @@ -### August 1st - -This week was the last week before the debugger goes to dev edition. Huge thanks to everyone who chipped in and fixed a bug or polished a rough edge. - -[@bomsy], [@yurydelendik], [@Garbee], [@wldcordeiro], [@darkwing], [@irfanhudda], [@jasonLaster], [@codehag], - - -#### UI - -This week again we focused on polish, making the ui look more consistent, and smaller fixes rather than large features. We had some great progress on the behavior of the SymbolModal (Thanks [@wldcordeiro]!), Expressions. This has put us in a really good spot, and we are looking forward to continuing to improve the UI - -Symbol Modal: [animated-modal] - -* [Scroll onload][pr-0] - [@jasonLaster] -* [[SourceSearch] Improve not-found UI][pr-31] - [@codehag] -* [[Expressions] Items should be of same height][pr-32] - [@irfanhudda] -* [Remove button hover color if button is disabled][pr-33] - [@darkwing] -* [Watch Expression the remove button is often hidden by the scroll bar][pr-12] - [@codehag] -* [FileSearch does not update match count][pr-6] - [@codehag] -* [Animate the SymbolModal's entrance/exit][pr-18] - [@wldcordeiro] - -#### Dark Theme Tweaks -Dark Theme Tweeks: [dark-theme-tweaks] - -* [Style popup shadows][pr-23] - [@jasonLaster] -* [Dark theme tweaks][pr-28] - [@jasonLaster] - -#### Bug Fixes - -This was the final week before the release for 65 and we fixed lots of presentational bugs. - -[@Garbee] fixed a bug where the command bar would start scrolling even though it was position sticky. In the process he added a test case to the CSS spec issue filed against the sticky property. We also fixed bugs with almost every component: call stack, source tree, editor, codemirror. - -* [Breakpoints disappear on sourcemapped sources][pr-2] - [@codehag] -* [Fix framework grouping when toggling states][pr-7] [2][pr-4] - [@jasonLaster] -* [Fix test error: client.sourceContents is not a function][pr-13] - [@codehag] -* [Fix commandbar scrolling issue ][pr-14] - [@Garbee] -* [Fix source editor scroll to line][pr-5] - [@jasonLaster] -* [Do not set source.isWasm attribute for old Firefox.][pr-11] - [@yurydelendik] -* [Fix breakpoint toggling][pr-26] - [@jasonLaster] -* [Editor instance is unavailable after editor change][pr-10] - [@jasonLaster] -* [Clear expressions when the debugger resumes][pr-21] - [@jasonLaster] -* [Show conditional breakpoint panels on the correct line][pr-17] - [@jasonLaster] -* [Fix searching when the file has long lines][pr-19] - [@codehag] -* [Support complex file trees][pr-24] - [@jasonLaster] - - -#### Project Search - -[@bomsy] did some amazing work in getting project search ready to go. Lots of improvements and ui fixes. We should be able to land this in the next milestone! - -Keyboard access: [keyboard-access] - -* [cleanups and fixes][pr-9] - [@bomsy] -* [flashing the line that the text was found on][pr-20] - [@bomsy] -* [Keyboard access][pr-25] - [@bomsy] - -#### Infrastructure - -* [Add a longer timeout for the reloading test][pr-22] - [@jasonLaster] -* [Prevent width value warning error in outline stories][pr-29] - [@darkwing] -* [MC Releases][pr-1] [2][pr-3] [3][pr-15] [4][pr-27] - [@jasonLaster] -* [weekly updates][pr-8] - [@jasonLaster] -* [bump prefs schema][pr-16] - [@jasonLaster] -* [Add stub 'closeActiveSearch' so Tabs stories don't error out][pr-30] - [@darkwing] -* [Fix race condition with project text search tests][pr-34] - [@jasonLaster] - ---- - - - -[pr-0]:https://github.com/devtools-html/debugger.html/pull/3431 -[pr-1]:https://github.com/devtools-html/debugger.html/pull/3445 -[pr-2]:https://github.com/devtools-html/debugger.html/pull/3440 -[pr-3]:https://github.com/devtools-html/debugger.html/pull/3438 -[pr-4]:https://github.com/devtools-html/debugger.html/pull/3443 -[pr-5]:https://github.com/devtools-html/debugger.html/pull/3437 -[pr-6]:https://github.com/devtools-html/debugger.html/pull/3442 -[pr-7]:https://github.com/devtools-html/debugger.html/pull/3434 -[pr-8]:https://github.com/devtools-html/debugger.html/pull/3446 -[pr-9]:https://github.com/devtools-html/debugger.html/pull/3452 -[pr-10]:https://github.com/devtools-html/debugger.html/pull/3454 -[pr-11]:https://github.com/devtools-html/debugger.html/pull/3412 -[pr-12]:https://github.com/devtools-html/debugger.html/pull/3465 -[pr-13]:https://github.com/devtools-html/debugger.html/pull/3472 -[pr-14]:https://github.com/devtools-html/debugger.html/pull/3466 -[pr-15]:https://github.com/devtools-html/debugger.html/pull/3456 -[pr-16]:https://github.com/devtools-html/debugger.html/pull/3455 -[pr-17]:https://github.com/devtools-html/debugger.html/pull/3480 -[pr-18]:https://github.com/devtools-html/debugger.html/pull/3415 -[pr-19]:https://github.com/devtools-html/debugger.html/pull/3476 -[pr-20]:https://github.com/devtools-html/debugger.html/pull/3492 -[pr-21]:https://github.com/devtools-html/debugger.html/pull/3484 -[pr-22]:https://github.com/devtools-html/debugger.html/pull/3494 -[pr-23]:https://github.com/devtools-html/debugger.html/pull/3481 -[pr-24]:https://github.com/devtools-html/debugger.html/pull/3477 -[pr-25]:https://github.com/devtools-html/debugger.html/pull/3502 -[pr-26]:https://github.com/devtools-html/debugger.html/pull/3498 -[pr-27]:https://github.com/devtools-html/debugger.html/pull/3499 -[pr-28]:https://github.com/devtools-html/debugger.html/pull/3497 -[pr-29]:https://github.com/devtools-html/debugger.html/pull/3513 -[pr-30]:https://github.com/devtools-html/debugger.html/pull/3516 -[pr-31]:https://github.com/devtools-html/debugger.html/pull/3473 -[pr-32]:https://github.com/devtools-html/debugger.html/pull/3504 -[pr-33]:https://github.com/devtools-html/debugger.html/pull/3515 -[pr-34]:https://github.com/devtools-html/debugger.html/pull/3511 -[@jasonLaster]:http://github.com/jasonLaster -[@codehag]:http://github.com/codehag -[@bomsy]:http://github.com/bomsy -[@yurydelendik]:http://github.com/yurydelendik -[@Garbee]:http://github.com/Garbee -[@wldcordeiro]:http://github.com/wldcordeiro -[@darkwing]:http://github.com/darkwing -[@irfanhudda]:http://github.com/irfanhudda - -[animated-modal]:https://user-images.githubusercontent.com/580982/28493756-280fb992-6ed9-11e7-9b11-52ffc2f0c0f3.gif - -[keyboard-access]:https://camo.githubusercontent.com/88a4ce075490296b577213c90ee8b112c00d7d1b/687474703a2f2f672e7265636f726469742e636f2f76737956527a615345692e676966 - - -[dark-theme-tweaks]:https://user-images.githubusercontent.com/254562/28782138-4afa9942-75da-11e7-8f25-9c8c26fc6d52.png diff --git a/docs/updates/updates-8-15-2017.md b/docs/updates/updates-8-15-2017.md deleted file mode 100644 index 62f5141e5f..0000000000 --- a/docs/updates/updates-8-15-2017.md +++ /dev/null @@ -1,239 +0,0 @@ -### August 15th - -This was the first post-release sprint and boy was it fun :) - -* [@wldcordeiro] and [@darkwing] lead a move to JSX effort -* [@bomsy] continues to lead the Project Search progress (we're shipping to nightly soon) -* [Sagorika][@sagorika1996] added a new Breakpoints context menu -* We doubled down on our test and code quality -* Fixed tons of paper cut bugs - -[@aklt], [@frigus02], [@jasonLaster], [@Anzumana], [@Ronsho], [@codehag], [@wldcordeiro], [@amelzer], [@darkwing], [@zaggy], [@ksaldana1], [@bomsy], [@liorheber], [@yaelballa], [@sagorika1996], [@juliandescottes], [@nyrosmith], [@zacck] - - -#### UI - -* [map selected source when we toggle pretty print][pr-9] - [@codehag] -* [Use theme body color for conditional breaking point][pr-33] - [@liorheber] -* [click \functions\ to open symbol search modal][pr-44] - [@aklt] - -#### Breakpoints Context Menu - -[Sagorika][@sagorika1996] added a new breakpoints context menu for quickly toggling and removing breakpoints. - -* [Added option to remove all breakpoints][pr-47] - [@sagorika1996] -* [Added additional menuitems to context menu][pr-56] - [@sagorika1996] - -![breakpoints] - -#### Call Stack Collapsing - -Call Stack collapsing is coming together really nicely. - -* [Replace ember logo with tomster][pr-22] - [@amelzer] -* [Add Redux Detection][pr-27] - [@ksaldana1] -* [add immutable js lib to list of libraries][pr-34] - [@yaelballa] -* [add angular icon][pr-70] - [@nyrosmith] - -![angular] - -![ember] - -![redux] - -#### Bug Fix - -* [Expressions should have a unique key][pr-10] - [@codehag] -* [File Search - selecting another source][pr-15] - [@jasonLaster] -* [Fix focus issues][pr-30] - [@wldcordeiro] -* [Do not evaluate expressions on stepping][pr-31] - [@bomsy] -* [SVGs should only throw in development][pr-48] - [@jasonLaster] -* [Fix issue with expressions and unicode characters][pr-51] - [@juliandescottes] -* [Add overflow:scroll to dropdown element][pr-52] - [@amelzer] -* [Fix editor search iteration][pr-8] - [@jasonLaster] - - -#### Project Search - -* [toggle between project text search and file name search][pr-0] - [@aklt] -* [minor project search improvements][pr-59] - [@jasonLaster] -* [fix project search intermittent][pr-60] - [@jasonLaster] -* [test project search][pr-62] - [@jasonLaster] - - -#### Code Quality - -* We doubled down on mochitests. - * There's a new `yarn mochi` runner with a pretty reporter. - * We killed the web test runner so that we can avoid the confusion. - * Running `yarn copy-assets` will no longer update the assets manifest file -* We added several new tests and fixed a bunch of intermittents - * [@frigus02] added tests to make sure we detect async and exported functions when compiling symbols -* [@Ronsho] helped us add a *.spec.js* suffix to our jest unit tests - -* [Refactor tree utils][pr-6] - [@jasonLaster] -* [Add setActiveSearch function to tab storybook][pr-12] - [@amelzer] -* [Kill the web test runner][pr-36] - [@jasonLaster] -* [add missing proptypes][pr-54] - [@aklt] -* [Update assertPausedLocation][pr-64] - [@jasonLaster] -* [Rename spec files][pr-66] - [@Ronsho] - -**Test Improvements** - -* [Test symbol extraction for async/exported functions][pr-1] - [@frigus02] -* [add unit tests for toggle pretty print][pr-7] - [@codehag] -* [Add tests for opening/closing search][pr-35] - [@jasonLaster] -* [Fix pretty printing intermittent][pr-42] - [@jasonLaster] -* [Fix reloading intermittent][pr-50] - [@jasonLaster] -* [Fix worker flakiness][pr-23] - [@jasonLaster] - -**Mochi Runner** - -* [Add mochi runner][pr-37] - [@jasonLaster] -* [Mochi runner improvements][pr-46] - [@jasonLaster] -* [Fix a couple mochi errors][pr-65] - [@jasonLaster] -* [Improve mochi errors][pr-63] - [@jasonLaster] - - -#### JSX - -* [Convert App, SymbolModal and WelcomeBox components to JSX.][pr-11] - [@wldcordeiro] -* [Convert editor footer and PaneToggle to jsx][pr-13] - [@darkwing] -* [Convert Editor component to JSX.][pr-18] - [@wldcordeiro] -* [Convert Breakpoints component to jsx][pr-19] - [@darkwing] -* [Update CloseButton to use jsx][pr-20] - [@darkwing] -* [Convert Svg() to JSX][pr-24] - [@darkwing] -* [Dropdown to JSX][pr-26] - [@ksaldana1] -* [Fix function modal][pr-28] - [@jasonLaster] -* [Tabs to jsx][pr-29] - [@amelzer] -* [Expressions to JSX][pr-32] - [@ksaldana1] -* [#3506 WhyPaused to JSX][pr-39] - [@ksaldana1] -* [Fix positioning of source search no results message][pr-40] - [@wldcordeiro] -* [Scopes to JSX][pr-41] - [@ksaldana1] -* [Convert Autocomplete, ResultList, and SearchInput to JSX][pr-43] - [@darkwing] -* [Convert SearchBar to JSX][pr-45] - [@wldcordeiro] -* [convert ProjectSearch/*.js files to JSX][pr-53] - [@aklt] -* [fix problems introduced in text search][pr-55] - [@aklt] -* [Convert CommandBar to JSX][pr-57] - [@darkwing] -* [Convert modal to jsx][pr-58] - [@nyrosmith] -* [Convert Popover, BrackArrow to JSX][pr-61] - [@darkwing] -* [remove FAQ about not using JSX][pr-67] - [@nyrosmith] -* [Convert Outline to JSX][pr-68] - [@zacck] - -#### Documentation - -* [Add Yulia and Victoria][pr-17] - [@jasonLaster] -* [Fix typo in client console message][pr-14] - [@darkwing] - - -#### Infrastructure - -* [Update webpack to version 3.3.0][pr-25] - [@zaggy] -* [Master next][pr-2] - [@jasonLaster] -* [updates 8-1][pr-3] - [@jasonLaster] -* [readme clarification][pr-4] - [@Anzumana] -* [Removed two unused strings from debugger.properties][pr-5] - [@Ronsho] -* [Bump Yarn][pr-16] - [@jasonLaster] -* [add 8-1 updates to the readme][pr-21] - [@jasonLaster] -* [handle promise rejection][pr-38] - [@zaggy] -* [Exclude integration tests in webpack build][pr-49] - [@jasonLaster] -* [Turn on features][pr-69] - [@jasonLaster] - - - -[pr-0]:https://github.com/devtools-html/debugger.html/pull/3396 -[pr-1]:https://github.com/devtools-html/debugger.html/pull/3522 -[pr-2]:https://github.com/devtools-html/debugger.html/pull/3518 -[pr-3]:https://github.com/devtools-html/debugger.html/pull/3521 -[pr-4]:https://github.com/devtools-html/debugger.html/pull/3533 -[pr-5]:https://github.com/devtools-html/debugger.html/pull/3526 -[pr-6]:https://github.com/devtools-html/debugger.html/pull/3536 -[pr-7]:https://github.com/devtools-html/debugger.html/pull/3545 -[pr-8]:https://github.com/devtools-html/debugger.html/pull/3546 -[pr-9]:https://github.com/devtools-html/debugger.html/pull/3285 -[pr-10]:https://github.com/devtools-html/debugger.html/pull/3543 -[pr-11]:https://github.com/devtools-html/debugger.html/pull/3507 -[pr-12]:https://github.com/devtools-html/debugger.html/pull/3565 -[pr-13]:https://github.com/devtools-html/debugger.html/pull/3560 -[pr-14]:https://github.com/devtools-html/debugger.html/pull/3558 -[pr-15]:https://github.com/devtools-html/debugger.html/pull/3548 -[pr-16]:https://github.com/devtools-html/debugger.html/pull/3566 -[pr-17]:https://github.com/devtools-html/debugger.html/pull/3572 -[pr-18]:https://github.com/devtools-html/debugger.html/pull/3554 -[pr-19]:https://github.com/devtools-html/debugger.html/pull/3553 -[pr-20]:https://github.com/devtools-html/debugger.html/pull/3567 -[pr-21]:https://github.com/devtools-html/debugger.html/pull/3551 -[pr-22]:https://github.com/devtools-html/debugger.html/pull/3561 -[pr-23]:https://github.com/devtools-html/debugger.html/pull/3569 -[pr-24]:https://github.com/devtools-html/debugger.html/pull/3573 -[pr-25]:https://github.com/devtools-html/debugger.html/pull/3441 -[pr-26]:https://github.com/devtools-html/debugger.html/pull/3580 -[pr-27]:https://github.com/devtools-html/debugger.html/pull/3578 -[pr-28]:https://github.com/devtools-html/debugger.html/pull/3585 -[pr-29]:https://github.com/devtools-html/debugger.html/pull/3571 -[pr-30]:https://github.com/devtools-html/debugger.html/pull/3505 -[pr-31]:https://github.com/devtools-html/debugger.html/pull/3530 -[pr-32]:https://github.com/devtools-html/debugger.html/pull/3587 -[pr-33]:https://github.com/devtools-html/debugger.html/pull/3586 -[pr-34]:https://github.com/devtools-html/debugger.html/pull/3588 -[pr-35]:https://github.com/devtools-html/debugger.html/pull/3592 -[pr-36]:https://github.com/devtools-html/debugger.html/pull/3606 -[pr-37]:https://github.com/devtools-html/debugger.html/pull/3609 -[pr-38]:https://github.com/devtools-html/debugger.html/pull/3602 -[pr-39]:https://github.com/devtools-html/debugger.html/pull/3579 -[pr-40]:https://github.com/devtools-html/debugger.html/pull/3616 -[pr-41]:https://github.com/devtools-html/debugger.html/pull/3611 -[pr-42]:https://github.com/devtools-html/debugger.html/pull/3605 -[pr-43]:https://github.com/devtools-html/debugger.html/pull/3582 -[pr-44]:https://github.com/devtools-html/debugger.html/pull/3607 -[pr-45]:https://github.com/devtools-html/debugger.html/pull/3617 -[pr-46]:https://github.com/devtools-html/debugger.html/pull/3624 -[pr-47]:https://github.com/devtools-html/debugger.html/pull/3608 -[pr-48]:https://github.com/devtools-html/debugger.html/pull/3628 -[pr-49]:https://github.com/devtools-html/debugger.html/pull/3627 -[pr-50]:https://github.com/devtools-html/debugger.html/pull/3629 -[pr-51]:https://github.com/devtools-html/debugger.html/pull/3620 -[pr-52]:https://github.com/devtools-html/debugger.html/pull/3635 -[pr-53]:https://github.com/devtools-html/debugger.html/pull/3636 -[pr-54]:https://github.com/devtools-html/debugger.html/pull/3637 -[pr-55]:https://github.com/devtools-html/debugger.html/pull/3640 -[pr-56]:https://github.com/devtools-html/debugger.html/pull/3644 -[pr-57]:https://github.com/devtools-html/debugger.html/pull/3614 -[pr-58]:https://github.com/devtools-html/debugger.html/pull/3649 -[pr-59]:https://github.com/devtools-html/debugger.html/pull/3659 -[pr-60]:https://github.com/devtools-html/debugger.html/pull/3661 -[pr-61]:https://github.com/devtools-html/debugger.html/pull/3615 -[pr-62]:https://github.com/devtools-html/debugger.html/pull/3639 -[pr-63]:https://github.com/devtools-html/debugger.html/pull/3647 -[pr-64]:https://github.com/devtools-html/debugger.html/pull/3622 -[pr-65]:https://github.com/devtools-html/debugger.html/pull/3656 -[pr-66]:https://github.com/devtools-html/debugger.html/pull/3642 -[pr-67]:https://github.com/devtools-html/debugger.html/pull/3654 -[pr-68]:https://github.com/devtools-html/debugger.html/pull/3658 -[pr-69]:https://github.com/devtools-html/debugger.html/pull/3657 -[pr-70]:https://github.com/devtools-html/debugger.html/pull/3653 - - -[@aklt]:http://github.com/aklt -[@frigus02]:http://github.com/frigus02 -[@jasonLaster]:http://github.com/jasonLaster -[@Anzumana]:http://github.com/Anzumana -[@Ronsho]:http://github.com/Ronsho -[@codehag]:http://github.com/codehag -[@wldcordeiro]:http://github.com/wldcordeiro -[@amelzer]:http://github.com/amelzer -[@darkwing]:http://github.com/darkwing -[@zaggy]:http://github.com/zaggy -[@ksaldana1]:http://github.com/ksaldana1 -[@bomsy]:http://github.com/bomsy -[@liorheber]:http://github.com/liorheber -[@yaelballa]:http://github.com/yaelballa -[@sagorika1996]:http://github.com/sagorika1996 -[@juliandescottes]:http://github.com/juliandescottes -[@nyrosmith]:http://github.com/nyrosmith -[@zacck]:http://github.com/zacck - -[breakpoints]: https://shipusercontent.com/880cfebebc04b2de7bb54e5d4946665a/Screen%20Shot%202017-08-15%20at%2011.39.28%20AM.png -[angular]: http://g.recordit.co/PkqpmCyRON.gif -[ember]: https://user-images.githubusercontent.com/1628866/28976512-6d0ec5a0-793e-11e7-8482-f324caf00f5d.png -[redux]: https://user-images.githubusercontent.com/12038627/28990794-ff018e1c-793d-11e7-9d53-74dd9d876a9d.png diff --git a/docs/updates/updates-8-22-2017.md b/docs/updates/updates-8-22-2017.md deleted file mode 100644 index 955f046ce3..0000000000 --- a/docs/updates/updates-8-22-2017.md +++ /dev/null @@ -1,70 +0,0 @@ -### August 22nd - -This week we finally got the first steps of some long awaited features merged, most notably Async stepping! Big thanks to -@jbhoosreddy! We had some great help on improving the development experience for windows users from @nyrosmith. Also this week we will finally be shipping -Outline View and Project search! :tada: - -Big thanks to: [@jasonLaster], [@nyrosmith], [@nchevobbe], [@MayankSrivastav], [@codehag], [@sagorika1996], [@gabrielluong], [@darkwing], [@rohanprasad], [@jbhoosreddy] - -#### Features - -Our biggest feature this week is the work on async/await stepping. You can now step over await methods without -being moved out of the scope. This is a great user experience improvement. - -* [add await stepping][pr-16] - [@jbhoosreddy] -* [Make nom script work cross platform][pr-17] - [@nyrosmith] -* [Allow sourcetree to parse files and folders with the same name][pr-10] - [@codehag] -* [Add ctrl+shift+f hint][pr-18] - [@nyrosmith] -* [Added scroll to outline view][pr-11] - [@sagorika1996] -* [Add Dojo icon to Call Stack][pr-13] - [@darkwing] -* [update project search test][pr-0] - [@jasonLaster] -* [Convert EventListeners to JSX][pr-3] - [@nyrosmith] -* [Use devtools-reps ObjectInspector][pr-6] - [@nchevobbe] -* [Removed pointer cursor for buttons][pr-9] - [@MayankSrivastav] -* [[Photon] Remove border-bottom from the last child of accordions (#3720)][pr-12] - [@gabrielluong] - -#### Infrastructure - -A couple of small infrastructure improvements - -* [add immutable][pr-1] - [@jasonLaster] -* [Fix immutable dep][pr-5] - [@jasonLaster] -* [update screenshot][pr-2] - [@jasonLaster] -* [Change Updates Readme sortorder][pr-4] - [@nyrosmith] - -#### Bugs -* [Fix two small project text search bugs][pr-7] - [@jasonLaster] -* [fix symbol modal spec][pr-8] - [@jasonLaster] -* [Fix height of text search result items][pr-14] - [@rohanprasad] -* [Fix horizontal scrolling][pr-15] - [@sagorika1996] - - -[pr-0]:https://github.com/devtools-html/debugger.html/pull/3684 -[pr-1]:https://github.com/devtools-html/debugger.html/pull/3674 -[pr-2]:https://github.com/devtools-html/debugger.html/pull/3676 -[pr-3]:https://github.com/devtools-html/debugger.html/pull/3675 -[pr-4]:https://github.com/devtools-html/debugger.html/pull/3680 -[pr-5]:https://github.com/devtools-html/debugger.html/pull/3690 -[pr-6]:https://github.com/devtools-html/debugger.html/pull/3556 -[pr-7]:https://github.com/devtools-html/debugger.html/pull/3688 -[pr-8]:https://github.com/devtools-html/debugger.html/pull/3692 -[pr-9]:https://github.com/devtools-html/debugger.html/pull/3686 -[pr-10]:https://github.com/devtools-html/debugger.html/pull/3563 -[pr-11]:https://github.com/devtools-html/debugger.html/pull/3712 -[pr-12]:https://github.com/devtools-html/debugger.html/pull/3721 -[pr-13]:https://github.com/devtools-html/debugger.html/pull/3726 -[pr-14]:https://github.com/devtools-html/debugger.html/pull/3724 -[pr-15]:https://github.com/devtools-html/debugger.html/pull/3723 -[pr-16]:https://github.com/devtools-html/debugger.html/pull/3727 -[pr-17]:https://github.com/devtools-html/debugger.html/pull/3711 -[pr-18]:https://github.com/devtools-html/debugger.html/pull/3718 -[@jasonLaster]:http://github.com/jasonLaster -[@nyrosmith]:http://github.com/nyrosmith -[@nchevobbe]:http://github.com/nchevobbe -[@MayankSrivastav]:http://github.com/MayankSrivastav -[@codehag]:http://github.com/codehag -[@sagorika1996]:http://github.com/sagorika1996 -[@gabrielluong]:http://github.com/gabrielluong -[@darkwing]:http://github.com/darkwing -[@rohanprasad]:http://github.com/rohanprasad -[@jbhoosreddy]:http://github.com/jbhoosreddy diff --git a/docs/updates/updates-8-29-2017.md b/docs/updates/updates-8-29-2017.md deleted file mode 100644 index b19e045af9..0000000000 --- a/docs/updates/updates-8-29-2017.md +++ /dev/null @@ -1,122 +0,0 @@ -### August 29 - -This week marks the completion of our JSX conversion. It was a community effort and we couldn’t have done it without everyone’s help. We also moved forward with async stepping and AST breakpoints. Improvements were made to our testing infrastructure. Finally, we have made some improvements to the preview startup display. Thanks to everyone who helped this week! [@jasonLaster], [@darkwing], [@rohanprasad], [@codehag], [@hughugsy], [@bomsy],[@wldcordeiro], [@juliandescottes], [@sharathnarayanph] - -#### Features - -We managed some progress on the Async stepping feature, and on AST breakpoints, as well as some great new contributor features such as improving our UI buttons with a hover state (thanks @rohanprasad!) and labels to help users find search functions (Thanks @hughugsy!) - -* [Add hover color to new-tab button][pr-2] - [@rohanprasad] :tada: new contributor! -* [Setting a condition should enable a breakpoint][pr-4] - [@sagorika1996] -* [Stop showing previews loading state][pr-5] - [@jasonLaster] -* [Stop showing when there's a text selection][pr-5] - [@jasonLaster] -* [Labels are aligned and keys are bold now][pr-15] - [@hughugsy] :tada: new contributor! -* [Switch to source loaded state][pr-28] - [@sharathnarayanph] -* [fix breakpoints offset issue, Remove breakpoint on click][pr-34] - [@bomsy] - -![](http://g.recordit.co/sxf6l3fIDV.gif) - -#### Async Stepping - -Async Stepping will let the debugger step over, and into async functions. It takes advantage of our babel client integration to figure out when we're paused at async functions and where we want to step to next. Congrats to Jaideep who has made tons of progress landing the underlying utils and command integrations. He's currently ironing out this rough edges with stepping, but it's getting close. - -* [Async Stepping][pr-33] - [@jbhoosreddy] -* [Async stepping test][pr-31] - [@jasonLaster] - -#### AST Breakpoints - -Yulia started working on AST Breakpoints, which will be a magical auto-correcting breakpoint feature. We currently pin breakpoints to original locations, so when the user changes another file, the breakpoint does not move. With AST Breakpoints we will pin the breakpoint to the function it is in, so changes to the file will no longer move the breakpoint! - -* [add AST breakpoint util][pr-27] - [@codehag] -* [add astbreakpoints flowtypes][pr-24] - [@codehag] - - -#### Bugs - -Our work on bugs was this week was partially about bugs infrastructure. @jasonLaster added a script to help debug intermittent bugs, and @juliandescottes added @flodolo to help us with translations - -* [Fix intermittent][pr-0] - [@jasonLaster] -* [add an intermittent finding script][pr-26] - [@jasonLaster] - -screen shot 2017-08-24 at 12 20 15 am - -* [Fix #3729 - Ensure 'Reveal in Tree' always works, even if source doesn't change][pr-1] - [@darkwing] -* [Do not save Expression values in prefs][pr-8] - [@jasonLaster] -* [update mochi to make browser_dbg optional][pr-9] - [@jasonLaster] -* [Fix 'copySource.accesskey' error when right-clicking][pr-13] - [@darkwing] -* [Issue #3795 - create CODEOWNERS file, assign @flodolo to debugger.pro…][pr-23] - [@juliandescottes] - -#### JSX conversion - -We have completed our move to JSX, huge thank you to @darkwing and @wldcordero for their hard work! - -* [Convert PrimaryPanes/index to JSX][pr-10] - [@darkwing] -* [Add React for CallSites JSX][pr-11] - [@darkwing] -* [Convert CallSites to JSX][pr-12] - [@darkwing] -* [Convert TextSearch completely to jsx][pr-14] - [@darkwing] -* [Convert SourcesTree to JSX][pr-16] - [@darkwing] -* [Convert SecondaryPanes/index to JSX][pr-17] - [@darkwing] -* [Transform ConditionalPanel to JSX][pr-18] - [@darkwing] -* [JSX Conversions for Frame components.][pr-19] - [@wldcordeiro] -* [Convert SVG icon usage to JSX][pr-21] - [@darkwing] -* [Convert ChromeScopes and PreviewFunction to JSX along with stories.][pr-25] - [@wldcordeiro] -* [Convert Breakpoints to JSX][pr-29] - [@darkwing] - - -#### Infrastructure - -We have improved our eslint config to automatically fix obvious errors that do not need human intervention, and to lint for the use of let and const. There have also been improvements to our mochitest runner - -* [Bugfix/readme rebased][pr-3] - [@codehag] -* [add prefer-const rule to eslint][pr-20] - [@codehag] -* [autofix simple eslint errors][pr-22] - [@codehag] -* [Issue #3794 - synchronize properties file cleanup from mozilla-centra…][pr-30] - [@juliandescottes] -* [capture mochi exit code][pr-32] - [@jasonLaster] -* [run mochitests w/ the mochi runner][pr-32] - [@jasonLaster] - -[pr-0]:https://github.com/devtools-html/debugger.html/pull/3763 -[pr-1]:https://github.com/devtools-html/debugger.html/pull/3760 -[pr-2]:https://github.com/devtools-html/debugger.html/pull/3741 -[pr-3]:https://github.com/devtools-html/debugger.html/pull/3762 -[pr-4]:https://github.com/devtools-html/debugger.html/pull/3765 -[pr-5]:https://github.com/devtools-html/debugger.html/pull/3749 -[pr-6]:https://github.com/devtools-html/debugger.html/pull/3747 -[pr-7]:https://github.com/devtools-html/debugger.html/pull/3716 -[pr-8]:https://github.com/devtools-html/debugger.html/pull/3759 -[pr-9]:https://github.com/devtools-html/debugger.html/pull/3744 -[pr-10]:https://github.com/devtools-html/debugger.html/pull/3773 -[pr-11]:https://github.com/devtools-html/debugger.html/pull/3774 -[pr-12]:https://github.com/devtools-html/debugger.html/pull/3772 -[pr-13]:https://github.com/devtools-html/debugger.html/pull/3775 -[pr-14]:https://github.com/devtools-html/debugger.html/pull/3786 -[pr-15]:https://github.com/devtools-html/debugger.html/pull/3779 -[pr-16]:https://github.com/devtools-html/debugger.html/pull/3780 -[pr-17]:https://github.com/devtools-html/debugger.html/pull/3781 -[pr-18]:https://github.com/devtools-html/debugger.html/pull/3776 -[pr-19]:https://github.com/devtools-html/debugger.html/pull/3785 -[pr-20]:https://github.com/devtools-html/debugger.html/pull/3783 -[pr-21]:https://github.com/devtools-html/debugger.html/pull/3791 -[pr-22]:https://github.com/devtools-html/debugger.html/pull/3784 -[pr-23]:https://github.com/devtools-html/debugger.html/pull/3797 -[pr-24]:https://github.com/devtools-html/debugger.html/pull/3805 -[pr-25]:https://github.com/devtools-html/debugger.html/pull/3793 -[pr-26]:https://github.com/devtools-html/debugger.html/pull/3770 -[pr-27]:https://github.com/devtools-html/debugger.html/pull/3753 -[pr-28]:https://github.com/devtools-html/debugger.html/pull/3740 -[pr-29]:https://github.com/devtools-html/debugger.html/pull/3788 -[pr-30]:https://github.com/devtools-html/debugger.html/pull/3796 -[pr-31]:https://github.com/devtools-html/debugger.html/pull/3743 -[pr-32]:https://github.com/devtools-html/debugger.html/pull/3768 -[pr-33]:https://github.com/devtools-html/debugger.html/pull/3242 -[pr-34]:https://github.com/devtools-html/debugger.html/pull/3748 -[@jasonLaster]:http://github.com/jasonLaster -[@darkwing]:http://github.com/darkwing -[@rohanprasad]:http://github.com/rohanprasad -[@codehag]:http://github.com/codehag -[@hughugsy]:http://github.com/hughugsy -[@wldcordeiro]:http://github.com/wldcordeiro -[@juliandescottes]:http://github.com/juliandescottes -[@sharathnarayanph]:http://github.com/sharathnarayanph -[@sagorika1996]:http://github.com/sagorika1996 -[@jbhoosreddy]:http://github.com/jbhoosreddy -[@bomsy]:http://github.com/bomsy diff --git a/docs/updates/updates-9-26-2017.md b/docs/updates/updates-9-26-2017.md deleted file mode 100644 index 4c4cb5c231..0000000000 --- a/docs/updates/updates-9-26-2017.md +++ /dev/null @@ -1,354 +0,0 @@ -### September 26th - -This is a summary of the past 3 weeks. So it will be a bit longer than usual (101 PRs) - -[@darkwing], [@gabrielluong], [@jasonLaster], [@bomsy], [@Marcool04], [@Fischer-L], [@nyrosmith], [@abhinav-koppula], [@oferpa], [@yurydelendik], [@elpddev], [@zacck], [@tromey], [@wldcordeiro], [@sarahlim], [@Anzumana], [@nchevobbe], [@inyigo], [@khal0988], [@James300], [@samuel-peers], [@danieltucunduva], [@GarethSharpe] - -#### UCOSP Students - -We're partnering with 5 college students this semester. The program kicked off this weekend with a code sprint and the group hit the ground running. Here is a list of their contributions so far. The plan is to focus on [features for frameworks][fff], which will be pretty amazing! - -* [Show webpack icon][pr-91] - [@James300] -* [Display 'Webpack' (project name) as Sources node][pr-99] - [@danieltucunduva] -* [Remove tab header search shortcut][pr-94] - [@danieltucunduva] -* [Filter out all .css, .png and .svg files from showing up in Sources tree][pr-97] - [@danieltucunduva] -* [Consistent tree highlighting][pr-95] - [@GarethSharpe] -* [Shortcuts modal-fixes][pr-96] - [@samuel-peers] -* [Shortcuts modal][pr-92] - [@samuel-peers] -* [Accessible collapse pane buttons][pr-85] - [@khal0988] -* [Simplify scope display names][pr-86] - [@James300] - -![][wp] -![][wp2] - -[fff]:https://docs.google.com/document/d/10X9h1YoQugUN_8rLHsBLs31U-veOCfLqFHoTE00Owlw/edit# -[wp]: https://user-images.githubusercontent.com/31376439/30783641-3ebad3a8-a114-11e7-9835-e24a34b4ba29.png - -[wp2]: https://user-images.githubusercontent.com/9325039/30763929-3d3cdee8-9fae-11e7-97de-afc6927889b2.png - - -#### UX/UI - -* [Show full editor context menu for blackboxed tab][pr-1] - [@darkwing] -* [Fix preview for falsey values][pr-17] - [@nyrosmith] -* [Show parameter signature within outline][pr-5] - [@darkwing] -* [Display info when there are no functions to show in Outline][pr-26] - [@nyrosmith] -* [change cursor][pr-30] - [@oferpa] -* [Update label case for tab and editor context menus][pr-33] - [@darkwing] -* [Fixup Tab CSS][pr-36] - [@jasonLaster] -* [Fix #4046 - Prevent scrollbars for watch expression items][pr-55] - [@darkwing] -* [Fix 4074 - Align tabs to the bottom of the editor header][pr-63] - [@darkwing] -* [Fix #4031 - Move source and outline tabs to the top of the left pane][pr-65] - [@darkwing] -* [Switch SearchBar and ChromeScopes Proptypes to flow props][pr-81] - [@inyigo] -* [Fix nits in ManagedTree][pr-0] - [@darkwing] - - -#### Shortcuts - -[@nyrosmith] added a few new mouse shortcuts, to make it easier for users to seamlessly interact with the debugger. - -* [Copy function][pr-42] - [@jasonLaster] -* [Alt click -> continue to here][pr-70] - [@nyrosmith] -* [WelcomeBox: make shortcuts clickable][pr-28] - [@nyrosmith] -* [Fix tier 3 OS keyboard shortcuts][pr-80] - [@jasonLaster] - - -#### Preview - -[@Fischer-L] did some great work making our preview more robust so that you can't hover on syntax. - -* [3824 - ignore =, <, >, +, -, *, / tokens][pr-16] - [@Fischer-L] -* [Disallow pipes][pr-18] - [@jasonLaster] - - -#### Outline View - -[@sarahlim] started working on showing React Components in the outline view. The first step was to add a class field to our function symbols. - -* [Parse the closest class for functions and properties][pr-60] - [@sarahlim] - -![][ov] - -#### Photon - -Gabriel and Victoria refreshed the debugger UI to be consistent with the new Firefox UI. It looks pretty great! - -* [Rename all instances of --theme-selection-background-semitransparent …][pr-2] - [@gabrielluong] -* [Use --theme-selection-background for the focused node in the managed …][pr-7] - [@gabrielluong] -* [[theme] Welcome box should use a --theme-toolbar-background in the li…][pr-11] - [@gabrielluong] -* [[themes] Update the sidebar and accordion colors for the dark theme (…][pr-8] - [@gabrielluong] -* [Us#3361 exception details in dark theme][pr-37] - [@elpddev] -* [Welcome box should have a --theme-body-background (#3917)][pr-10] - [@gabrielluong] - - -![][ph1] -![][ph2] - -#### Project Search - -Project Search tons to get a lot of love and is now much faster and more pleasing on the eyes! - -* [remove auto-focus on the search results][pr-12] - [@bomsy] -* [handle webpack schemes, add tests][pr-27] - [@bomsy] -* [Steal Atom's look and feel for the Search UI][pr-41] - [@zacck] -* [Fix initial search][pr-45] - [@jasonLaster] -* [Refactor render match][pr-66] - [@Anzumana] -* [Add 'No Results' state in ProjectSearch - Search in File][pr-22] - [@abhinav-koppula] -* [Fix #4002 - Prevent duel scrollbars in project search][pr-40] - [@darkwing] -* [fix project search flag][pr-57] - [@jasonLaster] - - -![][ps] - -#### Watch Expressions - -Watch Expressions are a power user feature for evaluating expressions when the debugger pauses and resumes. It turns out that, if you're also using another advanced feature (pause on exceptions), you can enter a really bad state if the expression throws an exception. - -We fixed this last week by wrapping expressions in a try catch. We're also doing a parse step to check for syntax errors. - -* [Make watch expressions safe][pr-78] - [@jasonLaster] -* [Pausing due to an errored watch expression][pr-62] - [@jasonLaster] -* [Expressions tweaks][pr-90] - [@jasonLaster] - - -#### Context Menu - -Context Menu was also improved, making it easier to see which context menu items are related to the same actions, which in turn makes it easier to use! - -* [Group the copy items in the edit context menu][pr-68] - [@darkwing] -* [Group Breakpoints Menu][pr-77] - [@jasonLaster] - -![][cm] - -#### Map Minified variables - -We're working on mapping minified variable names, so when you pause you can hover on variables and see the correct value. You'll also see the expanded variable names in scopes. - -* [Parse to extract all scopes and bindings.][pr-43] - [@yurydelendik] - -#### List Workers - -* [[WIP] List workers][pr-49] - [@nyrosmith] - -#### Accessibility - -Yura helped us add some [accessibility][acc] issues, which will help us improve our keyboard navigation and be more screen reader friendly. - - -[acc]: https://github.com/devtools-html/debugger.html/issues?q=is%3Aopen+is%3Aissue+label%3Aaccessibility - -#### Bugs - -We fixed a pretty terrible / funny bug where links in the debugger would navigate in the panel. Therefore replacing the debugger w/ that new page!!! - -* [fix hidden tabs click not showing the source][pr-9] - [@bomsy] -* [fix clearing source search][pr-24] - [@jasonLaster] -* [Ignore new identical sources][pr-52] - [@jasonLaster] -* [Open link][pr-74] - [@nchevobbe] -* [Fix wasm pref][pr-46] - [@jasonLaster] -* [fixed localization ids][pr-98] - [@samuel-peers] -* [Protect against a missing editor][pr-89] - [@jasonLaster] -* [fix issue where minified files without js extns do get detected][pr-93] - [@bomsy] - - -![](https://bugzilla.mozilla.org/attachment.cgi?id=8908747) - - -#### Breakpoints - -We're spending some time ironing out the rough edges of saved breakpoints. There are lots of cases where on reload we need to move breakpoints to the new correct location. Also, converting between original and generated locations should not cause a different location. - -* [Clear BPs][pr-29] - [@jasonLaster] -* [gracefully support bad bp cases][pr-35] - [@jasonLaster] -* [Support symmetric BPs][pr-39] - [@jasonLaster] -* [[WIP] Stepping: Continue to here][pr-21] - [@nyrosmith] - - -#### Infrastructure - -* [bump launchpad to 97][pr-14] - [@jasonLaster] -* [bump yarn][pr-31] - [@jasonLaster] -* [Add a wallaby config to the project.][pr-50] - [@wldcordeiro] -* [Issue Template][pr-51] - [@jasonLaster] -* [Tweak source-map prefs in prefs.js][pr-53] - [@tromey] -* [add travis][pr-56] - [@jasonLaster] -* [sync changes w/ mc][pr-59] - [@jasonLaster] -* [Extract mochi][pr-87] - [@jasonLaster] -* [Bump mochii][pr-100] - [@jasonLaster] -* [Backport mochitest from bug 952127][pr-83] - [@tromey] - - -#### Performance - -* [Use a source cache in parser worker.][pr-32] - [@yurydelendik] -* [add source search filtering][pr-38] - [@jasonLaster] - - -#### Testing - -* [Add back asm mochitest][pr-67] - [@jasonLaster] -* [Simple WebAssembly Source Maps mochitest.][pr-61] - [@yurydelendik] -* [test watch expressions w/ an active debuggee][pr-64] - [@jasonLaster] -* [correct text case][pr-88] - [@khal0988] - - -#### Docs - -* [document reducer best practices][pr-3] - [@jasonLaster] -* [q4 roadmap][pr-4] - [@jasonLaster] -* [Add Martin to the Core Team :wave:][pr-76] - [@jasonLaster] - - -#### Code Health - -* [remove unnecessary css][pr-23] - [@jasonLaster] -* [Remove unused CSS rules in Expressions.css][pr-13] - [@gabrielluong] -* [Replaced use of defer with new Promise, see https://bugzilla.mozilla.…][pr-15] - [@Marcool04] -* [[WIP] convert from feature flag to prefs system][pr-20] - [@nyrosmith] -* [Refactor match rendering][pr-6] - [@bomsy] -* [Add missing semicolon in prefs.js][pr-25] - [@darkwing] -* [prettier fixes][pr-34] - [@jasonLaster] -* [Fix linting warnings][pr-54] - [@darkwing] -* [Remove devtools.debugger.client-source-maps-enabled pref][pr-44] - [@tromey] -* [Upgrade CodeMirror][pr-69] - [@jasonLaster] -* [[WIP] To stop using displayNames in components.][pr-82] - [@zacck] -* [Update updateEventBreakpoints to use arrow function][pr-72] - [@darkwing] -* [Cleanup with ChromeScopes][pr-75] - [@darkwing] -* [Sourcetree redux][pr-71] - [@bomsy] -* [stop setting state in componentDidMount][pr-73] - [@bomsy] -* [move expanded to the constructor][pr-79] - [@bomsy] -* [Remove unwanted ~ file][pr-84] - [@darkwing] - - - - -[ov]:https://shipusercontent.com/faec4f7495ebe6488acfa0377ffb78bd/Screen%20Shot%202017-09-14%20at%203.14.10%20PM.png -[ph1]:https://shipusercontent.com/ae2ae636c2d51cecbc7e14e52f31a11e/Screen%20Shot%202017-09-26%20at%2010.06.31%20AM.png -[ph2]:https://shipusercontent.com/f9be713f8a77b649947960e45c54dc58/Screen%20Shot%202017-09-26%20at%2010.06.13%20AM.png -[ps]:https://user-images.githubusercontent.com/897731/29891886-f6916772-8dcc-11e7-9535-b6b7f3cea96c.png -[cm]:https://user-images.githubusercontent.com/254562/30609143-8fe40328-9d48-11e7-89d8-76b877014a87.png - -[pr-0]:https://github.com/devtools-html/debugger.html/pull/3905 -[pr-1]:https://github.com/devtools-html/debugger.html/pull/3900 -[pr-2]:https://github.com/devtools-html/debugger.html/pull/3915 -[pr-3]:https://github.com/devtools-html/debugger.html/pull/3874 -[pr-4]:https://github.com/devtools-html/debugger.html/pull/3908 -[pr-5]:https://github.com/devtools-html/debugger.html/pull/3902 -[pr-6]:https://github.com/devtools-html/debugger.html/pull/3918 -[pr-7]:https://github.com/devtools-html/debugger.html/pull/3921 -[pr-8]:https://github.com/devtools-html/debugger.html/pull/3912 -[pr-9]:https://github.com/devtools-html/debugger.html/pull/3913 -[pr-10]:https://github.com/devtools-html/debugger.html/pull/3919 -[pr-11]:https://github.com/devtools-html/debugger.html/pull/3923 -[pr-12]:https://github.com/devtools-html/debugger.html/pull/3941 -[pr-13]:https://github.com/devtools-html/debugger.html/pull/3940 -[pr-14]:https://github.com/devtools-html/debugger.html/pull/3932 -[pr-15]:https://github.com/devtools-html/debugger.html/pull/3952 -[pr-16]:https://github.com/devtools-html/debugger.html/pull/3962 -[pr-17]:https://github.com/devtools-html/debugger.html/pull/3960 -[pr-18]:https://github.com/devtools-html/debugger.html/pull/3967 -[pr-19]:https://github.com/devtools-html/debugger.html/pull/3930 -[pr-20]:https://github.com/devtools-html/debugger.html/pull/3961 -[pr-21]:https://github.com/devtools-html/debugger.html/pull/3964 -[pr-22]:https://github.com/devtools-html/debugger.html/pull/3973 -[pr-23]:https://github.com/devtools-html/debugger.html/pull/3979 -[pr-24]:https://github.com/devtools-html/debugger.html/pull/3934 -[pr-25]:https://github.com/devtools-html/debugger.html/pull/3994 -[pr-26]:https://github.com/devtools-html/debugger.html/pull/3959 -[pr-27]:https://github.com/devtools-html/debugger.html/pull/3916 -[pr-28]:https://github.com/devtools-html/debugger.html/pull/3963 -[pr-29]:https://github.com/devtools-html/debugger.html/pull/3981 -[pr-30]:https://github.com/devtools-html/debugger.html/pull/4000 -[pr-31]:https://github.com/devtools-html/debugger.html/pull/4007 -[pr-32]:https://github.com/devtools-html/debugger.html/pull/4008 -[pr-33]:https://github.com/devtools-html/debugger.html/pull/3993 -[pr-34]:https://github.com/devtools-html/debugger.html/pull/3998 -[pr-35]:https://github.com/devtools-html/debugger.html/pull/4006 -[pr-36]:https://github.com/devtools-html/debugger.html/pull/4026 -[pr-37]:https://github.com/devtools-html/debugger.html/pull/4001 -[pr-38]:https://github.com/devtools-html/debugger.html/pull/4003 -[pr-39]:https://github.com/devtools-html/debugger.html/pull/4005 -[pr-40]:https://github.com/devtools-html/debugger.html/pull/4015 -[pr-41]:https://github.com/devtools-html/debugger.html/pull/3823 -[pr-42]:https://github.com/devtools-html/debugger.html/pull/3970 -[pr-43]:https://github.com/devtools-html/debugger.html/pull/3852 -[pr-44]:https://github.com/devtools-html/debugger.html/pull/4028 -[pr-45]:https://github.com/devtools-html/debugger.html/pull/4016 -[pr-46]:https://github.com/devtools-html/debugger.html/pull/4038 -[pr-47]:https://github.com/devtools-html/debugger.html/pull/4014 -[pr-48]:https://github.com/devtools-html/debugger.html/pull/4027 -[pr-49]:https://github.com/devtools-html/debugger.html/pull/3856 -[pr-50]:https://github.com/devtools-html/debugger.html/pull/3613 -[pr-51]:https://github.com/devtools-html/debugger.html/pull/3948 -[pr-52]:https://github.com/devtools-html/debugger.html/pull/3951 -[pr-53]:https://github.com/devtools-html/debugger.html/pull/4039 -[pr-54]:https://github.com/devtools-html/debugger.html/pull/4030 -[pr-55]:https://github.com/devtools-html/debugger.html/pull/4048 -[pr-56]:https://github.com/devtools-html/debugger.html/pull/4052 -[pr-57]:https://github.com/devtools-html/debugger.html/pull/4042 -[pr-58]:https://github.com/devtools-html/debugger.html/pull/4054 -[pr-59]:https://github.com/devtools-html/debugger.html/pull/4060 -[pr-60]:https://github.com/devtools-html/debugger.html/pull/4077 -[pr-61]:https://github.com/devtools-html/debugger.html/pull/4036 -[pr-62]:https://github.com/devtools-html/debugger.html/pull/4072 -[pr-63]:https://github.com/devtools-html/debugger.html/pull/4082 -[pr-64]:https://github.com/devtools-html/debugger.html/pull/4066 -[pr-65]:https://github.com/devtools-html/debugger.html/pull/4079 -[pr-66]:https://github.com/devtools-html/debugger.html/pull/3931 -[pr-67]:https://github.com/devtools-html/debugger.html/pull/4037 -[pr-68]:https://github.com/devtools-html/debugger.html/pull/4084 -[pr-69]:https://github.com/devtools-html/debugger.html/pull/4089 -[pr-70]:https://github.com/devtools-html/debugger.html/pull/4090 -[pr-71]:https://github.com/devtools-html/debugger.html/pull/4010 -[pr-72]:https://github.com/devtools-html/debugger.html/pull/4099 -[pr-73]:https://github.com/devtools-html/debugger.html/pull/4103 -[pr-74]:https://github.com/devtools-html/debugger.html/pull/4086 -[pr-75]:https://github.com/devtools-html/debugger.html/pull/4097 -[pr-76]:https://github.com/devtools-html/debugger.html/pull/4095 -[pr-77]:https://github.com/devtools-html/debugger.html/pull/4093 -[pr-78]:https://github.com/devtools-html/debugger.html/pull/4107 -[pr-79]:https://github.com/devtools-html/debugger.html/pull/4105 -[pr-80]:https://github.com/devtools-html/debugger.html/pull/4102 -[pr-81]:https://github.com/devtools-html/debugger.html/pull/4092 -[pr-82]:https://github.com/devtools-html/debugger.html/pull/4101 -[pr-83]:https://github.com/devtools-html/debugger.html/pull/4120 -[pr-84]:https://github.com/devtools-html/debugger.html/pull/4134 -[pr-85]:https://github.com/devtools-html/debugger.html/pull/4128 -[pr-86]:https://github.com/devtools-html/debugger.html/pull/4125 -[pr-87]:https://github.com/devtools-html/debugger.html/pull/4118 -[pr-88]:https://github.com/devtools-html/debugger.html/pull/4126 -[pr-89]:https://github.com/devtools-html/debugger.html/pull/4123 -[pr-90]:https://github.com/devtools-html/debugger.html/pull/4116 -[pr-91]:https://github.com/devtools-html/debugger.html/pull/4129 -[pr-92]:https://github.com/devtools-html/debugger.html/pull/4142 -[pr-93]:https://github.com/devtools-html/debugger.html/pull/4091 -[pr-94]:https://github.com/devtools-html/debugger.html/pull/4133 -[pr-95]:https://github.com/devtools-html/debugger.html/pull/4132 -[pr-96]:https://github.com/devtools-html/debugger.html/pull/4130 -[pr-97]:https://github.com/devtools-html/debugger.html/pull/4145 -[pr-98]:https://github.com/devtools-html/debugger.html/pull/4149 -[pr-99]:https://github.com/devtools-html/debugger.html/pull/4150 -[pr-100]:https://github.com/devtools-html/debugger.html/pull/4147 -[@darkwing]:http://github.com/darkwing -[@gabrielluong]:http://github.com/gabrielluong -[@jasonLaster]:http://github.com/jasonLaster -[@bomsy]:http://github.com/bomsy -[@Marcool04]:http://github.com/Marcool04 -[@Fischer-L]:http://github.com/Fischer-L -[@nyrosmith]:http://github.com/nyrosmith -[@abhinav-koppula]:http://github.com/abhinav-koppula -[@oferpa]:http://github.com/oferpa -[@yurydelendik]:http://github.com/yurydelendik -[@elpddev]:http://github.com/elpddev -[@zacck]:http://github.com/zacck -[@tromey]:http://github.com/tromey -[@wldcordeiro]:http://github.com/wldcordeiro -[@sarahlim]:http://github.com/sarahlim -[@Anzumana]:http://github.com/Anzumana -[@nchevobbe]:http://github.com/nchevobbe -[@inyigo]:http://github.com/inyigo -[@khal0988]:http://github.com/khal0988 -[@James300]:http://github.com/James300 -[@samuel-peers]:http://github.com/samuel-peers -[@danieltucunduva]:http://github.com/danieltucunduva -[@GarethSharpe]:http://github.com/GarethSharpe diff --git a/docs/updates/updates-9-5-2017.md b/docs/updates/updates-9-5-2017.md deleted file mode 100644 index 08ba32bd54..0000000000 --- a/docs/updates/updates-9-5-2017.md +++ /dev/null @@ -1,179 +0,0 @@ -### September 5th - -This past week was one of the more impressive weeks in the project: - -* **AST Breakpoints** [@codehag] landed the final changes for finding a breakpoint ast location and setting an ast location when a breakpoint is created. We should be able to land AST Breakpoints this week! -* **Async Stepping** [@jbhoosreddy] landed the utilities for identifying async expressions, and the logical "next" statement to step to. Async Stepping will land in the next release. -* **WASM** We enabled wasm debugging in the new UI and it is now turned on in nightly. Debugging WASM source code in the native language (C, C++) is a blast. -* **Worker List** [@nyrosmith] added a new Workers right sidebar pane and populating the pane with debuggee workers. The next step is to add the about:debugging util for launching a new toolbox. -* **Mapping minified variables** [@yurydelendik] started working on mapping minified variables, which will show the the "original" variable name in the scopes pane, and enable preview, watch expressions and the console to work * with original expressions. -* **Project Search** [@bomsy] continued to polish project search. This week he fixed keyboard navigation of streaming results, and made result orders deterministic. -* **Syncing CSS** [@jasonLaster] removed the theme's CSS class namespace, which will make it easy to sync themes with m-c. -* **Accidental Breakpoints** [@jasonLaster] and [@codehag] fixed and uplifted a bug to 56, where the debugger created new breakpoints when the user changed original code and reloaded. -* **File Search** [@codehag] improved file search performance and fixed a bug where the debugger would crash on large files. -* **Empty Lines** [@darkwing] landed disabled empty lines where the debugger disables lines that do not have any executable code. -* **Photon** [@gabrielluong] started styling the debugger for the new photon design. It is looking great! -* **Welcome Box** [@pradeepgangwar] styled the welcome box and added some additional shortcuts. -* **Release** [@jasonLaster] released a new version of the debugger to nightly, which included the last month of work. We'll start getting feedback on it now that it's in nightly. - -[@codehag], [@darkwing], [@rohanprasad], [@pradeepgangwar], [@jasonLaster], [@nyrosmith], [@bomsy], [@gabrielluong], [@yurydelendik], [@wldcordeiro] - -#### UX/UI: - -* [Make Expression line height equal to likewise labels][pr-10] - [@darkwing] -* [Fix #3860 - Disable the Copy context menu item if nothing is selected][pr-13] - [@darkwing] -* [Accordion header should have a height of 24px (#3868)][pr-14] - [@gabrielluong] -* [Fix Margin around view-source tab][pr-2a] - [@pradeepgangwar] -* [Add breakpoint or toggle enabled state on Shift+Click][pr-7a] - [@nyrosmith] -* [Make the source tab hover effects feel more responsive][pr-2] - [@darkwing] -* [Style Welcome Box][pr-4] - [@pradeepgangwar] -* [add marko syntax highlighting][pr-8] - [@nyrosmith] -* [Source header and Command bar should use the toolbar background color…][pr-12] - [@gabrielluong] -* [Make case consistent for search sources][pr-15] - [@darkwing] - -#### Project Search - -Project Search is one of those features, which is hard to get just right. This week, [@bomsy] fixed an issue which was breaking keyboard navigation when search results were streaming in. The basic problem was every time the results were updated, the UI needed to re-focus on the first item, this is easier said than done! We also added a lot of polish to the UI, [@zacck] is working on making sure our focus, hover, and select states are all correct! - -* [Fix project search test](https://github.com/devtools-html/debugger.html/pull/3888) [@jasonLaster] -* [[WIP] Stealing Atom look and feel for the Search UI](https://github.com/devtools-html/debugger.html/pull/3823) [@zacck] -* [Fix focus issues][pr-11] - [@bomsy] - -![project] - -#### Empty lines: - -We think the debugger is a great place to teach users about the semantics of JS. This is why, we've started marking lines of code that are in scope when paused. It is also, why we wanted to start disabling lines of code that are not executable. Another nice benefit is that the debugger will no longer try and guess where to "slide" a breakpoint to, which can create some weird interactions. - -Huge thanks to [@darkwing] who added the parser utilities for finding empty lines, the reducer for storing empty lines, and the empty lines component. - -* [Display empty lines UI][pr-11a] - [@darkwing] -* [Add empty line utils][pr-5a] - [@darkwing] -* [Add Empty Lines to AST reducer][pr-3a] - [@darkwing] - - -![empty] - -#### Workers panel: - -Firefox has great support for web workers and service workers. For instance, a worker can have a child worker. Unfortunately, the Firefox debugger has lagged behind Chrome's. We hope to catch up. This past week [@nyrosmith] started working on a workers right sidebar panel which will show a list of workers that can be debugged. The old UI had this, and we know it is important to surface. We hope to make it possible to debug workers in the same toolbox in Q1 of 2018. - -* [Show workers][pr-7] - [@nyrosmith] -* [List workers](https://github.com/devtools-html/debugger.html/pull/3856) [@nyrosmith] - -#### AST breakpoints: - -AST breakpoints is perhaps the biggest upgrade to breakpoints that since source mapped breakpoints :) In July, we started checking the breakpoint's generated location on reload to see if it had moved away from the original location. If it had, we would remove it and create a new one. With AST breakpoints, we are now saving the breakpoints closest function and offset so that on reload we can see if the function moved, and if so move the breakpoint as well. We hope to add more AST specificity in the future so that breakpoints can be pinned to variable declarators, call expressions, and many other AST locations! - -* [add astLocation to addBreakpoint][pr-1] - [@codehag] -* [clear ast tree on navigate][pr-5] - [@codehag] -* [Add astBreakpoint to syncBreakpoint](https://github.com/devtools-html/debugger.html/pull/3851) [@codehag] -* [refactor loadSourceText][pr-0] - [@codehag] - -![ast] - -#### Mapping Minified Variables - -One of the biggest issues with debugging with source maps, is that while you get line-to-line mapping, you don't get variable-to-variable mapping. This means, that you can add a breakpoint and step easily with breakpoints, but you can't easily see or preview the variables when paused. There are three specific bugs here: the variables in the scope pane are from the "generated" scope and hovering on a variable or evaluating in the console is broken. - -We hope to solve these problems by mapping generated and original variables. And we're starting with the minified case. This week, [@yurydelendik] created the initial PRs for doing the mapping and got a proof of concept of preview and scopes working! - -* [Parse to extract all scopes and bindings.](https://github.com/devtools-html/debugger.html/pull/3852) [@yurydelendik] -* [Show mapped names in scopes bindings](https://github.com/devtools-html/debugger.html/pull/3817) [@yurydelendik] - -![map] - -#### Async Stepping: - -Async stepping is a subtle feature, where when the user pauses on an async expression they expect to be able to step over it and land on the next statement. - -This means that when the debugger pauses it needs to figure out if it is at an await expression and then where the next statement is. - -```js -async function updateUser(name, email) { - const realName = formatName(name) - const updatedUser = await updateUserAPI(realName); - return updatedUser; -} -``` - -[@jbhoosreddy] landed this feature last week. It's - -* [Update async stepping][pr-9] - [@jbhoosreddy] - -![async] - -#### Bugs - - -* [Caches line formatter type; resizes gutter after the change.][pr-4a] - [@yurydelendik] -* [Searching across very long lines](https://github.com/devtools-html/debugger.html/pull/3885) [@codehag] -* [Remove old generated breakpoints][pr-1a] - [@jasonLaster] - - -#### Code Health - -* [[flow] [WIP] update to v 53](https://github.com/devtools-html/debugger.html/pull/3710) [@arthur801031] -* [Add a wallaby config to the project.](https://github.com/devtools-html/debugger.html/pull/3613) [@wldcordeiro] - -#### Documentation - -* [document reducer best practices](https://github.com/devtools-html/debugger.html/pull/3874) [@jasonLaster] - -#### Infrastructure: - -* [bump pretty fast][pr-9a] - [@jasonLaster] -* [Modify the path to point to the local Jest installation.][pr-10a] - [@wldcordeiro] -* [Fix linting issues inside Storybook due to missing prop types][pr-6a] - [@darkwing] -* [Fix Editor spec proptypes][pr-8a] - [@nyrosmith] -* [Save source-search query in store][pr-3] - [@rohanprasad] -* [bump prettier based on updates][pr-6] - [@jasonLaster] - - -[map]:https://user-images.githubusercontent.com/254562/30071416-9cae4b00-9234-11e7-8cb9-6b13cc88ac48.png -[empty]:https://pbs.twimg.com/media/DIhLgM3XUAInt16.png:large -[ast]:https://user-images.githubusercontent.com/26968615/30036478-fa69727a-9170-11e7-880c-2ab85d8187d6.gif -[project]:https://user-images.githubusercontent.com/897731/29890029-79a3b068-8dc6-11e7-897e-dae8e5eeaf13.png -[async]:http://g.recordit.co/27QqcxkTTP.gif - -[pr-0a]:https://github.com/devtools-html/debugger.html/pull/3812 -[pr-1a]:https://github.com/devtools-html/debugger.html/pull/3790 -[pr-2a]:https://github.com/devtools-html/debugger.html/pull/3810 -[pr-3a]:https://github.com/devtools-html/debugger.html/pull/3818 -[pr-4a]:https://github.com/devtools-html/debugger.html/pull/3764 -[pr-5a]:https://github.com/devtools-html/debugger.html/pull/3811 -[pr-6a]:https://github.com/devtools-html/debugger.html/pull/3825 -[pr-7a]:https://github.com/devtools-html/debugger.html/pull/3808 -[pr-8a]:https://github.com/devtools-html/debugger.html/pull/3839 -[pr-9a]:https://github.com/devtools-html/debugger.html/pull/3836 -[pr-10a]:https://github.com/devtools-html/debugger.html/pull/3843 -[pr-11a]:https://github.com/devtools-html/debugger.html/pull/3821 -[pr-0]:https://github.com/devtools-html/debugger.html/pull/3853 -[pr-1]:https://github.com/devtools-html/debugger.html/pull/3848 -[pr-2]:https://github.com/devtools-html/debugger.html/pull/3845 -[pr-3]:https://github.com/devtools-html/debugger.html/pull/3809 -[pr-4]:https://github.com/devtools-html/debugger.html/pull/3835 -[pr-5]:https://github.com/devtools-html/debugger.html/pull/3849 -[pr-6]:https://github.com/devtools-html/debugger.html/pull/3850 -[pr-7]:https://github.com/devtools-html/debugger.html/pull/3806 -[pr-8]:https://github.com/devtools-html/debugger.html/pull/3722 -[pr-9]:https://github.com/devtools-html/debugger.html/pull/3840 -[pr-10]:https://github.com/devtools-html/debugger.html/pull/3859 -[pr-11]:https://github.com/devtools-html/debugger.html/pull/3841 -[pr-12]:https://github.com/devtools-html/debugger.html/pull/3867 -[pr-13]:https://github.com/devtools-html/debugger.html/pull/3861 -[pr-14]:https://github.com/devtools-html/debugger.html/pull/3870 -[pr-15]:https://github.com/devtools-html/debugger.html/pull/3857 -[@codehag]:http://github.com/codehag -[@darkwing]:http://github.com/darkwing -[@rohanprasad]:http://github.com/rohanprasad -[@zacck]:http://github.com/zacck -[@pradeepgangwar]:http://github.com/pradeepgangwar -[@jasonLaster]:http://github.com/jasonLaster -[@nyrosmith]:http://github.com/nyrosmith -[@bomsy]:http://github.com/bomsy -[@gabrielluong]:http://github.com/gabrielluong -[@yurydelendik]:http://github.com/yurydelendik -[@wldcordeiro]:http://github.com/wldcordeiro -[@arthur801031]:http://github.com/wldcordeiro -[@jbhoosreddy]:http://github.com/jbhoosreddy diff --git a/docs/updates/when-the-world-stops.md b/docs/updates/when-the-world-stops.md deleted file mode 100644 index 84337fe970..0000000000 --- a/docs/updates/when-the-world-stops.md +++ /dev/null @@ -1,214 +0,0 @@ -### When the world stops - - -One of the most interesting questions is what happens when the debugger stops? Basically, what happens when the world pauses? - -Here is a quick run-through that will help give you some context so that you can dig in and answer your own questions. - -There are three characters in the story: the client, server, and engine. -When the page pauses, the engine pauses the page, tells the server, -and the server tells the client. - -This post is going to focus on the work the server does when the page pauses. The code included has been simplified a bit to remove some of the incidental complexity. - ---- - -The [server][script.js] has several page lifecycle hooks that are called when -something happens. `onDebuggerStatement` is one of these hooks! - -```js -onDebuggerStatement: function (frame) { - return this._pauseAndRespond(frame, { type: "debuggerStatement" }); -} -``` - -The [server][script.js]'s main job is to tell the client that the page is paused. -You can see below, that the `_paused` function is building a `packet`, this packet -has all of the data the client needs to inform the programmer about the pause state. -The `_paused` function also does one other interesting thing here as well. When the function is triggered, it registers all of the relevant actors in the story and adds them to various "actor pools". -The server registers all of the actors so that if the client has any follow up questions, -the server will know who to follow up with. - -The server is like a detective, it wants to know who all the major witnesses are! - - -```js -_paused: function (frame) { - this._state = "paused"; - - - this._pausePool = new ActorPool(this.conn); - this.conn.addActorPool(this._pausePool); - - // Give children of the pause pool a quick link back to the - // thread... - this._pausePool.threadActor = this; - this._pauseActor = new PauseActor(this._pausePool); - this._pausePool.addActor(this._pauseActor); - - // Update the list of frames. - let poppedFrames = this._updateFrames(); - - // Send off the paused packet and spin an event loop. - let packet = { from: this.actorID, - type: "paused", - actor: this._pauseActor.actorID }; - if (frame) { - packet.frame = this._createFrameActor(frame).form(); - } - - if (poppedFrames) { - packet.poppedFrames = poppedFrames; - } - - return packet; -} -``` - -Lets continue digging into how the server builds the pause packet for the client. -We already know quite a bit already. We know the `type` is "paused", it has a `from` and an `actor` field which is used as a return address :). We also know that there are two types of frame fields: `frame` and `poppedFrames`. Lets focus on the `frame` field because it is simpler. - -We get the `frame` packet data by asking for the frame actor's `form`. -The form function is defined in the Frame actor [class][frame.js]. -Lets slow down and take a look at the data the frame actor puts in its form. -It's fascinating! - -It starts with the `actor` and `type` field for record keeping. It then sets up `callee`, `environment`, `arguments`, `where`, and `oldest` fields. Oldest, what's that? :) It's neat to think of a frame as potentially a function frame, at which point we care about the callee and arguments data. -That's cool, but where's the good stuff? Where are the variables and scope data kept? All of that is kept in an environment actor and fetched through a similar `form` function. Lets keep on digging! - -```js -form: function () { - let threadActor = this.threadActor; - let form = { actor: this.actorID, - type: this.frame.type }; - - if (this.frame.type === "call") { - form.callee = createValueGrip(this.frame.callee); - } - - if (this.frame.environment) { - form.environment = threadActor.createEnvironmentActor(this.frame.environment).form() - } - - form.arguments = this._args(); - - let location = this.threadActor.sources.getFrameLocation(this.frame); - form.where = { - source: location.generatedSourceActor.form(), - line: location.generatedLine, - column: location.generatedColumn - }; - - if (!this.frame.older) { - form.oldest = true; - } - - return form; -} -``` - -Alright, we've arrived at a frame environment and we're asking it for its form. -Environment is just a fancy word for a scope, so all that's happening is the frame is saying, "yo scope, whatcha got for me"? Our main goal here is to see where the variables are documented. -So lets walk through what it's doing. First the environment notes its type. Then it does some sneaky recursion to inquire into its parent scope's data. Let's not get nerd sniped! Then it gets object and function data, remember we could be in a function or object scope, right?!?! -Then we get bindings... Bindings are exactly what we want here. A good way to think of bindings are: variables are bound to scopes in JS, ergo variables are in the bindings thing! Lets go a bit deeper! - -```js -form: function () { - let form = { actor: this.actorID }; - - // What is this environment's type? - if (this.obj.type == "declarative") { - form.type = this.obj.callee ? "function" : "block"; - } else { - form.type = this.obj.type; - } - - // Does this environment have a parent? - if (this.obj.parent) { - form.parent = this.threadActor.createEnvironmentActor(this.obj.parent).form(); - } - - // Does this environment reflect the properties of an object as variables? - if (this.obj.type == "object" || this.obj.type == "with") { - form.object = createValueGrip(this.obj.object); - } - - // Is this the environment created for a function call? - if (this.obj.callee) { - form.function = createValueGrip(this.obj.callee); - } - - // Shall we list this environment's bindings? - if (this.obj.type == "declarative") { - form.bindings = this.bindings(); - } - - return form; -} -``` - -We've landed in the Environment's bindings function and it's glorious. We're -finally looking for variables, and not just variables but Arguments as well. It -doesn't get much better than this! I think the coolest thing about this code is -we've reached a local floor for the server where we can go no deeper. -At the very bottom of this descent, script, frame, environment (scope), bindings, -we have a call for the variable `getVariable(name)`. This is a [call][var] that makes the leap back into the engine and out of the server! - -```js -bindings: function () { - let bindings = { arguments: [], variables: {} }; - - const parameterNames = this.obj.callee ? this.obj.callee.parameterNames : []; - - for (let name of parameterNames) { - let arg = {}; - let value = this.obj.getVariable(name); - - let desc = { - value: value, - configurable: false, - enumerable: true - }; - - let descForm = { - enumerable: true, - configurable: desc.configurable - }; - descForm.value = createValueGrip(desc.value); - arg[name] = descForm; - bindings.arguments.push(arg); - } - - for (let name of this.obj.names()) { - let value = this.obj.getVariable(name); - - let desc = { - value: value, - configurable: false, - enumerable: true - }; - - let descForm = { - enumerable: true, - configurable: desc.configurable - }; - - descForm.value = createValueGrip(desc.value); - bindings.variables[name] = descForm; - } - - return bindings; -} -``` - ---- - -We have gone as deep as we care to for the time being. We started at a humble lifecycle hook `onDebuggerStatement` and ended with a call for variable data in a scope. I hope you enjoyed this story and are curious to do your own digging. We're always available in [slack] and would love to hear from you. - - -[Debugger.cpp]:https://github.com/mozilla/gecko-dev/blob/master/js/src/vm/Debugger.cpp -[script.js]:https://github.com/mozilla/gecko-dev/blob/master/devtools/server/actors/script.js -[frame.js]:https://github.com/mozilla/gecko-dev/blob/master/devtools/server/actors/frame.js -[environment.js]:https://github.com/mozilla/gecko-dev/blob/master/devtools/server/actors/environment.js -[var]:http://searchfox.org/mozilla-central/source/js/src/vm/Debugger.cpp#11528 -[slack]:https://devtools-html.slack.com diff --git a/docs/videos.md b/docs/videos.md deleted file mode 100644 index 1a56da557b..0000000000 --- a/docs/videos.md +++ /dev/null @@ -1,37 +0,0 @@ -## Debugger Screencasts - -**Goals:** - -* Help newcomers get started -* Give a visual flavor of how the Debugger works -* Show how some of the React + Redux concepts come together to create the Debugger -* Introduce you to the team. The Debugger is a fun project and we don't take ourselves too seriously! - -### Getting Started -This [video](https://youtu.be/9bQ0a3pnBZk) walks through the [getting setup][getting-setup] steps: - -1. starting the [dev server][dev-server] -2. starting chrome and firefox -3. launching the debugger -4. and then jumps in to [debugger inception][first-activity] because it's too cool not to! - - - -### Event Listeners part 1 - -This [video](https://youtu.be/VOwn1U7K2qg) gives an overview of [event listeners][event-listeners], a new feature we're working on that lists the event handlers on the page. After that, we jump in and make each event listener link to where the handler is defined. - - - - -### Event Listeners part 2 - -This [video](https://youtu.be/NoMryxkNPk0) adds additional functionality to event listeners, such as a checkbox that enables and disables breakpoints for that listener and a close button that removes the breakpoint entirely. Along the way, fetch breakpoints, refactor the component, and squash lots of bugs as they emerge. - - - - -[getting-setup]:./getting-setup.md -[dev-server]:https://github.com/devtools-html/devtools-core/blob/master/packages/devtools-launchpad/README.md#dev-server -[first-activity]:./debugging-the-debugger.md -[event-listeners]:http://github.com/devtools-html/debugger.html/issues/1232 diff --git a/flow-typed/debugger-html.js b/flow-typed/debugger-html.js deleted file mode 100644 index c4ce164d08..0000000000 --- a/flow-typed/debugger-html.js +++ /dev/null @@ -1,288 +0,0 @@ -// @flow - -declare module "debugger-html" { - /** - * Breakpoint ID - * - * @memberof types - * @static - */ - declare type BreakpointId = string; - - /** - * Source ID - * - * @memberof types - * @static - */ - declare type SourceId = string; - - /** - * Actor ID - * - * @memberof types - * @static - */ - declare type ActorId = string; - - /** - * Source File Location - * - * @memberof types - * @static - */ - declare type Location = { - sourceId: SourceId, - line: number, - column: ?number, - sourceUrl?: string - }; - - declare type PendingLocation = { - line: number, - column: ?number, - sourceUrl?: string - }; - - declare type ASTLocation = { - name: ?string, - column: ?number, - line: number - }; - - /** - * Breakpoint - * - * @memberof types - * @static - */ - declare type Breakpoint = { - id: BreakpointId, - location: Location, - astLocation: ?ASTLocation, - generatedLocation: Location, - loading: boolean, - disabled: boolean, - hidden: boolean, - text: string, - condition: ?string - }; - - /** - * Breakpoint Result is the return from an add/modify Breakpoint request - * - * @memberof types - * @static - */ - declare type BreakpointResult = { - id: ActorId, - actualLocation: Location - }; - - /** - * PendingBreakpoint - * - * @memberof types - * @static - */ - declare type PendingBreakpoint = { - location: PendingLocation, - astLocaton: ASTLocation, - generatedLocation: PendingLocation, - loading: boolean, - disabled: boolean, - text: string, - condition: ?string - }; - - /** - * Frame ID - * - * @memberof types - * @static - */ - declare type FrameId = string; - - /** - * Frame - * @memberof types - * @static - */ - declare type Frame = { - id: FrameId, - displayName: string, - location: Location, - generatedLocation: Location, - source?: Source, - scope: Scope, - // FIXME Define this type more clearly - this: Object, - framework?: string - }; - - /** - * ContextMenuItem - * - * @memberof types - * @static - */ - declare type ContextMenuItem = { - id: string, - label: string, - accesskey: string, - disabled: boolean, - click: Function - }; - - /** - * why - * @memberof types - * @static - */ - declare type Why = { - type: string - }; - - /** - * Why is the Debugger Paused? - * This is the generic state handling the reason the debugger is paused. - * Reasons are usually related to "breakpoint" or "debuggerStatement" - * and should eventually be specified here as an enum. For now we will - * just offer it as a string. - * @memberof types - * @static - */ - declare type WhyPaused = { - type: string - }; - - declare type LoadedObject = { - objectId: string, - parentId: string, - name: string, - value: any - }; - - /** - * Pause - * @memberof types - * @static - */ - declare type Pause = { - frames: Frame[], - why: Why, - loadedObjects?: LoadedObject[] - }; - /** - * Expression - * @memberof types - * @static - */ - declare type Expression = { - input: string, - value: Object, - from: string - }; - - /** - * Grip - * @memberof types - * @static - */ - declare type Grip = { - actor: string, - class: string, - extensible: boolean, - frozen: boolean, - isGlobal: boolean, - ownPropertyLength: number, - preview: { - kind: string, - url: string - }, - sealed: boolean, - type: string - }; - - /** - * Source - * - * @memberof types - * @static - */ - declare type Source = { - id: SourceId, - url: string, - sourceMapURL?: string, - isBlackBoxed: boolean, - isPrettyPrinted: boolean, - isWasm: boolean, - text?: string, - contentType?: string, - error?: string, - loadedState: "unloaded" | "loading" | "loaded" - }; - - /** - * SourceScope - * @memberof types - * @static - */ - declare type SourceScope = { - type: string, - start: Location, - end: Location, - bindings: { - [name: string]: Location[] - } - }; - - /* - * MappedScopeBindings - * @memberof types - * @static - */ - declare type MappedScopeBindings = { - type: string, - bindings: { - [originalName: string]: string - } - }; - - /** - * Script - * This describes scripts which are sent to the debug server to be eval'd - * @memberof types - * @static - * FIXME: This needs a real type definition - */ - declare type Script = any; - - /** - * Scope - * @memberof types - * @static - */ - declare type Scope = { - actor: ActorId, - parent: ?Scope, - bindings: { - // FIXME Define these types more clearly - arguments: Array, - variables: Object - }, - sourceBindings?: { - [originalName: string]: string - }, - object: Object, - function: { - actor: ActorId, - class: string, - displayName: string, - location: Location, - // FIXME Define this type more clearly - parameterNames: Array - }, - type: string - }; -} diff --git a/mocha-runner.html b/mocha-runner.html deleted file mode 100644 index 36367530b2..0000000000 --- a/mocha-runner.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - Mocha Tests - - - -
- - - - - - - - - - - - diff --git a/package.json b/package.json deleted file mode 100644 index 60ccf2f831..0000000000 --- a/package.json +++ /dev/null @@ -1,179 +0,0 @@ -{ - "name": "debugger.html", - "version": "0.6.0", - "license": "MPL-2.0", - "repository": { - "url": "git://github.com/devtools-html/debugger.html.git", - "type": "git" - }, - "bugs": { - "url": "https://github.com/devtools-html/debugger.html/issues" - }, - "homepage": "https://github.com/devtools-html/debugger.html#readme", - "engineStrict": true, - "engines": { - "node": ">=6.9.0" - }, - "scripts": { - "start": "node bin/dev-server", - "start-app": "TARGET=application node bin/dev-server", - "flow": "flow", - "eslint-check": - "eslint --print-config .eslintrc.js | eslint-config-prettier-check", - "prettier": "node bin/prettier.js", - "license-check": "devtools-license-check", - "links": "ls -l node_modules/ | grep ^l || echo 'no linked packages'", - "lint": "run-p lint-css lint-js lint-md", - "lint-css": "stylelint \"src/components/**/*.css\"", - "lint-js": "eslint *.js \"src/**/*.js\" --fix", - "lint-md": - "remark -u devtools-linters/markdown/preset -qf *.md src configs docs", - "lint-fix": "yarn lint-js -- --fix", - "mochi": - "mochii --mc ./firefox --default-test-path devtools/client/debugger/new", - "mochid": "yarn mochi -- --jsdebugger --", - "mochir": "yarn mochi -- --repeat 10 --", - "mochih": "yarn mochi -- --setenv MOZ_HEADLESS=1 --", - "test": "jest", - "test:watch": "jest --watch", - "test-coverage": "yarn test -- --coverage", - "test-all": "yarn test; yarn lint; yarn flow", - "firefox": - "start-firefox --start --location https://devtools-html.github.io/debugger-examples/", - "chrome": - "start-chrome --location https://devtools-html.github.io/debugger-examples/", - "copy-assets": "node bin/copy-assets --symlink", - "copy-assets-watch": "node bin/copy-assets --watch --symlink", - "build-docs": - "documentation build --format html --sort-order alpha --shallow --document-exported --output docs/reference/ src/types.js src/utils/ src/reducers/ src/actions/ src/test/mochitest/head.js", - "flow-coverage": - "flow-coverage-report --threshold 50 -i 'src/actions/*.js' -i 'src/reducers/*.js' -i 'src/utils/*.js' -i 'src/components/*.js' -i 'src/components/**/*.js' -t html -t text", - "flow-utils": - "flow-coverage-report -i 'src/utils/*.js' -i 'src/utils/**/*.js' -t text", - "flow-redux": - "flow-coverage-report -i 'src/reducers/*.js' -i 'src/actions/*.js' -t text", - "flow-react": "flow-coverage-report -i 'src/components/**/*.js' -t text", - "storybook": "start-storybook -p 6006", - "snapshot": "NODE_ENV='development' build-storybook && percy-storybook", - "postcheckout": "node bin/post-checkout.js", - "postmerge": "node bin/post-merge.js", - "postrewrite": "node bin/post-rewrite.js", - "precommit": "lint-staged", - "prepush": "run-p lint test flow", - "nom": "node bin/nom", - "build-storybook": "build-storybook" - }, - "dependencies": { - "babel-preset-env": "^1.6.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "codemirror": "^5.28.0", - "devtools-components": "^0.0.2", - "devtools-launchpad": "^0.0.100", - "devtools-linters": "^0.0.3", - "devtools-map-bindings": "^0.2.0", - "devtools-reps": "^0.12.3", - "devtools-source-editor": "0.0.6", - "devtools-source-map": "^0.14.2", - "devtools-splitter": "^0.0.3", - "devtools-utils": "^0.0.9", - "fuzzaldrin-plus": "^0.4.1", - "immutable": "^3.7.6", - "lodash": "^4.17.4", - "lodash.kebabcase": "^4.1.1", - "md5": "^2.2.1", - "parse-script-tags": "^0.1.1", - "pretty-fast": "^0.2.2", - "prop-types": "^15.6.0", - "react": "^15.6.2", - "react-dom": "^15.6.2", - "react-immutable-proptypes": "^2.1.0", - "react-inlinesvg": "^0.6.2", - "react-redux": "^5.0.6", - "react-transition-group": "^2.2.0", - "redux-saga": "^0.15.4", - "reselect": "^3.0.1", - "svg-inline-react": "^1.0.2", - "wasmparser": "^0.4.10" - }, - "files": ["src", "assets"], - "greenkeeper": { - "ignore": ["react", "react-dom", "react-redux", "redux", "codemirror"] - }, - "main": "src/main.js", - "author": "Jason Laster ", - "devDependencies": { - "@percy-io/react-percy-storybook": "^1.0.2", - "@storybook/react": "^3.2.5", - "babel-plugin-syntax-trailing-function-commas": "^6.22.0", - "babel-plugin-transform-es2015-modules-commonjs": "^6.26.0", - "babel-preset-react": "^6.24.1", - "devtools-license-check": "^0.5.0", - "documentation": "^5.2.1", - "enzyme": "^2.9.1", - "eslint": "^4.2.0", - "eslint-config-prettier": "^2.3.0", - "eslint-plugin-babel": "^4.1.2", - "eslint-plugin-flowtype": "^2.36.0", - "eslint-plugin-mozilla": "^0.4.4", - "eslint-plugin-prettier": "^2.3.1", - "eslint-plugin-react": "^7.2.1", - "expect.js": "^0.3.1", - "flow-bin": "^0.52.0", - "glob": "^7.0.3", - "husky": "^0.14.2", - "jest": "^20.0.4", - "jest-cli": "^20.0.4", - "jest-junit-reporter": "^1.0.1", - "jest-localstorage-mock": "^1.1.1", - "jest-serializer-babel-ast": "^0.0.5", - "lint-staged": "^4.0.1", - "mochii": "^0.0.8", - "mock-require": "^2.0.2", - "node-emoji": "^1.8.1", - "npm-run-all": "^4.0.2", - "prettier": "^1.6.1", - "react-addons-perf": "^15.4.2", - "react-test-renderer": "15.6.2", - "remark-cli": "^4.0.0", - "remark-lint": "^6.0.1", - "remark-lint-list-item-bullet-indent": "^1.0.1", - "remark-lint-list-item-indent": "^1.0.1", - "remark-lint-no-shortcut-reference-image": "^1.0.1", - "remark-lint-no-shortcut-reference-link": "^1.0.2", - "remark-lint-no-table-indentation": "^1.0.0", - "remark-lint-no-unused-definitions": "^1.0.1", - "remark-lint-ordered-list-marker-style": "^1.0.1", - "remark-lint-table-cell-padding": "^1.0.0", - "remark-lint-table-pipes": "^1.0.0", - "remark-preset-lint-recommended": "^3.0.0", - "remark-validate-links": "^6.1.0", - "rimraf": "^2.6.1", - "single-line-log": "^1.1.2", - "stylelint": "^8.0.0", - "webpack": "^3.5.5", - "webpack-visualizer-plugin": "^0.1.11", - "workerjs": "github:jasonLaster/workerjs" - }, - "lint-staged": { - "*.js": ["prettier", "git add"], - "src/*.js": ["prettier", "git add"], - "src/*/*.js": ["prettier", "git add"], - "src/*/!(mochitest)**/*.js": ["prettier", "git add"], - "src/*/!(mochitest)*/**/*.js": ["prettier", "git add"] - }, - "jest": { - "rootDir": "src", - "testMatch": ["**/tests/**/*.js"], - "testPathIgnorePatterns": ["/node_modules/", "/helpers/", "/fixtures/"], - "transformIgnorePatterns": ["node_modules/(?!devtools-)"], - "setupFiles": ["/test/tests-setup.js", "jest-localstorage-mock"], - "snapshotSerializers": ["jest-serializer-babel-ast"], - "setupTestFrameworkScriptFile": "/test/tests-framework.js", - "moduleNameMapper": { - "\\.css$": "/test/__mocks__/styleMock.js", - "\\.svg$": "/test/__mocks__/svgMock.js" - } - } -} diff --git a/postcss.config.js b/postcss.config.js deleted file mode 100644 index 07eb080289..0000000000 --- a/postcss.config.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - plugins: [require("postcss-bidirection"), require("autoprefixer")] -}; diff --git a/src/actions/ast.js b/src/actions/ast.js deleted file mode 100644 index 3e8be32692..0000000000 --- a/src/actions/ast.js +++ /dev/null @@ -1,215 +0,0 @@ -// @flow - -import { - getSource, - hasSymbols, - getSelectedLocation, - getSelectedSource, - getSelectedFrame, - getPreview -} from "../selectors"; - -import { ensureParserHasSourceText } from "./sources"; - -import { PROMISE } from "../utils/redux/middleware/promise"; -import { - getScopes, - getSymbols, - getEmptyLines, - getOutOfScopeLocations -} from "../workers/parser"; - -import { isGeneratedId } from "devtools-source-map"; -import { replaceOriginalVariableName } from "devtools-map-bindings/src/utils"; - -import type { SourceId } from "debugger-html"; -import type { ThunkArgs } from "./types"; -import type { AstLocation } from "../workers/parser"; - -/** - * Gets information about original variable names from the source map - * and replaces all posible generated names. - */ -async function getSourcemapedExpression( - { sourceMaps }, - generatedLocation: Location, - expression: string -): Promise { - const astScopes = await getScopes(generatedLocation); - - const generatedScopes = await sourceMaps.getLocationScopes( - generatedLocation, - astScopes - ); - - if (!generatedScopes) { - return expression; - } - - return replaceOriginalVariableName(expression, generatedScopes); -} - -export function setSymbols(sourceId: SourceId) { - return async ({ dispatch, getState }: ThunkArgs) => { - const sourceRecord = getSource(getState(), sourceId); - if (!sourceRecord) { - return; - } - - const source = sourceRecord.toJS(); - if (!source.text || hasSymbols(getState(), source)) { - return; - } - - const symbols = await getSymbols(source); - - dispatch({ - type: "SET_SYMBOLS", - source, - symbols - }); - }; -} - -export function setEmptyLines(sourceId: SourceId) { - return async ({ dispatch, getState }: ThunkArgs) => { - const sourceRecord = getSource(getState(), sourceId); - if (!sourceRecord) { - return; - } - - const source = sourceRecord.toJS(); - if (!source.text) { - return; - } - - const emptyLines = await getEmptyLines(source); - - dispatch({ - type: "SET_EMPTY_LINES", - source, - emptyLines - }); - }; -} - -export function setOutOfScopeLocations() { - return async ({ dispatch, getState }: ThunkArgs) => { - const location = getSelectedLocation(getState()); - if (!location) { - return; - } - - const source = getSource(getState(), location.sourceId); - - if (!location.line || !source) { - return dispatch({ - type: "OUT_OF_SCOPE_LOCATIONS", - locations: null - }); - } - - const locations = await getOutOfScopeLocations(source.toJS(), location); - - return dispatch({ - type: "OUT_OF_SCOPE_LOCATIONS", - locations - }); - }; -} - -export function clearPreview() { - return ({ dispatch, getState, client }: ThunkArgs) => { - const currentSelection = getPreview(getState()); - if (!currentSelection) { - return; - } - - return dispatch({ - type: "CLEAR_SELECTION" - }); - }; -} - -function findBestMatch(symbols, tokenPos, token) { - const { memberExpressions, identifiers } = symbols; - const { line, column } = tokenPos; - return identifiers.concat(memberExpressions).reduce((found, expression) => { - const overlaps = - expression.location.start.line == line && - expression.location.start.column <= column && - expression.location.end.column >= column; - - if (overlaps) { - return expression; - } - - return found; - }, {}); -} - -export function setPreview( - token: string, - tokenPos: AstLocation, - cursorPos: any -) { - return async ({ dispatch, getState, client, sourceMaps }: ThunkArgs) => { - const currentSelection = getPreview(getState()); - if (currentSelection && currentSelection.updating) { - return; - } - - await dispatch({ - type: "SET_PREVIEW", - [PROMISE]: (async function() { - const source = getSelectedSource(getState()); - const _symbols = await getSymbols(source.toJS()); - - const found = findBestMatch(_symbols, tokenPos, token); - if (!found) { - return; - } - - let { expression, location } = found; - - if (!expression) { - return; - } - - const sourceId = source.get("id"); - if (location && !isGeneratedId(sourceId)) { - const generatedLocation = await sourceMaps.getGeneratedLocation( - { ...location.start, sourceId }, - source.toJS() - ); - - const generatedSourceId = generatedLocation.sourceId; - await dispatch(ensureParserHasSourceText(generatedSourceId)); - - expression = await getSourcemapedExpression( - { dispatch, sourceMaps }, - generatedLocation, - expression - ); - } - - const selectedFrame = getSelectedFrame(getState()); - const { result } = await client.evaluate(expression, { - frameId: selectedFrame.id - }); - - if (result === undefined) { - return; - } - - return { - expression, - result, - location, - tokenPos, - cursorPos - }; - })() - }); - }; -} diff --git a/src/actions/breakpoints.js b/src/actions/breakpoints.js deleted file mode 100644 index e288209ad7..0000000000 --- a/src/actions/breakpoints.js +++ /dev/null @@ -1,385 +0,0 @@ -// @flow -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/** - * Redux actions for breakpoints - * @module actions/breakpoints - */ - -import { PROMISE } from "../utils/redux/middleware/promise"; -import { - getBreakpoint, - getBreakpoints, - getSelectedSource, - getBreakpointAtLocation -} from "../selectors"; -import { createBreakpoint, assertBreakpoint } from "../utils/breakpoint"; -import addBreakpointPromise from "./breakpoints/addBreakpoint"; -import remapLocations from "./breakpoints/remapLocations"; - -// this will need to be changed so that addCLientBreakpoint is removed -import { syncClientBreakpoint } from "./breakpoints/syncBreakpoint"; - -import type { SourceId } from "debugger-html"; -import type { ThunkArgs } from "./types"; -import type { PendingBreakpoint, Location } from "../types"; -import type { BreakpointsMap } from "../reducers/types"; - -type addBreakpointOptions = { - condition?: string, - hidden?: boolean -}; - -/** - * Syncing a breakpoint add breakpoint information that is stored, and - * contact the server for more data. - * - * @memberof actions/breakpoints - * @static - * @param {String} $1.sourceId String value - * @param {PendingBreakpoint} $1.location PendingBreakpoint value - */ -export function syncBreakpoint( - sourceId: SourceId, - pendingBreakpoint: PendingBreakpoint -) { - return async ({ dispatch, getState, client, sourceMaps }: ThunkArgs) => { - const { breakpoint, previousLocation } = await syncClientBreakpoint( - getState, - client, - sourceMaps, - sourceId, - pendingBreakpoint - ); - - return dispatch({ - type: "SYNC_BREAKPOINT", - breakpoint, - previousLocation - }); - }; -} - -/** - * Add a new breakpoint - * - * @memberof actions/breakpoints - * @static - * @param {String} $1.condition Conditional breakpoint condition value - * @param {Boolean} $1.disabled Disable value for breakpoint value - */ - -export function addBreakpoint( - location: Location, - { condition, hidden }: addBreakpointOptions = {} -) { - const breakpoint = createBreakpoint(location, { condition, hidden }); - return ({ dispatch, getState, sourceMaps, client }: ThunkArgs) => { - const action = { type: "ADD_BREAKPOINT", breakpoint }; - const promise = addBreakpointPromise(getState, client, sourceMaps, action); - return dispatch({ ...action, [PROMISE]: promise }); - }; -} - -/** - * Add a new hidden breakpoint - * - * @memberOf actions/breakpoints - * @param location - * @return {function(ThunkArgs)} - */ -export function addHiddenBreakpoint(location: Location) { - return ({ dispatch }: ThunkArgs) => { - return dispatch(addBreakpoint(location, { hidden: true })); - }; -} - -/** - * Remove a single breakpoint - * - * @memberof actions/breakpoints - * @static - */ -export function removeBreakpoint(location: Location) { - return ({ dispatch, getState, client }: ThunkArgs) => { - const bp = getBreakpoint(getState(), location); - if (!bp || bp.loading) { - return; - } - - // If the breakpoint is already disabled, we don't need to communicate - // with the server. We just need to dispatch an action - // simulating a successful server request - if (bp.disabled) { - return dispatch({ - type: "REMOVE_BREAKPOINT", - breakpoint: bp, - status: "done" - }); - } - - return dispatch({ - type: "REMOVE_BREAKPOINT", - breakpoint: bp, - [PROMISE]: client.removeBreakpoint(bp.generatedLocation) - }); - }; -} - -/** - * Enabling a breakpoint - * will reuse the existing breakpoint information that is stored. - * - * @memberof actions/breakpoints - * @static - * @param {Location} $1.location Location value - */ -export function enableBreakpoint(location: Location) { - return async ({ dispatch, getState, client, sourceMaps }: ThunkArgs) => { - const breakpoint = getBreakpoint(getState(), location); - if (!breakpoint || breakpoint.loading) { - return; - } - - const action = { type: "ENABLE_BREAKPOINT", breakpoint }; - const promise = addBreakpointPromise(getState, client, sourceMaps, action); - return dispatch({ - type: "ENABLE_BREAKPOINT", - breakpoint, - [PROMISE]: promise - }); - }; -} - -/** - * Disable a single breakpoint - * - * @memberof actions/breakpoints - * @static - */ -export function disableBreakpoint(location: Location) { - return async ({ dispatch, getState, client }: ThunkArgs) => { - const bp = getBreakpoint(getState(), location); - - if (!bp || bp.loading) { - return; - } - - await client.removeBreakpoint(bp.generatedLocation); - const newBreakpoint = { ...bp, disabled: true }; - - return dispatch({ - type: "DISABLE_BREAKPOINT", - breakpoint: newBreakpoint - }); - }; -} - -/** - * Toggle All Breakpoints - * - * @memberof actions/breakpoints - * @static - */ -export function toggleAllBreakpoints(shouldDisableBreakpoints: boolean) { - return async ({ dispatch, getState }: ThunkArgs) => { - const breakpoints = getBreakpoints(getState()); - for (const [, breakpoint] of breakpoints) { - if (shouldDisableBreakpoints) { - await dispatch(disableBreakpoint(breakpoint.location)); - } else { - await dispatch(enableBreakpoint(breakpoint.location)); - } - } - }; -} - -/** - * Toggle Breakpoints - * - * @memberof actions/breakpoints - * @static - */ -export function toggleBreakpoints( - shouldDisableBreakpoints: boolean, - breakpoints: BreakpointsMap -) { - return async ({ dispatch }: ThunkArgs) => { - for (const [, breakpoint] of breakpoints) { - if (shouldDisableBreakpoints) { - await dispatch(disableBreakpoint(breakpoint.location)); - } else { - await dispatch(enableBreakpoint(breakpoint.location)); - } - } - }; -} - -/** - * Removes all breakpoints - * - * @memberof actions/breakpoints - * @static - */ -export function removeAllBreakpoints() { - return async ({ dispatch, getState }: ThunkArgs) => { - const breakpoints = getBreakpoints(getState()); - for (const [, breakpoint] of breakpoints) { - await dispatch(removeBreakpoint(breakpoint.location)); - } - }; -} - -/** - * Removes breakpoints - * - * @memberof actions/breakpoints - * @static - */ -export function removeBreakpoints(breakpoints: BreakpointsMap) { - return async ({ dispatch }: ThunkArgs) => { - for (const [, breakpoint] of breakpoints) { - await dispatch(removeBreakpoint(breakpoint.location)); - } - }; -} - -export function remapBreakpoints(sourceId: string) { - return async ({ dispatch, getState, sourceMaps }: ThunkArgs) => { - const breakpoints = getBreakpoints(getState()); - const newBreakpoints = await remapLocations( - breakpoints, - sourceId, - sourceMaps - ); - - return dispatch({ - type: "REMAP_BREAKPOINTS", - breakpoints: newBreakpoints - }); - }; -} - -/** - * Update the condition of a breakpoint. - * - * @throws {Error} "not implemented" - * @memberof actions/breakpoints - * @static - * @param {Location} location - * @see DebuggerController.Breakpoints.addBreakpoint - * @param {string} condition - * The condition to set on the breakpoint - * @param {Boolean} $1.disabled Disable value for breakpoint value - */ -export function setBreakpointCondition( - location: Location, - { condition }: addBreakpointOptions = {} -) { - return async ({ dispatch, getState, client, sourceMaps }: ThunkArgs) => { - const bp = getBreakpoint(getState(), location); - if (!bp) { - return dispatch(addBreakpoint(location, { condition })); - } - - if (bp.loading) { - return; - } - - if (bp.disabled) { - await dispatch(enableBreakpoint(location)); - bp.disabled = !bp.disabled; - } - - await client.setBreakpointCondition( - bp.id, - location, - condition, - sourceMaps.isOriginalId(bp.location.sourceId) - ); - - const newBreakpoint = { ...bp, condition }; - - assertBreakpoint(newBreakpoint); - - return dispatch({ - type: "SET_BREAKPOINT_CONDITION", - breakpoint: newBreakpoint - }); - }; -} - -export function toggleBreakpoint(line: number, column?: number) { - return ({ dispatch, getState, client, sourceMaps }: ThunkArgs) => { - const selectedSource = getSelectedSource(getState()); - const bp = getBreakpointAtLocation(getState(), { line, column }); - - if (bp && bp.loading) { - return; - } - - if (bp) { - // NOTE: it's possible the breakpoint has slid to a column - return dispatch( - removeBreakpoint({ - sourceId: bp.location.sourceId, - sourceUrl: bp.location.sourceUrl, - line: bp.location.line, - column: column || bp.location.column - }) - ); - } - - return dispatch( - addBreakpoint({ - sourceId: selectedSource.get("id"), - sourceUrl: selectedSource.get("url"), - line: line, - column: column - }) - ); - }; -} - -export function addOrToggleDisabledBreakpoint(line: number, column?: number) { - return ({ dispatch, getState, client, sourceMaps }: ThunkArgs) => { - const selectedSource = getSelectedSource(getState()); - const bp = getBreakpointAtLocation(getState(), { line, column }); - - if (bp && bp.loading) { - return; - } - - if (bp) { - // NOTE: it's possible the breakpoint has slid to a column - return dispatch( - toggleDisabledBreakpoint(line, column || bp.location.column) - ); - } - - return dispatch( - addBreakpoint({ - sourceId: selectedSource.get("id"), - sourceUrl: selectedSource.get("url"), - line: line, - column: column - }) - ); - }; -} - -export function toggleDisabledBreakpoint(line: number, column?: number) { - return ({ dispatch, getState, client, sourceMaps }: ThunkArgs) => { - const bp = getBreakpointAtLocation(getState(), { line, column }); - if (!bp || bp.loading) { - return; - } - - if (!bp.disabled) { - return dispatch(disableBreakpoint(bp.location)); - } - return dispatch(enableBreakpoint(bp.location)); - }; -} diff --git a/src/actions/breakpoints/addBreakpoint.js b/src/actions/breakpoints/addBreakpoint.js deleted file mode 100644 index 2dfbb5c2b0..0000000000 --- a/src/actions/breakpoints/addBreakpoint.js +++ /dev/null @@ -1,73 +0,0 @@ -import { - locationMoved, - breakpointExists, - assertBreakpoint, - getASTLocation, - assertLocation -} from "../../utils/breakpoint"; -import { getSource } from "../../selectors"; -import { getGeneratedLocation } from "../../utils/source-maps"; - -export default async function addBreakpoint( - getState, - client, - sourceMaps, - { breakpoint } -) { - const state = getState(); - - const source = getSource(state, breakpoint.location.sourceId); - const sourceRecord = source.toJS(); - const location = { ...breakpoint.location, sourceUrl: source.get("url") }; - const generatedLocation = await getGeneratedLocation( - state, - sourceRecord, - location, - sourceMaps - ); - - assertLocation(location); - assertLocation(generatedLocation); - - if (breakpointExists(state, location)) { - const newBreakpoint = { ...breakpoint, location, generatedLocation }; - assertBreakpoint(newBreakpoint); - return { breakpoint: newBreakpoint }; - } - - const { id, hitCount, actualLocation } = await client.setBreakpoint( - generatedLocation, - breakpoint.condition, - sourceMaps.isOriginalId(location.sourceId) - ); - - const newGeneratedLocation = actualLocation || generatedLocation; - const newLocation = await sourceMaps.getOriginalLocation( - newGeneratedLocation - ); - - const astLocation = await getASTLocation(sourceRecord, location); - - const newBreakpoint = { - id, - disabled: false, - hidden: breakpoint.hidden, - loading: false, - condition: breakpoint.condition, - location: newLocation, - astLocation, - hitCount, - generatedLocation: newGeneratedLocation - }; - - assertBreakpoint(newBreakpoint); - - const previousLocation = locationMoved(location, newLocation) - ? location - : null; - - return { - breakpoint: newBreakpoint, - previousLocation - }; -} diff --git a/src/actions/breakpoints/remapLocations.js b/src/actions/breakpoints/remapLocations.js deleted file mode 100644 index 1a142cbf6f..0000000000 --- a/src/actions/breakpoints/remapLocations.js +++ /dev/null @@ -1,11 +0,0 @@ -export default function remapLocations(breakpoints, sourceId, sourceMaps) { - const sourceBreakpoints = breakpoints.map(async breakpoint => { - if (breakpoint.location.sourceId !== sourceId) { - return breakpoint; - } - const location = await sourceMaps.getOriginalLocation(breakpoint.location); - return { ...breakpoint, location }; - }); - - return Promise.all(sourceBreakpoints.valueSeq()); -} diff --git a/src/actions/breakpoints/syncBreakpoint.js b/src/actions/breakpoints/syncBreakpoint.js deleted file mode 100644 index b00fc773b9..0000000000 --- a/src/actions/breakpoints/syncBreakpoint.js +++ /dev/null @@ -1,124 +0,0 @@ -import { - locationMoved, - createBreakpoint, - assertBreakpoint, - assertPendingBreakpoint, - findScopeByName -} from "../../utils/breakpoint"; - -import { getGeneratedLocation } from "../../utils/source-maps"; -import { originalToGeneratedId } from "devtools-source-map"; -import { getSource } from "../../selectors"; - -async function makeScopedLocation({ name, offset }, location, source) { - const scope = await findScopeByName(source, name); - // fallback onto the location line, if the scope is not found - // note: we may at some point want to delete the breakpoint if the scope - // disappears - const line = scope ? scope.location.start.line + offset.line : location.line; - return { - line, - column: location.column, - sourceUrl: source.url, - sourceId: source.id - }; -} - -function createSyncData( - pendingBreakpoint, - location, - generatedLocation, - previousLocation = null -) { - const overrides = { ...pendingBreakpoint, generatedLocation }; - const breakpoint = createBreakpoint(location, overrides); - - assertBreakpoint(breakpoint); - return { breakpoint, previousLocation }; -} - -// we have three forms of syncing: disabled syncing, existing server syncing -// and adding a new breakpoint -export async function syncClientBreakpoint( - getState, - client, - sourceMaps, - sourceId, - pendingBreakpoint: PendingBreakpoint -) { - assertPendingBreakpoint(pendingBreakpoint); - - const source = getSource(getState(), sourceId).toJS(); - const generatedSourceId = sourceMaps.isOriginalId(sourceId) - ? originalToGeneratedId(sourceId) - : sourceId; - - const { location, astLocation } = pendingBreakpoint; - const previousLocation = { ...location, sourceId }; - - const scopedLocation = await makeScopedLocation( - astLocation, - previousLocation, - source - ); - - const scopedGeneratedLocation = await getGeneratedLocation( - getState(), - source, - scopedLocation, - sourceMaps - ); - - // this is the generatedLocation of the pending breakpoint, with - // the source id updated to reflect the new connection - const generatedLocation = { - ...pendingBreakpoint.generatedLocation, - sourceId: generatedSourceId - }; - - const isSameLocation = !locationMoved( - generatedLocation, - scopedGeneratedLocation - ); - - const existingClient = client.getBreakpointByLocation(generatedLocation); - - /** ******* CASE 1: No server change ***********/ - // early return if breakpoint is disabled or we are in the sameLocation - // send update only to redux - if (pendingBreakpoint.disabled || (existingClient && isSameLocation)) { - return createSyncData( - pendingBreakpoint, - scopedLocation, - scopedGeneratedLocation - ); - } - - // clear server breakpoints if they exist and we have moved - if (existingClient) { - await client.removeBreakpoint(generatedLocation); - } - - /** ******* Case 2: Add New Breakpoint ***********/ - // If we are not disabled, set the breakpoint on the server and get - // that info so we can set it on our breakpoints. - const clientBreakpoint = await client.setBreakpoint( - scopedGeneratedLocation, - pendingBreakpoint.condition, - sourceMaps.isOriginalId(sourceId) - ); - - // the breakpoint might have slid server side, so we want to get the location - // based on the server's return value - const newGeneratedLocation = clientBreakpoint.actualLocation; - const newLocation = await sourceMaps.getOriginalLocation( - newGeneratedLocation - ); - - return createSyncData( - pendingBreakpoint, - newLocation, - newGeneratedLocation, - previousLocation - ); -} diff --git a/src/actions/breakpoints/tests/__snapshots__/syncing.js.snap b/src/actions/breakpoints/tests/__snapshots__/syncing.js.snap deleted file mode 100644 index ae0f557aad..0000000000 --- a/src/actions/breakpoints/tests/__snapshots__/syncing.js.snap +++ /dev/null @@ -1,122 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`loading the debugger loads the initial breakpoint state 1`] = ` -Object { - "breakpoint": Object { - "astLocation": Object { - "name": undefined, - "offset": Object { - "line": 3, - }, - }, - "condition": null, - "disabled": false, - "generatedLocation": Object { - "column": undefined, - "line": 3, - "sourceId": "gen.js", - "sourceUrl": "http://localhost:8000/gen.js", - }, - "hidden": false, - "location": Object { - "column": undefined, - "line": 3, - "sourceId": "magic.js", - "sourceUrl": "http://localhost:8000/examples/magic.js", - }, - }, - "previousLocation": null, -} -`; - -exports[`loading the debugger loads the initial breakpoint state with a changed file 1`] = ` -Object { - "breakpoint": Object { - "astLocation": Object { - "name": undefined, - "offset": Object { - "line": 3, - }, - }, - "condition": null, - "disabled": false, - "generatedLocation": Object { - "column": undefined, - "line": 3, - "sourceId": "gen.js", - "sourceUrl": "http://localhost:8000/gen.js", - }, - "hidden": false, - "location": Object { - "column": undefined, - "line": 12, - "sourceId": "magic.js", - "sourceUrl": "http://localhost:8000/examples/magic.js", - }, - }, - "previousLocation": null, -} -`; - -exports[`reloading debuggee syncs with unchanged source with an existing BP 1`] = ` -Object { - "breakpoint": Object { - "astLocation": Object { - "name": undefined, - "offset": Object { - "line": 3, - }, - }, - "condition": null, - "disabled": false, - "generatedLocation": Object { - "column": undefined, - "line": 3, - "sourceId": "gen.js", - "sourceUrl": "http://localhost:8000/gen.js", - }, - "hidden": false, - "location": Object { - "column": undefined, - "line": 3, - "sourceId": "magic.js", - "sourceUrl": "http://localhost:8000/examples/magic.js", - }, - }, - "previousLocation": null, -} -`; - -exports[`reloading debuggee updates a corresponding breakpoint for a changed source 1`] = ` -Object { - "breakpoint": Object { - "astLocation": Object { - "name": undefined, - "offset": Object { - "line": 3, - }, - }, - "condition": null, - "disabled": false, - "generatedLocation": Object { - "column": undefined, - "line": 5, - "sourceId": "gen.js", - "sourceUrl": "http://localhost:8000/gen.js", - }, - "hidden": false, - "location": Object { - "column": undefined, - "line": 3, - "sourceId": "magic.js", - "sourceUrl": "http://localhost:8000/magic.js", - }, - }, - "previousLocation": Object { - "column": undefined, - "line": 3, - "sourceId": "magic.js", - "sourceUrl": "http://localhost:8000/magic.js", - }, -} -`; diff --git a/src/actions/breakpoints/tests/syncing.js b/src/actions/breakpoints/tests/syncing.js deleted file mode 100644 index 5e0795af0f..0000000000 --- a/src/actions/breakpoints/tests/syncing.js +++ /dev/null @@ -1,238 +0,0 @@ -jest.mock("../../../utils/source-maps", () => ({ - getGeneratedLocation: jest.fn() -})); -import { getGeneratedLocation } from "../../../utils/source-maps"; - -jest.mock("../../../utils/prefs", () => ({ - prefs: { - expressions: [], - pendingBreakpoints: {} - }, - clear: jest.fn() -})); - -import { - createStore, - selectors, - actions, - makeSource -} from "../../../utils/test-head"; - -import { makeLocationId } from "../../../utils/breakpoint"; - -jest.mock("../../../utils/breakpoint/astBreakpointLocation", () => ({ - findScopeByName: jest.fn(), - getASTLocation: jest.fn() -})); - -// eslint-disable-next-line -import { findScopeByName } from "../../../utils/breakpoint/astBreakpointLocation"; - -import { syncClientBreakpoint } from "../../breakpoints/syncBreakpoint.js"; - -function setBreakpoint(location, condition) { - const actualLocation = Object.assign({}, location, { - line: location.line - }); - - return Promise.resolve({ - id: makeLocationId(location), - actualLocation, - condition - }); -} - -const clientBreakpoint = { - actualLocation: { - sourceUrl: "http://localhost:8000/gen.js", - sourceId: "gen.js", - line: 3, - column: undefined - } -}; - -const threadClient = { - getBreakpointByLocation: () => clientBreakpoint, - setBreakpoint, - removeBreakpoint: jest.fn() -}; - -const sourceMaps = { - getOriginalLocation: () => ({ - sourceId: "magic.js", - sourceUrl: "http://localhost:8000/magic.js", - line: 3, - column: undefined - }), - isOriginalId: () => true, - getGeneratedLocation: () => ({}) -}; - -function pendingBreakpoint(overrides) { - return { - location: { - sourceId: "magic.js", - sourceUrl: "http://localhost:8000/magic.js", - line: 3, - column: undefined - }, - generatedLocation: { - sourceId: "gen.js", - sourceUrl: "http://localhost:8000/gen.js", - line: 3, - column: undefined - }, - astLocation: { - name: undefined, - offset: { - line: 3 - } - }, - condition: null, - disabled: false, - hidden: false, - ...overrides - }; -} - -function newGeneratedLocation(line) { - return { - sourceUrl: "http://localhost:8000/gen.js", - sourceId: "gen.js", - line, - column: undefined - }; -} - -describe("loading the debugger", () => { - it("loads the initial breakpoint state", async () => { - getGeneratedLocation.mockImplementation(() => newGeneratedLocation(3)); - - const { dispatch, getState } = createStore(threadClient, {}, sourceMaps); - - // add a source without the breakpoints - const reloadedSource = makeSource("magic.js"); - await dispatch(actions.newSource(reloadedSource)); - - const breakpoints = selectors.getBreakpoints(getState()); - expect(breakpoints.size).toBe(0); - // manually sync - const update = await syncClientBreakpoint( - getState, - threadClient, - sourceMaps, - reloadedSource.id, - pendingBreakpoint() - ); - - expect(threadClient.removeBreakpoint.mock.calls.length).toBe(0); - expect(update).toMatchSnapshot(); - }); - - it("loads the initial breakpoint state with a changed file", async () => { - const location = { line: 9, column: 0 }; - const generated = 3; - getGeneratedLocation.mockImplementation(() => - newGeneratedLocation(generated) - ); - findScopeByName.mockImplementation(() => ({ - location: { start: location } - })); - - const { dispatch, getState } = createStore(threadClient, {}, sourceMaps); - - // add a source without the breakpoints - const reloadedSource = makeSource("magic.js"); - await dispatch(actions.newSource(reloadedSource)); - - const breakpoints = selectors.getBreakpoints(getState()); - expect(breakpoints.size).toBe(0); - // manually sync - const update = await syncClientBreakpoint( - getState, - threadClient, - sourceMaps, - reloadedSource.id, - pendingBreakpoint() - ); - - expect(threadClient.removeBreakpoint.mock.calls.length).toBe(0); - expect(update.breakpoint.location.line).toBe(location.line + generated); - expect(update).toMatchSnapshot(); - }); -}); - -describe("reloading debuggee", () => { - beforeEach(() => { - const location = { line: 0, column: 0 }; - getGeneratedLocation.mockImplementation(() => newGeneratedLocation(3)); - findScopeByName.mockImplementation(() => ({ - location: { start: location } - })); - }); - - it("syncs with unchanged source with an existing BP", async () => { - const { dispatch, getState } = createStore(threadClient, {}, sourceMaps); - - // add a source without the breakpoints - const reloadedSource = makeSource("magic.js"); - const loc1 = { - sourceId: "magic.js", - sourceUrl: "http://localhost:8000/magic.js", - line: 3, - column: undefined - }; - await dispatch(actions.newSource(reloadedSource)); - await dispatch(actions.addBreakpoint(loc1)); - - // manually sync - const update = await syncClientBreakpoint( - getState, - threadClient, - sourceMaps, - reloadedSource.id, - pendingBreakpoint({ location: loc1 }) - ); - expect(threadClient.removeBreakpoint.mock.calls.length).toBe(0); - expect(update).toMatchSnapshot(); - }); - - it("updates a corresponding breakpoint for a changed source", async () => { - /* - This is a complicated test, so bear with us. In this scenario, - - 1. the user has a small app with a generated file gen.js - and original file magic.js. - 2. The user adds a breakpoint in magic.js#3, which maps to gen.js#3 - 3. The user edits their code and reloads - 4. when magic.js is added, the debugger syncs the saved breakpoint - 4.a. the debugger checks to see if gen.js#3 still points to magic.js#3, - it now points to gen.js#1 so it removes the old - breakpoint and creates a new one - */ - - // here we are mocking out what happens when the source changed, and the - // new line for originalSource line 3, is the generated Source line 5 - - getGeneratedLocation.mockImplementation(() => newGeneratedLocation(5)); - // end mocking out - - const { dispatch, getState } = createStore(threadClient, {}, sourceMaps); - - // add a source without the breakpoints - const reloadedSource = makeSource("magic.js"); - await dispatch(actions.newSource(reloadedSource)); - - // manually sync - const update = await syncClientBreakpoint( - getState, - threadClient, - sourceMaps, - reloadedSource.id, - pendingBreakpoint() - ); - expect(threadClient.removeBreakpoint.mock.calls.length).toBe(1); - expect(findScopeByName).toHaveBeenCalled(); - expect(update).toMatchSnapshot(); - }); -}); diff --git a/src/actions/coverage.js b/src/actions/coverage.js deleted file mode 100644 index 9b13918ce7..0000000000 --- a/src/actions/coverage.js +++ /dev/null @@ -1,14 +0,0 @@ -// @flow - -import type { ThunkArgs } from "./types"; - -export function recordCoverage() { - return async function({ dispatch, getState, client }: ThunkArgs) { - const { coverage } = await client.recordCoverage(); - - return dispatch({ - type: "RECORD_COVERAGE", - value: { coverage } - }); - }; -} diff --git a/src/actions/debuggee.js b/src/actions/debuggee.js deleted file mode 100644 index 4df161d8f2..0000000000 --- a/src/actions/debuggee.js +++ /dev/null @@ -1,6 +0,0 @@ -export function setWorkers(workers) { - return { - type: "SET_WORKERS", - workers - }; -} diff --git a/src/actions/event-listeners.js b/src/actions/event-listeners.js deleted file mode 100644 index 2b4b6d0717..0000000000 --- a/src/actions/event-listeners.js +++ /dev/null @@ -1,166 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -/* global window gThreadClient setNamedTimeout services EVENTS */ -/* eslint no-shadow: 0 */ - -/** - * Redux actions for the event listeners state - * @module actions/event-listeners - */ - -import { reportException } from "../utils/DevToolsUtils"; -import { getPause, getSourceByURL } from "../selectors"; - -// delay is in ms -const FETCH_EVENT_LISTENERS_DELAY = 200; -let fetchListenersTimerID; - -/** - * @memberof utils/utils - * @static - */ -async function asPaused(state: any, client: any, func: any) { - if (!getPause(state)) { - await client.interrupt(); - let result; - - try { - result = await func(client); - } catch (e) { - // Try to put the debugger back in a working state by resuming - // it - await client.resume(); - throw e; - } - - await client.resume(); - return result; - } - - return func(client); -} - -/** - * @memberof actions/event-listeners - * @static - */ -export function fetchEventListeners() { - return ({ dispatch, getState, client }) => { - // Make sure we"re not sending a batch of closely repeated requests. - // This can easily happen whenever new sources are fetched. - if (fetchListenersTimerID) { - clearTimeout(fetchListenersTimerID); - } - - fetchListenersTimerID = setTimeout(() => { - // In case there is still a request of listeners going on (it - // takes several RDP round trips right now), make sure we wait - // on a currently running request - if (getState().eventListeners.fetchingListeners) { - dispatch({ - type: services.WAIT_UNTIL, - predicate: action => - action.type === "FETCH_EVENT_LISTENERS" && action.status === "done", - run: dispatch => dispatch(fetchEventListeners()) - }); - return; - } - - dispatch({ - type: "FETCH_EVENT_LISTENERS", - status: "begin" - }); - - asPaused(getState(), client, _getEventListeners).then(listeners => { - dispatch({ - type: "FETCH_EVENT_LISTENERS", - status: "done", - listeners: formatListeners(getState(), listeners) - }); - }); - }, FETCH_EVENT_LISTENERS_DELAY); - }; -} - -function formatListeners(state, listeners) { - return listeners.map(l => { - return { - selector: l.node.selector, - type: l.type, - sourceId: getSourceByURL(state, l.function.location.url).get("id"), - line: l.function.location.line - }; - }); -} - -async function _getEventListeners(threadClient) { - const response = await threadClient.eventListeners(); - - // Make sure all the listeners are sorted by the event type, since - // they"re not guaranteed to be clustered together. - response.listeners.sort((a, b) => (a.type > b.type ? 1 : -1)); - - // Add all the listeners in the debugger view event linsteners container. - const fetchedDefinitions = new Map(); - const listeners = []; - for (const listener of response.listeners) { - let definitionSite; - if (fetchedDefinitions.has(listener.function.actor)) { - definitionSite = fetchedDefinitions.get(listener.function.actor); - } else if (listener.function.class == "Function") { - definitionSite = await _getDefinitionSite( - threadClient, - listener.function - ); - if (!definitionSite) { - // We don"t know where this listener comes from so don"t show it in - // the UI as breaking on it doesn"t work (bug 942899). - continue; - } - - fetchedDefinitions.set(listener.function.actor, definitionSite); - } - listener.function.url = definitionSite; - listeners.push(listener); - } - fetchedDefinitions.clear(); - - return listeners; -} - -async function _getDefinitionSite(threadClient, func) { - const grip = threadClient.pauseGrip(func); - let response; - - try { - response = await grip.getDefinitionSite(); - } catch (e) { - // Don't make this error fatal, it would break the entire events pane. - reportException("_getDefinitionSite", e); - return null; - } - - return response.source.url; -} - -/** - * @memberof actions/event-listeners - * @static - * @param {string} eventNames - */ -export function updateEventBreakpoints(eventNames) { - return dispatch => { - setNamedTimeout("event-breakpoints-update", 0, () => { - gThreadClient.pauseOnDOMEvents(eventNames, () => { - // Notify that event breakpoints were added/removed on the server. - window.emit(EVENTS.EVENT_BREAKPOINTS_UPDATED); - - dispatch({ - type: "UPDATE_EVENT_BREAKPOINTS", - eventNames: eventNames - }); - }); - }); - }; -} diff --git a/src/actions/expressions.js b/src/actions/expressions.js deleted file mode 100644 index 50dcc8a38b..0000000000 --- a/src/actions/expressions.js +++ /dev/null @@ -1,113 +0,0 @@ -// @flow - -import { - getExpression, - getExpressions, - getSelectedFrameId -} from "../selectors"; -import { PROMISE } from "../utils/redux/middleware/promise"; -import { wrapExpression } from "../utils/expressions"; -import * as parser from "../workers/parser"; -import type { Expression } from "../types"; -import type { ThunkArgs } from "./types"; - -/** - * Add expression for debugger to watch - * - * @param {object} expression - * @param {number} expression.id - * @memberof actions/pause - * @static - */ -export function addExpression(input: string) { - return async ({ dispatch, getState }: ThunkArgs) => { - if (!input) { - return; - } - - const expression = getExpression(getState(), input); - if (expression) { - return dispatch(evaluateExpression(expression)); - } - - dispatch({ - type: "ADD_EXPRESSION", - input - }); - - const newExpression = getExpression(getState(), input); - dispatch(evaluateExpression(newExpression)); - }; -} - -export function updateExpression(input: string, expression: Expression) { - return ({ dispatch, getState }: ThunkArgs) => { - if (!input || input == expression.input) { - return; - } - - dispatch({ - type: "UPDATE_EXPRESSION", - expression, - input: input - }); - - dispatch(evaluateExpressions()); - }; -} - -/** - * - * @param {object} expression - * @param {number} expression.id - * @memberof actions/pause - * @static - */ -export function deleteExpression(expression: Expression) { - return ({ dispatch }: ThunkArgs) => { - dispatch({ - type: "DELETE_EXPRESSION", - input: expression.input - }); - }; -} - -/** - * - * @memberof actions/pause - * @param {number} selectedFrameId - * @static - */ -export function evaluateExpressions() { - return async function({ dispatch, getState, client }: ThunkArgs) { - const expressions = getExpressions(getState()).toJS(); - for (const expression of expressions) { - await dispatch(evaluateExpression(expression)); - } - }; -} - -function evaluateExpression(expression: Expression) { - return async function({ dispatch, getState, client }: ThunkArgs) { - if (!expression.input) { - console.warn("Expressions should not be empty"); - return; - } - - const error = await parser.hasSyntaxError(expression.input); - if (error) { - return dispatch({ - type: "EVALUATE_EXPRESSION", - input: expression.input, - value: { input: expression.input, result: error } - }); - } - - const frameId = getSelectedFrameId(getState()); - return dispatch({ - type: "EVALUATE_EXPRESSION", - input: expression.input, - [PROMISE]: client.evaluate(wrapExpression(expression.input), { frameId }) - }); - }; -} diff --git a/src/actions/index.js b/src/actions/index.js deleted file mode 100644 index 2ddf11a075..0000000000 --- a/src/actions/index.js +++ /dev/null @@ -1,36 +0,0 @@ -// @flow - -import * as breakpoints from "./breakpoints"; -import * as expressions from "./expressions"; -import * as eventListeners from "./event-listeners"; -import * as sources from "./sources"; -import * as pause from "./pause"; -import * as navigation from "./navigation"; -import * as ui from "./ui"; -import * as ast from "./ast"; -import * as coverage from "./coverage"; -import * as projectTextSearch from "./project-text-search"; -import * as sourceSearch from "./source-search"; -import * as sourceTree from "./source-tree"; -import * as loadSourceText from "./sources/loadSourceText"; -import * as debuggee from "./debuggee"; -import * as toolbox from "./toolbox"; - -export default Object.assign( - {}, - navigation, - breakpoints, - expressions, - eventListeners, - sources, - pause, - ui, - ast, - coverage, - projectTextSearch, - sourceSearch, - sourceTree, - loadSourceText, - debuggee, - toolbox -); diff --git a/src/actions/navigation.js b/src/actions/navigation.js deleted file mode 100644 index 74699c2858..0000000000 --- a/src/actions/navigation.js +++ /dev/null @@ -1,62 +0,0 @@ -import { clearDocuments } from "../utils/editor"; -import { getSources } from "../reducers/sources"; -import { waitForMs } from "../utils/utils"; -import { newSources } from "./sources"; -import { - clearASTs, - clearSymbols, - clearScopes, - clearSources -} from "../workers/parser"; -import { clearWasmStates } from "../utils/wasm"; - -/** - * Redux actions for the navigation state - * @module actions/navigation - */ - -/** - * @memberof actions/navigation - * @static - */ -export function willNavigate(_, event) { - return async function({ dispatch, getState, client, sourceMaps }: ThunkArgs) { - await sourceMaps.clearSourceMaps(); - clearWasmStates(); - clearDocuments(); - clearSymbols(); - clearASTs(); - clearScopes(); - clearSources(); - - dispatch(navigate(event.url)); - }; -} - -export function navigate(url) { - return { - type: "NAVIGATE", - url - }; -} - -export function connect(url) { - return { - type: "CONNECT", - url - }; -} - -/** - * @memberof actions/navigation - * @static - */ -export function navigated() { - return async function({ dispatch, getState, client }: ThunkArgs) { - await waitForMs(100); - if (getSources(getState()).size == 0) { - const sources = await client.fetchSources(); - dispatch(newSources(sources)); - } - }; -} diff --git a/src/actions/pause.js b/src/actions/pause.js deleted file mode 100644 index fde994ee33..0000000000 --- a/src/actions/pause.js +++ /dev/null @@ -1,335 +0,0 @@ -// @flow - -import { selectSource, ensureParserHasSourceText } from "./sources"; -import { PROMISE } from "../utils/redux/middleware/promise"; - -import { - getPause, - pausedInEval, - getLoadedObject, - getSource, - isStepping, - isPaused, - getSelectedSource, - isEvaluatingExpression -} from "../selectors"; -import { - updateFrameLocations, - updateScopeBindings, - getPausedPosition -} from "../utils/pause"; -import { evaluateExpressions } from "./expressions"; - -import { addHiddenBreakpoint, removeBreakpoint } from "./breakpoints"; -import { getHiddenBreakpointLocation } from "../reducers/breakpoints"; -import * as parser from "../workers/parser"; -import { features } from "../utils/prefs"; - -import type { Pause, Frame } from "../types"; -import type { ThunkArgs } from "./types"; - -import { isGeneratedId } from "devtools-source-map"; - -type CommandType = string; - -async function _getScopeBindings( - { dispatch, getState, sourceMaps }, - generatedLocation, - scopes -) { - const { sourceId } = generatedLocation; - const sourceRecord = getSource(getState(), sourceId); - if (sourceRecord.get("isWasm")) { - return scopes; - } - - await dispatch(ensureParserHasSourceText(sourceId)); - - return await updateScopeBindings(scopes, generatedLocation, sourceMaps); -} - -/** - * Redux actions for the pause state - * @module actions/pause - */ - -/** - * Debugger has just resumed - * - * @memberof actions/pause - * @static - */ -export function resumed() { - return ({ dispatch, client, getState }: ThunkArgs) => { - if (!isPaused(getState())) { - return; - } - - const wasPausedInEval = pausedInEval(getState()); - - dispatch({ - type: "RESUME", - value: undefined - }); - - if (!isStepping(getState()) && !wasPausedInEval) { - dispatch(evaluateExpressions()); - } - }; -} - -export function continueToHere(line: number) { - return async function({ dispatch, getState, client, sourceMaps }: ThunkArgs) { - const source = getSelectedSource(getState()).toJS(); - - await dispatch( - addHiddenBreakpoint({ - line, - column: undefined, - sourceId: source.id - }) - ); - - dispatch(command("resume")); - }; -} - -/** - * Debugger has just paused - * - * @param {object} pauseInfo - * @memberof actions/pause - * @static - */ -export function paused(pauseInfo: Pause) { - return async function({ dispatch, getState, client, sourceMaps }: ThunkArgs) { - let { frames, why, loadedObjects } = pauseInfo; - - frames = await updateFrameLocations(frames, sourceMaps); - const frame = frames[0]; - - const frameScopes = await client.getFrameScopes(frame); - const scopes = !isGeneratedId(frame.location.sourceId) - ? await _getScopeBindings( - { dispatch, getState, sourceMaps }, - frame.generatedLocation, - frameScopes - ) - : frameScopes; - - dispatch({ - type: "PAUSED", - pauseInfo: { why, frame, frames }, - frames: frames, - scopes, - selectedFrameId: frame.id, - loadedObjects: loadedObjects || [] - }); - - const hiddenBreakpointLocation = getHiddenBreakpointLocation(getState()); - if (hiddenBreakpointLocation) { - dispatch(removeBreakpoint(hiddenBreakpointLocation)); - } - - if (!isEvaluatingExpression(getState())) { - dispatch(evaluateExpressions()); - } - - dispatch( - selectSource(frame.location.sourceId, { line: frame.location.line }) - ); - }; -} - -/** - * - * @memberof actions/pause - * @static - */ -export function pauseOnExceptions( - shouldPauseOnExceptions: boolean, - shouldIgnoreCaughtExceptions: boolean -) { - return ({ dispatch, client }: ThunkArgs) => { - dispatch({ - type: "PAUSE_ON_EXCEPTIONS", - shouldPauseOnExceptions, - shouldIgnoreCaughtExceptions, - [PROMISE]: client.pauseOnExceptions( - shouldPauseOnExceptions, - shouldIgnoreCaughtExceptions - ) - }); - }; -} - -/** - * Debugger commands like stepOver, stepIn, stepUp - * - * @param string $0.type - * @memberof actions/pause - * @static - */ -export function command(type: CommandType) { - return async ({ dispatch, client }: ThunkArgs) => { - // execute debugger thread command e.g. stepIn, stepOver - dispatch({ type: "COMMAND", value: { type } }); - - await client[type](); - - dispatch({ type: "CLEAR_COMMAND" }); - }; -} - -/** - * StepIn - * @memberof actions/pause - * @static - * @returns {Function} {@link command} - */ -export function stepIn() { - return ({ dispatch, getState }: ThunkArgs) => { - if (getPause(getState())) { - return dispatch(command("stepIn")); - } - }; -} - -/** - * stepOver - * @memberof actions/pause - * @static - * @returns {Function} {@link command} - */ -export function stepOver() { - return ({ dispatch, getState }: ThunkArgs) => { - if (getPause(getState())) { - return dispatch(astCommand("stepOver")); - } - }; -} - -/** - * stepOut - * @memberof actions/pause - * @static - * @returns {Function} {@link command} - */ -export function stepOut() { - return ({ dispatch, getState }: ThunkArgs) => { - if (getPause(getState())) { - return dispatch(command("stepOut")); - } - }; -} - -/** - * resume - * @memberof actions/pause - * @static - * @returns {Function} {@link command} - */ -export function resume() { - return ({ dispatch, getState }: ThunkArgs) => { - if (getPause(getState())) { - return dispatch(command("resume")); - } - }; -} - -/** - * Debugger breakOnNext command. - * It's different from the comand action because we also want to - * highlight the pause icon. - * - * @memberof actions/pause - * @static - */ -export function breakOnNext() { - return ({ dispatch, client }: ThunkArgs) => { - client.breakOnNext(); - - return dispatch({ - type: "BREAK_ON_NEXT", - value: true - }); - }; -} - -/** - * @memberof actions/pause - * @static - */ -export function selectFrame(frame: Frame) { - return async ({ dispatch, client, getState, sourceMaps }: ThunkArgs) => { - const frameScopes = await client.getFrameScopes(frame); - const scopes = !isGeneratedId(frame.location.sourceId) - ? await _getScopeBindings( - { dispatch, getState, sourceMaps }, - frame.generatedLocation, - frameScopes - ) - : frameScopes; - - dispatch({ - type: "SELECT_FRAME", - frame, - scopes - }); - - dispatch( - selectSource(frame.location.sourceId, { line: frame.location.line }) - ); - - dispatch(evaluateExpressions()); - }; -} - -/** - * @memberof actions/pause - * @static - */ -export function loadObjectProperties(object: any) { - return ({ dispatch, client, getState }: ThunkArgs) => { - const objectId = object.actor || object.objectId; - - if (getLoadedObject(getState(), objectId)) { - return; - } - - dispatch({ - type: "LOAD_OBJECT_PROPERTIES", - objectId, - [PROMISE]: client.getProperties(object) - }); - }; -} - -/** - * @memberOf actions/pause - * @static - * @param stepType - * @returns {function(ThunkArgs)} - */ -export function astCommand(stepType: string) { - return async ({ dispatch, getState, sourceMaps }: ThunkArgs) => { - if (!features.asyncStepping) { - return dispatch(command(stepType)); - } - - const pauseInfo = getPause(getState()); - const source = getSelectedSource(getState()).toJS(); - - const pausedPosition = await getPausedPosition(pauseInfo, sourceMaps); - - if (stepType == "stepOver") { - const nextLocation = await parser.getNextStep(source, pausedPosition); - if (nextLocation) { - await dispatch(addHiddenBreakpoint(nextLocation)); - return dispatch(command("resume")); - } - } - - return dispatch(command(stepType)); - }; -} diff --git a/src/actions/project-text-search.js b/src/actions/project-text-search.js deleted file mode 100644 index 91bd59c3a7..0000000000 --- a/src/actions/project-text-search.js +++ /dev/null @@ -1,72 +0,0 @@ -// @flow - -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/** - * Redux actions for the search state - * @module actions/search - */ - -import { findSourceMatches } from "../workers/search"; -import { getSources, getSource } from "../selectors"; -import { isThirdParty, isLoaded } from "../utils/source"; -import { loadAllSources } from "./sources"; - -import type { ThunkArgs } from "./types"; - -export function addSearchQuery(query: string) { - return ({ dispatch, getState }: ThunkArgs) => { - dispatch({ type: "ADD_QUERY", query }); - }; -} - -export function clearSearchQuery() { - return ({ dispatch, getState }: ThunkArgs) => { - dispatch({ type: "CLEAR_QUERY" }); - }; -} - -export function clearSearchResults() { - return ({ dispatch, getState }: ThunkArgs) => { - dispatch({ type: "CLEAR_SEARCH_RESULTS" }); - }; -} - -export function searchSources(query: string) { - return async ({ dispatch, getState }: ThunkArgs) => { - await dispatch(clearSearchResults()); - await dispatch(addSearchQuery(query)); - await dispatch(loadAllSources()); - const sources = getSources(getState()); - const validSources = sources - .valueSeq() - .filter(source => isLoaded(source.toJS()) && !isThirdParty(source.toJS())) - .toJS(); - - for (const source of validSources) { - await dispatch(searchSource(source.id, query)); - } - }; -} - -export function searchSource(sourceId: string, query: string) { - return async ({ dispatch, getState }: ThunkArgs) => { - const sourceRecord = getSource(getState(), sourceId); - if (!sourceRecord) { - return; - } - - const source = sourceRecord.toJS(); - const matches = await findSourceMatches(source, query); - dispatch({ - type: "ADD_SEARCH_RESULT", - result: { - sourceId: source.id, - filepath: source.url, - matches - } - }); - }; -} diff --git a/src/actions/source-search.js b/src/actions/source-search.js deleted file mode 100644 index 2a7a9cf6e9..0000000000 --- a/src/actions/source-search.js +++ /dev/null @@ -1,18 +0,0 @@ -import type { ThunkArgs } from "./types"; - -export function setSourceSearchQuery(queryString: string) { - return ({ dispatch, getState }: ThunkArgs) => { - dispatch({ - type: "SET_QUERY_STRING", - queryString - }); - }; -} - -export function clearSourceSearchQuery() { - return ({ dispatch, getState }: ThunkArgs) => { - dispatch({ - type: "CLEAR_QUERY_STRING" - }); - }; -} diff --git a/src/actions/source-tree.js b/src/actions/source-tree.js deleted file mode 100644 index 20b28ebafb..0000000000 --- a/src/actions/source-tree.js +++ /dev/null @@ -1,10 +0,0 @@ -import type { ThunkArgs } from "./types"; - -export function setExpandedState(expanded) { - return ({ dispatch, getState }: ThunkArgs) => { - dispatch({ - type: "SET_EXPANDED_STATE", - expanded - }); - }; -} diff --git a/src/actions/sources.js b/src/actions/sources.js deleted file mode 100644 index 7caced20d2..0000000000 --- a/src/actions/sources.js +++ /dev/null @@ -1,416 +0,0 @@ -// @flow - -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/** - * Redux actions for the sources state - * @module actions/sources - */ - -import { PROMISE } from "../utils/redux/middleware/promise"; -import assert from "../utils/assert"; -import { remapBreakpoints } from "./breakpoints"; - -import { setEmptyLines, setOutOfScopeLocations } from "./ast"; -import { syncBreakpoint } from "./breakpoints"; -import { searchSource } from "./project-text-search"; -import { closeActiveSearch } from "./ui"; - -import { getPrettySourceURL, isLoaded } from "../utils/source"; -import { createPrettySource } from "./sources/createPrettySource"; -import { loadSourceText } from "./sources/loadSourceText"; - -import { prefs } from "../utils/prefs"; -import { removeDocument } from "../utils/editor"; -import { isThirdParty } from "../utils/source"; -import { getGeneratedLocation } from "../utils/source-maps"; -import * as parser from "../workers/parser"; - -import { - getSource, - getSources, - getSourceByURL, - getPendingSelectedLocation, - getPendingBreakpointsForSource, - getSourceTabs, - getNewSelectedSourceId, - getSelectedLocation, - removeSourcesFromTabList, - removeSourceFromTabList, - getTextSearchQuery, - getActiveSearch -} from "../selectors"; - -import type { Source } from "../types"; -import type { ThunkArgs } from "./types"; -import type { State } from "../reducers/types"; - -// If a request has been made to show this source, go ahead and -// select it. -async function checkSelectedSource(state: State, dispatch, source) { - const pendingLocation = getPendingSelectedLocation(state); - - if (pendingLocation && !!source.url && pendingLocation.url === source.url) { - await dispatch(selectSource(source.id, { line: pendingLocation.line })); - } -} - -async function checkPendingBreakpoint( - state: State, - dispatch, - pendingBreakpoint, - source -) { - const { sourceUrl } = pendingBreakpoint.location; - const sameSource = sourceUrl && sourceUrl === source.url; - - if (sameSource) { - await dispatch(loadSourceText(source)); - await dispatch(syncBreakpoint(source.id, pendingBreakpoint)); - } -} - -async function checkPendingBreakpoints(state, dispatch, source) { - const pendingBreakpoints = getPendingBreakpointsForSource(state, source.url); - if (!pendingBreakpoints.size) { - return; - } - - // load the source text if there is a pending breakpoint for it - await dispatch(loadSourceText(source)); - const pendingBreakpointsArray = pendingBreakpoints.valueSeq().toJS(); - for (const pendingBreakpoint of pendingBreakpointsArray) { - await checkPendingBreakpoint(state, dispatch, pendingBreakpoint, source); - } -} - -/** - * Handler for the debugger client's unsolicited newSource notification. - * @memberof actions/sources - * @static - */ -export function newSource(source: Source) { - return async ({ dispatch, getState }: ThunkArgs) => { - const _source = getSource(getState(), source.id); - if (_source) { - return; - } - - dispatch({ type: "ADD_SOURCE", source }); - - if (prefs.clientSourceMapsEnabled) { - await dispatch(loadSourceMap(source)); - } - - await checkSelectedSource(getState(), dispatch, source); - await checkPendingBreakpoints(getState(), dispatch, source); - }; -} - -export function newSources(sources: Source[]) { - return async ({ dispatch, getState }: ThunkArgs) => { - const filteredSources = sources.filter( - source => !getSource(getState(), source.id) - ); - - for (const source of filteredSources) { - await dispatch(newSource(source)); - } - }; -} - -/** - * @memberof actions/sources - * @static - */ -function loadSourceMap(generatedSource) { - return async function({ dispatch, getState, sourceMaps }: ThunkArgs) { - const urls = await sourceMaps.getOriginalURLs(generatedSource); - if (!urls) { - // If this source doesn't have a sourcemap, do nothing. - return; - } - - const state = getState(); - const originalSources = urls.map( - originalUrl => - ({ - url: originalUrl, - id: sourceMaps.generatedToOriginalId(generatedSource.id, originalUrl), - isPrettyPrinted: false, - isWasm: false, - isBlackBoxed: false, - loadedState: "unloaded" - }: Source) - ); - - dispatch({ type: "ADD_SOURCES", sources: originalSources }); - - originalSources.forEach(source => { - checkSelectedSource(state, dispatch, source); - checkPendingBreakpoints(state, dispatch, source); - }); - }; -} - -export type SelectSourceOptions = { tabIndex?: number, line?: number }; - -/** - * Deterministically select a source that has a given URL. This will - * work regardless of the connection status or if the source exists - * yet. This exists mostly for external things to interact with the - * debugger. - * - * @memberof actions/sources - * @static - */ -export function selectSourceURL( - url: string, - options: SelectSourceOptions = {} -) { - return async ({ dispatch, getState }: ThunkArgs) => { - const source = getSourceByURL(getState(), url); - if (source) { - await dispatch(selectSource(source.get("id"), options)); - } else { - dispatch({ - type: "SELECT_SOURCE_URL", - url: url, - tabIndex: options.tabIndex, - line: options.line - }); - } - }; -} - -/** - * @memberof actions/sources - * @static - */ -export function selectSource(id: string, options: SelectSourceOptions = {}) { - return ({ dispatch, getState, client }: ThunkArgs) => { - if (!client) { - // No connection, do nothing. This happens when the debugger is - // shut down too fast and it tries to display a default source. - return; - } - - const source = getSource(getState(), id); - if (!source) { - // If there is no source we deselect the current selected source - return dispatch({ type: "CLEAR_SELECTED_SOURCE" }); - } - - const activeSearch = getActiveSearch(getState()); - if (activeSearch !== "file") { - dispatch(closeActiveSearch()); - } - - dispatch(addTab(source.toJS(), 0)); - - return dispatch({ - type: "SELECT_SOURCE", - source: source.toJS(), - tabIndex: options.tabIndex, - line: options.line, - [PROMISE]: (async () => { - await dispatch(loadSourceText(source.toJS())); - await dispatch(setOutOfScopeLocations()); - })() - }); - }; -} - -/** - * @memberof actions/sources - * @static - */ -export function jumpToMappedLocation(sourceLocation: any) { - return async function({ dispatch, getState, client, sourceMaps }: ThunkArgs) { - if (!client) { - return; - } - - const source = getSource(getState(), sourceLocation.sourceId); - let pairedLocation; - if (sourceMaps.isOriginalId(sourceLocation.sourceId)) { - pairedLocation = await getGeneratedLocation( - getState(), - source.toJS(), - sourceLocation, - sourceMaps - ); - } else { - pairedLocation = await sourceMaps.getOriginalLocation( - sourceLocation, - source.toJS() - ); - } - - return dispatch( - selectSource(pairedLocation.sourceId, { line: pairedLocation.line }) - ); - }; -} - -export function addTab(source: Source, tabIndex: number) { - return { - type: "ADD_TAB", - source, - tabIndex - }; -} - -export function moveTab(url: string, tabIndex: number) { - return { - type: "MOVE_TAB", - url, - tabIndex - }; -} - -/** - * @memberof actions/sources - * @static - */ -export function closeTab(url: string) { - return ({ dispatch, getState, client }: ThunkArgs) => { - removeDocument(url); - const tabs = removeSourceFromTabList(getSourceTabs(getState()), url); - const sourceId = getNewSelectedSourceId(getState(), tabs); - - dispatch({ type: "CLOSE_TAB", url, tabs }); - dispatch(selectSource(sourceId)); - }; -} - -/** - * @memberof actions/sources - * @static - */ -export function closeTabs(urls: string[]) { - return ({ dispatch, getState, client }: ThunkArgs) => { - urls.forEach(url => { - const source = getSourceByURL(getState(), url); - if (source) { - removeDocument(source.get("id")); - } - }); - - const tabs = removeSourcesFromTabList(getSourceTabs(getState()), urls); - const sourceId = getNewSelectedSourceId(getState(), tabs); - - dispatch({ type: "CLOSE_TABS", urls, tabs }); - dispatch(selectSource(sourceId)); - }; -} - -/** - * Toggle the pretty printing of a source's text. All subsequent calls to - * |getText| will return the pretty-toggled text. Nothing will happen for - * non-javascript files. - * - * @memberof actions/sources - * @static - * @param string id The source form from the RDP. - * @returns Promise - * A promise that resolves to [aSource, prettyText] or rejects to - * [aSource, error]. - */ -export function togglePrettyPrint(sourceId: string) { - return async ({ dispatch, getState, client, sourceMaps }: ThunkArgs) => { - const source = getSource(getState(), sourceId).toJS(); - - if (!source || !isLoaded(source)) { - return {}; - } - - assert( - sourceMaps.isGeneratedId(sourceId), - "Pretty-printing only allowed on generated sources" - ); - - const selectedLocation = getSelectedLocation(getState()); - const selectedOriginalLocation = selectedLocation - ? await sourceMaps.getOriginalLocation(selectedLocation) - : {}; - - const url = getPrettySourceURL(source.url); - const prettySource = getSourceByURL(getState(), url); - - if (prettySource) { - return dispatch( - selectSource(prettySource.get("id"), { - line: selectedOriginalLocation.line - }) - ); - } - - const { source: newPrettySource } = await dispatch( - createPrettySource(sourceId) - ); - - await dispatch(remapBreakpoints(sourceId)); - await dispatch(setEmptyLines(newPrettySource.id)); - - return dispatch( - selectSource(newPrettySource.id, { - line: selectedOriginalLocation.line - }) - ); - }; -} - -export function toggleBlackBox(source: Source) { - return async ({ dispatch, getState, client, sourceMaps }: ThunkArgs) => { - const { isBlackBoxed, id } = source; - - return dispatch({ - type: "BLACKBOX", - source, - [PROMISE]: client.blackBox(id, isBlackBoxed) - }); - }; -} - -/** - Load the text for all the available sources - * @memberof actions/sources - * @static - */ -export function loadAllSources() { - return async ({ dispatch, getState }: ThunkArgs) => { - const sources = getSources(getState()); - const query = getTextSearchQuery(getState()); - for (const [, src] of sources) { - const source = src.toJS(); - if (isThirdParty(source)) { - continue; - } - - await dispatch(loadSourceText(source)); - // If there is a current search query we search - // each of the source texts as they get loaded - if (query) { - await dispatch(searchSource(source.id, query)); - } - } - }; -} - -/** - * Ensures parser has source text - * - * @memberof actions/sources - * @static - */ -export function ensureParserHasSourceText(sourceId: string) { - return async ({ dispatch, getState }: ThunkArgs) => { - if (!await parser.hasSource(sourceId)) { - await dispatch(loadSourceText(getSource(getState(), sourceId).toJS())); - await parser.setSource(getSource(getState(), sourceId).toJS()); - } - }; -} diff --git a/src/actions/sources/createPrettySource.js b/src/actions/sources/createPrettySource.js deleted file mode 100644 index dd04d4aac6..0000000000 --- a/src/actions/sources/createPrettySource.js +++ /dev/null @@ -1,39 +0,0 @@ -import { getFrames, getSource } from "../../selectors"; -import { prettyPrint } from "../../workers/pretty-print"; -import { updateFrameLocations } from "../../utils/pause"; -import { getPrettySourceURL } from "../../utils/source"; - -export function createPrettySource(sourceId) { - return async ({ dispatch, getState, sourceMaps }) => { - const source = getSource(getState(), sourceId).toJS(); - const url = getPrettySourceURL(source.url); - const id = await sourceMaps.generatedToOriginalId(sourceId, url); - - const { code, mappings } = await prettyPrint({ - source, - url - }); - - await sourceMaps.applySourceMap(source.id, url, code, mappings); - - let frames = getFrames(getState()); - if (frames) { - frames = await updateFrameLocations(frames, sourceMaps); - } - - const prettySource = { - url, - id, - isPrettyPrinted: true, - text: code, - contentType: "text/javascript", - frames, - loadedState: "loaded" - }; - - return dispatch({ - type: "ADD_SOURCE", - source: prettySource - }); - }; -} diff --git a/src/actions/sources/loadSourceText.js b/src/actions/sources/loadSourceText.js deleted file mode 100644 index b02db1e4fd..0000000000 --- a/src/actions/sources/loadSourceText.js +++ /dev/null @@ -1,38 +0,0 @@ -// @flow -import { PROMISE } from "../../utils/redux/middleware/promise"; -import { setEmptyLines, setSymbols } from "../ast"; -import type { Source } from "../../types"; -import type { ThunkArgs } from "../types"; -/** - * @memberof actions/sources - * @static - */ -export function loadSourceText(source: Source) { - return async ({ dispatch, getState, client, sourceMaps }: ThunkArgs) => { - // Fetch the source text only once. - if (source.text) { - return Promise.resolve(source); - } - - await dispatch({ - type: "LOAD_SOURCE_TEXT", - source: source, - [PROMISE]: (async function() { - if (sourceMaps.isOriginalId(source.id)) { - return await sourceMaps.getOriginalSourceText(source); - } - - const response = await client.sourceContents(source.id); - - return { - id: source.id, - text: response.source, - contentType: response.contentType || "text/javascript" - }; - })() - }); - - await dispatch(setSymbols(source.id)); - await dispatch(setEmptyLines(source.id)); - }; -} diff --git a/src/actions/sources/tests/__snapshots__/createPrettySource.js.snap b/src/actions/sources/tests/__snapshots__/createPrettySource.js.snap deleted file mode 100644 index fb882f838a..0000000000 --- a/src/actions/sources/tests/__snapshots__/createPrettySource.js.snap +++ /dev/null @@ -1,14 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`createPrettySource returns a pretty source for a minified file 1`] = ` -Immutable.Map { - url: "http://localhost:8000/examples/base.js:formatted", - id: "base.js/originalSource-36c718d4bde9a75edb388ff7733efe7f", - isPrettyPrinted: true, - text: "undefined - ", - contentType: "text/javascript", - frames: undefined, - loadedState: "loaded", -} -`; diff --git a/src/actions/sources/tests/createPrettySource.js b/src/actions/sources/tests/createPrettySource.js deleted file mode 100644 index 77e662e5ae..0000000000 --- a/src/actions/sources/tests/createPrettySource.js +++ /dev/null @@ -1,19 +0,0 @@ -import { actions, createStore, makeSource } from "../../../utils/test-head"; -import { createPrettySource } from "../createPrettySource"; -import { getSourceByURL } from "../../../selectors"; - -describe("createPrettySource", () => { - it("returns a pretty source for a minified file", async () => { - const { dispatch, getState } = createStore(); - const url = "base.js"; - const source = makeSource(url); - await dispatch(actions.newSource(source)); - await dispatch(createPrettySource(url)); - - const prettyURL = `${source.url}:formatted`; - const pretty = getSourceByURL(getState(), prettyURL); - expect(pretty.get("contentType")).toEqual("text/javascript"); - expect(pretty.get("url").includes(prettyURL)).toEqual(true); - expect(pretty).toMatchSnapshot(); - }); -}); diff --git a/src/actions/tests/.eslintrc b/src/actions/tests/.eslintrc deleted file mode 100644 index e100bed599..0000000000 --- a/src/actions/tests/.eslintrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "env": { - "mocha": true - }, - "rules": { - "camelcase": 0, - "max-nested-callbacks": [2, 4], - } -} diff --git a/src/actions/tests/__snapshots__/ast.spec.js.snap b/src/actions/tests/__snapshots__/ast.spec.js.snap deleted file mode 100644 index da6a07da6d..0000000000 --- a/src/actions/tests/__snapshots__/ast.spec.js.snap +++ /dev/null @@ -1,194 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`ast getOutOfScopeLocations with selected line 1`] = ` -Array [ - Object { - "end": Object { - "column": 16, - "line": 1, - }, - "start": Object { - "column": 0, - "line": 1, - }, - }, - Object { - "end": Object { - "column": 3, - "line": 10, - }, - "start": Object { - "column": 22, - "line": 8, - }, - }, -] -`; - -exports[`ast getOutOfScopeLocations with selected line 2`] = ` -Array [ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 10, - 11, - 12, -] -`; - -exports[`ast setEmptyLines scopes 1`] = ` -Array [ - 0, - 1, - 6, - 11, - 12, -] -`; - -exports[`ast setPreview member expression 1`] = ` -Object { - "cursorPos": undefined, - "expression": "this.bazz", - "location": Object { - "end": Object { - "column": 37, - "line": 1, - }, - "start": Object { - "column": 33, - "line": 1, - }, - }, - "result": Object { - "actor": "bazz", - "preview": Object {}, - }, - "tokenPos": Object { - "column": 34, - "line": 1, - }, - "updating": false, -} -`; - -exports[`ast setPreview this 1`] = ` -Object { - "cursorPos": undefined, - "expression": "this", - "location": Object { - "end": Object { - "column": 32, - "line": 1, - }, - "start": Object { - "column": 28, - "line": 1, - }, - }, - "result": Object { - "actor": "this", - "preview": Object {}, - }, - "tokenPos": Object { - "column": 30, - "line": 1, - }, - "updating": false, -} -`; - -exports[`ast setSymbols when the source is loaded should be able to set symbols 1`] = ` -Object { - "callExpressions": Array [], - "comments": Array [], - "functions": Array [ - Object { - "identifier": Object { - "end": 13, - "loc": Object { - "end": Object { - "column": 13, - "line": 1, - }, - "identifierName": "base", - "start": Object { - "column": 9, - "line": 1, - }, - }, - "name": "base", - "start": 9, - "type": "Identifier", - }, - "klass": null, - "location": Object { - "end": Object { - "column": 21, - "line": 1, - }, - "start": Object { - "column": 0, - "line": 1, - }, - }, - "name": "base", - "parameterNames": Array [ - "boo", - ], - }, - ], - "identifiers": Array [ - Object { - "expression": "base", - "location": Object { - "end": Object { - "column": 13, - "line": 1, - }, - "start": Object { - "column": 9, - "line": 1, - }, - }, - "name": "base", - }, - Object { - "expression": "boo", - "location": Object { - "end": Object { - "column": 17, - "line": 1, - }, - "start": Object { - "column": 14, - "line": 1, - }, - }, - "name": "boo", - }, - ], - "memberExpressions": Array [], - "objectProperties": Array [], - "variables": Array [ - Object { - "location": Object { - "end": Object { - "column": 17, - "line": 1, - }, - "identifierName": "boo", - "start": Object { - "column": 14, - "line": 1, - }, - }, - "name": "boo", - }, - ], -} -`; diff --git a/src/actions/tests/__snapshots__/breakpoints.spec.js.snap b/src/actions/tests/__snapshots__/breakpoints.spec.js.snap deleted file mode 100644 index a4c4083ef2..0000000000 --- a/src/actions/tests/__snapshots__/breakpoints.spec.js.snap +++ /dev/null @@ -1,31 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`breakpoints should remap breakpoints on pretty print 1`] = ` -Object { - "astLocation": Object { - "name": undefined, - "offset": Object { - "line": 1, - "sourceId": "a.js", - "sourceUrl": "http://localhost:8000/examples/a.js", - }, - }, - "condition": null, - "disabled": false, - "generatedLocation": Object { - "line": 1, - "sourceId": "a.js", - "sourceUrl": "http://localhost:8000/examples/a.js", - }, - "hidden": false, - "hitCount": undefined, - "id": "hi", - "loading": false, - "location": Object { - "column": 0, - "line": 1, - "sourceId": "a.js/originalSource-d6d70368d5c252598541e693a7ad6c27", - "sourceUrl": "http://localhost:8000/examples/a.js:formatted", - }, -} -`; diff --git a/src/actions/tests/__snapshots__/pending-breakpoints.spec.js.snap b/src/actions/tests/__snapshots__/pending-breakpoints.spec.js.snap deleted file mode 100644 index 7543b56784..0000000000 --- a/src/actions/tests/__snapshots__/pending-breakpoints.spec.js.snap +++ /dev/null @@ -1,125 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`initializing when pending breakpoints exist in prefs syncs pending breakpoints 1`] = ` -Object { - "astLocation": Object { - "name": undefined, - "offset": Object { - "line": 5, - }, - }, - "condition": null, - "disabled": false, - "generatedLocation": Object { - "column": undefined, - "line": 5, - "sourceUrl": "http://localhost:8000/examples/bar.js", - }, - "hidden": false, - "location": Object { - "column": undefined, - "line": 5, - "sourceUrl": "http://localhost:8000/examples/bar.js", - }, -} -`; - -exports[`invalid breakpoint location a corrected corresponding pending breakpoint is added 1`] = ` -Object { - "astLocation": Object { - "name": undefined, - "offset": Object { - "line": 5, - "sourceId": "foo.js", - "sourceUrl": "http://localhost:8000/examples/foo.js", - }, - }, - "condition": null, - "disabled": false, - "generatedLocation": Object { - "column": undefined, - "line": 7, - "sourceUrl": "http://localhost:8000/examples/foo.js", - }, - "location": Object { - "column": undefined, - "line": 7, - "sourceUrl": "http://localhost:8000/examples/foo.js", - }, -} -`; - -exports[`when adding breakpoints a corresponding pending breakpoint should be added 1`] = ` -Object { - "astLocation": Object { - "name": undefined, - "offset": Object { - "line": 5, - "sourceId": "foo.js", - "sourceUrl": "http://localhost:8000/examples/foo.js", - }, - }, - "condition": null, - "disabled": false, - "generatedLocation": Object { - "column": undefined, - "line": 5, - "sourceUrl": "http://localhost:8000/examples/foo.js", - }, - "location": Object { - "column": undefined, - "line": 5, - "sourceUrl": "http://localhost:8000/examples/foo.js", - }, -} -`; - -exports[`when adding breakpoints adding and deleting breakpoints add a corresponding pendingBreakpoint for each addition 1`] = ` -Object { - "astLocation": Object { - "name": undefined, - "offset": Object { - "line": 5, - "sourceId": "foo", - "sourceUrl": "http://localhost:8000/examples/foo", - }, - }, - "condition": null, - "disabled": false, - "generatedLocation": Object { - "column": undefined, - "line": 5, - "sourceUrl": "http://localhost:8000/examples/foo", - }, - "location": Object { - "column": undefined, - "line": 5, - "sourceUrl": "http://localhost:8000/examples/foo", - }, -} -`; - -exports[`when adding breakpoints adding and deleting breakpoints add a corresponding pendingBreakpoint for each addition 2`] = ` -Object { - "astLocation": Object { - "name": undefined, - "offset": Object { - "line": 5, - "sourceId": "foo2", - "sourceUrl": "http://localhost:8000/examples/foo2", - }, - }, - "condition": null, - "disabled": false, - "generatedLocation": Object { - "column": undefined, - "line": 5, - "sourceUrl": "http://localhost:8000/examples/foo2", - }, - "location": Object { - "column": undefined, - "line": 5, - "sourceUrl": "http://localhost:8000/examples/foo2", - }, -} -`; diff --git a/src/actions/tests/__snapshots__/project-text-search.spec.js.snap b/src/actions/tests/__snapshots__/project-text-search.spec.js.snap deleted file mode 100644 index 3b39b0b0a1..0000000000 --- a/src/actions/tests/__snapshots__/project-text-search.spec.js.snap +++ /dev/null @@ -1,183 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`project text search should clear all the search results 1`] = ` -Immutable.List [ - Object { - "filepath": "http://localhost:8000/examples/foo1", - "matches": Array [ - Object { - "column": 9, - "line": 1, - "match": "foo", - "sourceId": "foo1", - "text": "function foo1() {", - "value": "function foo1() {", - }, - Object { - "column": 8, - "line": 2, - "match": "foo", - "sourceId": "foo1", - "text": " const foo = 5; return foo;", - "value": " const foo = 5; return foo;", - }, - Object { - "column": 24, - "line": 2, - "match": "foo", - "sourceId": "foo1", - "text": " const foo = 5; return foo;", - "value": " const foo = 5; return foo;", - }, - ], - "sourceId": "foo1", - }, - Object { - "filepath": "http://localhost:8000/examples/foo1", - "matches": Array [ - Object { - "column": 9, - "line": 1, - "match": "foo", - "sourceId": "foo1", - "text": "function foo1() {", - "value": "function foo1() {", - }, - Object { - "column": 8, - "line": 2, - "match": "foo", - "sourceId": "foo1", - "text": " const foo = 5; return foo;", - "value": " const foo = 5; return foo;", - }, - Object { - "column": 24, - "line": 2, - "match": "foo", - "sourceId": "foo1", - "text": " const foo = 5; return foo;", - "value": " const foo = 5; return foo;", - }, - ], - "sourceId": "foo1", - }, -] -`; - -exports[`project text search should clear all the search results 2`] = ` -Immutable.List [ -] -`; - -exports[`project text search should search a specific source 1`] = ` -Immutable.List [ - Object { - "filepath": "http://localhost:8000/examples/bar", - "matches": Array [ - Object { - "column": 9, - "line": 1, - "match": "bla", - "sourceId": "bar", - "text": "function bla(x, y) {", - "value": "function bla(x, y) {", - }, - ], - "sourceId": "bar", - }, -] -`; - -exports[`project text search should search all the loaded sources based on the query 1`] = ` -Immutable.List [ - Object { - "filepath": "http://localhost:8000/examples/foo1", - "matches": Array [ - Object { - "column": 9, - "line": 1, - "match": "foo", - "sourceId": "foo1", - "text": "function foo1() {", - "value": "function foo1() {", - }, - Object { - "column": 8, - "line": 2, - "match": "foo", - "sourceId": "foo1", - "text": " const foo = 5; return foo;", - "value": " const foo = 5; return foo;", - }, - Object { - "column": 24, - "line": 2, - "match": "foo", - "sourceId": "foo1", - "text": " const foo = 5; return foo;", - "value": " const foo = 5; return foo;", - }, - ], - "sourceId": "foo1", - }, - Object { - "filepath": "http://localhost:8000/examples/foo2", - "matches": Array [ - Object { - "column": 9, - "line": 1, - "match": "foo", - "sourceId": "foo2", - "text": "function foo2(x, y) {", - "value": "function foo2(x, y) {", - }, - ], - "sourceId": "foo2", - }, - Object { - "filepath": "http://localhost:8000/examples/foo1", - "matches": Array [ - Object { - "column": 9, - "line": 1, - "match": "foo", - "sourceId": "foo1", - "text": "function foo1() {", - "value": "function foo1() {", - }, - Object { - "column": 8, - "line": 2, - "match": "foo", - "sourceId": "foo1", - "text": " const foo = 5; return foo;", - "value": " const foo = 5; return foo;", - }, - Object { - "column": 24, - "line": 2, - "match": "foo", - "sourceId": "foo1", - "text": " const foo = 5; return foo;", - "value": " const foo = 5; return foo;", - }, - ], - "sourceId": "foo1", - }, - Object { - "filepath": "http://localhost:8000/examples/foo2", - "matches": Array [ - Object { - "column": 9, - "line": 1, - "match": "foo", - "sourceId": "foo2", - "text": "function foo2(x, y) {", - "value": "function foo2(x, y) {", - }, - ], - "sourceId": "foo2", - }, -] -`; diff --git a/src/actions/tests/ast.spec.js b/src/actions/tests/ast.spec.js deleted file mode 100644 index 93681e653f..0000000000 --- a/src/actions/tests/ast.spec.js +++ /dev/null @@ -1,148 +0,0 @@ -import { - createStore, - selectors, - actions, - makeSource -} from "../../utils/test-head"; - -import readFixture from "./helpers/readFixture"; -const { getSymbols, getEmptyLines, getOutOfScopeLocations } = selectors; -import getInScopeLines from "../../selectors/linesInScope"; - -const threadClient = { - sourceContents: function(sourceId) { - return new Promise((resolve, reject) => - resolve({ - source: sourceTexts[sourceId], - contentType: "text/javascript" - }) - ); - }, - getFrameScopes: function() { - return Promise.resolve({}); - }, - evaluate: function(expression) { - return new Promise((resolve, reject) => - resolve({ result: evaluationResult[expression] }) - ); - } -}; - -const sourceTexts = { - "base.js": "function base(boo) {}", - "foo.js": "function base(boo) { return this.bazz; } outOfScope", - "scopes.js": readFixture("scopes.js") -}; - -const evaluationResult = { - "this.bazz": { actor: "bazz", preview: {} }, - this: { actor: "this", preview: {} } -}; - -describe("ast", () => { - describe("setEmptyLines", () => { - it("scopes", async () => { - const { dispatch, getState } = createStore(threadClient); - const source = makeSource("scopes.js"); - await dispatch(actions.newSource(source)); - await dispatch(actions.loadSourceText({ id: "scopes.js" })); - - const emptyLines = getEmptyLines(getState(), source); - expect(emptyLines).toMatchSnapshot(); - }); - }); - describe("setSymbols", () => { - describe("when the source is loaded", () => { - it("should be able to set symbols", async () => { - const { dispatch, getState } = createStore(threadClient); - const base = makeSource("base.js"); - await dispatch(actions.newSource(base)); - await dispatch(actions.loadSourceText({ id: "base.js" })); - - const baseSymbols = getSymbols(getState(), base); - expect(baseSymbols).toMatchSnapshot(); - }); - }); - - describe("when the source is not loaded", () => { - it("should return an empty set", async () => { - const { getState, dispatch } = createStore(threadClient); - const base = makeSource("base.js"); - await dispatch(actions.newSource(base)); - - const baseSymbols = getSymbols(getState(), base); - expect(baseSymbols).toEqual({ variables: [], functions: [] }); - }); - }); - - describe("when there is no source", () => { - it("should return an empty set", async () => { - const { getState } = createStore(threadClient); - const baseSymbols = getSymbols(getState()); - expect(baseSymbols).toEqual({ variables: [], functions: [] }); - }); - }); - }); - - describe("getOutOfScopeLocations", () => { - it("with selected line", async () => { - const { dispatch, getState } = createStore(threadClient); - const source = makeSource("scopes.js"); - await dispatch(actions.newSource(source)); - await dispatch(actions.selectSource("scopes.js", { line: 5 })); - - const locations = getOutOfScopeLocations(getState()); - const lines = getInScopeLines(getState()); - - expect(locations).toMatchSnapshot(); - expect(lines).toMatchSnapshot(); - }); - - it("without a selected line", async () => { - const { dispatch, getState } = createStore(threadClient); - const base = makeSource("base.js"); - await dispatch(actions.newSource(base)); - await dispatch(actions.selectSource("base.js")); - - const locations = getOutOfScopeLocations(getState()); - const lines = getInScopeLines(getState()); - - expect(locations).toEqual(null); - expect(lines).toEqual([1]); - }); - }); - - describe("setPreview", () => { - let dispatch = undefined; - let getState = undefined; - - beforeEach(async () => { - const store = createStore(threadClient); - dispatch = store.dispatch; - getState = store.getState; - - const foo = makeSource("foo.js"); - await dispatch(actions.newSource(foo)); - await dispatch(actions.loadSourceText({ id: "foo.js" })); - await dispatch(actions.selectSource("foo.js")); - await dispatch( - actions.paused({ - why: { type: "resumeLimit" }, - frames: [{ id: "frame1", location: { sourceId: "foo.js" } }] - }) - ); - }); - - it("member expression", async () => { - await dispatch(actions.setPreview("bazz", { line: 1, column: 34 })); - const preview = selectors.getPreview(getState()); - expect(preview).toMatchSnapshot(); - }); - - it("this", async () => { - await dispatch(actions.setPreview("this", { line: 1, column: 30 })); - const preview = selectors.getPreview(getState()); - expect(preview).toMatchSnapshot(); - }); - }); -}); diff --git a/src/actions/tests/breakpoints.spec.js b/src/actions/tests/breakpoints.spec.js deleted file mode 100644 index db5f8c4a16..0000000000 --- a/src/actions/tests/breakpoints.spec.js +++ /dev/null @@ -1,323 +0,0 @@ -import { - createStore, - selectors, - actions, - makeSource -} from "../../utils/test-head"; - -import { - simulateCorrectThreadClient, - simpleMockThreadClient -} from "./helpers/threadClient.js"; - -describe("breakpoints", () => { - it("should add a breakpoint", async () => { - const { dispatch, getState } = createStore(simpleMockThreadClient); - const loc1 = { - sourceId: "a", - line: 5, - sourceUrl: "http://localhost:8000/examples/a" - }; - await dispatch(actions.newSource(makeSource("a"))); - await dispatch(actions.addBreakpoint(loc1)); - - const bps = selectors.getBreakpoints(getState()); - const bp = selectors.getBreakpoint(getState(), loc1); - expect(bps.size).toBe(1); - expect(bp.location).toEqual(loc1); - }); - - it("should not re-add a breakpoint", async () => { - const { dispatch, getState } = createStore(simpleMockThreadClient); - const loc1 = { - sourceId: "a", - line: 5, - sourceUrl: "http://localhost:8000/examples/a" - }; - - await dispatch(actions.newSource(makeSource("a"))); - await dispatch(actions.addBreakpoint(loc1)); - let bps = selectors.getBreakpoints(getState()); - const bp = selectors.getBreakpoint(getState(), loc1); - expect(bps.size).toBe(1); - expect(bp.location).toEqual(loc1); - - await dispatch(actions.addBreakpoint(loc1)); - bps = selectors.getBreakpoints(getState()); - expect(bps.size).toBe(1); - }); - - describe("adding a breakpoint to an invalid location", async () => { - it("adds only one breakpoint with a corrected location", async () => { - const invalidLocation = { - sourceId: "a", - line: 5, - sourceUrl: "http://localhost:8000/examples/a" - }; - const { - correctedThreadClient, - correctedLocation - } = simulateCorrectThreadClient(2, invalidLocation); - const { dispatch, getState } = createStore(correctedThreadClient); - - await dispatch(actions.newSource(makeSource("a"))); - await dispatch(actions.addBreakpoint(invalidLocation)); - const state = getState(); - const bps = selectors.getBreakpoints(state); - const bp = selectors.getBreakpoint(state, correctedLocation); - expect(bps.size).toBe(1); - expect(bp.location).toEqual(correctedLocation); - }); - }); - - it("should remove a breakpoint", async () => { - const { dispatch, getState } = createStore(simpleMockThreadClient); - - const loc1 = { - sourceId: "a", - line: 5, - sourceUrl: "http://localhost:8000/examples/a" - }; - - const loc2 = { - sourceId: "b", - line: 6, - sourceUrl: "http://localhost:8000/examples/b" - }; - - await dispatch(actions.newSource(makeSource("a"))); - await dispatch(actions.newSource(makeSource("b"))); - await dispatch(actions.addBreakpoint(loc1)); - await dispatch(actions.addBreakpoint(loc2)); - - await dispatch(actions.removeBreakpoint(loc1)); - - expect(selectors.getBreakpoints(getState()).size).toBe(1); - }); - - it("should disable a breakpoint", async () => { - const { dispatch, getState } = createStore(simpleMockThreadClient); - - const loc1 = { - sourceId: "a", - line: 5, - sourceUrl: "http://localhost:8000/examples/a" - }; - - const loc2 = { - sourceId: "b", - line: 6, - sourceUrl: "http://localhost:8000/examples/b" - }; - - await dispatch(actions.newSource(makeSource("a"))); - await dispatch(actions.newSource(makeSource("b"))); - - await dispatch(actions.addBreakpoint(loc1)); - await dispatch(actions.addBreakpoint(loc2)); - - await dispatch(actions.disableBreakpoint(loc1)); - - expect(selectors.getBreakpoint(getState(), loc1).disabled).toBe(true); - }); - - it("should enable breakpoint", async () => { - const { dispatch, getState } = createStore(simpleMockThreadClient); - const loc = { - sourceId: "a", - line: 5, - sourceUrl: "http://localhost:8000/examples/a" - }; - - await dispatch(actions.newSource(makeSource("a"))); - await dispatch(actions.addBreakpoint(loc)); - await dispatch(actions.disableBreakpoint(loc)); - - expect(selectors.getBreakpoint(getState(), loc).disabled).toBe(true); - - await dispatch(actions.enableBreakpoint(loc)); - - expect(selectors.getBreakpoint(getState(), loc).disabled).toBe(false); - }); - - it("should toggle all the breakpoints", async () => { - const { dispatch, getState } = createStore(simpleMockThreadClient); - - const loc1 = { - sourceId: "a", - line: 5, - sourceUrl: "http://localhost:8000/examples/a" - }; - - const loc2 = { - sourceId: "b", - line: 6, - sourceUrl: "http://localhost:8000/examples/b" - }; - - await dispatch(actions.newSource(makeSource("a"))); - await dispatch(actions.newSource(makeSource("b"))); - await dispatch(actions.addBreakpoint(loc1)); - await dispatch(actions.addBreakpoint(loc2)); - - await dispatch(actions.toggleAllBreakpoints(true)); - - expect(selectors.getBreakpoint(getState(), loc1).disabled).toBe(true); - expect(selectors.getBreakpoint(getState(), loc2).disabled).toBe(true); - - await dispatch(actions.toggleAllBreakpoints()); - - expect(selectors.getBreakpoint(getState(), loc1).disabled).toBe(false); - expect(selectors.getBreakpoint(getState(), loc2).disabled).toBe(false); - }); - - it("should toggle a breakpoint at a location", async () => { - const { dispatch, getState } = createStore(simpleMockThreadClient); - - await dispatch(actions.newSource(makeSource("foo1"))); - await dispatch(actions.selectSource("foo1", { line: 1 })); - - await dispatch(actions.toggleBreakpoint(5)); - await dispatch(actions.toggleBreakpoint(6, 1)); - expect( - selectors.getBreakpoint(getState(), { sourceId: "foo1", line: 5 }) - .disabled - ).toBe(false); - - expect( - selectors.getBreakpoint(getState(), { - sourceId: "foo1", - line: 6, - column: 1 - }).disabled - ).toBe(false); - - await dispatch(actions.toggleBreakpoint(5)); - await dispatch(actions.toggleBreakpoint(6, 1)); - - expect( - selectors.getBreakpoint(getState(), { sourceId: "foo1", line: 5 }) - ).toBe(undefined); - - expect( - selectors.getBreakpoint(getState(), { - sourceId: "foo1", - line: 6, - column: 1 - }) - ).toBe(undefined); - }); - - it("should disable/enable a breakpoint at a location", async () => { - const { dispatch, getState } = createStore(simpleMockThreadClient); - - await dispatch(actions.newSource(makeSource("foo1"))); - await dispatch(actions.selectSource("foo1", { line: 1 })); - - await dispatch(actions.toggleBreakpoint(5)); - await dispatch(actions.toggleBreakpoint(6, 1)); - expect( - selectors.getBreakpoint(getState(), { sourceId: "foo1", line: 5 }) - .disabled - ).toBe(false); - - expect( - selectors.getBreakpoint(getState(), { - sourceId: "foo1", - line: 6, - column: 1 - }).disabled - ).toBe(false); - - await dispatch(actions.toggleDisabledBreakpoint(5)); - await dispatch(actions.toggleDisabledBreakpoint(6, 1)); - - expect( - selectors.getBreakpoint(getState(), { sourceId: "foo1", line: 5 }) - .disabled - ).toBe(true); - - expect( - selectors.getBreakpoint(getState(), { - sourceId: "foo1", - line: 6, - column: 1 - }).disabled - ).toBe(true); - }); - - it("should set the breakpoint condition", async () => { - const { dispatch, getState } = createStore(simpleMockThreadClient); - - const loc = { - sourceId: "a", - line: 5, - sourceUrl: "http://localhost:8000/examples/a" - }; - - await dispatch(actions.newSource(makeSource("a"))); - await dispatch(actions.addBreakpoint(loc)); - - expect(selectors.getBreakpoint(getState(), loc).condition).toBe(null); - - await dispatch( - actions.setBreakpointCondition(loc, { - condition: "const foo = 0", - getTextForLine: () => {} - }) - ); - - expect(selectors.getBreakpoint(getState(), loc).condition).toBe( - "const foo = 0" - ); - }); - - it("should set the condition and enable a breakpoint", async () => { - const { dispatch, getState } = createStore(simpleMockThreadClient); - - const loc = { - sourceId: "a", - line: 5, - sourceUrl: "http://localhost:8000/examples/a" - }; - - await dispatch(actions.newSource(makeSource("a"))); - await dispatch(actions.addBreakpoint(loc)); - await dispatch(actions.disableBreakpoint(loc)); - - expect(selectors.getBreakpoint(getState(), loc).condition).toBe(null); - - await dispatch( - actions.setBreakpointCondition(loc, { - condition: "const foo = 0", - getTextForLine: () => {} - }) - ); - const breakpoint = selectors.getBreakpoint(getState(), loc); - expect(breakpoint.disabled).toBe(false); - expect(breakpoint.condition).toBe("const foo = 0"); - }); - - it("should remap breakpoints on pretty print", async () => { - const { dispatch, getState } = createStore(simpleMockThreadClient); - - const loc = { - sourceId: "a.js", - line: 1, - sourceUrl: "http://localhost:8000/examples/a.js" - }; - - const url = "a.js"; - const source = makeSource(url); - source.text = "function(a,b,c){return {a,b,c}}"; - - await dispatch(actions.newSource(source)); - await dispatch(actions.addBreakpoint(loc)); - await dispatch(actions.togglePrettyPrint(source.id)); - - const breakpoint = selectors.getBreakpoints(getState()).first(); - - expect(breakpoint.location.sourceUrl.includes("formatted")).toBe(true); - expect(breakpoint).toMatchSnapshot(); - }); -}); diff --git a/src/actions/tests/expressions.spec.js b/src/actions/tests/expressions.spec.js deleted file mode 100644 index 41e66a1397..0000000000 --- a/src/actions/tests/expressions.spec.js +++ /dev/null @@ -1,93 +0,0 @@ -import { actions, selectors, createStore } from "../../utils/test-head"; - -const mockThreadClient = { - evaluate: (script, { frameId }) => { - return new Promise((resolve, reject) => { - if (!frameId) { - resolve("bla"); - } else { - resolve("boo"); - } - }); - }, - getFrameScopes: () => {} -}; - -describe("expressions", () => { - it("should add an expression", () => { - const { dispatch, getState } = createStore(mockThreadClient); - - dispatch(actions.addExpression("foo")); - - expect(selectors.getExpressions(getState()).size).toBe(1); - }); - - it("should not add empty expressions", () => { - const { dispatch, getState } = createStore(mockThreadClient); - - dispatch(actions.addExpression()); - dispatch(actions.addExpression("")); - - expect(selectors.getExpressions(getState()).size).toBe(0); - }); - - it("should update an expression", () => { - const { dispatch, getState } = createStore(mockThreadClient); - - dispatch(actions.addExpression("foo")); - const expression = selectors.getExpression(getState(), "foo"); - dispatch(actions.updateExpression("bar", expression)); - - expect(selectors.getExpression(getState(), "bar").input).toBe("bar"); - }); - - it("should delete an expression", () => { - const { dispatch, getState } = createStore(mockThreadClient); - - dispatch(actions.addExpression("foo")); - dispatch(actions.addExpression("bar")); - - expect(selectors.getExpressions(getState()).size).toBe(2); - - const expression = selectors.getExpression(getState(), "foo"); - dispatch(actions.deleteExpression(expression)); - - expect(selectors.getExpressions(getState()).size).toBe(1); - expect(selectors.getExpression(getState(), "bar").input).toBe("bar"); - }); - - it("should evaluate expressions global scope", async () => { - const { dispatch, getState } = createStore(mockThreadClient); - - dispatch(actions.addExpression("foo")); - dispatch(actions.addExpression("bar")); - - expect(selectors.getExpression(getState(), "foo").value).toBe(null); - expect(selectors.getExpression(getState(), "bar").value).toBe(null); - await dispatch(actions.evaluateExpressions()); - - expect(selectors.getExpression(getState(), "foo").value).toBe("bla"); - expect(selectors.getExpression(getState(), "bar").value).toBe("bla"); - }); - - it("should evaluate expressions in specific scope", async () => { - const { dispatch, getState } = createStore(mockThreadClient); - - dispatch(actions.addExpression("foo")); - dispatch(actions.addExpression("bar")); - - expect(selectors.getExpression(getState(), "foo").value).toBe(null); - expect(selectors.getExpression(getState(), "bar").value).toBe(null); - - await dispatch( - actions.selectFrame({ - id: 2, - location: { sourceId: "example.js", line: 3 } - }) - ); - await dispatch(actions.evaluateExpressions("boo")); - - expect(selectors.getExpression(getState(), "foo").value).toBe("boo"); - expect(selectors.getExpression(getState(), "bar").value).toBe("boo"); - }); -}); diff --git a/src/actions/tests/fixtures/scopes.js b/src/actions/tests/fixtures/scopes.js deleted file mode 100644 index 3a38097f5e..0000000000 --- a/src/actions/tests/fixtures/scopes.js +++ /dev/null @@ -1,11 +0,0 @@ -// Program Scope - -function outer() { - function inner() { - const x = 1; - } - - const declaration = function() { - const x = 1; - }; -} diff --git a/src/actions/tests/helpers/breakpoints.js b/src/actions/tests/helpers/breakpoints.js deleted file mode 100644 index ff662a03ae..0000000000 --- a/src/actions/tests/helpers/breakpoints.js +++ /dev/null @@ -1,37 +0,0 @@ -export function mockPendingBreakpoint(overrides = {}) { - const { sourceUrl, line, column, condition, disabled, hidden } = overrides; - return { - location: { - sourceUrl: sourceUrl || "http://localhost:8000/examples/bar.js", - line: line || 5, - column: column || undefined - }, - generatedLocation: { - sourceUrl: sourceUrl || "http://localhost:8000/examples/bar.js", - line: line || 5, - column: column || undefined - }, - astLocation: { - name: undefined, - offset: { - line: line || 5 - } - }, - condition: condition || null, - disabled: disabled || false, - hidden: hidden || false - }; -} - -export function generateBreakpoint(filename) { - return { - location: { - sourceUrl: `http://localhost:8000/examples/${filename}`, - sourceId: filename, - line: 5 - }, - condition: null, - disabled: false, - hidden: false - }; -} diff --git a/src/actions/tests/helpers/readFixture.js b/src/actions/tests/helpers/readFixture.js deleted file mode 100644 index 891911a6a0..0000000000 --- a/src/actions/tests/helpers/readFixture.js +++ /dev/null @@ -1,10 +0,0 @@ -import fs from "fs"; -import path from "path"; - -export default function readFixture(name) { - const text = fs.readFileSync( - path.join(__dirname, `../fixtures/${name}`), - "utf8" - ); - return text; -} diff --git a/src/actions/tests/helpers/threadClient.js b/src/actions/tests/helpers/threadClient.js deleted file mode 100644 index ab51101c3d..0000000000 --- a/src/actions/tests/helpers/threadClient.js +++ /dev/null @@ -1,123 +0,0 @@ -import { makeLocationId } from "../../../utils/breakpoint"; - -const sourceFixtures = { - foo1: { - source: "function foo1() {\n return 5;\n}", - contentType: "text/javascript" - }, - foo2: { - source: "function foo2(x, y) {\n return x + y;\n}", - contentType: "text/javascript" - } -}; - -export const simpleMockThreadClient = { - getBreakpointByLocation: jest.fn(), - setBreakpoint: (location, _condition) => - Promise.resolve({ id: "hi", actualLocation: location }), - - removeBreakpoint: _id => Promise.resolve(), - - setBreakpointCondition: (_id, _location, _condition, _noSliding) => - Promise.resolve({ sourceId: "a", line: 5 }), - - sourceContents: sourceId => - new Promise((resolve, reject) => { - if (sourceFixtures[sourceId]) { - resolve(sourceFixtures[sourceId]); - } - - reject(`unknown source: ${sourceId}`); - }) -}; - -// Breakpoint Sliding -function generateCorrectingThreadClient(offset = 0) { - return { - getBreakpointByLocation: jest.fn(), - setBreakpoint: (location, condition) => { - const actualLocation = Object.assign({}, location, { - line: location.line + offset - }); - - return Promise.resolve({ - id: makeLocationId(location), - actualLocation, - condition - }); - } - }; -} - -/* in some cases, a breakpoint may be added, but the source will respond - * with a different breakpoint location. This is due to the breakpoint being - * added between functions, or somewhere that doesnt make sense. This function - * simulates that behavior. - * */ -export function simulateCorrectThreadClient(offset, location) { - const correctedThreadClient = generateCorrectingThreadClient(offset); - const offsetLine = { line: location.line + offset }; - const correctedLocation = Object.assign({}, location, offsetLine); - return { correctedThreadClient, correctedLocation }; -} - -// sources and tabs -export const sourceThreadClient = { - sourceContents: function(sourceId) { - return new Promise((resolve, reject) => { - switch (sourceId) { - case "foo1": - resolve({ - source: "function foo1() {\n return 5;\n}", - contentType: "text/javascript" - }); - break; - case "foo2": - resolve({ - source: "function foo2(x, y) {\n return x + y;\n}", - contentType: "text/javascript" - }); - break; - case "foobar.js": - resolve({ - source: "function foo() {\n return 2;\n}", - contentType: "text/javascript" - }); - break; - case "barfoo.js": - resolve({ - source: "function bar() {\n return 3;\n}", - contentType: "text/javascript" - }); - break; - case "foo.js": - resolve({ - source: "function bar() {\n return 3;\n}", - contentType: "text/javascript" - }); - break; - case "bar.js": - resolve({ - source: "function bar() {\n return 3;\n}", - contentType: "text/javascript" - }); - break; - case "base.js": - resolve({ - source: "function base() {\n return 3;\n}", - contentType: "text/javascript" - }); - break; - - case "bazz.js": - resolve({ - source: "function bar() {\n return 3;\n}", - contentType: "text/javascript" - }); - break; - } - - reject(`unknown source: ${sourceId}`); - }); - } -}; diff --git a/src/actions/tests/navigation.spec.js b/src/actions/tests/navigation.spec.js deleted file mode 100644 index 424906dec2..0000000000 --- a/src/actions/tests/navigation.spec.js +++ /dev/null @@ -1,9 +0,0 @@ -import { createStore, selectors, actions } from "../../utils/test-head"; -import expect from "expect.js"; -describe("navigation", () => { - it("connect sets the debuggeeUrl", () => { - const { dispatch, getState } = createStore(); - dispatch(actions.connect("http://test.com/foo")); - expect(selectors.getDebuggeeUrl(getState())).to.be("http://test.com/foo"); - }); -}); diff --git a/src/actions/tests/pause.spec.js b/src/actions/tests/pause.spec.js deleted file mode 100644 index 26a9481e69..0000000000 --- a/src/actions/tests/pause.spec.js +++ /dev/null @@ -1,80 +0,0 @@ -import { - actions, - selectors, - createStore, - getHistory -} from "../../utils/test-head"; - -const { isStepping } = selectors; - -let stepInResolve = null; -const mockThreadClient = { - stepIn: () => - new Promise(_resolve => { - stepInResolve = _resolve; - }), - evaluate: () => new Promise(_resolve => {}), - getFrameScopes: frame => frame.scope, - sourceContents: sourceId => { - return new Promise((resolve, reject) => { - switch (sourceId) { - case "foo1": - resolve({ - source: "function foo1() {\n return 5;\n}", - contentType: "text/javascript" - }); - } - }); - } -}; - -function createPauseInfo(overrides = {}) { - return { - frames: [{ id: 1, scope: [], location: { sourceId: "foo1", line: 4 } }], - loadedObjects: [], - why: {}, - ...overrides - }; -} - -describe("pause", () => { - describe("stepping", () => { - it("should set and clear the command", async () => { - const { dispatch, getState } = createStore(mockThreadClient); - const mockPauseInfo = createPauseInfo(); - - await dispatch(actions.paused(mockPauseInfo)); - dispatch(actions.stepIn()); - expect(isStepping(getState())).toBeTruthy(); - await stepInResolve(); - expect(isStepping(getState())).toBeFalsy(); - }); - }); - - describe("resumed", () => { - it("should not evaluate expression while stepping", async () => { - const client = { evaluate: jest.fn() }; - const { dispatch } = createStore(client); - - dispatch(actions.stepIn()); - await dispatch(actions.resumed()); - expect(client.evaluate.mock.calls.length).toEqual(0); - }); - - it("resuming", async () => { - const { dispatch } = createStore(mockThreadClient); - const mockPauseInfo = createPauseInfo(); - - await dispatch(actions.paused(mockPauseInfo)); - await dispatch(actions.resumed()); - - expect(getHistory("RESUME").length).toEqual(1); - }); - - it("resuming when not paused", async () => { - const { dispatch } = createStore(mockThreadClient); - await dispatch(actions.resumed()); - expect(getHistory("RESUME").length).toEqual(0); - }); - }); -}); diff --git a/src/actions/tests/pending-breakpoints.spec.js b/src/actions/tests/pending-breakpoints.spec.js deleted file mode 100644 index 232a27a7e8..0000000000 --- a/src/actions/tests/pending-breakpoints.spec.js +++ /dev/null @@ -1,303 +0,0 @@ -// TODO: we would like to mock this in the local tests -import { - generateBreakpoint, - mockPendingBreakpoint -} from "./helpers/breakpoints.js"; - -import { - simulateCorrectThreadClient, - simpleMockThreadClient -} from "./helpers/threadClient.js"; - -import { prefs } from "../../utils/prefs"; - -jest.mock("../../utils/prefs", () => ({ - prefs: { - expressions: [], - pendingBreakpoints: {} - }, - clear: jest.fn() -})); - -jest.mock("../sources/loadSourceText", () => ({ - loadSourceText: () => ({ - type: "LOAD_SOURCE_TEXT", - source: { - id: "id", - text: "function foo() {}", - contentType: "text/javascript" - }, - value: { - id: "id", - text: "function () {}", - contentType: "text/javascript" - } - }) -})); -import "../sources/loadSourceText"; - -import { - createStore, - selectors, - actions, - makeSource -} from "../../utils/test-head"; - -import { makePendingLocationId, makeLocationId } from "../../utils/breakpoint"; - -describe("when adding breakpoints", () => { - const mockedPendingBreakpoint = mockPendingBreakpoint(); - - beforeEach(() => { - const id = makePendingLocationId(mockedPendingBreakpoint.location); - prefs.pendingBreakpoints = { [id]: mockedPendingBreakpoint }; - }); - - it("a corresponding pending breakpoint should be added", async () => { - const { dispatch, getState } = createStore(simpleMockThreadClient); - - await dispatch(actions.newSource(makeSource("foo.js"))); - - const bp = generateBreakpoint("foo.js"); - const id = makePendingLocationId(bp.location); - - await dispatch(actions.addBreakpoint(bp.location)); - const pendingBps = selectors.getPendingBreakpoints(getState()); - expect(pendingBps.size).toBe(2); - expect(pendingBps.get(id)).toMatchSnapshot(); - }); - - describe("adding and deleting breakpoints", () => { - let breakpoint1; - let breakpoint2; - let breakpointLocationId1; - let breakpointLocationId2; - - beforeEach(() => { - breakpoint1 = generateBreakpoint("foo"); - breakpoint2 = generateBreakpoint("foo2"); - breakpointLocationId1 = makePendingLocationId(breakpoint1.location); - breakpointLocationId2 = makePendingLocationId(breakpoint2.location); - }); - - it("add a corresponding pendingBreakpoint for each addition", async () => { - const { dispatch, getState } = createStore(simpleMockThreadClient); - - await dispatch(actions.newSource(makeSource("foo"))); - await dispatch(actions.newSource(makeSource("foo2"))); - - await dispatch(actions.addBreakpoint(breakpoint1.location)); - await dispatch(actions.addBreakpoint(breakpoint2.location)); - - const pendingBps = selectors.getPendingBreakpoints(getState()); - expect(pendingBps.get(breakpointLocationId1)).toMatchSnapshot(); - expect(pendingBps.get(breakpointLocationId2)).toMatchSnapshot(); - }); - - it("hidden breakponts do not create pending bps", async () => { - const { dispatch, getState } = createStore(simpleMockThreadClient); - - await dispatch(actions.newSource(makeSource("foo"))); - await dispatch( - actions.addBreakpoint(breakpoint1.location, { hidden: true }) - ); - const pendingBps = selectors.getPendingBreakpoints(getState()); - - expect(pendingBps.get(breakpointLocationId1)).toBeUndefined(); - }); - - it("remove a corresponding pending breakpoint when deleting", async () => { - const { dispatch, getState } = createStore(simpleMockThreadClient); - await dispatch(actions.newSource(makeSource("foo"))); - await dispatch(actions.newSource(makeSource("foo2"))); - - await dispatch(actions.addBreakpoint(breakpoint1.location)); - await dispatch(actions.addBreakpoint(breakpoint2.location)); - await dispatch(actions.removeBreakpoint(breakpoint1.location)); - - const pendingBps = selectors.getPendingBreakpoints(getState()); - expect(pendingBps.has(breakpointLocationId1)).toBe(false); - expect(pendingBps.has(breakpointLocationId2)).toBe(true); - }); - }); -}); - -describe("when changing an existing breakpoint", () => { - const mockedPendingBreakpoint = mockPendingBreakpoint(); - - beforeEach(() => { - const id = makePendingLocationId(mockedPendingBreakpoint.location); - prefs.pendingBreakpoints = { [id]: mockedPendingBreakpoint }; - }); - - it("updates corresponding pendingBreakpoint", async () => { - const { dispatch, getState } = createStore(simpleMockThreadClient); - const bp = generateBreakpoint("foo"); - const id = makePendingLocationId(bp.location); - await dispatch(actions.newSource(makeSource("foo"))); - - await dispatch(actions.addBreakpoint(bp.location)); - await dispatch( - actions.setBreakpointCondition(bp.location, { condition: "2" }) - ); - const bps = selectors.getPendingBreakpoints(getState()); - const breakpoint = bps.get(id); - expect(breakpoint.condition).toBe("2"); - }); - - it("if disabled, updates corresponding pendingBreakpoint", async () => { - const { dispatch, getState } = createStore(simpleMockThreadClient); - const bp = generateBreakpoint("foo"); - const id = makePendingLocationId(bp.location); - - await dispatch(actions.newSource(makeSource("foo"))); - await dispatch(actions.addBreakpoint(bp.location)); - await dispatch(actions.disableBreakpoint(bp.location)); - const bps = selectors.getPendingBreakpoints(getState()); - const breakpoint = bps.get(id); - expect(breakpoint.disabled).toBe(true); - }); - - it("does not delete the pre-existing pendingBreakpoint", async () => { - const { dispatch, getState } = createStore(simpleMockThreadClient); - const bp = generateBreakpoint("foo.js"); - const source = makeSource("foo.js"); - await dispatch(actions.newSource(source)); - - const id = makePendingLocationId(bp.location); - - await dispatch(actions.addBreakpoint(bp.location)); - await dispatch( - actions.setBreakpointCondition(bp.location, { condition: "2" }) - ); - const bps = selectors.getPendingBreakpoints(getState()); - const breakpoint = bps.get(id); - expect(breakpoint.condition).toBe("2"); - }); -}); - -describe("initializing when pending breakpoints exist in prefs", () => { - const mockedPendingBreakpoint = mockPendingBreakpoint(); - - beforeEach(() => { - const id = makePendingLocationId(mockedPendingBreakpoint.location); - prefs.pendingBreakpoints = { [id]: mockedPendingBreakpoint }; - }); - - it("syncs pending breakpoints", async () => { - const { getState } = createStore(simpleMockThreadClient); - const id = makePendingLocationId(mockedPendingBreakpoint.location); - const bps = selectors.getPendingBreakpoints(getState()); - const bp = bps.get(id); - expect(bp).toMatchSnapshot(); - }); - - it("re-adding breakpoints update existing pending breakpoints", async () => { - const { dispatch, getState } = createStore(simpleMockThreadClient); - const bar = generateBreakpoint("bar.js"); - await dispatch(actions.newSource(makeSource("bar.js"))); - await dispatch(actions.addBreakpoint(bar.location)); - - const bps = selectors.getPendingBreakpoints(getState()); - expect(bps.size).toBe(1); - }); - - it("adding bps doesn't remove existing pending breakpoints", async () => { - const { dispatch, getState } = createStore(simpleMockThreadClient); - const bp = generateBreakpoint("foo.js"); - - await dispatch(actions.newSource(makeSource("foo.js"))); - await dispatch(actions.addBreakpoint(bp.location)); - - const bps = selectors.getPendingBreakpoints(getState()); - expect(bps.size).toBe(2); - }); -}); - -describe("initializing with disabled pending breakpoints in prefs", () => { - const mockedPendingBreakpoint = mockPendingBreakpoint({ disabled: true }); - - beforeEach(() => { - const id = makePendingLocationId(mockedPendingBreakpoint.location); - prefs.pendingBreakpoints = { [id]: mockedPendingBreakpoint }; - }); - - it("syncs breakpoints with pending breakpoints", async () => { - const expectedLocation = Object.assign( - {}, - mockedPendingBreakpoint.location, - { sourceId: "bar.js" } - ); - - const expectedId = makeLocationId(expectedLocation); - const { getState, dispatch } = createStore(simpleMockThreadClient); - const source = makeSource("bar.js"); - await dispatch(actions.newSource(source)); - const bps = selectors.getBreakpoints(getState()); - const bp = bps.get(expectedId); - - expect(bp.location).toEqual(expectedLocation); - expect(bp.disabled).toEqual(mockedPendingBreakpoint.disabled); - }); -}); - -describe("adding sources", () => { - const mockedPendingBreakpoint = mockPendingBreakpoint(); - - beforeEach(() => { - const id = makePendingLocationId(mockedPendingBreakpoint.location); - prefs.pendingBreakpoints = { [id]: mockedPendingBreakpoint }; - }); - - it("corresponding breakpoints are added for a single source", async () => { - const { dispatch, getState } = createStore(simpleMockThreadClient); - - let bps = selectors.getBreakpoints(getState()); - expect(bps.size).toBe(0); - - const source = makeSource("bar.js"); - await dispatch(actions.newSource(source)); - bps = selectors.getBreakpoints(getState()); - expect(bps.size).toBe(1); - }); - - it("add corresponding breakpoints for multiple sources", async () => { - const { dispatch, getState } = createStore(simpleMockThreadClient); - - let bps = selectors.getBreakpoints(getState()); - expect(bps.size).toBe(0); - - const source1 = makeSource("bar.js"); - const source2 = makeSource("foo.js"); - await dispatch(actions.newSources([source1, source2])); - bps = selectors.getBreakpoints(getState()); - expect(bps.size).toBe(1); - }); -}); - -describe("invalid breakpoint location", () => { - const mockedPendingBreakpoint = mockPendingBreakpoint(); - - beforeEach(() => { - const id = makePendingLocationId(mockedPendingBreakpoint.location); - prefs.pendingBreakpoints = { [id]: mockedPendingBreakpoint }; - }); - - it("a corrected corresponding pending breakpoint is added", async () => { - // setup - const bp = generateBreakpoint("foo.js"); - const { - correctedThreadClient, - correctedLocation - } = simulateCorrectThreadClient(2, bp.location); - const { dispatch, getState } = createStore(correctedThreadClient); - const correctedPendingId = makePendingLocationId(correctedLocation); - - // test - await dispatch(actions.newSource(makeSource("foo.js"))); - await dispatch(actions.addBreakpoint(bp.location)); - const pendingBps = selectors.getPendingBreakpoints(getState()); - const pendingBp = pendingBps.get(correctedPendingId); - expect(pendingBp).toMatchSnapshot(); - }); -}); diff --git a/src/actions/tests/project-text-search.spec.js b/src/actions/tests/project-text-search.spec.js deleted file mode 100644 index 236b2666e0..0000000000 --- a/src/actions/tests/project-text-search.spec.js +++ /dev/null @@ -1,104 +0,0 @@ -import { - actions, - createStore, - selectors, - makeSource -} from "../../utils/test-head"; - -const { getTextSearchQuery, getTextSearchResults, getSource } = selectors; - -const threadClient = { - sourceContents: function(sourceId) { - return new Promise((resolve, reject) => { - switch (sourceId) { - case "foo1": - resolve({ - source: "function foo1() {\n const foo = 5; return foo;\n}", - contentType: "text/javascript" - }); - break; - case "foo2": - resolve({ - source: "function foo2(x, y) {\n return x + y;\n}", - contentType: "text/javascript" - }); - break; - case "bar": - resolve({ - source: "function bla(x, y) {\n const bar = 4; return 2;\n}", - contentType: "text/javascript" - }); - break; - } - - reject(`unknown source: ${sourceId}`); - }); - } -}; - -describe("project text search", () => { - it("should add a project text search query", () => { - const { dispatch, getState } = createStore(); - const mockQuery = "foo"; - - dispatch(actions.addSearchQuery(mockQuery)); - - expect(getTextSearchQuery(getState())).toEqual(mockQuery); - }); - - it("should remove the project text search query", () => { - const { dispatch, getState } = createStore(); - const mockQuery = "foo"; - - dispatch(actions.addSearchQuery(mockQuery)); - expect(getTextSearchQuery(getState())).toEqual(mockQuery); - - dispatch(actions.clearSearchQuery()); - expect(getTextSearchQuery(getState())).toEqual(""); - }); - - it("should search all the loaded sources based on the query", async () => { - const { dispatch, getState } = createStore(threadClient); - const mockQuery = "foo"; - - await dispatch(actions.newSource(makeSource("foo1"))); - await dispatch(actions.newSource(makeSource("foo2"))); - - await dispatch(actions.searchSources(mockQuery)); - - const results = getTextSearchResults(getState()); - expect(results).toMatchSnapshot(); - }); - - it("should search a specific source", async () => { - const { dispatch, getState } = createStore(threadClient); - - await dispatch(actions.newSource(makeSource("bar"))); - await dispatch(actions.loadSourceText({ id: "bar" })); - - dispatch(actions.addSearchQuery("bla")); - - const sourceId = getSource(getState(), "bar").get("id"); - - await dispatch(actions.searchSource(sourceId, "bla"), "bla"); - - const results = getTextSearchResults(getState()); - - expect(results).toMatchSnapshot(); - expect(results.size).toEqual(1); - }); - - it("should clear all the search results", async () => { - const { dispatch, getState } = createStore(threadClient); - const mockQuery = "foo"; - - await dispatch(actions.newSource(makeSource("foo1"))); - await dispatch(actions.searchSources(mockQuery)); - - expect(getTextSearchResults(getState())).toMatchSnapshot(); - - await dispatch(actions.clearSearchResults()); - - expect(getTextSearchResults(getState())).toMatchSnapshot(); - }); -}); diff --git a/src/actions/tests/source-tree.spec.js b/src/actions/tests/source-tree.spec.js deleted file mode 100644 index 0267bf3457..0000000000 --- a/src/actions/tests/source-tree.spec.js +++ /dev/null @@ -1,13 +0,0 @@ -import { actions, selectors, createStore } from "../../utils/test-head"; -const { getExpandedState } = selectors; - -describe("source tree", () => { - it("should set the expanded state", () => { - const { dispatch, getState } = createStore(); - const expandedState = new Set(["foo", "bar"]); - - expect(getExpandedState(getState())).toEqual(null); - dispatch(actions.setExpandedState(expandedState)); - expect(getExpandedState(getState())).toEqual(expandedState); - }); -}); diff --git a/src/actions/tests/sources.spec.js b/src/actions/tests/sources.spec.js deleted file mode 100644 index b4d1a1401c..0000000000 --- a/src/actions/tests/sources.spec.js +++ /dev/null @@ -1,183 +0,0 @@ -import { - actions, - selectors, - createStore, - makeSource -} from "../../utils/test-head"; -const { - getSource, - getSources, - getSelectedSource, - getSourceTabs, - getOutOfScopeLocations, - getSelectedLocation -} = selectors; - -import { sourceThreadClient as threadClient } from "./helpers/threadClient.js"; - -process.on("unhandledRejection", (reason, p) => {}); - -describe("sources", () => { - it("should add sources to state", async () => { - const { dispatch, getState } = createStore(); - await dispatch(actions.newSource(makeSource("base.js"))); - await dispatch(actions.newSource(makeSource("jquery.js"))); - - expect(getSources(getState()).size).toEqual(2); - const base = getSource(getState(), "base.js"); - const jquery = getSource(getState(), "jquery.js"); - expect(base.get("id")).toEqual("base.js"); - expect(jquery.get("id")).toEqual("jquery.js"); - }); - - it("should not add multiple identical sources", async () => { - const { dispatch, getState } = createStore(); - - await dispatch(actions.newSource(makeSource("base.js"))); - await dispatch(actions.newSource(makeSource("base.js"))); - - expect(getSources(getState()).size).toEqual(1); - }); - - it("should select a source", async () => { - // Note that we pass an empty client in because the action checks - // if it exists. - const { dispatch, getState } = createStore(threadClient); - - await dispatch(actions.newSource(makeSource("foo1"))); - await dispatch(actions.selectSource("foo1", { line: 1 })); - - const selectedSource = getSelectedSource(getState()); - expect(selectedSource.get("id")).toEqual("foo1"); - - const source = getSource(getState(), selectedSource.get("id")); - expect(source.get("id")).toEqual("foo1"); - - const locations = getOutOfScopeLocations(getState()); - expect(locations.length).toEqual(1); - }); - - it("should automatically select a pending source", async () => { - const { dispatch, getState } = createStore(threadClient); - const baseSource = makeSource("base.js"); - await dispatch(actions.selectSourceURL(baseSource.url)); - - expect(getSelectedSource(getState())).toBe(undefined); - await dispatch(actions.newSource(baseSource)); - expect(getSelectedSource(getState()).get("url")).toBe(baseSource.url); - }); - - it("should open a tab for the source", async () => { - const { dispatch, getState } = createStore(threadClient); - await dispatch(actions.newSource(makeSource("foo.js"))); - dispatch(actions.selectSource("foo.js")); - - const tabs = getSourceTabs(getState()); - expect(tabs.size).toEqual(1); - expect(tabs.get(0)).toEqual("http://localhost:8000/examples/foo.js"); - }); - - it("should select previous tab on tab closed", async () => { - const { dispatch, getState } = createStore(threadClient); - await dispatch(actions.newSource(makeSource("foo.js"))); - await dispatch(actions.newSource(makeSource("bar.js"))); - await dispatch(actions.newSource(makeSource("baz.js"))); - dispatch(actions.selectSource("foo.js")); - dispatch(actions.selectSource("bar.js")); - dispatch(actions.selectSource("baz.js")); - dispatch(actions.closeTab("http://localhost:8000/examples/baz.js")); - expect(getSelectedSource(getState()).get("id")).toBe("bar.js"); - expect(getSourceTabs(getState()).size).toBe(2); - }); - - it("should select next tab on tab closed if no previous tab", async () => { - const { dispatch, getState } = createStore(threadClient); - await dispatch(actions.newSource(makeSource("foo.js"))); - await dispatch(actions.newSource(makeSource("bar.js"))); - await dispatch(actions.newSource(makeSource("baz.js"))); - dispatch(actions.selectSource("foo.js")); - dispatch(actions.selectSource("bar.js")); - dispatch(actions.selectSource("baz.js")); - dispatch(actions.selectSource("foo.js")); - dispatch(actions.closeTab("http://localhost:8000/examples/foo.js")); - expect(getSelectedSource(getState()).get("id")).toBe("bar.js"); - expect(getSourceTabs(getState()).size).toBe(2); - }); - - it("should load source text", async () => { - const { dispatch, getState } = createStore(threadClient); - - await dispatch(actions.loadSourceText({ id: "foo1" })); - const fooSource = getSource(getState(), "foo1"); - expect(fooSource.get("text").indexOf("return 5")).not.toBe(-1); - - await dispatch(actions.loadSourceText({ id: "foo2" })); - const foo2Source = getSource(getState(), "foo2"); - expect(foo2Source.get("text").indexOf("return x + y")).not.toBe(-1); - }); - - it("should load all the texts for the existing sources", async () => { - const { dispatch, getState } = createStore(threadClient); - - await dispatch(actions.newSource(makeSource("foobar.js"))); - await dispatch(actions.newSource(makeSource("barfoo.js"))); - - expect(getSources(getState()).size).toBe(2); - - await dispatch(actions.loadAllSources()); - - const fooSource = getSource(getState(), "foobar.js"); - const barSource = getSource(getState(), "barfoo.js"); - - expect(fooSource.get("text").indexOf("return 2")).not.toBe(-1); - expect(barSource.get("text").indexOf("return 3")).not.toBe(-1); - }); - - it("should cache subsequent source text loads", async () => { - const { dispatch, getState } = createStore(threadClient); - - await dispatch(actions.loadSourceText({ id: "foo1" })); - const prevSource = getSource(getState(), "foo1"); - - await dispatch(actions.loadSourceText(prevSource.toJS())); - const curSource = getSource(getState(), "foo1"); - - expect(prevSource === curSource).toBeTruthy(); - }); - - it("should indicate a loading source", async () => { - const { dispatch, getState } = createStore(threadClient); - - // Don't block on this so we can check the loading state. - dispatch(actions.loadSourceText({ id: "foo1" })); - const fooSource = getSource(getState(), "foo1"); - expect(fooSource.get("loadedState")).toEqual("loading"); - }); - - it("should indicate an errored source text", async () => { - const { dispatch, getState } = createStore(threadClient); - - await dispatch(actions.loadSourceText({ id: "bad-id" })).catch(() => {}); - const badSource = getSource(getState(), "bad-id"); - expect(badSource.get("error").indexOf("unknown source")).not.toBe(-1); - }); - - it("should not select new sources that lack a URL", async () => { - const { dispatch, getState } = createStore(threadClient); - await dispatch(actions.newSource({ id: "foo" })); - - expect(getSources(getState()).size).toEqual(1); - const selectedLocation = getSelectedLocation(getState()); - expect(selectedLocation).toEqual(undefined); - }); - - it("should create a source when first toggling pretty print", async () => { - const { dispatch, getState } = createStore(threadClient); - const source = makeSource("foobar.js"); - await dispatch(actions.newSource(source)); - await dispatch(actions.togglePrettyPrint(source.id)); - expect(getSources(getState()).size).toEqual(2); - await dispatch(actions.togglePrettyPrint(source.id)); - expect(getSources(getState()).size).toEqual(2); - }); -}); diff --git a/src/actions/tests/tabs.spec.js b/src/actions/tests/tabs.spec.js deleted file mode 100644 index 298ad4346d..0000000000 --- a/src/actions/tests/tabs.spec.js +++ /dev/null @@ -1,110 +0,0 @@ -import { - actions, - selectors, - createStore, - makeSource -} from "../../utils/test-head"; -const { getSelectedSource, getSourceTabs } = selectors; - -import { sourceThreadClient as threadClient } from "./helpers/threadClient.js"; - -describe("closing tabs", () => { - it("closing a tab", async () => { - const { dispatch, getState } = createStore(threadClient); - await dispatch(actions.newSource(makeSource("foo.js"))); - await dispatch(actions.selectSource("foo.js")); - dispatch(actions.closeTab("http://localhost:8000/examples/foo.js")); - - expect(getSelectedSource(getState())).toBe(undefined); - expect(getSourceTabs(getState()).size).toBe(0); - }); - - it("closing the inactive tab", async () => { - const { dispatch, getState } = createStore(threadClient); - await dispatch(actions.newSource(makeSource("foo.js"))); - await dispatch(actions.newSource(makeSource("bar.js"))); - await dispatch(actions.selectSource("foo.js")); - await dispatch(actions.selectSource("bar.js")); - dispatch(actions.closeTab("http://localhost:8000/examples/foo.js")); - - expect(getSelectedSource(getState()).get("id")).toBe("bar.js"); - expect(getSourceTabs(getState()).size).toBe(1); - }); - - it("closing the only tab", async () => { - const { dispatch, getState } = createStore(threadClient); - await dispatch(actions.newSource(makeSource("foo.js"))); - await dispatch(actions.selectSource("foo.js")); - dispatch(actions.closeTab("http://localhost:8000/examples/foo.js")); - - expect(getSelectedSource(getState())).toBe(undefined); - expect(getSourceTabs(getState()).size).toBe(0); - }); - - it("closing the active tab", async () => { - const { dispatch, getState } = createStore(threadClient); - await dispatch(actions.newSource(makeSource("foo.js"))); - await dispatch(actions.newSource(makeSource("bar.js"))); - await dispatch(actions.selectSource("foo.js")); - await dispatch(actions.selectSource("bar.js")); - dispatch(actions.closeTab("http://localhost:8000/examples/bar.js")); - - expect(getSelectedSource(getState()).get("id")).toBe("foo.js"); - expect(getSourceTabs(getState()).size).toBe(1); - }); - - it("closing many inactive tabs", async () => { - const { dispatch, getState } = createStore(threadClient); - await dispatch(actions.newSource(makeSource("foo.js"))); - await dispatch(actions.newSource(makeSource("bar.js"))); - await dispatch(actions.newSource(makeSource("bazz.js"))); - await dispatch(actions.selectSource("foo.js")); - await dispatch(actions.selectSource("bar.js")); - await dispatch(actions.selectSource("bazz.js")); - dispatch( - actions.closeTabs([ - "http://localhost:8000/examples/foo.js", - "http://localhost:8000/examples/bar.js" - ]) - ); - - expect(getSelectedSource(getState()).get("id")).toBe("bazz.js"); - expect(getSourceTabs(getState()).size).toBe(1); - }); - - it("closing many tabs including the active tab", async () => { - const { dispatch, getState } = createStore(threadClient); - await dispatch(actions.newSource(makeSource("foo.js"))); - await dispatch(actions.newSource(makeSource("bar.js"))); - await dispatch(actions.newSource(makeSource("bazz.js"))); - await dispatch(actions.selectSource("foo.js")); - await dispatch(actions.selectSource("bar.js")); - await dispatch(actions.selectSource("bazz.js")); - dispatch( - actions.closeTabs([ - "http://localhost:8000/examples/bar.js", - "http://localhost:8000/examples/bazz.js" - ]) - ); - - expect(getSelectedSource(getState()).get("id")).toBe("foo.js"); - expect(getSourceTabs(getState()).size).toBe(1); - }); - - it("closing all the tabs", async () => { - const { dispatch, getState } = createStore(threadClient); - await dispatch(actions.newSource(makeSource("foo.js"))); - await dispatch(actions.newSource(makeSource("bar.js"))); - await dispatch(actions.selectSource("foo.js")); - await dispatch(actions.selectSource("bar.js")); - dispatch( - actions.closeTabs([ - "http://localhost:8000/examples/foo.js", - "http://localhost:8000/examples/bar.js" - ]) - ); - - expect(getSelectedSource(getState())).toBe(undefined); - expect(getSourceTabs(getState()).size).toBe(0); - }); -}); diff --git a/src/actions/tests/ui.spec.js b/src/actions/tests/ui.spec.js deleted file mode 100644 index 92ce818994..0000000000 --- a/src/actions/tests/ui.spec.js +++ /dev/null @@ -1,118 +0,0 @@ -import { createStore, selectors, actions } from "../../utils/test-head"; - -const { - getActiveSearch, - getFileSearchQueryState, - getFileSearchModifierState, - getFrameworkGroupingState, - getPaneCollapse, - getSymbolSearchType, - getHighlightedLineRange, - getSearchResults -} = selectors; - -describe("ui", () => { - it("should toggle the visible state of project search", () => { - const { dispatch, getState } = createStore(); - expect(getActiveSearch(getState())).toBe(null); - dispatch(actions.setActiveSearch("project")); - expect(getActiveSearch(getState())).toBe("project"); - }); - - it("should close project search", () => { - const { dispatch, getState } = createStore(); - expect(getActiveSearch(getState())).toBe(null); - dispatch(actions.setActiveSearch("project")); - dispatch(actions.closeActiveSearch()); - expect(getActiveSearch(getState())).toBe(null); - }); - - it("should toggle the visible state of file search", () => { - const { dispatch, getState } = createStore(); - expect(getActiveSearch(getState())).toBe(null); - dispatch(actions.setActiveSearch("file")); - expect(getActiveSearch(getState())).toBe("file"); - }); - - it("should update search results", () => { - const { dispatch, getState } = createStore(); - expect(getSearchResults(getState())).toEqual({ - matches: [], - matchIndex: -1, - index: -1, - count: 0 - }); - - const results = { count: 3, index: 2 }; - dispatch(actions.updateSearchResults(results)); - expect(getSearchResults(getState())).toEqual(results); - }); - - it("should close file search", () => { - const { dispatch, getState } = createStore(); - expect(getActiveSearch(getState())).toBe(null); - dispatch(actions.setActiveSearch("file")); - dispatch(actions.closeActiveSearch()); - expect(getActiveSearch(getState())).toBe(null); - }); - - it("should update the file search query", () => { - const { dispatch, getState } = createStore(); - let fileSearchQueryState = getFileSearchQueryState(getState()); - expect(fileSearchQueryState).toBe(""); - dispatch(actions.setFileSearchQuery("foobar")); - fileSearchQueryState = getFileSearchQueryState(getState()); - expect(fileSearchQueryState).toBe("foobar"); - }); - - it("should toggle a file search modifier", () => { - const { dispatch, getState } = createStore(); - let fileSearchModState = getFileSearchModifierState(getState()); - expect(fileSearchModState.get("caseSensitive")).toBe(false); - dispatch(actions.toggleFileSearchModifier("caseSensitive")); - fileSearchModState = getFileSearchModifierState(getState()); - expect(fileSearchModState.get("caseSensitive")).toBe(true); - }); - - it("should toggle the symbol search state", () => { - const { dispatch, getState } = createStore(); - expect(getActiveSearch(getState())).toBe(null); - dispatch(actions.setActiveSearch("symbol")); - expect(getActiveSearch(getState())).toBe("symbol"); - }); - - it("should change the selected symbol type", () => { - const { dispatch, getState } = createStore(); - dispatch(actions.setSelectedSymbolType("variables")); - expect(getSymbolSearchType(getState())).toBe("variables"); - }); - - it("should toggle the collapse state of a pane", () => { - const { dispatch, getState } = createStore(); - expect(getPaneCollapse(getState(), "start")).toBe(false); - dispatch(actions.togglePaneCollapse("start", true)); - expect(getPaneCollapse(getState(), "start")).toBe(true); - }); - - it("should toggle the collapsed state of frameworks in the callstack", () => { - const { dispatch, getState } = createStore(); - const currentState = getFrameworkGroupingState(getState()); - dispatch(actions.toggleFrameworkGrouping(!currentState)); - expect(getFrameworkGroupingState(getState())).toBe(!currentState); - }); - - it("should highlight lines", () => { - const { dispatch, getState } = createStore(); - const range = { start: 3, end: 5, sourceId: 2 }; - dispatch(actions.highlightLineRange(range)); - expect(getHighlightedLineRange(getState())).toEqual(range); - }); - - it("should clear highlight lines", () => { - const { dispatch, getState } = createStore(); - const range = { start: 3, end: 5, sourceId: 2 }; - dispatch(actions.highlightLineRange(range)); - dispatch(actions.clearHighlightLineRange()); - expect(getHighlightedLineRange(getState())).toEqual({}); - }); -}); diff --git a/src/actions/toolbox.js b/src/actions/toolbox.js deleted file mode 100644 index 0779c3d18d..0000000000 --- a/src/actions/toolbox.js +++ /dev/null @@ -1,23 +0,0 @@ -// @flow - -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -const { isDevelopment } = require("devtools-config"); - -import type { ThunkArgs } from "./types"; - -/** - * @memberof actions/toolbox - * @static - */ -export function openLink(url: string) { - return async function({ openLink: openLinkCommand }: ThunkArgs) { - if (isDevelopment()) { - const win = window.open(url, "_blank"); - win.focus(); - } else { - openLinkCommand(url); - } - }; -} diff --git a/src/actions/types.js b/src/actions/types.js deleted file mode 100644 index d85ac3d6d3..0000000000 --- a/src/actions/types.js +++ /dev/null @@ -1,270 +0,0 @@ -// @flow - -import type { - Source, - Breakpoint, - Expression, - LoadedObject, - Location, - Frame, - Scope, - Why -} from "debugger-html"; - -import type { State } from "../reducers/types"; -import type { ActiveSearchType } from "../reducers/ui"; - -import type { SymbolDeclaration, AstLocation } from "../workers/parser"; - -/** - * Flow types - * @module actions/types - */ - -/** - * Argument parameters via Thunk middleware for {@link https://github.com/gaearon/redux-thunk|Redux Thunk} - * - * @memberof actions/breakpoints - * @static - * @typedef {Object} ThunkArgs - */ -export type ThunkArgs = { - dispatch: (action: any) => Promise, - getState: () => State, - client: any, - sourceMaps: any, - openLink: (url: string) => void -}; - -export type Thunk = ThunkArgs => any; - -export type ActionType = Object | Function; - -/** - * Tri-state status for async operations - * - * Available options are: - * `"start"` or `"done"` or `"error"` - * - * @memberof actions/types - * @static - * @enum - */ -export type AsyncStatus = "start" | "done" | "error"; - -type BreakpointResult = { - actualLocation: Location, - id: string, - text: string, - generatedLocation: Location -}; - -type AddBreakpointResult = { - previousLocation: Location, - breakpoint: Breakpoint -}; - -type ProjectTextSearchResult = { - sourceId: string, - filepath: string, - matches: Array -}; - -type BreakpointAction = - | { - type: "ADD_BREAKPOINT", - breakpoint: Breakpoint, - condition: string, - status: AsyncStatus, - error: string, - value: AddBreakpointResult - } - | { - type: "REMOVE_BREAKPOINT", - breakpoint: Breakpoint, - status: AsyncStatus, - error: string, - disabled: boolean - } - | { - type: "SET_BREAKPOINT_CONDITION", - breakpoint: Breakpoint, - condition: string, - status: AsyncStatus, - value: BreakpointResult, - error: string - } - | { - type: "TOGGLE_BREAKPOINTS", - shouldDisableBreakpoints: boolean, - status: AsyncStatus, - error: string, - value: any - }; - -type SourceAction = - | { type: "ADD_SOURCE", source: Source } - | { type: "ADD_SOURCES", sources: Array } - | { - type: "SELECT_SOURCE", - source: Source, - line?: number, - tabIndex?: number - } - | { type: "SELECT_SOURCE_URL", url: string, line?: number } - | { - type: "LOAD_SOURCE_TEXT", - source: Source, - status: AsyncStatus, - error: string, - value: Source - } - | { - type: "BLACKBOX", - source: Source, - error: string, - value: { isBlackBoxed: boolean } - } - | { - type: "TOGGLE_PRETTY_PRINT", - source: Source, - originalSource: Source, - status: AsyncStatus, - error: string, - value: { - isPrettyPrinted: boolean, - source: Source, - frames: Frame[] - } - } - | { type: "MOVE_TAB", url: string, tabIndex: number } - | { type: "CLOSE_TAB", url: string, tabs: any } - | { type: "CLOSE_TABS", urls: string[], tabs: any }; - -export type panelPositionType = "start" | "end"; - -type UIAction = - | { - type: "TOGGLE_ACTIVE_SEARCH", - value: ?ActiveSearchType - } - | { - type: "TOGGLE_FILE_SEARCH_MODIFIER", - modifier: "caseSensitive" | "wholeWord" | "regexMatch" - } - | { - type: "TOGGLE_FRAMEWORK_GROUPING", - value: boolean - } - | { - type: "SHOW_SOURCE", - sourceUrl: string - } - | { - type: "TOGGLE_PANE", - position: panelPositionType, - paneCollapsed: boolean - }; - -type PauseAction = - | { type: "BREAK_ON_NEXT", value: boolean } - | { type: "RESUME", value: void } - | { - type: "PAUSED", - pauseInfo: { - why: Why, - frame: Frame, - isInterrupted?: boolean - }, - scopes: Scope[], - frames: Frame[], - selectedFrameId: string, - loadedObjects: LoadedObject[] - } - | { - type: "PAUSE_ON_EXCEPTIONS", - shouldPauseOnExceptions: boolean, - shouldIgnoreCaughtExceptions: boolean - } - | { type: "COMMAND", value: { type: string } } - | { type: "SELECT_FRAME", frame: Frame, scopes: Scope[] } - | { - type: "LOAD_OBJECT_PROPERTIES", - objectId: string, - status: string, - value: Object, - "@@dispatch/promise": any - } - | { - type: "ADD_EXPRESSION", - id: number, - input: string, - value: string - } - | { - type: "EVALUATE_EXPRESSION", - input: string, - value: Object, - "@@dispatch/promise": any - } - | { - type: "UPDATE_EXPRESSION", - expression: Expression, - input: string - } - | { - type: "DELETE_EXPRESSION", - input: string - }; - -type NavigateAction = { type: "NAVIGATE", url: string }; - -type ASTAction = - | { - type: "SET_SYMBOLS", - source: Source, - symbols: SymbolDeclaration[] - } - | { - type: "OUT_OF_SCOPE_LOCATIONS", - locations: AstLocation[] - } - | { - type: "SET_PREVIEW", - value: { - expression: string, - result: any, - location: AstLocation, - tokenPos: any, - cursorPos: any - } - } - | { - type: "CLEAR_SELECTION" - }; - -export type SourceTreeAction = { type: "SET_EXPANDED_STATE", expanded: any }; - -export type ProjectTextSearchAction = { - type: "ADD_QUERY", - query: string -} & { - type: "ADD_SEARCH_RESULT", - result: ProjectTextSearchResult -} & { - type: "CLEAR_QUERY" - }; - -/** - * Actions: Source, Breakpoint, and Navigation - * - * @memberof actions/types - * @static - */ -export type Action = - | SourceAction - | BreakpointAction - | PauseAction - | NavigateAction - | UIAction - | ASTAction; diff --git a/src/actions/ui.js b/src/actions/ui.js deleted file mode 100644 index 35f38a6b38..0000000000 --- a/src/actions/ui.js +++ /dev/null @@ -1,126 +0,0 @@ -// @flow -import { getSource, getActiveSearch } from "../selectors"; -import type { ThunkArgs } from "./types"; -import type { ActiveSearchType, SymbolSearchType } from "../reducers/ui"; -import { clearSourceSearchQuery } from "./source-search"; - -export function closeActiveSearch() { - return ({ getState, dispatch }: ThunkArgs) => { - const activeSearch = getActiveSearch(getState()); - - if (activeSearch == "source") { - dispatch(clearSourceSearchQuery()); - } - - dispatch({ - type: "TOGGLE_ACTIVE_SEARCH", - value: null - }); - }; -} - -export function setActiveSearch(activeSearch?: ActiveSearchType) { - return ({ dispatch, getState }: ThunkArgs) => { - const activeSearchState = getActiveSearch(getState()); - if (activeSearchState === activeSearch) { - return; - } - - dispatch({ - type: "TOGGLE_ACTIVE_SEARCH", - value: activeSearch - }); - }; -} - -export function toggleFrameworkGrouping(toggleValue: boolean) { - return ({ dispatch, getState }: ThunkArgs) => { - dispatch({ - type: "TOGGLE_FRAMEWORK_GROUPING", - value: toggleValue - }); - }; -} - -export function setSelectedSymbolType(symbolType: SymbolSearchType) { - return ({ dispatch, getState }: ThunkArgs) => { - dispatch({ - type: "SET_SYMBOL_SEARCH_TYPE", - symbolType - }); - }; -} - -export function setFileSearchQuery(query: string) { - return { - type: "UPDATE_FILE_SEARCH_QUERY", - query - }; -} - -export function updateSearchResults(results: Object) { - return { - type: "UPDATE_SEARCH_RESULTS", - results - }; -} - -export function toggleFileSearchModifier(modifier: string) { - return { type: "TOGGLE_FILE_SEARCH_MODIFIER", modifier }; -} - -export function showSource(sourceId: string) { - return ({ dispatch, getState }: ThunkArgs) => { - const source = getSource(getState(), sourceId); - - dispatch({ - type: "SHOW_SOURCE", - sourceUrl: "" - }); - - dispatch({ - type: "SHOW_SOURCE", - sourceUrl: source.get("url") - }); - }; -} - -export function togglePaneCollapse(position: string, paneCollapsed: boolean) { - return { - type: "TOGGLE_PANE", - position, - paneCollapsed - }; -} - -/** - * @memberof actions/sources - * @static - */ -export function highlightLineRange(location: { - start: number, - end: number, - sourceId: number -}) { - return { - type: "HIGHLIGHT_LINES", - location - }; -} - -/** - * @memberof actions/sources - * @static - */ -export function clearHighlightLineRange() { - return { - type: "CLEAR_HIGHLIGHT_LINES" - }; -} - -export function toggleConditionalBreakpointPanel(line?: number) { - return { - type: "TOGGLE_CONDITIONAL_BREAKPOINT_PANEL", - line: line - }; -} diff --git a/src/client/chrome.js b/src/client/chrome.js deleted file mode 100644 index 56700bd5aa..0000000000 --- a/src/client/chrome.js +++ /dev/null @@ -1,30 +0,0 @@ -// @flow - -import { setupCommands, clientCommands } from "./chrome/commands"; -import { setupEvents, clientEvents, pageEvents } from "./chrome/events"; - -export async function onConnect(connection: any, actions: Object): Object { - const { tabConnection, connTarget: { type } } = connection; - const { Debugger, Runtime, Page } = tabConnection; - - Debugger.enable(); - Debugger.setPauseOnExceptions({ state: "none" }); - Debugger.setAsyncCallStackDepth({ maxDepth: 0 }); - - if (type == "chrome") { - Page.frameNavigated(pageEvents.frameNavigated); - Page.frameStartedLoading(pageEvents.frameStartedLoading); - Page.frameStoppedLoading(pageEvents.frameStoppedLoading); - } - - Debugger.scriptParsed(clientEvents.scriptParsed); - Debugger.scriptFailedToParse(clientEvents.scriptFailedToParse); - Debugger.paused(clientEvents.paused); - Debugger.resumed(clientEvents.resumed); - - setupCommands({ Debugger, Runtime, Page }); - setupEvents({ actions, Page, type, Runtime }); - return {}; -} - -export { clientCommands, clientEvents }; diff --git a/src/client/chrome/commands.js b/src/client/chrome/commands.js deleted file mode 100644 index cad25a7569..0000000000 --- a/src/client/chrome/commands.js +++ /dev/null @@ -1,127 +0,0 @@ -// @flow - -import { - toServerLocation, - fromServerLocation, - createLoadedObject -} from "./create"; - -import type { Location } from "debugger-html"; -import type { ServerLocation, Agents } from "./types"; - -type setBreakpointResponseType = { - breakpointId: string, - serverLocation?: ServerLocation -}; - -let debuggerAgent; -let runtimeAgent; -let pageAgent; - -function setupCommands({ Debugger, Runtime, Page }: Agents) { - debuggerAgent = Debugger; - runtimeAgent = Runtime; - pageAgent = Page; -} - -function resume() { - return debuggerAgent.resume(); -} - -function stepIn() { - return debuggerAgent.stepInto(); -} - -function stepOver() { - return debuggerAgent.stepOver(); -} - -function stepOut() { - return debuggerAgent.stepOut(); -} - -function pauseOnExceptions( - shouldPauseOnExceptions: boolean, - shouldIgnoreCaughtExceptions: boolean -) { - if (!shouldPauseOnExceptions) { - return debuggerAgent.setPauseOnExceptions({ state: "none" }); - } - const state = shouldIgnoreCaughtExceptions ? "uncaught" : "all"; - return debuggerAgent.setPauseOnExceptions({ state }); -} - -function breakOnNext() { - return debuggerAgent.pause(); -} - -function sourceContents(sourceId: string) { - return debuggerAgent - .getScriptSource({ scriptId: sourceId }) - .then(({ scriptSource }) => ({ - source: scriptSource, - contentType: null - })); -} - -async function setBreakpoint(location: Location, condition: string) { - const { - breakpointId, - serverLocation - }: setBreakpointResponseType = await debuggerAgent.setBreakpoint({ - location: toServerLocation(location), - columnNumber: location.column - }); - - const actualLocation = fromServerLocation(serverLocation) || location; - - return { - id: breakpointId, - actualLocation: actualLocation - }; -} - -function removeBreakpoint(breakpointId: string) { - return debuggerAgent.removeBreakpoint({ breakpointId }); -} - -async function getProperties(object: any) { - const { result } = await runtimeAgent.getProperties({ - objectId: object.objectId - }); - - const loadedObjects = result.map(createLoadedObject); - - return { loadedObjects }; -} - -function evaluate(script: string) { - return runtimeAgent.evaluate({ expression: script }); -} - -function debuggeeCommand(script: string) { - evaluate(script); - return Promise.resolve(); -} - -function navigate(url: string) { - return pageAgent.navigate({ url }); -} - -const clientCommands = { - resume, - stepIn, - stepOut, - stepOver, - pauseOnExceptions, - breakOnNext, - sourceContents, - setBreakpoint, - removeBreakpoint, - evaluate, - debuggeeCommand, - navigate, - getProperties -}; - -export { setupCommands, clientCommands }; diff --git a/src/client/chrome/create.js b/src/client/chrome/create.js deleted file mode 100644 index e8d4ac74a7..0000000000 --- a/src/client/chrome/create.js +++ /dev/null @@ -1,46 +0,0 @@ -// @flow - -import type { Location, LoadedObject } from "debugger-html"; -import type { ServerLocation } from "./types"; - -export function fromServerLocation(serverLocation?: ServerLocation): ?Location { - if (serverLocation) { - return { - sourceId: serverLocation.scriptId, - line: serverLocation.lineNumber + 1, - column: serverLocation.columnNumber, - sourceUrl: "" - }; - } -} - -export function toServerLocation(location: Location): ServerLocation { - return { - scriptId: location.sourceId, - lineNumber: location.line - 1 - }; -} - -export function createFrame(frame: any) { - return { - id: frame.callFrameId, - displayName: frame.functionName, - scopeChain: frame.scopeChain, - generatedLocation: frame.location, - location: fromServerLocation(frame.location) - }; -} - -export function createLoadedObject( - serverObject: any, - parentId: string -): LoadedObject { - const { value, name } = serverObject; - - return { - objectId: value.objectId, - parentId, - name, - value - }; -} diff --git a/src/client/chrome/events.js b/src/client/chrome/events.js deleted file mode 100644 index 3a4ab12ed2..0000000000 --- a/src/client/chrome/events.js +++ /dev/null @@ -1,124 +0,0 @@ -// @flow - -import { createFrame, createLoadedObject } from "./create"; - -let actions; -let pageAgent; -let clientType; -let runtimeAgent; - -function setupEvents(dependencies: any) { - actions = dependencies.actions; - pageAgent = dependencies.Page; - clientType = dependencies.clientType; - runtimeAgent = dependencies.Runtime; -} - -// Debugger Events -function scriptParsed({ - scriptId, - url, - startLine, - startColumn, - endLine, - endColumn, - executionContextId, - hash, - isContentScript, - isInternalScript, - isLiveEdit, - sourceMapURL, - hasSourceURL, - deprecatedCommentWasUsed -}: any) { - if (isContentScript) { - return; - } - - if (clientType == "node") { - sourceMapURL = undefined; - } - - actions.newSource({ - id: scriptId, - url, - sourceMapURL, - isPrettyPrinted: false - }); -} - -function scriptFailedToParse() {} - -async function paused({ - callFrames, - reason, - data, - hitBreakpoints, - asyncStackTrace -}: any) { - const frames = callFrames.map(createFrame); - const frame = frames[0]; - const why = Object.assign( - {}, - { - type: reason - }, - data - ); - - const objectId = frame.scopeChain[0].object.objectId; - const { result } = await runtimeAgent.getProperties({ - objectId - }); - - const loadedObjects = result.map(createLoadedObject); - - if (clientType == "chrome") { - pageAgent.configureOverlay({ message: "Paused in debugger.html" }); - } - - await actions.paused({ frame, why, frames, loadedObjects }); -} - -function resumed() { - if (clientType == "chrome") { - pageAgent.configureOverlay({ suspended: false }); - } - - actions.resumed(); -} - -function globalObjectCleared() {} - -// Page Events -function frameNavigated(frame: any) { - actions.navigated(); -} - -function frameStartedLoading() { - actions.willNavigate(); -} - -function domContentEventFired() {} - -function loadEventFired() {} - -function frameStoppedLoading() {} - -const clientEvents = { - scriptParsed, - scriptFailedToParse, - paused, - resumed, - globalObjectCleared -}; - -const pageEvents = { - frameNavigated, - frameStartedLoading, - domContentEventFired, - loadEventFired, - frameStoppedLoading -}; - -export { setupEvents, pageEvents, clientEvents }; diff --git a/src/client/chrome/types.js b/src/client/chrome/types.js deleted file mode 100644 index 04e6d710fa..0000000000 --- a/src/client/chrome/types.js +++ /dev/null @@ -1,18 +0,0 @@ -// @flow - -export type ServerLocation = { - scriptId: string, - lineNumber: number, - columnNumber?: number -}; - -export type Agents = { - Debugger: any, - Runtime: any, - Page: any -}; - -export type ChromeClientConnection = { - connectNodeClient: () => void, - connectNode: () => void -}; diff --git a/src/client/firefox.js b/src/client/firefox.js deleted file mode 100644 index 7d5581d635..0000000000 --- a/src/client/firefox.js +++ /dev/null @@ -1,62 +0,0 @@ -// @flow - -import { setupCommands, clientCommands } from "./firefox/commands"; -import { setupEvents, clientEvents } from "./firefox/events"; -import { features } from "../utils/prefs"; - -export async function onConnect(connection: any, actions: Object): Object { - const { - tabConnection: { tabTarget, threadClient, debuggerClient } - } = connection; - - if (!tabTarget || !threadClient || !debuggerClient) { - return { bpClients: {} }; - } - - const supportsWasm = - features.wasm && !!debuggerClient.mainRoot.traits.wasmBinarySource; - - const { bpClients } = setupCommands({ - threadClient, - tabTarget, - debuggerClient, - supportsWasm - }); - - if (actions) { - setupEvents({ threadClient, actions, supportsWasm }); - } - - tabTarget.on("will-navigate", actions.willNavigate); - tabTarget.on("navigate", actions.navigated); - - await threadClient.reconfigure({ - observeAsmJS: true, - wasmBinarySource: supportsWasm - }); - - threadClient._parent - .listWorkers() - .then(workers => actions.setWorkers(workers)); - - // In Firefox, we need to initially request all of the sources. This - // usually fires off individual `newSource` notifications as the - // debugger finds them, but there may be existing sources already in - // the debugger (if it's paused already, or if loading the page from - // bfcache) so explicity fire `newSource` events for all returned - // sources. - const sources = await clientCommands.fetchSources(); - actions.connect(tabTarget.url); - await actions.newSources(sources); - - // If the threadClient is already paused, make sure to show a - // paused state. - const pausedPacket = threadClient.getLastPausePacket(); - if (pausedPacket) { - clientEvents.paused("paused", pausedPacket); - } - - return { bpClients }; -} - -export { clientCommands, clientEvents }; diff --git a/src/client/firefox/breakpoints.js b/src/client/firefox/breakpoints.js deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/client/firefox/commands.js b/src/client/firefox/commands.js deleted file mode 100644 index 8a215a499a..0000000000 --- a/src/client/firefox/commands.js +++ /dev/null @@ -1,299 +0,0 @@ -// @flow - -import type { - BreakpointId, - BreakpointResult, - Frame, - FrameId, - Location, - Script, - Source, - SourceId -} from "debugger-html"; - -import type { - TabTarget, - DebuggerClient, - Grip, - ThreadClient, - ObjectClient, - BPClients -} from "./types"; - -import { makeLocationId } from "../../utils/breakpoint"; - -import { createSource, createBreakpointLocation } from "./create"; - -let bpClients: BPClients; -let threadClient: ThreadClient; -let tabTarget: TabTarget; -let debuggerClient: DebuggerClient; -let supportsWasm: boolean; - -type Dependencies = { - threadClient: ThreadClient, - tabTarget: TabTarget, - debuggerClient: DebuggerClient, - supportsWasm: boolean -}; - -function setupCommands(dependencies: Dependencies): { bpClients: BPClients } { - threadClient = dependencies.threadClient; - tabTarget = dependencies.tabTarget; - debuggerClient = dependencies.debuggerClient; - supportsWasm = dependencies.supportsWasm; - bpClients = {}; - - return { bpClients }; -} - -function resume(): Promise<*> { - return new Promise(resolve => { - threadClient.resume(resolve); - }); -} - -function stepIn(): Promise<*> { - return new Promise(resolve => { - threadClient.stepIn(resolve); - }); -} - -function stepOver(): Promise<*> { - return new Promise(resolve => { - threadClient.stepOver(resolve); - }); -} - -function stepOut(): Promise<*> { - return new Promise(resolve => { - threadClient.stepOut(resolve); - }); -} - -function breakOnNext(): Promise<*> { - return threadClient.breakOnNext(); -} - -function sourceContents(sourceId: SourceId): Source { - const sourceClient = threadClient.source({ actor: sourceId }); - return sourceClient.source(); -} - -function getBreakpointByLocation(location: Location) { - const id = makeLocationId(location); - const bpClient = bpClients[id]; - - if (bpClient) { - const { actor, url, line, column, condition } = bpClient.location; - return { - id: bpClient.actor, - condition, - actualLocation: { - line, - column, - sourceId: actor, - sourceUrl: url - } - }; - } - return null; -} - -function setBreakpoint( - location: Location, - condition: boolean, - noSliding: boolean -): Promise { - const sourceClient = threadClient.source({ actor: location.sourceId }); - - return sourceClient - .setBreakpoint({ - line: location.line, - column: location.column, - condition, - noSliding - }) - .then(([{ actualLocation }, bpClient]) => { - actualLocation = createBreakpointLocation(location, actualLocation); - const id = makeLocationId(actualLocation); - bpClients[id] = bpClient; - bpClient.location.line = actualLocation.line; - bpClient.location.column = actualLocation.column; - bpClient.location.url = actualLocation.sourceUrl || ""; - - return { id, actualLocation }; - }); -} - -function removeBreakpoint(generatedLocation: Location) { - try { - const id = makeLocationId(generatedLocation); - const bpClient = bpClients[id]; - if (!bpClient) { - console.warn("No breakpoint to delete on server"); - return Promise.resolve(); - } - delete bpClients[id]; - return bpClient.remove(); - } catch (_error) { - console.warn("No breakpoint to delete on server"); - } -} - -function setBreakpointCondition( - breakpointId: BreakpointId, - location: Location, - condition: boolean, - noSliding: boolean -) { - const bpClient = bpClients[breakpointId]; - delete bpClients[breakpointId]; - - return bpClient - .setCondition(threadClient, condition, noSliding) - .then(_bpClient => { - bpClients[breakpointId] = _bpClient; - return { id: breakpointId }; - }); -} - -type EvaluateParam = { - frameId?: FrameId -}; - -function evaluate(script: Script, { frameId }: EvaluateParam) { - const params = frameId ? { frameActor: frameId } : {}; - if (!tabTarget || !tabTarget.activeConsole) { - return Promise.resolve(); - } - - return new Promise(resolve => { - tabTarget.activeConsole.evaluateJS( - script, - result => resolve(result), - params - ); - }); -} - -function debuggeeCommand(script: Script) { - tabTarget.activeConsole.evaluateJS(script, () => {}, {}); - - if (!debuggerClient) { - return; - } - - const consoleActor = tabTarget.form.consoleActor; - const request = debuggerClient._activeRequests.get(consoleActor); - request.emit("json-reply", {}); - debuggerClient._activeRequests.delete(consoleActor); - - return Promise.resolve(); -} - -function navigate(url: string): Promise<*> { - return tabTarget.activeTab.navigateTo(url); -} - -function reload(): Promise<*> { - return tabTarget.activeTab.reload(); -} - -function getProperties(grip: Grip): Promise<*> { - const objClient = threadClient.pauseGrip(grip); - - return objClient.getPrototypeAndProperties().then(resp => { - const { ownProperties, safeGetterValues } = resp; - for (const name in safeGetterValues) { - const { enumerable, writable, getterValue } = safeGetterValues[name]; - ownProperties[name] = { enumerable, writable, value: getterValue }; - } - return resp; - }); -} - -async function getFrameScopes(frame: Frame): Promise<*> { - if (frame.scope) { - return frame.scope; - } - - return threadClient.getEnvironment(frame.id); -} - -function pauseOnExceptions( - shouldPauseOnExceptions: boolean, - shouldIgnoreCaughtExceptions: boolean -): Promise<*> { - return threadClient.pauseOnExceptions( - shouldPauseOnExceptions, - shouldIgnoreCaughtExceptions - ); -} - -function prettyPrint(sourceId: SourceId, indentSize: number): Promise<*> { - const sourceClient = threadClient.source({ actor: sourceId }); - return sourceClient.prettyPrint(indentSize); -} - -async function blackBox(sourceId: SourceId, isBlackBoxed: boolean): Promise<*> { - const sourceClient = threadClient.source({ actor: sourceId }); - if (isBlackBoxed) { - await sourceClient.unblackBox(); - } else { - await sourceClient.blackBox(); - } - - return { isBlackBoxed: !isBlackBoxed }; -} - -function disablePrettyPrint(sourceId: SourceId): Promise<*> { - const sourceClient = threadClient.source({ actor: sourceId }); - return sourceClient.disablePrettyPrint(); -} - -function interrupt(): Promise<*> { - return threadClient.interrupt(); -} - -function eventListeners(): Promise<*> { - return threadClient.eventListeners(); -} - -function pauseGrip(func: Function): ObjectClient { - return threadClient.pauseGrip(func); -} - -async function fetchSources() { - const { sources } = await threadClient.getSources(); - return sources.map(source => createSource(source, { supportsWasm })); -} - -const clientCommands = { - blackBox, - interrupt, - eventListeners, - pauseGrip, - resume, - stepIn, - stepOut, - stepOver, - breakOnNext, - sourceContents, - getBreakpointByLocation, - setBreakpoint, - removeBreakpoint, - setBreakpointCondition, - evaluate, - debuggeeCommand, - navigate, - reload, - getProperties, - getFrameScopes, - pauseOnExceptions, - prettyPrint, - disablePrettyPrint, - fetchSources -}; - -export { setupCommands, clientCommands }; diff --git a/src/client/firefox/create.js b/src/client/firefox/create.js deleted file mode 100644 index e71a598b54..0000000000 --- a/src/client/firefox/create.js +++ /dev/null @@ -1,82 +0,0 @@ -// @flow -// This module converts Firefox specific types to the generic types - -import type { Frame, Source, Location } from "debugger-html"; -import type { - PausedPacket, - FramesResponse, - FramePacket, - SourcePayload -} from "./types"; - -export function createFrame(frame: FramePacket): Frame { - let title; - if (frame.type == "call") { - const c = frame.callee; - title = - c.name || c.userDisplayName || c.displayName || L10N.getStr("anonymous"); - } else { - title = `(${frame.type})`; - } - const location = { - sourceId: frame.where.source.actor, - line: frame.where.line, - column: frame.where.column - }; - return { - id: frame.actor, - displayName: title, - location, - generatedLocation: location, - this: frame.this, - scope: frame.environment - }; -} - -export function createSource( - source: SourcePayload, - { supportsWasm }: { supportsWasm: boolean } -): Source { - return { - id: source.actor, - url: source.url, - isPrettyPrinted: false, - isWasm: supportsWasm && source.introductionType === "wasm", - sourceMapURL: source.sourceMapURL, - isBlackBoxed: false, - loadedState: "unloaded" - }; -} - -export function createPause( - packet: PausedPacket, - response: FramesResponse -): any { - // NOTE: useful when the debugger is already paused - const frame = packet.frame || response.frames[0]; - - return Object.assign({}, packet, { - frame: createFrame(frame), - frames: response.frames.map(createFrame) - }); -} - -// Firefox only returns `actualLocation` if it actually changed, -// but we want it always to exist. Format `actualLocation` if it -// exists, otherwise use `location`. - -export function createBreakpointLocation( - location: Location, - actualLocation?: Object -): Location { - if (!actualLocation) { - return location; - } - - return { - sourceId: actualLocation.source.actor, - sourceUrl: actualLocation.source.url, - line: actualLocation.line, - column: actualLocation.column - }; -} diff --git a/src/client/firefox/events.js b/src/client/firefox/events.js deleted file mode 100644 index ff8748bc46..0000000000 --- a/src/client/firefox/events.js +++ /dev/null @@ -1,74 +0,0 @@ -// @flow - -import type { - SourcePacket, - ResumedPacket, - PausedPacket, - ThreadClient, - Actions -} from "./types"; - -import { createPause, createSource } from "./create"; -import { isEnabled } from "devtools-config"; - -const CALL_STACK_PAGE_SIZE = 1000; - -type Dependencies = { - threadClient: ThreadClient, - actions: Actions, - supportsWasm: boolean -}; - -let threadClient: ThreadClient; -let actions: Actions; -let supportsWasm: boolean; - -function setupEvents(dependencies: Dependencies) { - threadClient = dependencies.threadClient; - actions = dependencies.actions; - supportsWasm = dependencies.supportsWasm; - - if (threadClient) { - Object.keys(clientEvents).forEach(eventName => { - threadClient.addListener(eventName, clientEvents[eventName]); - }); - } -} - -async function paused(_: "paused", packet: PausedPacket) { - // If paused by an explicit interrupt, which are generated by the - // slow script dialog and internal events such as setting - // breakpoints, ignore the event. - const { why } = packet; - if (why.type === "interrupted" && !packet.why.onNext) { - return; - } - - // Eagerly fetch the frames - const response = await threadClient.getFrames(0, CALL_STACK_PAGE_SIZE); - - if (why.type != "alreadyPaused") { - const pause = createPause(packet, response); - actions.paused(pause); - } -} - -function resumed(_: "resumed", packet: ResumedPacket) { - actions.resumed(packet); -} - -function newSource(_: "newSource", { source }: SourcePacket) { - actions.newSource(createSource(source, { supportsWasm })); - - if (isEnabled("eventListeners")) { - actions.fetchEventListeners(); - } -} - -const clientEvents = { - paused, - resumed, - newSource -}; - -export { setupEvents, clientEvents }; diff --git a/src/client/firefox/tests/__snapshots__/commands.spec.js.snap b/src/client/firefox/tests/__snapshots__/commands.spec.js.snap deleted file mode 100644 index 7380177718..0000000000 --- a/src/client/firefox/tests/__snapshots__/commands.spec.js.snap +++ /dev/null @@ -1,66 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`firefox commands getProperties empty response 1`] = ` -Object { - "ownProperties": Object {}, - "safeGetterValues": Object {}, -} -`; - -exports[`firefox commands getProperties getter values 1`] = ` -Object { - "ownProperties": Object { - "foo": Object { - "value": "foo", - }, - "obj": Object { - "enumerable": true, - "value": "getter", - "writable": false, - }, - }, - "safeGetterValues": Object { - "obj": Object { - "enumerable": true, - "getterValue": "getter", - "writable": false, - }, - }, -} -`; - -exports[`firefox commands getProperties new getter values 1`] = ` -Object { - "ownProperties": Object { - "foo": Object { - "value": "foo", - }, - "obj": Object { - "enumerable": true, - "value": "getter", - "writable": false, - }, - }, - "safeGetterValues": Object { - "obj": Object { - "enumerable": true, - "getterValue": "getter", - "writable": false, - }, - }, -} -`; - -exports[`firefox commands getProperties simple properties 1`] = ` -Object { - "ownProperties": Object { - "foo": Object { - "value": "foo", - }, - "obj": Object { - "value": "obj", - }, - }, - "safeGetterValues": Object {}, -} -`; diff --git a/src/client/firefox/tests/commands.spec.js b/src/client/firefox/tests/commands.spec.js deleted file mode 100644 index 904a6c7cc6..0000000000 --- a/src/client/firefox/tests/commands.spec.js +++ /dev/null @@ -1,73 +0,0 @@ -import { setupCommands, clientCommands } from "../commands"; - -function makeThreadCLient(resp) { - return { - pauseGrip: () => ({ - getPrototypeAndProperties: async () => resp - }) - }; -} - -describe("firefox commands", () => { - describe("getProperties", () => { - it("empty response", async () => { - const { getProperties } = clientCommands; - const threadClient = makeThreadCLient({ - ownProperties: {}, - safeGetterValues: {} - }); - - setupCommands({ threadClient }); - const props = await getProperties({}); - expect(props).toMatchSnapshot(); - }); - - it("simple properties", async () => { - const { getProperties } = clientCommands; - const threadClient = makeThreadCLient({ - ownProperties: { - obj: { value: "obj" }, - foo: { value: "foo" } - }, - safeGetterValues: {} - }); - - setupCommands({ threadClient }); - const props = await getProperties({}); - expect(props).toMatchSnapshot(); - }); - - it("getter values", async () => { - const { getProperties } = clientCommands; - const threadClient = makeThreadCLient({ - ownProperties: { - obj: { value: "obj" }, - foo: { value: "foo" } - }, - safeGetterValues: { - obj: { getterValue: "getter", enumerable: true, writable: false } - } - }); - - setupCommands({ threadClient }); - const props = await getProperties({}); - expect(props).toMatchSnapshot(); - }); - - it("new getter values", async () => { - const { getProperties } = clientCommands; - const threadClient = makeThreadCLient({ - ownProperties: { - foo: { value: "foo" } - }, - safeGetterValues: { - obj: { getterValue: "getter", enumerable: true, writable: false } - } - }); - - setupCommands({ threadClient }); - const props = await getProperties({}); - expect(props).toMatchSnapshot(); - }); - }); -}); diff --git a/src/client/firefox/tests/onconnect.spec.js b/src/client/firefox/tests/onconnect.spec.js deleted file mode 100644 index 46942a30df..0000000000 --- a/src/client/firefox/tests/onconnect.spec.js +++ /dev/null @@ -1,64 +0,0 @@ -import { onConnect } from "../../firefox"; - -const tabTarget = { - on: () => {}, - _form: { - url: "url" - } -}; - -const threadClient = { - addListener: () => {}, - reconfigure: () => {}, - getSources: () => { - return { - sources: [ - { - id: "s.js", - url: "file:///tmp/s.js" - } - ] - }; - }, - getLastPausePacket: () => null, - _parent: { - listWorkers: () => new Promise(resolve => resolve({ workers: [] })) - } -}; - -const debuggerClient = { - mainRoot: { - traits: {} - } -}; - -const actions = { - _sources: [], - connect: () => {}, - - newSources: function(sources) { - return new Promise(resolve => { - setTimeout(() => { - this._sources = sources; - resolve(); - }, 0); - }); - } -}; - -describe("firefox onConnect", () => { - it("wait for sources at startup", async () => { - await onConnect( - { - tabConnection: { - tabTarget, - threadClient, - debuggerClient - } - }, - actions - ); - expect(actions._sources.length).toEqual(1); - expect(actions._sources[0].url).toEqual("file:///tmp/s.js"); - }); -}); diff --git a/src/client/firefox/types.js b/src/client/firefox/types.js deleted file mode 100644 index 5a8ed7f365..0000000000 --- a/src/client/firefox/types.js +++ /dev/null @@ -1,392 +0,0 @@ -// @flow - -/** - * These are Firefox specific types that allow us to type check - * the packet information exchanged using the Firefox Remote Debug Protocol - * https://wiki.mozilla.org/Remote_Debugging_Protocol - */ - -import type { - FrameId, - ActorId, - Script, - Source, - Pause, - Frame, - SourceId -} from "debugger-html"; - -type URL = string; - -/** - * The protocol is carried by a reliable, bi-directional byte stream; data sent - * in both directions consists of JSON objects, called packets. A packet is a - * top-level JSON object, not contained inside any other value. - * - * Every packet sent to the client has the form: - * `{ "to":actor, "type":type, ... }` - * - * where actor is the name of the actor to whom the packet is directed and type - * is a string specifying what sort of packet it is. Additional properties may - * be present, depending on type. - * - * Every packet sent from the server has the form: - * `{ "from":actor, ... }` - * - * where actor is the name of the actor that sent it. The packet may have - * additional properties, depending on the situation. - * - * If a packet is directed to an actor that no longer exists, the server - * sends a packet to the client of the following form: - * `{ "from":actor, "error":"noSuchActor" }` - * - * where actor is the name of the non-existent actor. (It is strange to receive - * messages from actors that do not exist, but the client evidently believes - * that actor exists, and this reply allows the client to pair up the error - * report with the source of the problem.) - * - * Clients should silently ignore packet properties they do not recognize. We - * expect that, as the protocol evolves, we will specify new properties that - * can appear in existing packets, and experimental implementations will do - * the same. - * - * @see https://wiki.mozilla.org/Remote_Debugging_Protocol#Packets - * @memberof firefox/packets - * @static - */ - -/** - * Frame Packet - * @memberof firefox/packets - * @static - */ -export type FramePacket = { - actor: ActorId, - arguments: any[], - callee: any, - environment: any, - this: any, - depth?: number, - oldest?: boolean, - type: "pause" | "call", - where: ActualLocation -}; - -/** - * Firefox Source File payload - * introductionType can be a "scriptElement" - * @memberof firefox/payloads - * @static - */ -export type SourcePayload = { - actor: ActorId, - generatedUrl?: URL, - introductionType: string, - introductionUrl?: URL, - isBlackBoxed: boolean, - isPrettyPrinted: boolean, - isSourceMapped: boolean, - sourceMapURL?: URL, - url: URL -}; - -/** - * Source Packet sent when there is a "new source" event - * coming from the debug server - * @memberof firefox/packets - * @static - */ -export type SourcePacket = { - from: ActorId, - source: SourcePayload, - type: string -}; - -/** - * Sources Packet from calling threadClient.getSources(); - * @memberof firefox/packets - * @static - */ -export type SourcesPacket = { - from: ActorId, - sources: SourcePayload[] -}; - -/** - * Pause Packet sent when the server is in a "paused" state - * - * @memberof firefox - * @static - */ -export type PausedPacket = { - actor: ActorId, - from: ActorId, - type: string, - frame: FramePacket, - why: { - actors: ActorId[], - type: string, - onNext?: Function - } -}; - -export type ResumedPacket = { - from: ActorId, - type: string -}; - -/** - * Location of an actual event, when breakpoints are set they are requested - * at one location but the server will respond with the "actual location" where - * the breakpoint was really set if it differs from the requested location. - * - * @memberof firefox - * @static - */ -export type ActualLocation = { - source: SourcePayload, - line: number, - column?: number -}; - -/** - * Response from the `getFrames` function call - * @memberof firefox - * @static - */ -export type FramesResponse = { - frames: FramePacket[], - from: ActorId -}; - -export type TabPayload = { - actor: ActorId, - animationsActor: ActorId, - callWatcherActor: ActorId, - canvasActor: ActorId, - consoleActor: ActorId, - cssPropertiesActor: ActorId, - cssUsageActor: ActorId, - directorManagerActor: ActorId, - emulationActor: ActorId, - eventLoopLagActor: ActorId, - framerateActor: ActorId, - gcliActor: ActorId, - inspectorActor: ActorId, - memoryActor: ActorId, - monitorActor: ActorId, - outerWindowID: number, - performanceActor: ActorId, - performanceEntriesActor: ActorId, - profilerActor: ActorId, - promisesActor: ActorId, - reflowActor: ActorId, - storageActor: ActorId, - styleEditorActor: ActorId, - styleSheetsActor: ActorId, - timelineActor: ActorId, - title: string, - url: URL, - webExtensionInspectedWindowActor: ActorId, - webaudioActor: ActorId, - webglActor: ActorId -}; - -/** - * Response from the `listTabs` function call - * @memberof firefox - * @static - */ -export type ListTabsResponse = { - actorRegistryActor: ActorId, - addonsActor: ActorId, - deviceActor: ActorId, - directorRegistryActor: ActorId, - from: string, - heapSnapshotFileActor: ActorId, - preferenceActor: ActorId, - selected: number, - tabs: TabPayload[] -}; - -/** - * Actions - * @memberof firefox - * @static - */ -export type Actions = { - paused: Pause => void, - resumed: ResumedPacket => void, - newSource: Source => void, - fetchEventListeners: () => void -}; - -/** - * Tab Target gives access to the browser tabs - * @memberof firefox - * @static - */ -export type TabTarget = { - on: (string, Function) => void, - activeConsole: { - evaluateJS: ( - script: Script, - func: Function, - params?: { frameActor?: FrameId } - ) => void - }, - form: { consoleActor: any }, - activeTab: { - navigateTo: string => Promise<*>, - reload: () => Promise<*> - }, - destroy: () => void -}; - -/** - * Clients for accessing the Firefox debug server and browser - * @memberof firefox/clients - * @static - */ - -/** - * DebuggerClient - * @memberof firefox - * @static - */ -export type DebuggerClient = { - _activeRequests: { - get: any => any, - delete: any => void - }, - mainRoot: { - traits: any - }, - connect: () => Promise<*>, - listTabs: () => Promise<*> -}; - -/** - * A grip is a JSON value that refers to a specific JavaScript value in the - * debuggee. Grips appear anywhere an arbitrary value from the debuggee needs - * to be conveyed to the client: stack frames, object property lists, lexical - * environments, paused packets, and so on. - * - * For mutable values like objects and arrays, grips do not merely convey the - * value's current state to the client. They also act as references to the - * original value, by including an actor to which the client can send messages - * to modify the value in the debuggee. - * - * @see https://wiki.mozilla.org/Remote_Debugging_Protocol#Grips - * @memberof firefox - * @static - */ -// FIXME: need Grip definition -export type Grip = { - actor: string -}; - -export type FunctionGrip = {| - class: "Function", - name: string, - parameterNames: string[], - displayName: string, - userDisplayName: string, - url: string, - line: number, - column: number -|}; - -/** - * SourceClient - * @memberof firefox - * @static - */ -export type SourceClient = { - source: () => Source, - setBreakpoint: ({ - line: number, - column: ?number, - condition: boolean, - noSliding: boolean - }) => Promise, - prettyPrint: number => Promise<*>, - disablePrettyPrint: () => Promise<*>, - blackBox: () => Promise<*>, - unblackBox: () => Promise<*> -}; - -/** - * ObjectClient - * @memberof firefox - * @static - */ -export type ObjectClient = { - getPrototypeAndProperties: () => any -}; - -/** - * ThreadClient - * @memberof firefox - * @static - */ -export type ThreadClient = { - resume: Function => Promise<*>, - stepIn: Function => Promise<*>, - stepOver: Function => Promise<*>, - stepOut: Function => Promise<*>, - breakOnNext: () => Promise<*>, - // FIXME: unclear if SourceId or ActorId here - source: ({ actor: SourceId }) => SourceClient, - pauseGrip: (Grip | Function) => ObjectClient, - pauseOnExceptions: (boolean, boolean) => Promise<*>, - interrupt: () => Promise<*>, - eventListeners: () => Promise<*>, - getFrames: (number, number) => FramesResponse, - getEnvironment: (frame: Frame) => Promise<*>, - addListener: (string, Function) => void, - getSources: () => Promise, - reconfigure: ({ observeAsmJS: boolean }) => Promise<*>, - getLastPausePacket: () => ?PausedPacket -}; - -/** - * BreakpointClient - * @memberof firefox - * @static - */ -export type BreakpointClient = { - actor: ActorId, - remove: () => void, - location: { - actor: string, - url: string, - line: number, - column: ?number, - condition: string - }, - setCondition: (ThreadClient, boolean, boolean) => Promise, - // getCondition: () => any, - // hasCondition: () => any, - // request: any, - source: SourceClient -}; - -export type BPClients = { [id: ActorId]: BreakpointClient }; - -export type BreakpointResponse = [ - { - actor?: ActorId, - from?: ActorId, - isPending?: boolean, - actualLocation?: ActualLocation - }, - BreakpointClient -]; - -export type FirefoxClientConnection = { - getTabTarget: () => TabTarget, - getThreadClient: () => ThreadClient, - setTabTarget: (target: TabTarget) => void, - setThreadClient: (client: ThreadClient) => void -}; diff --git a/src/client/index.js b/src/client/index.js deleted file mode 100644 index fc3c6b2477..0000000000 --- a/src/client/index.js +++ /dev/null @@ -1,74 +0,0 @@ -// @flow - -import * as firefox from "./firefox"; -import * as chrome from "./chrome"; - -import { prefs, features } from "../utils/prefs"; -import { isFirefoxPanel } from "devtools-config"; -import { - bootstrapApp, - bootstrapStore, - bootstrapWorkers -} from "../utils/bootstrap"; - -function loadFromPrefs(actions: Object) { - const { pauseOnExceptions, ignoreCaughtExceptions } = prefs; - if (pauseOnExceptions || ignoreCaughtExceptions) { - return actions.pauseOnExceptions(pauseOnExceptions, ignoreCaughtExceptions); - } -} - -function getClient(connection: any) { - const { tab: { clientType } } = connection; - return clientType == "firefox" ? firefox : chrome; -} - -async function onConnect( - connection: Object, - { services, toolboxActions }: Object -) { - // NOTE: the landing page does not connect to a JS process - if (!connection) { - return; - } - - const client = getClient(connection); - const commands = client.clientCommands; - const { store, actions, selectors } = bootstrapStore(commands, { - services, - toolboxActions - }); - - bootstrapWorkers(); - const { bpClients } = await client.onConnect(connection, actions); - await loadFromPrefs(actions); - - window.getGlobalsForTesting = () => { - return { - store, - actions, - selectors, - client: client.clientCommands, - prefs, - features, - connection, - bpClients, - services - }; - }; - - if (!isFirefoxPanel()) { - console.group("Development Notes"); - const baseUrl = "https://devtools-html.github.io/debugger.html"; - const localDevelopmentUrl = `${baseUrl}/docs/local-development.html`; - console.log("Debugging Tips", localDevelopmentUrl); - console.log("getGlobalsForTesting", window.getGlobalsForTesting()); - console.groupEnd(); - } - - bootstrapApp(connection, { store, actions }); - - return { store, actions, selectors, client: commands }; -} - -export { onConnect }; diff --git a/src/components/App.css b/src/components/App.css deleted file mode 100644 index 99f94e39c7..0000000000 --- a/src/components/App.css +++ /dev/null @@ -1,58 +0,0 @@ -* { - box-sizing: border-box; -} - -button { - background: transparent; - outline: none; - border: none; -} - -button:hover, -button:focus { - background-color: var(--theme-toolbar-background-hover); -} - -.debugger { - display: flex; - flex: 1; - height: 100%; -} - -.editor-pane { - display: flex; - position: relative; - flex: 1; - background-color: var(--theme-tab-toolbar-background); - height: calc(100% - 1px); - overflow: hidden; -} - -.editor-container { - width: 100%; -} - -.search-container { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - display: flex; - z-index: 200; - background-color: var(--search-overlays-semitransparent); -} - -.search-container .close-button { - width: 16px; - margin-top: 25px; - margin-right: 20px; -} - -/* Utils */ -.absolute-center { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); -} diff --git a/src/components/App.js b/src/components/App.js deleted file mode 100644 index 1dd5132a7c..0000000000 --- a/src/components/App.js +++ /dev/null @@ -1,310 +0,0 @@ -// @flow - -import PropTypes from "prop-types"; -import React, { Component } from "react"; -import { connect } from "react-redux"; -import { bindActionCreators } from "redux"; -import { features } from "../utils/prefs"; -import actions from "../actions"; -import { ShortcutsModal } from "./ShortcutsModal"; - -import { - getSelectedSource, - getPaneCollapse, - getActiveSearch -} from "../selectors"; -import type { SourceRecord } from "../reducers/sources"; -import { isVisible } from "../utils/ui"; - -import { KeyShortcuts } from "devtools-modules"; -const shortcuts = new KeyShortcuts({ window }); - -import { Services } from "devtools-modules"; -const { appinfo } = Services; - -const isMacOS = appinfo.OS === "Darwin"; - -const verticalLayoutBreakpoint = window.matchMedia("(min-width: 800px)"); - -import "./variables.css"; -import "./App.css"; -import "./shared/menu.css"; -import "./shared/reps.css"; - -import SplitBox from "devtools-splitter"; - -import ProjectSearch from "./ProjectSearch"; - -import PrimaryPanes from "./PrimaryPanes"; - -import Editor from "./Editor"; - -import SecondaryPanes from "./SecondaryPanes"; - -import WelcomeBox from "./WelcomeBox"; - -import EditorTabs from "./Editor/Tabs"; - -import SymbolModal from "./SymbolModal"; - -type Props = { - selectSource: Function, - selectedSource: SourceRecord, - startPanelCollapsed: boolean, - closeActiveSearch: () => void, - endPanelCollapsed: boolean, - activeSearch: string, - setActiveSearch: string => void -}; - -class App extends Component { - state: { - shortcutsModalEnabled: boolean, - horizontal: boolean, - startPanelSize: number, - endPanelSize: number - }; - - props: Props; - onLayoutChange: Function; - getChildContext: Function; - renderEditorPane: Function; - renderVerticalLayout: Function; - toggleSymbolModal: Function; - onEscape: Function; - - constructor(props) { - super(props); - this.state = { - shortcutsModalEnabled: false, - horizontal: verticalLayoutBreakpoint.matches, - startPanelSize: 0, - endPanelSize: 0 - }; - - this.getChildContext = this.getChildContext.bind(this); - this.onLayoutChange = this.onLayoutChange.bind(this); - this.toggleSymbolModal = this.toggleSymbolModal.bind(this); - this.renderEditorPane = this.renderEditorPane.bind(this); - this.renderVerticalLayout = this.renderVerticalLayout.bind(this); - this.onEscape = this.onEscape.bind(this); - } - - getChildContext() { - return { shortcuts }; - } - - componentDidMount() { - verticalLayoutBreakpoint.addListener(this.onLayoutChange); - shortcuts.on( - L10N.getStr("symbolSearch.search.key2"), - this.toggleSymbolModal - ); - shortcuts.on("Escape", this.onEscape); - } - - componentWillUnmount() { - verticalLayoutBreakpoint.removeListener(this.onLayoutChange); - shortcuts.off( - L10N.getStr("symbolSearch.search.key2"), - this.toggleSymbolModal - ); - shortcuts.off("Escape", this.onEscape); - } - - onEscape(_, e) { - const { activeSearch, closeActiveSearch } = this.props; - - if (activeSearch) { - e.preventDefault(); - closeActiveSearch(); - } - } - - toggleSymbolModal(_, e: SyntheticEvent) { - const { - selectedSource, - activeSearch, - closeActiveSearch, - setActiveSearch - } = this.props; - - e.preventDefault(); - e.stopPropagation(); - - if (!selectedSource) { - return; - } - - if (activeSearch == "symbol") { - return closeActiveSearch(); - } - - setActiveSearch("symbol"); - } - - onLayoutChange() { - if (isVisible()) { - this.setState({ horizontal: verticalLayoutBreakpoint.matches }); - } - } - - renderEditorPane() { - const { startPanelCollapsed, endPanelCollapsed } = this.props; - const { horizontal, endPanelSize, startPanelSize } = this.state; - - return ( -
-
- - - {!this.props.selectedSource ? ( - - ) : null} - -
-
- ); - } - - toggleShortcutsModal() { - this.setState({ - shortcutsModalEnabled: !this.state.shortcutsModalEnabled - }); - } - - renderHorizontalLayout() { - const { startPanelCollapsed, endPanelCollapsed } = this.props; - const { horizontal } = this.state; - - const overflowX = endPanelCollapsed ? "hidden" : "auto"; - - return ( - this.setState({ startPanelSize: size })} - startPanel={} - startPanelCollapsed={startPanelCollapsed} - endPanel={ - this.setState({ endPanelSize: size })} - endPanelControl={true} - startPanel={this.renderEditorPane()} - endPanel={ - this.toggleShortcutsModal()} - /> - } - endPanelCollapsed={endPanelCollapsed} - vert={horizontal} - /> - } - /> - ); - } - - renderVerticalLayout() { - const { startPanelCollapsed, endPanelCollapsed } = this.props; - const { horizontal } = this.state; - - return ( - } - endPanel={this.renderEditorPane()} - /> - } - endPanel={} - endPanelCollapsed={endPanelCollapsed} - /> - ); - } - - renderSymbolModal() { - const { selectSource, selectedSource, activeSearch } = this.props; - - if (activeSearch !== "symbol") { - return; - } - - return ( - - ); - } - - renderShortcutsModal() { - const additionalClass = isMacOS ? "mac" : ""; - - if (!features.shortcuts) { - return; - } - - return ( - this.toggleShortcutsModal()} - /> - ); - } - - render() { - return ( -
- {this.state.horizontal - ? this.renderHorizontalLayout() - : this.renderVerticalLayout()} - {this.renderSymbolModal()} - {this.renderShortcutsModal()} -
- ); - } -} - -App.childContextTypes = { shortcuts: PropTypes.object }; - -export default connect( - state => ({ - selectedSource: getSelectedSource(state), - startPanelCollapsed: getPaneCollapse(state, "start"), - endPanelCollapsed: getPaneCollapse(state, "end"), - activeSearch: getActiveSearch(state) - }), - dispatch => bindActionCreators(actions, dispatch) -)(App); diff --git a/src/components/Editor/Breakpoint.js b/src/components/Editor/Breakpoint.js deleted file mode 100644 index e1f1afd1fd..0000000000 --- a/src/components/Editor/Breakpoint.js +++ /dev/null @@ -1,126 +0,0 @@ -// @flow -import React, { Component } from "react"; -import { isEnabled } from "devtools-config"; -import ReactDOM from "react-dom"; - -import classnames from "classnames"; -import Svg from "../shared/Svg"; - -import { getDocument, showSourceText, toEditorLine } from "../../utils/editor"; - -const breakpointSvg = document.createElement("div"); -ReactDOM.render(, breakpointSvg); - -function makeMarker(isDisabled: boolean) { - const bp = breakpointSvg.cloneNode(true); - bp.className = classnames("editor new-breakpoint", { - "breakpoint-disabled": isDisabled, - "folding-enabled": isEnabled("codeFolding") - }); - - return bp; -} - -class Breakpoint extends Component { - props: { - breakpoint: Object, - selectedSource: Object, - editor: Object - }; - - addBreakpoint: Function; - - constructor() { - super(); - this.addBreakpoint = this.addBreakpoint.bind(this); - } - - addBreakpoint() { - const { breakpoint, editor, selectedSource } = this.props; - - // Hidden Breakpoints are never rendered on the client - if (breakpoint.hidden) { - return; - } - - // NOTE: we need to wait for the breakpoint to be loaded - // to get the generated location - if (!selectedSource || breakpoint.loading) { - return; - } - - const sourceId = selectedSource.get("id"); - const line = toEditorLine(sourceId, breakpoint.location.line); - - showSourceText(editor, selectedSource.toJS()); - - editor.codeMirror.setGutterMarker( - line, - "breakpoints", - makeMarker(breakpoint.disabled) - ); - - editor.codeMirror.addLineClass(line, "line", "new-breakpoint"); - if (breakpoint.condition) { - editor.codeMirror.addLineClass(line, "line", "has-condition"); - } else { - editor.codeMirror.removeLineClass(line, "line", "has-condition"); - } - } - - shouldComponentUpdate(nextProps: any) { - const { editor, breakpoint, selectedSource } = this.props; - return ( - editor !== nextProps.editor || - breakpoint.disabled !== nextProps.breakpoint.disabled || - breakpoint.hidden !== nextProps.breakpoint.hidden || - breakpoint.condition !== nextProps.breakpoint.condition || - breakpoint.loading !== nextProps.breakpoint.loading || - selectedSource !== nextProps.selectedSource - ); - } - - componentDidMount() { - this.addBreakpoint(); - } - - componentDidUpdate() { - this.addBreakpoint(); - } - - componentWillUnmount() { - const { editor, breakpoint, selectedSource } = this.props; - - if (!selectedSource) { - return; - } - - if (breakpoint.loading) { - return; - } - - const sourceId = selectedSource.get("id"); - const doc = getDocument(sourceId); - if (!doc) { - return; - } - - const line = toEditorLine(sourceId, breakpoint.location.line); - - // NOTE: when we upgrade codemirror we can use `doc.setGutterMarker` - if (doc.setGutterMarker) { - doc.setGutterMarker(line, "breakpoints", null); - } else { - editor.codeMirror.setGutterMarker(line, "breakpoints", null); - } - - doc.removeLineClass(line, "line", "new-breakpoint"); - doc.removeLineClass(line, "line", "has-condition"); - } - - render() { - return null; - } -} - -export default Breakpoint; diff --git a/src/components/Editor/Breakpoints.js b/src/components/Editor/Breakpoints.js deleted file mode 100644 index 506008eff6..0000000000 --- a/src/components/Editor/Breakpoints.js +++ /dev/null @@ -1,66 +0,0 @@ -// @flow -import { connect } from "react-redux"; -import { bindActionCreators } from "redux"; -import React, { Component } from "react"; - -import Breakpoint from "./Breakpoint"; - -import actions from "../../actions"; -import { getSelectedSource } from "../../selectors"; -import getVisibleBreakpoints from "../../selectors/visibleBreakpoints"; -import { makeLocationId } from "../../utils/breakpoint"; -import { isLoaded } from "../../utils/source"; - -import type { SourceRecord, BreakpointsMap } from "../../reducers/types"; - -type props = { - selectedSource: SourceRecord, - breakpoints: BreakpointsMap, - editor: Object -}; - -class Breakpoints extends Component { - props: props; - - shouldComponentUpdate(nextProps: any) { - if ( - nextProps.selectedSource && - !isLoaded(nextProps.selectedSource.toJS()) - ) { - return false; - } - - return true; - } - - render() { - const { breakpoints, selectedSource, editor } = this.props; - - if (!selectedSource || !breakpoints || selectedSource.get("isBlackBoxed")) { - return null; - } - - return ( -
- {breakpoints.valueSeq().map(bp => { - return ( - - ); - })} -
- ); - } -} - -export default connect( - state => ({ - breakpoints: getVisibleBreakpoints(state), - selectedSource: getSelectedSource(state) - }), - dispatch => bindActionCreators(actions, dispatch) -)(Breakpoints); diff --git a/src/components/Editor/CallSite.css b/src/components/Editor/CallSite.css deleted file mode 100644 index f7e3042c58..0000000000 --- a/src/components/Editor/CallSite.css +++ /dev/null @@ -1,45 +0,0 @@ -.call-site { - background: #f0f9ff; - position: relative; -} - -.call-site::before { - content: ""; - position: absolute; - width: 100%; - height: calc(100% - 2px); - border-bottom: 2px solid #aed3ef; -} - -.call-site-bp { - position: relative; -} - -.debug-expression.call-site-bp, -.call-site-bp { - background-color: #fce7e7; -} - -.call-site-bp::before { - content: ""; - position: absolute; - width: 100%; - height: calc(100% - 2px); - border-bottom: 2px solid red; -} - -.theme-dark .call-site { - background-color: #4b5462; -} - -.theme-dark .call-site::before { - border-bottom-color: #5f78a4; -} - -.theme-dark .call-site-bp { - background-color: #4b3f3f; -} - -.theme-dark .call-site-bp::before { - border-bottom-color: #dd4d4d; -} diff --git a/src/components/Editor/CallSite.js b/src/components/Editor/CallSite.js deleted file mode 100644 index d19a1e11e2..0000000000 --- a/src/components/Editor/CallSite.js +++ /dev/null @@ -1,95 +0,0 @@ -// @flow -import { Component } from "react"; - -import { markText, toEditorRange } from "../../utils/editor"; -require("./CallSite.css"); - -type MarkerType = { - clear: Function -}; - -type props = { - callSite: Object, - editor: Object, - source: Object, - breakpoint: Object, - showCallSite: Boolean -}; -export default class CallSite extends Component { - props: props; - - addCallSite: Function; - marker: ?MarkerType; - - constructor() { - super(); - - this.marker = undefined; - const self: any = this; - self.addCallSite = this.addCallSite.bind(this); - self.clearCallSite = this.clearCallSite.bind(this); - } - - addCallSite(nextProps: props) { - const { editor, callSite, breakpoint, source } = nextProps || this.props; - const className = !breakpoint ? "call-site" : "call-site-bp"; - const sourceId = source.get("id"); - const editorRange = toEditorRange(sourceId, callSite.location); - this.marker = markText(editor, className, editorRange); - } - - clearCallSite() { - if (this.marker) { - this.marker.clear(); - this.marker = null; - } - } - - shouldComponentUpdate(nextProps: any) { - return this.props.editor !== nextProps.editor; - } - - componentDidMount() { - const { breakpoint, showCallSite } = this.props; - - if (!breakpoint && !showCallSite) { - return; - } - - this.addCallSite(); - } - - componentWillReceiveProps(nextProps: props) { - const { breakpoint, showCallSite } = this.props; - - if (nextProps.breakpoint !== breakpoint) { - if (this.marker) { - this.clearCallSite(); - } - if (nextProps.showCallSite) { - this.addCallSite(nextProps); - } - } - - if (nextProps.showCallSite !== showCallSite) { - if (nextProps.showCallSite) { - if (!this.marker) { - this.addCallSite(); - } - } else if (!nextProps.breakpoint) { - this.clearCallSite(); - } - } - } - - componentWillUnmount() { - if (!this.marker) { - return; - } - this.marker.clear(); - } - - render() { - return null; - } -} diff --git a/src/components/Editor/CallSites.js b/src/components/Editor/CallSites.js deleted file mode 100644 index dc75c8ae4c..0000000000 --- a/src/components/Editor/CallSites.js +++ /dev/null @@ -1,226 +0,0 @@ -import React, { Component } from "react"; -import { connect } from "react-redux"; -import { bindActionCreators } from "redux"; -import { isEnabled } from "devtools-config"; - -import { range, keyBy, find, isEqualWith } from "lodash"; - -import CallSite from "./CallSite"; - -import { - getSelectedSource, - getSymbols, - getSelectedLocation, - getBreakpointsForSource -} from "../../selectors"; - -import { getTokenLocation, isWasm } from "../../utils/editor"; - -import actions from "../../actions"; - -function getCallSiteAtLocation(callSites, location) { - return find(callSites, callSite => - isEqualWith(callSite.location, location, (cloc, loc) => { - return ( - loc.line === cloc.start.line && - (loc.column >= cloc.start.column && loc.column <= cloc.end.column) - ); - }) - ); -} - -class CallSites extends Component { - props: { - symbols: Array, - callSites: Array, - editor: Object, - breakpoints: Map, - addBreakpoint: Function, - removeBreakpoint: Function, - selectedSource: Object, - selectedLocation: Object - }; - - constructor(props) { - super(props); - this.onKeyDown = this.onKeyDown.bind(this); - this.onKeyUp = this.onKeyUp.bind(this); - - this.state = { - showCallSites: false - }; - } - - componentDidMount() { - const { editor } = this.props; - const codeMirrorWrapper = editor.codeMirror.getWrapperElement(); - - codeMirrorWrapper.addEventListener("click", e => this.onTokenClick(e)); - document.body.addEventListener("keydown", this.onKeyDown); - document.body.addEventListener("keyup", this.onKeyUp); - } - - componentDidUnMount() { - const { editor } = this.props; - const codeMirrorWrapper = editor.codeMirror.getWrapperElement(); - - codeMirrorWrapper.addEventListener("click", e => this.onTokenClick(e)); - document.body.removeEventListener("keydown", e => this.onKeyDown); - document.body.removeEventListener("keyup", this.onKeyUp); - } - - onKeyUp(e) { - if (e.key === "Alt") { - e.preventDefault(); - this.setState({ showCallSites: false }); - } - } - - onKeyDown(e) { - if (e.key === "Alt") { - e.preventDefault(); - this.setState({ showCallSites: true }); - } - } - - onTokenClick(e) { - const { target } = e; - const { editor, selectedLocation } = this.props; - - if ( - !isEnabled("columnBreakpoints") || - (!e.altKey && !target.classList.contains("call-site-bp")) || - (!target.classList.contains("call-site") && - !target.classList.contains("call-site-bp")) - ) { - return; - } - - const { sourceId } = selectedLocation; - const { line, column } = getTokenLocation(editor.codeMirror, target); - - this.toggleBreakpoint(line, isWasm(sourceId) ? undefined : column); - } - - toggleBreakpoint(line, column = undefined) { - const { - selectedSource, - selectedLocation, - addBreakpoint, - removeBreakpoint, - callSites - } = this.props; - - const callSite = getCallSiteAtLocation(callSites, { line, column }); - - if (!callSite) { - return; - } - - const bp = callSite.breakpoint; - - if ((bp && bp.loading) || !selectedLocation || !selectedSource) { - return; - } - - const { sourceId } = selectedLocation; - - if (bp) { - // NOTE: it's possible the breakpoint has slid to a column - column = column || bp.location.column; - removeBreakpoint({ - sourceId: sourceId, - line: line, - column - }); - } else { - addBreakpoint({ - sourceId: sourceId, - sourceUrl: selectedSource.get("url"), - line: line, - column: column - }); - } - } - - render() { - const { editor, callSites, selectedSource } = this.props; - const { showCallSites } = this.state; - let sites; - if (!callSites) { - return null; - } - - editor.codeMirror.operation(() => { - const childCallSites = callSites.map((callSite, index) => { - const props = { - key: index, - callSite, - editor, - source: selectedSource, - breakpoint: callSite.breakpoint, - showCallSite: showCallSites - }; - return ; - }); - sites =
{childCallSites}
; - }); - return sites; - } -} - -function getCallSites(symbols, breakpoints) { - if (!symbols || !symbols.callExpressions) { - return; - } - - const callSites = symbols.callExpressions; - - // NOTE: we create a breakpoint map keyed on location - // to speed up the lookups. Hopefully we'll fix the - // inconsistency with column offsets so that we can expect - // a breakpoint to be added at the beginning of a call expression. - const bpLocationMap = keyBy(breakpoints.valueSeq().toJS(), ({ location }) => - locationKey(location) - ); - - function locationKey({ line, column }) { - return `${line}/${column}`; - } - - function findBreakpoint(callSite) { - const { location: { start, end } } = callSite; - - const breakpointId = range(start.column - 1, end.column) - .map(column => locationKey({ line: start.line, column })) - .find(key => bpLocationMap[key]); - - if (breakpointId) { - return bpLocationMap[breakpointId]; - } - } - - return callSites - .filter(({ location }) => location.start.line === location.end.line) - .map(callSite => ({ ...callSite, breakpoint: findBreakpoint(callSite) })); -} - -export default connect( - state => { - const selectedLocation = getSelectedLocation(state); - const selectedSource = getSelectedSource(state); - const sourceId = selectedLocation && selectedLocation.sourceId; - const source = selectedSource && selectedSource.toJS(); - - const symbols = getSymbols(state, source); - const breakpoints = getBreakpointsForSource(state, sourceId); - - return { - selectedLocation, - selectedSource, - callSites: getCallSites(symbols, breakpoints), - breakpoints: breakpoints - }; - }, - dispatch => bindActionCreators(actions, dispatch) -)(CallSites); diff --git a/src/components/Editor/ConditionalPanel.css b/src/components/Editor/ConditionalPanel.css deleted file mode 100644 index d1af183930..0000000000 --- a/src/components/Editor/ConditionalPanel.css +++ /dev/null @@ -1,34 +0,0 @@ -.conditional-breakpoint-panel { - cursor: initial; - margin: 1em 0; - position: relative; - display: flex; - align-items: center; - background: var(--theme-toolbar-background); - border-top: 1px solid var(--theme-splitter-color); - border-bottom: 1px solid var(--theme-splitter-color); -} - -.conditional-breakpoint-panel .prompt { - font-size: 1.8em; - color: var(--theme-conditional-breakpoint-color); - padding-left: 3px; - padding-right: 3px; - padding-bottom: 3px; - text-align: right; - width: 30px; -} - -.conditional-breakpoint-panel input { - margin: 5px 10px; - width: calc(100% - 4em); - border: none; - background: var(--theme-toolbar-background); - font-size: 14px; - color: var(--theme-conditional-breakpoint-color); - line-height: 30px; -} - -.conditional-breakpoint-panel input:focus { - outline-width: 0; -} diff --git a/src/components/Editor/ConditionalPanel.js b/src/components/Editor/ConditionalPanel.js deleted file mode 100644 index 19ff3224e2..0000000000 --- a/src/components/Editor/ConditionalPanel.js +++ /dev/null @@ -1,61 +0,0 @@ -// @flow -import React from "react"; -import ReactDOM from "react-dom"; - -import CloseButton from "../shared/Button/Close"; -import "./ConditionalPanel.css"; - -function renderConditionalPanel({ - condition, - closePanel, - setBreakpoint -}: { - condition: ?string, - closePanel: Function, - setBreakpoint: Function -}) { - const panel = document.createElement("div"); - let input = null; - - function setInput(node) { - input = node; - } - - function saveAndClose() { - if (input) { - setBreakpoint(input.value); - } - - closePanel(); - } - - function onKey(e: SyntheticKeyboardEvent) { - if (e.key === "Enter") { - saveAndClose(); - } else if (e.key === "Escape") { - closePanel(); - } - } - - ReactDOM.render( -
-
»
- - -
, - panel - ); - - return panel; -} - -export { renderConditionalPanel }; diff --git a/src/components/Editor/DebugLine.js b/src/components/Editor/DebugLine.js deleted file mode 100644 index f92c616aef..0000000000 --- a/src/components/Editor/DebugLine.js +++ /dev/null @@ -1,86 +0,0 @@ -// @flow -import { Component } from "react"; -import { markText, toEditorPosition } from "../../utils/editor"; -import { getDocument } from "../../utils/editor/source-documents"; - -type props = { - editor: Object, - selectedFrame: Object, - selectedLocation: Object -}; - -export default class DebugLine extends Component { - props: props; - state: { - debugExpression: { - clear: Function - } - }; - - constructor() { - super(); - this.state = { debugExpression: { clear: () => {} } }; - } - - componentWillMount() { - this.setDebugLine( - this.props.selectedFrame, - this.props.selectedLocation, - this.props.editor - ); - } - - componentWillReceiveProps(nextProps: props) { - this.clearDebugLine(this.props.selectedFrame, this.props.editor); - this.setDebugLine( - nextProps.selectedFrame, - nextProps.selectedLocation, - nextProps.editor - ); - } - - componentWillUnmount() { - this.clearDebugLine(this.props.selectedFrame, this.props.editor); - } - - setDebugLine( - selectedFrame: Object, - selectedLocation: Object, - editor: Object - ) { - const { location, location: { sourceId } } = selectedFrame; - const { line, column } = toEditorPosition(sourceId, location); - - const doc = getDocument(sourceId); - if (!doc) { - return; - } - - doc.addLineClass(line, "line", "new-debug-line"); - const debugExpression = markText(editor, "debug-expression", { - start: { line, column }, - end: { line, column: null } - }); - this.setState({ debugExpression }); - } - - clearDebugLine(selectedFrame: Object, editor: Object) { - const { line, sourceId } = selectedFrame.location; - const { debugExpression } = this.state; - if (debugExpression) { - debugExpression.clear(); - } - - const editorLine = line - 1; - const doc = getDocument(sourceId); - if (!doc) { - return; - } - - doc.removeLineClass(editorLine, "line", "new-debug-line"); - } - - render() { - return null; - } -} diff --git a/src/components/Editor/Editor.css b/src/components/Editor/Editor.css deleted file mode 100644 index 1fcfd7781a..0000000000 --- a/src/components/Editor/Editor.css +++ /dev/null @@ -1,197 +0,0 @@ -.editor-wrapper { - --debug-line-border: rgb(145, 188, 219); - --debug-expression-background: rgba(202, 227, 255, 0.5); - --editor-searchbar-height: 27px; - --editor-second-searchbar-height: 27px; -} - -.theme-dark .editor-wrapper { - --debug-expression-background: #54617e; - --debug-line-border: #7786a2; -} - -.editor-wrapper .CodeMirror-linewidget { - margin-right: -7px; -} - -.theme-dark { - --theme-conditional-breakpoint-color: #9fa4a9; -} - -.theme-light { - --theme-conditional-breakpoint-color: var(--theme-body-color); -} - -/** - * There's a known codemirror flex issue with chrome that this addresses. - * BUG https://github.com/devtools-html/debugger.html/issues/63 - */ -.editor-wrapper { - position: absolute; - height: calc(100% - 31px); - width: calc(100% - 1.5px); - top: 29px; - left: 0px; - --editor-footer-height: 24px; -} - -html[dir="rtl"] .editor-mount { - direction: ltr; -} - -.editor-wrapper .breakpoints { - position: absolute; - top: 0; - left: 0; -} - -.function-search { - max-height: 300px; - overflow: hidden; -} - -.function-search .results { - height: auto; -} - -.editor.hit-marker { - height: 14px; -} - -.editor-wrapper .highlight-lines { - background: var(--theme-selection-background-hover); -} - -.coverage-on .CodeMirror-code :not(.hit-marker) .CodeMirror-line, -.coverage-on .CodeMirror-code :not(.hit-marker) .CodeMirror-gutter-wrapper { - opacity: 0.5; -} - -.editor.new-breakpoint svg { - fill: var(--theme-selection-background); - width: 60px; - height: 14px; - position: absolute; - top: 0px; - right: -4px; -} - -.inline-bp { - background-color: #9ddfff; - width: 20px; - padding: 0px 5px; - margin: 0px 4px; - border-radius: 5px; - border-color: blue; - border: 1px solid #00b6ff; -} - -.editor.new-breakpoint.folding-enabled svg { - right: -16px; -} - -.new-breakpoint.has-condition svg { - fill: var(--theme-graphs-yellow); -} - -.editor.new-breakpoint.breakpoint-disabled svg { - opacity: 0.3; -} - -.editor.column-breakpoint svg { - fill: var(--theme-selection-background); - vertical-align: middle; - width: 17px; - height: 14px; -} - -.editor.column-breakpoint.breakpoint-disabled svg { - opacity: 0.3; -} - -.CodeMirror { - width: 100%; - height: 100%; -} - -.editor-wrapper .editor-mount { - width: 100%; - background-color: var(--theme-body-background); -} - -.CodeMirror-linenumber { - font-size: 11px; - line-height: 14px; -} - -.folding-enabled .CodeMirror-linenumber { - text-align: left; - padding: 0 0 0 2px; -} - -/* set the linenumber white when there is a breakpoint */ -.new-breakpoint .CodeMirror-gutter-wrapper .CodeMirror-linenumber { - color: white; -} - -/* move the breakpoint below the other gutter elements */ -.new-breakpoint .CodeMirror-gutter-elt:nth-child(2) { - z-index: 0; -} - -.editor-wrapper .CodeMirror-line { - font-size: 11px; -} - -.theme-dark .editor-wrapper .CodeMirror-line .cm-comment { - color: var(--theme-content-color3); -} - -.debug-expression { - background-color: var(--debug-expression-background); -} - -.new-debug-line .CodeMirror-line { - background-color: transparent !important; - outline: var(--debug-line-border) solid 1px; -} - -/* Don't display the highlight color since the debug line - is already highlighted */ -.new-debug-line .CodeMirror-activeline-background { - display: none; -} - -.highlight-line .CodeMirror-line { - animation: fade-highlight-out 1.5s normal forwards; -} - -@keyframes fade-highlight-out { - 0% { - background-color: var(--theme-highlight-gray); - } - 100% { - background-color: transparent; - } -} - -.theme-dark .highlight-line .CodeMirror-line { - animation: fade-highlight-out-dark 1.5s normal forwards; -} - -@keyframes fade-highlight-out-dark { - 0% { - background-color: var(--theme-content-color3); - } - 100% { - background-color: transparent; - } -} - -.CodeMirror-guttermarker-subtle { - visibility: hidden; -} - -.visible { - visibility: visible; -} diff --git a/src/components/Editor/EditorMenu.js b/src/components/Editor/EditorMenu.js deleted file mode 100644 index 606defac10..0000000000 --- a/src/components/Editor/EditorMenu.js +++ /dev/null @@ -1,137 +0,0 @@ -import { showMenu } from "devtools-launchpad"; -import { isOriginalId } from "devtools-source-map"; -import { copyToTheClipboard } from "../../utils/clipboard"; -import { getSourceLocationFromMouseEvent } from "../../utils/editor"; - -function getMenuItems( - event, - { - editor, - selectedLocation, - selectedSource, - showSource, - onGutterContextMenu, - jumpToMappedLocation, - toggleBlackBox, - addExpression, - getFunctionText - } -) { - const copySourceLabel = L10N.getStr("copySource"); - const copySourceKey = L10N.getStr("copySource.accesskey"); - const copyFunctionLabel = L10N.getStr("copyFunction.label"); - const copyFunctionKey = L10N.getStr("copyFunction.accesskey"); - const copySourceUri2Label = L10N.getStr("copySourceUri2"); - const copySourceUri2Key = L10N.getStr("copySourceUri2.accesskey"); - const revealInTreeLabel = L10N.getStr("sourceTabs.revealInTree"); - const revealInTreeKey = L10N.getStr("sourceTabs.revealInTree.accesskey"); - const blackboxLabel = L10N.getStr("sourceFooter.blackbox"); - const unblackboxLabel = L10N.getStr("sourceFooter.unblackbox"); - const blackboxKey = L10N.getStr("sourceFooter.blackbox.accesskey"); - const toggleBlackBoxLabel = selectedSource.get("isBlackBoxed") - ? unblackboxLabel - : blackboxLabel; - - const copySourceUri2 = { - id: "node-menu-copy-source-url", - label: copySourceUri2Label, - accesskey: copySourceUri2Key, - disabled: false, - click: () => copyToTheClipboard(selectedSource.get("url")) - }; - - const selectionText = editor.codeMirror.getSelection().trim(); - const copySource = { - id: "node-menu-copy-source", - label: copySourceLabel, - accesskey: copySourceKey, - disabled: selectionText.length === 0, - click: () => copyToTheClipboard(selectionText) - }; - - const { line } = editor.codeMirror.coordsChar({ - left: event.clientX - }); - - const sourceLocation = getSourceLocationFromMouseEvent( - editor, - selectedLocation, - event - ); - - const pairedType = isOriginalId(selectedLocation.sourceId) - ? L10N.getStr("generated") - : L10N.getStr("original"); - - const jumpLabel = { - accesskey: "C", - disabled: false, - label: L10N.getFormatStr("editor.jumpToMappedLocation1", pairedType), - click: () => jumpToMappedLocation(sourceLocation) - }; - - const watchExpressionLabel = { - accesskey: "E", - label: L10N.getStr("expressions.placeholder"), - click: () => addExpression(editor.codeMirror.getSelection()) - }; - - const blackBoxMenuItem = { - id: "node-menu-blackbox", - label: toggleBlackBoxLabel, - accesskey: blackboxKey, - disabled: false, - click: () => toggleBlackBox(selectedSource.toJS()) - }; - - // TODO: Find a new way to only add this for mapped sources? - const textSelected = editor.codeMirror.somethingSelected(); - - const showSourceMenuItem = { - id: "node-menu-show-source", - label: revealInTreeLabel, - accesskey: revealInTreeKey, - disabled: false, - click: () => showSource(selectedSource.get("id")) - }; - - const functionText = getFunctionText(line + 1); - const copyFunction = { - id: "node-menu-copy-function", - label: copyFunctionLabel, - accesskey: copyFunctionKey, - disabled: !functionText, - click: () => copyToTheClipboard(functionText) - }; - - const menuItems = [ - copySource, - copySourceUri2, - copyFunction, - { type: "separator" }, - jumpLabel, - showSourceMenuItem, - blackBoxMenuItem - ]; - - if (textSelected) { - menuItems.push(watchExpressionLabel); - } - - return menuItems; -} - -async function EditorMenu(options) { - const { event, onGutterContextMenu } = options; - - if (event.target.classList.contains("CodeMirror-linenumber")) { - return onGutterContextMenu(event); - } - - event.stopPropagation(); - event.preventDefault(); - - showMenu(event, getMenuItems(event, options)); -} - -export default EditorMenu; diff --git a/src/components/Editor/EmptyLines.css b/src/components/Editor/EmptyLines.css deleted file mode 100644 index 9eb7fb6ca1..0000000000 --- a/src/components/Editor/EmptyLines.css +++ /dev/null @@ -1,3 +0,0 @@ -.empty-line .CodeMirror-linenumber { - opacity: 0.5; -} diff --git a/src/components/Editor/EmptyLines.js b/src/components/Editor/EmptyLines.js deleted file mode 100644 index 7862c71ca1..0000000000 --- a/src/components/Editor/EmptyLines.js +++ /dev/null @@ -1,71 +0,0 @@ -import { connect } from "react-redux"; -import { bindActionCreators } from "redux"; -import { Component } from "react"; -import actions from "../../actions"; -import { getSelectedSource, getEmptyLines } from "../../selectors"; -import type { SourceRecord } from "../../reducers/types"; - -import "./EmptyLines.css"; - -type props = { - selectedSource: SourceRecord, - editor: Object, - emptyLines: Object -}; - -class EmptyLines extends Component { - props: props; - - disableEmptyLines: Function; - - componentDidMount() { - this.disableEmptyLines(); - } - - componentDidUpdate() { - this.disableEmptyLines(); - } - - componentWillUnmount() { - const { emptyLines, editor } = this.props; - - if (!emptyLines) { - return; - } - editor.codeMirror.operation(() => { - emptyLines.forEach(line => - editor.codeMirror.removeLineClass(line, "line", "empty-line") - ); - }); - } - - disableEmptyLines() { - const { emptyLines, editor } = this.props; - - if (!emptyLines) { - return; - } - editor.codeMirror.operation(() => { - emptyLines.forEach(line => - editor.codeMirror.addLineClass(line, "line", "empty-line") - ); - }); - } - - render() { - return null; - } -} - -export default connect( - state => { - const selectedSource = getSelectedSource(state); - return { - selectedSource, - emptyLines: selectedSource - ? getEmptyLines(state, selectedSource.toJS()) - : [] - }; - }, - dispatch => bindActionCreators(actions, dispatch) -)(EmptyLines); diff --git a/src/components/Editor/Footer.css b/src/components/Editor/Footer.css deleted file mode 100644 index af46c651e8..0000000000 --- a/src/components/Editor/Footer.css +++ /dev/null @@ -1,77 +0,0 @@ -.source-footer { - background: var(--theme-body-background); - border-top: 1px solid var(--theme-splitter-color); - position: absolute; - display: flex; - bottom: 0; - left: 0; - right: 1px; - opacity: 1; - z-index: 1; - -moz-user-select: none; - user-select: none; - height: var(--editor-footer-height); - box-sizing: border-box; -} - -.source-footer .commands { - display: flex; - align-items: center; -} - -.source-footer .commands * { - -moz-user-select: none; - user-select: none; -} - -.source-footer > .commands > .action { - display: flex; - justify-content: center; - align-items: center; - transition: opacity 200ms; - border: none; - background: transparent; - padding: 6px 0.7em; -} - -.source-footer > .commands > .action i { - height: 100%; - display: flex; - flex-direction: column; - justify-content: center; -} - -.source-footer > .commands > button.action:focus { - outline: none; -} - -:root.theme-dark .source-footer > .commands > .action { - fill: var(--theme-body-color); -} - -:root.theme-dark .source-footer > .commands > .action:hover { - fill: var(--theme-selection-color); -} - -.source-footer > .commands > .action svg { - height: 16px; - width: 16px; -} - -.source-footer .commands .coverage { - color: var(--theme-body-color); -} - -.coverage-on .source-footer .commands .coverage { - color: var(--theme-highlight-blue); - border: 1px solid var(--theme-body-color-inactive); - border-radius: 2px; -} - -.source-footer .black-box.blackboxed svg { - fill: var(--theme-highlight-blue); -} - -.source-footer .blackbox-summary { - color: var(--theme-body-color); -} diff --git a/src/components/Editor/Footer.js b/src/components/Editor/Footer.js deleted file mode 100644 index 6986561d9b..0000000000 --- a/src/components/Editor/Footer.js +++ /dev/null @@ -1,179 +0,0 @@ -// @flow -import React, { PureComponent } from "react"; -import { connect } from "react-redux"; -import { bindActionCreators } from "redux"; -import actions from "../../actions"; -import { - getSelectedSource, - getPrettySource, - getPaneCollapse -} from "../../selectors"; -import Svg from "../shared/Svg"; - -import classnames from "classnames"; -import { isEnabled } from "devtools-config"; -import { isPretty, isLoaded } from "../../utils/source"; -import { shouldShowFooter, shouldShowPrettyPrint } from "../../utils/editor"; - -import PaneToggleButton from "../shared/Button/PaneToggle"; - -import type { SourceRecord } from "../../reducers/sources"; - -import "./Footer.css"; - -class SourceFooter extends PureComponent { - props: { - selectedSource: SourceRecord, - selectSource: (string, ?Object) => void, - editor: any, - togglePrettyPrint: string => void, - toggleBlackBox: Object => void, - recordCoverage: () => void, - togglePaneCollapse: () => void, - endPanelCollapsed: boolean, - horizontal: boolean - }; - - prettyPrintButton() { - const { selectedSource, togglePrettyPrint } = this.props; - const sourceLoaded = selectedSource && isLoaded(selectedSource.toJS()); - - if (!shouldShowPrettyPrint(selectedSource)) { - return; - } - - const tooltip = L10N.getStr("sourceTabs.prettyPrint"); - const type = "prettyPrint"; - - return ( - - ); - } - - blackBoxButton() { - const { selectedSource, toggleBlackBox } = this.props; - const sourceLoaded = selectedSource && isLoaded(selectedSource.toJS()); - - if (!isEnabled("blackbox") || !sourceLoaded) { - return; - } - - const blackboxed = selectedSource.get("isBlackBoxed"); - - const tooltip = L10N.getStr("sourceFooter.blackbox"); - const type = "black-box"; - - return ( - - ); - } - - blackBoxSummary() { - const { selectedSource } = this.props; - - if (!selectedSource || !selectedSource.get("isBlackBoxed")) { - return; - } - - return ( - - {L10N.getStr("sourceFooter.blackboxed")} - - ); - } - - coverageButton() { - const { recordCoverage } = this.props; - - if (!isEnabled("codeCoverage")) { - return; - } - - return ( - - ); - } - - renderToggleButton() { - if (this.props.horizontal) { - return; - } - - return ( - - ); - } - - renderCommands() { - return ( -
- {this.prettyPrintButton()} - {this.blackBoxButton()} - {this.blackBoxSummary()} - {this.coverageButton()} -
- ); - } - - render() { - const { selectedSource, horizontal } = this.props; - - if (!shouldShowFooter(selectedSource, horizontal)) { - return null; - } - - return ( -
- {this.renderCommands()} - {this.renderToggleButton()} -
- ); - } -} - -export default connect( - state => { - const selectedSource = getSelectedSource(state); - const selectedId = selectedSource && selectedSource.get("id"); - return { - selectedSource, - prettySource: getPrettySource(state, selectedId), - endPanelCollapsed: getPaneCollapse(state, "end") - }; - }, - dispatch => bindActionCreators(actions, dispatch) -)(SourceFooter); diff --git a/src/components/Editor/GutterMenu.js b/src/components/Editor/GutterMenu.js deleted file mode 100644 index a4a1b05a27..0000000000 --- a/src/components/Editor/GutterMenu.js +++ /dev/null @@ -1,101 +0,0 @@ -import { showMenu } from "devtools-launchpad"; - -export default function GutterMenu({ - breakpoint, - line, - event, - pauseData, - toggleBreakpoint, - showConditionalPanel, - toggleDisabledBreakpoint, - isCbPanelOpen, - closeConditionalPanel, - continueToHere -}) { - event.stopPropagation(); - event.preventDefault(); - - const gutterItems = { - addBreakpoint: { - id: "node-menu-add-breakpoint", - label: L10N.getStr("editor.addBreakpoint") - }, - addConditional: { - id: "node-menu-add-conditional-breakpoint", - label: L10N.getStr("editor.addConditionalBreakpoint") - }, - removeBreakpoint: { - id: "node-menu-remove-breakpoint", - label: L10N.getStr("editor.removeBreakpoint") - }, - editConditional: { - id: "node-menu-edit-conditional-breakpoint", - label: L10N.getStr("editor.editBreakpoint") - }, - enableBreakpoint: { - id: "node-menu-enable-breakpoint", - label: L10N.getStr("editor.enableBreakpoint") - }, - disableBreakpoint: { - id: "node-menu-disable-breakpoint", - label: L10N.getStr("editor.disableBreakpoint") - }, - continueToHere: { - id: "node-menu-continue-to-here", - label: L10N.getStr("editor.continueToHere.label") - } - }; - - const toggleBreakpointItem = Object.assign( - { - accesskey: "B", - disabled: false, - click: () => { - toggleBreakpoint(line); - if (isCbPanelOpen) { - closeConditionalPanel(); - } - } - }, - breakpoint ? gutterItems.removeBreakpoint : gutterItems.addBreakpoint - ); - - const conditionalBreakpoint = Object.assign( - { - accesskey: "C", - disabled: false, - click: () => showConditionalPanel(line) - }, - breakpoint && breakpoint.condition - ? gutterItems.editConditional - : gutterItems.addConditional - ); - - const items = [toggleBreakpointItem, conditionalBreakpoint]; - - if (pauseData) { - const continueToHereItem = { - accesskey: L10N.getStr("editor.continueToHere.accesskey"), - disabled: false, - click: () => continueToHere(line), - ...gutterItems.continueToHere - }; - items.push(continueToHereItem); - } - - if (breakpoint) { - const disableBreakpoint = Object.assign( - { - accesskey: "D", - disabled: false, - click: () => toggleDisabledBreakpoint(line) - }, - breakpoint.disabled - ? gutterItems.enableBreakpoint - : gutterItems.disableBreakpoint - ); - items.push(disableBreakpoint); - } - - showMenu(event, items); -} diff --git a/src/components/Editor/Highlight.css b/src/components/Editor/Highlight.css deleted file mode 100644 index f0f6e82a79..0000000000 --- a/src/components/Editor/Highlight.css +++ /dev/null @@ -1,25 +0,0 @@ -.cm-highlight { - position: relative; -} - -.cm-highlight::before { - position: absolute; - border-top-style: solid; - border-bottom-style: solid; - border-top-color: var(--theme-comment-alt); - border-bottom-color: var(--theme-comment-alt); - border-top-width: 1px; - border-bottom-width: 1px; - top: -1px; - bottom: 0; - left: 0; - right: 0; - content: ""; - margin-bottom: -1px; -} - -.cm-highlight-full::before { - border: 1px solid var(--theme-comment-alt); - border-radius: 2px; - margin: 0 -1px -1px -1px; -} diff --git a/src/components/Editor/HighlightLines.js b/src/components/Editor/HighlightLines.js deleted file mode 100644 index fc83eea4d5..0000000000 --- a/src/components/Editor/HighlightLines.js +++ /dev/null @@ -1,77 +0,0 @@ -// @flow -import { Component } from "react"; -import { range } from "lodash"; -import { isEmpty } from "lodash"; - -class HighlightLines extends Component { - highlightLineRange: Function; - - props: { - highlightedLineRange: Object, - editor: Object - }; - - constructor() { - super(); - this.highlightLineRange = this.highlightLineRange.bind(this); - } - - componentDidMount() { - this.highlightLineRange(); - } - - componentWillUpdate() { - this.clearHighlightRange(); - } - - componentDidUpdate() { - this.highlightLineRange(); - } - - componentWillUnmount() { - this.clearHighlightRange(); - } - - clearHighlightRange() { - const { highlightedLineRange, editor } = this.props; - - const { codeMirror } = editor; - - if (isEmpty(highlightedLineRange) || !codeMirror) { - return; - } - - const { start, end } = highlightedLineRange; - codeMirror.operation(() => { - range(start - 1, end).forEach(line => { - codeMirror.removeLineClass(line, "line", "highlight-lines"); - }); - }); - } - - highlightLineRange() { - const { highlightedLineRange, editor } = this.props; - - const { codeMirror } = editor; - - if (isEmpty(highlightedLineRange) || !codeMirror) { - return; - } - - const { start, end } = highlightedLineRange; - - codeMirror.operation(() => { - editor.alignLine(start); - - range(start - 1, end).forEach(line => { - codeMirror.addLineClass(line, "line", "highlight-lines"); - }); - }); - } - - render() { - return null; - } -} - -export default HighlightLines; diff --git a/src/components/Editor/HitMarker.js b/src/components/Editor/HitMarker.js deleted file mode 100644 index 940581e615..0000000000 --- a/src/components/Editor/HitMarker.js +++ /dev/null @@ -1,55 +0,0 @@ -// @flow -import { Component } from "react"; - -const markerEl = document.createElement("div"); - -function makeMarker() { - const marker = markerEl.cloneNode(true); - marker.className = "editor hit-marker"; - return marker; -} - -class HitMarker extends Component { - props: { - hitData: { [string]: any }, - editor: any - }; - - addMarker() { - const hitData = this.props.hitData; - const line = hitData.line - 1; - - this.props.editor.setGutterMarker(line, "hit-markers", makeMarker()); - - this.props.editor.addLineClass(line, "line", "hit-marker"); - } - - shouldComponentUpdate(nextProps: any) { - return ( - this.props.editor !== nextProps.editor || - this.props.hitData !== nextProps.hitData - ); - } - - componentDidMount() { - this.addMarker(); - } - - componentDidUpdate() { - this.addMarker(); - } - - componentWillUnmount() { - const hitData = this.props.hitData; - const line = hitData.line - 1; - - this.props.editor.setGutterMarker(line, "hit-markers", null); - this.props.editor.removeLineClass(line, "line", "hit-marker"); - } - - render() { - return null; - } -} - -export default HitMarker; diff --git a/src/components/Editor/Preview.css b/src/components/Editor/Preview.css deleted file mode 100644 index 1f4ddaf0ae..0000000000 --- a/src/components/Editor/Preview.css +++ /dev/null @@ -1,113 +0,0 @@ -.popover .preview { - background: var(--theme-body-background); - width: 350px; - min-height: 80px; - border: 1px solid var(--theme-splitter-color); - padding: 10px; - height: auto; - min-height: inherit; - max-height: 200px; - overflow: auto; - box-shadow: 1px 2px 3px var(--popup-shadow-color); -} - -.theme-dark .popover .preview { - box-shadow: 1px 2px 3px var(--popup-shadow-color); -} - -.popover .preview .header { - width: 100%; - line-height: 20px; - border-bottom: 1px solid #cccccc; - display: flex; - flex-direction: column; -} - -.popover .preview .header .link { - align-self: flex-end; - color: var(--theme-highlight-blue); - text-decoration: underline; -} - -.selection, -.debug-expression.selection { - background-color: var(--theme-highlight-yellow); -} - -.theme-dark .selection, -.theme-dark .debug-expression.selection { - background-color: #743884; -} - -.theme-dark .cm-s-mozilla .selection, -.theme-dark .cm-s-mozilla .debug-expression.selection { - color: #e7ebee; -} - -.popover .preview .function-signature { - padding-top: 10px; -} - -.theme-dark .popover .preview { - border-color: var(--theme-body-color); -} - -.theme-dark .popover .preview .arrow svg { - fill: var(--theme-content-color3); -} - -.tooltip { - position: fixed; - z-index: 100; -} - -.tooltip .preview { - background: var(--theme-toolbar-background); - max-width: inherit; - min-height: 80px; - border: 1px solid var(--theme-splitter-color); - box-shadow: 1px 2px 4px 1px var(--theme-toolbar-background-alt); - padding: 5px; - height: auto; - min-height: inherit; - max-height: 200px; - overflow: auto; -} - -.theme-dark .tooltip .preview { - border-color: var(--theme-body-color); -} - -.tooltip .gap { - height: 4px; - padding-top: 4px; -} - -.add-to-expression-bar { - border: 1px solid var(--theme-splitter-color); - border-top: none; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - font-size: 14px; - line-height: 30px; - background: var(--theme-toolbar-background); - color: var(--theme-comment-alt); - padding: 0 4px; -} - -.add-to-expression-bar .prompt { - width: 1em; -} - -.add-to-expression-bar .expression-to-save-label { - width: calc(100% - 4em); -} - -.add-to-expression-bar .expression-to-save-button { - font-size: 14px; - color: var(--theme-content-color3); -} diff --git a/src/components/Editor/Preview/Popup.css b/src/components/Editor/Preview/Popup.css deleted file mode 100644 index bfc8f4faee..0000000000 --- a/src/components/Editor/Preview/Popup.css +++ /dev/null @@ -1,117 +0,0 @@ -.popover .preview-popup { - background: var(--theme-body-background); - width: 350px; - min-height: 80px; - border: 1px solid var(--theme-splitter-color); - padding: 10px; - height: auto; - min-height: inherit; - max-height: 200px; - overflow: auto; - box-shadow: 1px 2px 3px var(--popup-shadow-color); -} - -.theme-dark .popover .preview-popup { - box-shadow: 1px 2px 3px var(--popup-shadow-color); -} - -.popover .preview-popup .header { - width: 100%; - line-height: 20px; - border-bottom: 1px solid #cccccc; - display: flex; - flex-direction: column; -} - -.popover .preview-popup .header .link { - align-self: flex-end; - color: var(--theme-highlight-blue); - text-decoration: underline; -} - -.preview-selection:hover { - cursor: default; -} - -.preview-selection, -.debug-expression.preview-selection { - background-color: var(--theme-highlight-yellow); -} - -.theme-dark .preview-selection, -.theme-dark .debug-expression.preview-selection { - background-color: #743884; -} - -.theme-dark .cm-s-mozilla .preview-selection, -.theme-dark .cm-s-mozilla .debug-expression.preview-selection { - color: #e7ebee; -} - -.popover .preview-popup .function-signature { - padding-top: 10px; -} - -.theme-dark .popover .preview-popup { - border-color: var(--theme-body-color); -} - -.theme-dark .popover .preview-popup .arrow svg { - fill: var(--theme-content-color3); -} - -.tooltip { - position: fixed; - z-index: 100; -} - -.tooltip .preview-popup { - background: var(--theme-toolbar-background); - max-width: inherit; - min-height: 80px; - border: 1px solid var(--theme-splitter-color); - box-shadow: 1px 2px 4px 1px var(--theme-toolbar-background-alt); - padding: 5px; - height: auto; - min-height: inherit; - max-height: 200px; - overflow: auto; -} - -.theme-dark .tooltip .preview-popup { - border-color: var(--theme-body-color); -} - -.tooltip .gap { - height: 4px; - padding-top: 4px; -} - -.add-to-expression-bar { - border: 1px solid var(--theme-splitter-color); - border-top: none; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - font-size: 14px; - line-height: 30px; - background: var(--theme-toolbar-background); - color: var(--theme-comment-alt); - padding: 0 4px; -} - -.add-to-expression-bar .prompt { - width: 1em; -} - -.add-to-expression-bar .expression-to-save-label { - width: calc(100% - 4em); -} - -.add-to-expression-bar .expression-to-save-button { - font-size: 14px; - color: var(--theme-content-color3); -} diff --git a/src/components/Editor/Preview/Popup.js b/src/components/Editor/Preview/Popup.js deleted file mode 100644 index 9e066c00b4..0000000000 --- a/src/components/Editor/Preview/Popup.js +++ /dev/null @@ -1,229 +0,0 @@ -// @flow - -import React, { Component } from "react"; -import { connect } from "react-redux"; -import { bindActionCreators } from "redux"; -import { isEnabled } from "devtools-config"; - -import Reps from "devtools-reps"; -const { REPS: { Rep }, MODE, ObjectInspectorUtils } = Reps; -const { ObjectInspector } = Reps; -const { getChildren } = ObjectInspectorUtils; - -import actions from "../../../actions"; -import { getLoadedObjects } from "../../../selectors"; -import Popover from "../../shared/Popover"; -import PreviewFunction from "../../shared/PreviewFunction"; -import { markText } from "../../../utils/editor"; - -import "./Popup.css"; - -import type { EditorRange } from "../../../utils/editor/types"; - -type Props = { - loadObjectProperties: Object => void, - addExpression: (string, ?Object) => void, - loadedObjects: Object, - popoverPos: Object, - value: Object, - expression: string, - onClose: () => void, - range: EditorRange, - editor: any, - selectSourceURL: (string, Object) => void, - openLink: string => void -}; - -function isReactComponent(roots) { - return roots.some(root => root.name === "_reactInternalInstance"); -} - -export class Popup extends Component { - marker: any; - pos: any; - props: Props; - - componentDidMount() { - const { - loadObjectProperties, - loadedObjects, - value, - editor, - range - } = this.props; - - this.marker = markText(editor, "preview-selection", range); - - if (!value || !value.type == "object") { - return; - } - - if (value.actor && !loadedObjects[value.actor]) { - loadObjectProperties(value); - } - } - - componentWillUnmount() { - if (this.marker) { - this.marker.clear(); - } - } - - getChildren(root: Object, getObjectProperties: Function) { - const actors = {}; - - const children = getChildren({ - getObjectProperties, - actors, - item: root - }); - - if (children.length > 0) { - return children; - } - - return null; - } - - renderFunctionPreview(value: Object, root: Object) { - const { selectSourceURL } = this.props; - const { location } = value; - - return ( -
selectSourceURL(location.url, { line: location.line })} - > - -
- ); - } - - renderObjectPreview(expression: string, root: Object) { - const { loadedObjects } = this.props; - const getObjectProperties = id => loadedObjects[id]; - let roots = this.getChildren(root, getObjectProperties); - - if (!roots) { - return null; - } - - if (isReactComponent(roots)) { - roots = roots.filter(r => ["state", "props"].includes(r.name)); - } - - return ( -
{this.renderObjectInspector(roots)}
- ); - } - - renderSimplePreview(value: Object) { - const { openLink } = this.props; - return ( -
- {Rep({ - object: value, - mode: MODE.LONG, - openLink - })} -
- ); - } - - renderObjectInspector(roots: Object) { - const { loadObjectProperties, loadedObjects, openLink } = this.props; - const getObjectProperties = id => loadedObjects[id]; - - return ( - {}} - loadObjectEntries={grip => {}} - /> - ); - } - - renderAddToExpressionBar(expression: string) { - if (!isEnabled("previewWatch")) { - return null; - } - - const { addExpression } = this.props; - return ( -
-
»
-
{expression}
-
addExpression(event)} - > - {L10N.getStr("addWatchExpressionButton")} -
-
- ); - } - - renderPreview(expression: string, value: Object) { - const root = { - name: expression, - path: expression, - contents: { value } - }; - - if (value.class === "Function") { - return this.renderFunctionPreview(value, root); - } - - if (value.type === "object") { - return ( -
- {this.renderObjectPreview(expression, root)} - {this.renderAddToExpressionBar(expression)} -
- ); - } - - return this.renderSimplePreview(value); - } - - getPreviewType(value: any) { - if ( - typeof value == "number" || - typeof value == "boolean" || - (typeof value == "string" && value.length < 10) || - (typeof value == "number" && value.toString().length < 10) || - value.type == "null" || - value.type == "undefined" || - value.class === "Function" - ) { - return "tooltip"; - } - - return "popover"; - } - - render() { - const { popoverPos, onClose, value, expression } = this.props; - const type = this.getPreviewType(value); - - return ( - - {this.renderPreview(expression, value)} - - ); - } -} - -export default connect( - state => ({ - loadedObjects: getLoadedObjects(state) - }), - dispatch => bindActionCreators(actions, dispatch) -)(Popup); diff --git a/src/components/Editor/Preview/index.js b/src/components/Editor/Preview/index.js deleted file mode 100644 index 2c78f1947a..0000000000 --- a/src/components/Editor/Preview/index.js +++ /dev/null @@ -1,117 +0,0 @@ -import React, { PureComponent } from "react"; -import { bindActionCreators } from "redux"; -import { connect } from "react-redux"; -import debounce from "lodash/debounce"; - -import Popup from "./Popup"; - -import { - getPreview, - getSelectedSource, - getInScopeLines, - isSelectedFrameVisible -} from "../../../selectors"; -import actions from "../../../actions"; -import { updatePreview, toEditorRange } from "../../../utils/editor"; - -import type { SelectedLocation, SourceRecord } from "../../../reducers/types"; -import type { Preview as PreviewType } from "../../../reducers/ast"; - -type Props = { - loadObjectProperties: Object => void, - addExpression: (string, ?Object) => void, - loadedObjects: Object, - editor: any, - selectedSource: SourceRecord, - selectedLocation: SelectedLocation, - selectedFrame: any, - clearPreview: () => void, - preview: PreviewType, - selectedFrameVisible: boolean -}; - -class Preview extends PureComponent { - props: Props; - - constructor() { - super(); - - const self = this; - self.onScroll = this.onScroll.bind(this); - self.onMouseOver = debounce(this.onMouseOver, 40); - } - - componentDidMount() { - const { codeMirror } = this.props.editor; - const codeMirrorWrapper = codeMirror.getWrapperElement(); - - codeMirror.on("scroll", this.onScroll); - codeMirrorWrapper.addEventListener("mouseover", e => this.onMouseOver(e)); - codeMirrorWrapper.addEventListener("mouseup", e => this.onMouseUp(e)); - codeMirrorWrapper.addEventListener("mousedown", e => this.onMouseDown(e)); - } - - onMouseOver(e) { - const { target } = e; - if (this.props.selectedFrameVisible) { - updatePreview(target, this.props.editor, this.props); - } - } - - onMouseUp() { - this.currentlySelecting = false; - } - - onMouseDown() { - this.currentlySelecting = true; - } - - onScroll() { - this.props.clearPreview(); - } - - onClose(e) { - this.props.clearPreview(); - } - - render() { - const { selectedSource, preview } = this.props; - - if (!this.props.editor || !selectedSource || this.currentlySelecting) { - return null; - } - - if (!preview || preview.updating) { - return null; - } - - const { result, expression, location, cursorPos } = preview; - const value = result; - if (typeof value == "undefined" || value.optimizedOut) { - return null; - } - - const editorRange = toEditorRange(selectedSource.get("id"), location); - - return ( - this.onClose(e)} - /> - ); - } -} - -export default connect( - state => ({ - preview: getPreview(state), - selectedSource: getSelectedSource(state), - linesInScope: getInScopeLines(state), - selectedFrameVisible: isSelectedFrameVisible(state) - }), - dispatch => bindActionCreators(actions, dispatch) -)(Preview); diff --git a/src/components/Editor/SearchBar.css b/src/components/Editor/SearchBar.css deleted file mode 100644 index eb780d7a8b..0000000000 --- a/src/components/Editor/SearchBar.css +++ /dev/null @@ -1,108 +0,0 @@ -.search-bar { - display: flex; - flex-direction: column; -} - -.search-bar .search-field { - padding-left: 7px; - height: var(--editor-searchbar-height); -} - -.search-bar .close-btn { - padding: 6px; -} - -.search-bottom-bar * { - -moz-user-select: none; - user-select: none; -} - -.search-bottom-bar { - display: flex; - flex-shrink: 0; - justify-content: space-between; - width: calc(100% - 1px); - height: var(--editor-second-searchbar-height); - background-color: var(--theme-toolbar-background); - border-bottom: 1px solid var(--theme-splitter-color); - padding: 0 13px; -} - -.search-bottom-bar button:focus { - outline: none; -} - -.search-bottom-bar .search-modifiers { - display: flex; - align-items: center; -} - -.search-bottom-bar .search-modifiers button { - padding: 0 3px; - margin: 0 3px; - border: none; - background: none; - width: 20px; - height: 20px; - border-radius: 3px; -} - -.search-bottom-bar .search-modifiers button i { - display: flex; - justify-content: center; - align-items: center; - padding: 0; - width: 16px; -} - -.search-bottom-bar .search-modifiers button svg { - fill: var(--theme-comment-alt); - height: 16px; - width: 16px; -} - -.search-bottom-bar .search-modifiers button:hover { - background: var(--theme-toolbar-background-hover); -} - -.search-bottom-bar .search-modifiers button:active { - outline: none; -} - -.search-bottom-bar .search-modifiers button.active svg { - fill: var(--theme-selection-background); -} - -.theme-dark .search-bottom-bar .search-modifiers button.active svg { - fill: white; -} - -.search-bottom-bar .search-type-toggles { - display: flex; - align-items: center; - max-width: 68%; -} - -.search-bottom-bar .search-type-name { - padding: 1px 0 0 0; - margin: 0 0 0 6px; - border: none; - background: transparent; - color: var(--theme-comment-alt); -} - -.search-bottom-bar .search-type-toggles .search-type-btn:active { - outline: none; -} - -.search-bottom-bar .search-type-toggles .search-type-btn.active { - color: var(--theme-selection-background); -} - -.theme-dark .search-bottom-bar .search-type-toggles .search-type-btn.active { - color: white; -} - -.search-bar .result-list { - max-height: 230px; -} diff --git a/src/components/Editor/SearchBar.js b/src/components/Editor/SearchBar.js deleted file mode 100644 index 321da65371..0000000000 --- a/src/components/Editor/SearchBar.js +++ /dev/null @@ -1,429 +0,0 @@ -// @flow - -import PropTypes from "prop-types"; -import React, { Component } from "react"; -import { findDOMNode } from "react-dom"; -import { connect } from "react-redux"; -import { bindActionCreators } from "redux"; -import Svg from "../shared/Svg"; -import actions from "../../actions"; -import { - getActiveSearch, - getFileSearchQueryState, - getFileSearchModifierState, - getSearchResults -} from "../../selectors"; - -import { find, findNext, findPrev, removeOverlay } from "../../utils/editor"; - -import { getMatches } from "../../workers/search"; - -import { scrollList } from "../../utils/result-list"; -import classnames from "classnames"; -import { debounce } from "lodash"; - -import { SourceEditor } from "devtools-source-editor"; -import type { SourceRecord } from "../../reducers/sources"; -import type { - ActiveSearchType, - FileSearchModifiers, - SearchResults -} from "../../reducers/ui"; -import type { SelectSourceOptions } from "../../actions/sources"; -import SearchInput from "../shared/SearchInput"; -import "./SearchBar.css"; - -function getShortcuts() { - const searchAgainKey = L10N.getStr("sourceSearch.search.again.key2"); - const searchAgainPrevKey = L10N.getStr("sourceSearch.search.againPrev.key2"); - const searchKey = L10N.getStr("sourceSearch.search.key2"); - - return { - shiftSearchAgainShortcut: searchAgainPrevKey, - searchAgainShortcut: searchAgainKey, - searchShortcut: searchKey - }; -} - -type SearchBarState = { - selectedResultIndex: number, - count: number, - index: number -}; - -type Props = { - editor?: SourceEditor, - selectSource: (string, ?SelectSourceOptions) => any, - selectedSource?: SourceRecord, - highlightLineRange: ({ start: number, end: number }) => void, - clearHighlightLineRange: () => void, - searchOn?: boolean, - setActiveSearch: (?ActiveSearchType) => any, - searchResults: SearchResults, - modifiers: FileSearchModifiers, - toggleFileSearchModifier: string => any, - query: string, - setFileSearchQuery: string => any, - updateSearchResults: ({ count: number, index?: number }) => any -}; - -class SearchBar extends Component { - state: SearchBarState; - - props: Props; - - constructor(props: Props) { - super(props); - this.state = { - selectedResultIndex: 0, - count: 0, - index: -1 - }; - - const self: any = this; - self.onEscape = this.onEscape.bind(this); - self.clearSearch = this.clearSearch.bind(this); - self.closeSearch = this.closeSearch.bind(this); - self.toggleSearch = this.toggleSearch.bind(this); - self.setSearchValue = this.setSearchValue.bind(this); - self.selectSearchInput = this.selectSearchInput.bind(this); - self.searchInput = this.searchInput.bind(this); - self.doSearch = this.doSearch.bind(this); - self.searchContents = this.searchContents.bind(this); - self.traverseResults = this.traverseResults.bind(this); - self.onChange = this.onChange.bind(this); - self.onKeyUp = this.onKeyUp.bind(this); - self.buildSummaryMsg = this.buildSummaryMsg.bind(this); - self.renderSearchModifiers = this.renderSearchModifiers.bind(this); - } - - componentWillUnmount() { - const shortcuts = this.context.shortcuts; - const { - searchShortcut, - searchAgainShortcut, - shiftSearchAgainShortcut - } = getShortcuts(); - - shortcuts.off(searchShortcut); - shortcuts.off("Escape"); - shortcuts.off(searchAgainShortcut); - shortcuts.off(shiftSearchAgainShortcut); - } - - componentDidMount() { - // overwrite searchContents with a debounced version to reduce the - // frequency of queries which improves perf on large files - // $FlowIgnore - this.searchContents = debounce(this.searchContents, 100); - - const shortcuts = this.context.shortcuts; - const { - searchShortcut, - searchAgainShortcut, - shiftSearchAgainShortcut - } = getShortcuts(); - - shortcuts.on(searchShortcut, (_, e) => this.toggleSearch(e)); - shortcuts.on("Escape", (_, e) => this.onEscape(e)); - - shortcuts.on(shiftSearchAgainShortcut, (_, e) => - this.traverseResults(e, true) - ); - - shortcuts.on(searchAgainShortcut, (_, e) => this.traverseResults(e, false)); - } - - componentDidUpdate(prevProps: Props, prevState: SearchBarState) { - const searchInput = this.searchInput(); - - if (searchInput) { - searchInput.focus(); - } - - if (this.refs.resultList && this.refs.resultList.refs) { - scrollList(this.refs.resultList.refs, this.state.selectedResultIndex); - } - } - - onEscape(e: SyntheticKeyboardEvent) { - this.closeSearch(e); - } - - clearSearch() { - const { editor: ed, query, modifiers } = this.props; - if (ed && modifiers) { - const ctx = { ed, cm: ed.codeMirror }; - removeOverlay(ctx, query, modifiers.toJS()); - } - } - - closeSearch(e: SyntheticEvent) { - const { editor, setFileSearchQuery, searchOn } = this.props; - - if (editor && searchOn) { - setFileSearchQuery(""); - this.clearSearch(); - this.props.setActiveSearch(); - this.props.clearHighlightLineRange(); - e.stopPropagation(); - e.preventDefault(); - } - } - - toggleSearch(e: SyntheticKeyboardEvent) { - e.stopPropagation(); - e.preventDefault(); - const { editor } = this.props; - - if (!this.props.searchOn) { - this.props.setActiveSearch("file"); - } - - if (this.props.searchOn && editor) { - const selection = editor.codeMirror.getSelection(); - this.setSearchValue(selection); - if (selection !== "") { - this.doSearch(selection); - } - this.selectSearchInput(); - } - } - - setSearchValue(value: string) { - const searchInput = this.searchInput(); - if (value == "" || !searchInput) { - return; - } - - searchInput.value = value; - } - - selectSearchInput() { - const searchInput = this.searchInput(); - if (searchInput) { - searchInput.setSelectionRange(0, searchInput.value.length); - searchInput.focus(); - } - } - - searchInput(): ?HTMLInputElement { - const node = findDOMNode(this); - if (node instanceof HTMLElement) { - const input = node.querySelector("input"); - if (input instanceof HTMLInputElement) { - return input; - } - } - return null; - } - - doSearch(query: string) { - const { selectedSource, setFileSearchQuery } = this.props; - if (!selectedSource || !selectedSource.get("text")) { - return; - } - - setFileSearchQuery(query); - - this.searchContents(query); - } - - updateSearchResults(characterIndex, line, matches) { - const matchIndex = matches.findIndex( - elm => elm.line === line && elm.ch === characterIndex - ); - this.props.updateSearchResults({ - matches, - matchIndex, - count: matches.length, - index: characterIndex - }); - } - - async searchContents(query: string) { - const { selectedSource, modifiers, editor: ed } = this.props; - - if ( - !query || - !ed || - !selectedSource || - !selectedSource.get("text") || - !modifiers - ) { - return; - } - - const ctx = { ed, cm: ed.codeMirror }; - - const _modifiers = modifiers.toJS(); - const matches = await getMatches( - query, - selectedSource.get("text"), - _modifiers - ); - const { ch, line } = find(ctx, query, true, _modifiers); - this.updateSearchResults(ch, line, matches); - } - - traverseResults(e: SyntheticEvent, rev: boolean) { - e.stopPropagation(); - e.preventDefault(); - const ed = this.props.editor; - - if (!ed) { - return; - } - - const ctx = { ed, cm: ed.codeMirror }; - - const { query, modifiers, searchResults: { matches } } = this.props; - - if (query === "") { - this.props.setActiveSearch("file"); - } - - if (modifiers) { - const matchedLocations = matches || []; - const { ch, line } = rev - ? findPrev(ctx, query, true, modifiers.toJS()) - : findNext(ctx, query, true, modifiers.toJS()); - this.updateSearchResults(ch, line, matchedLocations); - } - } - - // Handlers - - onChange(e: any) { - return this.doSearch(e.target.value); - } - - onKeyUp(e: SyntheticKeyboardEvent) { - if (e.key !== "Enter" && e.key !== "F3") { - return; - } - - this.traverseResults(e, e.shiftKey); - e.preventDefault(); - } - // Renderers - buildSummaryMsg() { - const { searchResults: { matchIndex, count, index }, query } = this.props; - - if (query.trim() == "") { - return ""; - } - - if (count == 0) { - return L10N.getStr("editor.noResults"); - } - - if (index == -1) { - return L10N.getFormatStr("sourceSearch.resultsSummary1", count); - } - - return L10N.getFormatStr("editor.searchResults", matchIndex + 1, count); - } - - renderSearchModifiers() { - const { modifiers, toggleFileSearchModifier } = this.props; - - function SearchModBtn({ modVal, className, svgName, tooltip }) { - const preppedClass = classnames(className, { - active: modifiers && modifiers.get(modVal) - }); - return ( - - ); - } - - return ( -
- - {L10N.getStr("symbolSearch.searchModifier.modifiersLabel")} - - - - -
- ); - } - - renderSearchType() { - return ( -
- this.props.setActiveSearch("symbol")} - > - {L10N.getStr("symbolSearch.search.functionsPlaceholder")} - -
- ); - } - - render() { - const { searchResults: { count }, query, searchOn } = this.props; - - if (!searchOn) { - return
; - } - - return ( -
- this.traverseResults(e, false)} - handlePrev={e => this.traverseResults(e, true)} - handleClose={this.closeSearch} - /> -
- {this.renderSearchType()} - {this.renderSearchModifiers()} -
-
- ); - } -} - -SearchBar.contextTypes = { - shortcuts: PropTypes.object -}; - -export default connect( - state => { - return { - searchOn: getActiveSearch(state) === "file", - query: getFileSearchQueryState(state), - modifiers: getFileSearchModifierState(state), - searchResults: getSearchResults(state) - }; - }, - dispatch => bindActionCreators(actions, dispatch) -)(SearchBar); diff --git a/src/components/Editor/Tabs.css b/src/components/Editor/Tabs.css deleted file mode 100644 index 4d85385a30..0000000000 --- a/src/components/Editor/Tabs.css +++ /dev/null @@ -1,121 +0,0 @@ -.source-header { - border-bottom: 1px solid var(--theme-splitter-color); - width: 100%; - height: 29px; - display: flex; - align-items: flex-end; -} - -.source-header * { - -moz-user-select: none; - user-select: none; -} - -.source-header .new-tab-btn { - padding: 4px; - margin-top: 4px; - margin-left: 2px; - fill: var(--theme-content-color3); - transition: 0.1s ease; - align-self: center; -} - -.source-header .new-tab-btn:hover { - background-color: var(--theme-toolbar-background-hover); -} - -.source-header .new-tab-btn svg { - width: 12px; - display: block; -} - -.source-tabs { - max-width: calc(100% - 80px); - align-self: flex-start; -} - -.source-tab { - border: 1px solid transparent; - border-top-left-radius: 2px; - border-top-right-radius: 2px; - display: inline-flex; - align-items: flex-end; - position: relative; - transition: all 0.15s ease; - min-width: 40px; - overflow: hidden; - padding: 5px; - margin-inline-start: 3px; - margin-top: 3px; - cursor: default; -} - -.source-tab:hover { - background-color: var(--theme-toolbar-background-alt); - border-color: var(--theme-splitter-color); -} - -.source-tab.active { - color: var(--theme-body-color); - background-color: var(--theme-body-background); - border-color: var(--theme-splitter-color); - border-bottom-color: transparent; -} - -.source-tab.active path, -.source-tab:hover path { - fill: var(--theme-body-color); -} - -.source-tab .prettyPrint { - line-height: 0; -} - -.source-tab .prettyPrint svg { - height: 12px; - width: 12px; -} - -.source-tab .prettyPrint path { - fill: var(--theme-textbox-box-shadow); -} - -.source-tab .blackBox, -.source-tab .prettyPrint { - line-height: 0; - align-self: center; -} - -.source-tab .blackBox svg { - height: 12px; - width: 12px; -} - -.source-tab .blackBox path { - fill: var(--theme-textbox-box-shadow); -} - -.theme-dark .source-tab .blackBox circle { - fill: var(--theme-body-color); -} - -.source-tab .filename { - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - padding: 0 4px; - align-self: flex-start; -} - -.source-tab .close-btn { - visibility: hidden; - line-height: 0; -} - -.source-tab.active .close-btn { - visibility: visible; -} - -.source-tab:hover .close-btn { - visibility: visible; -} diff --git a/src/components/Editor/Tabs.js b/src/components/Editor/Tabs.js deleted file mode 100644 index 72ae109bb4..0000000000 --- a/src/components/Editor/Tabs.js +++ /dev/null @@ -1,516 +0,0 @@ -// @flow - -import React, { PureComponent } from "react"; -import { connect } from "react-redux"; -import { bindActionCreators } from "redux"; -import * as I from "immutable"; - -import { - getSelectedSource, - getSourcesForTabs, - getActiveSearch, - getSearchTabs -} from "../../selectors"; -import { isVisible } from "../../utils/ui"; - -import { getFilename, getFileURL, isPretty } from "../../utils/source"; -import classnames from "classnames"; -import actions from "../../actions"; -import CloseButton from "../shared/Button/Close"; -import Svg from "../shared/Svg"; -import { showMenu, buildMenu } from "devtools-launchpad"; -import { debounce } from "lodash"; -import { formatKeyShortcut } from "../../utils/text"; -import "./Tabs.css"; - -import PaneToggleButton from "../shared/Button/PaneToggle"; -import Dropdown from "../shared/Dropdown"; - -import type { List } from "immutable"; -import type { SourceRecord } from "../../reducers/sources"; -import type { ActiveSearchType } from "../../reducers/ui"; -type SourcesList = List; - -/* - * Finds the hidden tabs by comparing the tabs' top offset. - * hidden tabs will have a great top offset. - * - * @param sourceTabs Immutable.list - * @param sourceTabEls HTMLCollection - * - * @returns Immutable.list - */ -function getHiddenTabs(sourceTabs: SourcesList, sourceTabEls) { - sourceTabEls = [].slice.call(sourceTabEls); - function getTopOffset() { - const topOffsets = sourceTabEls.map(t => t.getBoundingClientRect().top); - return Math.min(...topOffsets); - } - - function hasTopOffset(el) { - // adding 10px helps account for cases where the tab might be offset by - // styling such as selected tabs which don't have a border. - const tabTopOffset = getTopOffset(); - return el.getBoundingClientRect().top > tabTopOffset + 10; - } - - return sourceTabs.filter((tab, index) => { - const element = sourceTabEls[index]; - return element && hasTopOffset(element); - }); -} - -/** - * Clipboard function taken from - * https://dxr.mozilla.org/mozilla-central/source/devtools/shared/platform/content/clipboard.js - */ -function copyToTheClipboard(string) { - const doCopy = function(e: any) { - e.clipboardData.setData("text/plain", string); - e.preventDefault(); - }; - - document.addEventListener("copy", doCopy); - document.execCommand("copy", false, null); - document.removeEventListener("copy", doCopy); -} - -type State = { - dropdownShown: boolean, - hiddenSourceTabs: SourcesList -}; - -class SourceTabs extends PureComponent { - state: State; - onTabContextMenu: Function; - showContextMenu: Function; - updateHiddenSourceTabs: Function; - toggleSourcesDropdown: Function; - renderDropdownSource: Function; - renderTabs: Function; - renderTab: Function; - renderSourceTab: Function; - renderSearchTab: Function; - renderNewButton: Function; - renderDropDown: Function; - renderStartPanelToggleButton: Function; - renderEndPanelToggleButton: Function; - - props: { - sourceTabs: SourcesList, - searchTabs: List, - selectedSource: SourceRecord, - selectSource: (string, ?Object) => void, - moveTab: (string, number) => void, - closeTab: string => void, - closeTabs: (List) => void, - setActiveSearch: (?ActiveSearchType) => void, - closeActiveSearch: () => void, - activeSearch: string, - togglePrettyPrint: string => void, - togglePaneCollapse: () => void, - toggleActiveSearch: (?string) => void, - showSource: string => void, - horizontal: boolean, - startPanelCollapsed: boolean, - endPanelCollapsed: boolean, - searchOn: boolean - }; - - onResize: Function; - - constructor(props) { - super(props); - this.state = { - dropdownShown: false, - hiddenSourceTabs: I.List() - }; - - this.onTabContextMenu = this.onTabContextMenu.bind(this); - this.showContextMenu = this.showContextMenu.bind(this); - this.updateHiddenSourceTabs = this.updateHiddenSourceTabs.bind(this); - this.toggleSourcesDropdown = this.toggleSourcesDropdown.bind(this); - this.renderDropdownSource = this.renderDropdownSource.bind(this); - this.renderTabs = this.renderTabs.bind(this); - this.renderSourceTab = this.renderSourceTab.bind(this); - this.renderSearchTab = this.renderSearchTab.bind(this); - this.renderNewButton = this.renderNewButton.bind(this); - this.renderDropDown = this.renderDropdown.bind(this); - this.renderStartPanelToggleButton = this.renderStartPanelToggleButton.bind( - this - ); - this.renderEndPanelToggleButton = this.renderEndPanelToggleButton.bind( - this - ); - - this.onResize = debounce(() => { - this.updateHiddenSourceTabs(); - }); - } - - componentDidUpdate(prevProps) { - if (!(prevProps === this.props)) { - this.updateHiddenSourceTabs(); - } - } - - componentDidMount() { - this.updateHiddenSourceTabs(); - window.addEventListener("resize", this.onResize); - } - - componentWillUnmount() { - window.removeEventListener("resize", this.onResize); - } - - onTabContextMenu(event, tab: string) { - event.preventDefault(); - this.showContextMenu(event, tab); - } - - showContextMenu(e, tab) { - const { - closeTab, - closeTabs, - sourceTabs, - showSource, - togglePrettyPrint - } = this.props; - - const closeTabLabel = L10N.getStr("sourceTabs.closeTab"); - const closeOtherTabsLabel = L10N.getStr("sourceTabs.closeOtherTabs"); - const closeTabsToEndLabel = L10N.getStr("sourceTabs.closeTabsToEnd"); - const closeAllTabsLabel = L10N.getStr("sourceTabs.closeAllTabs"); - const revealInTreeLabel = L10N.getStr("sourceTabs.revealInTree"); - const copyLinkLabel = L10N.getStr("sourceTabs.copyLink"); - const prettyPrintLabel = L10N.getStr("sourceTabs.prettyPrint"); - - const closeTabKey = L10N.getStr("sourceTabs.closeTab.accesskey"); - const closeOtherTabsKey = L10N.getStr( - "sourceTabs.closeOtherTabs.accesskey" - ); - const closeTabsToEndKey = L10N.getStr( - "sourceTabs.closeTabsToEnd.accesskey" - ); - const closeAllTabsKey = L10N.getStr("sourceTabs.closeAllTabs.accesskey"); - const revealInTreeKey = L10N.getStr("sourceTabs.revealInTree.accesskey"); - const copyLinkKey = L10N.getStr("sourceTabs.copyLink.accesskey"); - const prettyPrintKey = L10N.getStr("sourceTabs.prettyPrint.accesskey"); - - const tabs = sourceTabs.map(t => t.get("id")); - const otherTabs = sourceTabs.filter(t => t.get("id") !== tab); - const sourceTab = sourceTabs.find(t => t.get("id") == tab); - const tabURLs = sourceTabs.map(thisTab => thisTab.get("url")); - const otherTabURLs = otherTabs.map(thisTab => thisTab.get("url")); - - if (!sourceTab) { - return; - } - - const isPrettySource = isPretty(sourceTab.toJS()); - - const closeTabMenuItem = { - id: "node-menu-close-tab", - label: closeTabLabel, - accesskey: closeTabKey, - disabled: false, - click: () => closeTab(sourceTab.get("url")) - }; - - const closeOtherTabsMenuItem = { - id: "node-menu-close-other-tabs", - label: closeOtherTabsLabel, - accesskey: closeOtherTabsKey, - disabled: false, - click: () => closeTabs(otherTabURLs) - }; - - const closeTabsToEndMenuItem = { - id: "node-menu-close-tabs-to-end", - label: closeTabsToEndLabel, - accesskey: closeTabsToEndKey, - disabled: false, - click: () => { - const tabIndex = tabs.findIndex(t => t == tab); - closeTabs(tabURLs.filter((t, i) => i > tabIndex)); - } - }; - - const closeAllTabsMenuItem = { - id: "node-menu-close-all-tabs", - label: closeAllTabsLabel, - accesskey: closeAllTabsKey, - disabled: false, - click: () => closeTabs(tabURLs) - }; - - const showSourceMenuItem = { - id: "node-menu-show-source", - label: revealInTreeLabel, - accesskey: revealInTreeKey, - disabled: false, - click: () => showSource(tab) - }; - - const copySourceUri2 = { - id: "node-menu-copy-source-url", - label: copyLinkLabel, - accesskey: copyLinkKey, - disabled: false, - click: () => copyToTheClipboard(sourceTab.get("url")) - }; - - const prettyPrint = { - id: "node-menu-pretty-print", - label: prettyPrintLabel, - accesskey: prettyPrintKey, - disabled: false, - click: () => togglePrettyPrint(sourceTab.get("id")) - }; - - const items = [ - { item: closeTabMenuItem }, - { item: closeOtherTabsMenuItem, hidden: () => tabs.size === 1 }, - { - item: closeTabsToEndMenuItem, - hidden: () => tabs.some((t, i) => t === tab && tabs.size - 1 === i) - }, - { item: closeAllTabsMenuItem }, - { item: { type: "separator" } }, - { item: copySourceUri2 } - ]; - - if (!isPrettySource) { - items.push({ item: showSourceMenuItem }); - items.push({ item: prettyPrint }); - } - - showMenu(e, buildMenu(items)); - } - - /* - * Updates the hiddenSourceTabs state, by - * finding the source tabs which are wrapped and are not on the top row. - */ - updateHiddenSourceTabs() { - if (!this.refs.sourceTabs) { - return; - } - const { selectedSource, sourceTabs, moveTab } = this.props; - const sourceTabEls = this.refs.sourceTabs.children; - const hiddenSourceTabs = getHiddenTabs(sourceTabs, sourceTabEls); - - if (isVisible() && hiddenSourceTabs.indexOf(selectedSource) !== -1) { - return moveTab(selectedSource.get("url"), 0); - } - - this.setState({ hiddenSourceTabs }); - } - - toggleSourcesDropdown(e) { - this.setState({ - dropdownShown: !this.state.dropdownShown - }); - } - - renderDropdownSource(source: SourceRecord) { - const { selectSource } = this.props; - const filename = getFilename(source.toJS()); - - const onClick = () => selectSource(source.get("id")); - return ( -
  • - {filename} -
  • - ); - } - - renderTabs() { - const { sourceTabs } = this.props; - if (!sourceTabs) { - return; - } - - return ( -
    - {sourceTabs.map(this.renderSourceTab)} -
    - ); - } - - isProjectSearchEnabled() { - return this.props.activeSearch === "project"; - } - - isSourceSearchEnabled() { - return this.props.activeSearch === "source"; - } - - renderSearchTab(source: ActiveSearchType) { - const { closeTab, closeActiveSearch, setActiveSearch } = this.props; - - function tabName(tab) { - return `${tab} search results`; - } - - function onClickClose(ev) { - ev.stopPropagation(); - closeActiveSearch(); - closeTab(source); - } - const className = classnames("source-tab", { - active: this.isProjectSearchEnabled() || this.isSourceSearchEnabled(), - pretty: false - }); - - return ( -
    setActiveSearch(source)} - onContextMenu={e => this.onTabContextMenu(e, source)} - title={tabName(source)} - > -
    {tabName(source)}
    - -
    - ); - } - - renderSourceTab(source: SourceRecord) { - const { selectedSource, selectSource, closeTab } = this.props; - const filename = getFilename(source.toJS()); - const active = - selectedSource && - source.get("id") == selectedSource.get("id") && - (!this.isProjectSearchEnabled() && !this.isSourceSearchEnabled()); - const isPrettyCode = isPretty(source.toJS()); - const sourceAnnotation = this.getSourceAnnotation(source); - - function onClickClose(ev) { - ev.stopPropagation(); - closeTab(source.get("url")); - } - - const className = classnames("source-tab", { - active, - pretty: isPrettyCode - }); - - return ( -
    selectSource(source.get("id"))} - onContextMenu={e => this.onTabContextMenu(e, source.get("id"))} - title={getFileURL(source.toJS())} - > - {sourceAnnotation} -
    {filename}
    - -
    - ); - } - - renderNewButton() { - const newTabTooltip = L10N.getFormatStr( - "sourceTabs.newTabButtonTooltip", - formatKeyShortcut(L10N.getStr("sources.search.key2")) - ); - - const onButtonClick = () => { - if (this.props.searchOn) { - return this.props.closeActiveSearch(); - } - this.props.setActiveSearch("source"); - }; - - return ( -
    - -
    - ); - } - - renderDropdown() { - const hiddenSourceTabs = this.state.hiddenSourceTabs; - if (!hiddenSourceTabs || hiddenSourceTabs.size == 0) { - return null; - } - - const Panel =
      {hiddenSourceTabs.map(this.renderDropdownSource)}
    ; - - return ; - } - - renderStartPanelToggleButton() { - return ( - - ); - } - - renderEndPanelToggleButton() { - if (!this.props.horizontal) { - return; - } - - return ( - - ); - } - - getSourceAnnotation(source) { - const sourceObj = source.toJS(); - - if (isPretty(sourceObj)) { - return ; - } - if (sourceObj.isBlackBoxed) { - return ; - } - } - - render() { - return ( -
    - {this.renderStartPanelToggleButton()} - {this.renderTabs()} - {this.renderNewButton()} - {this.renderDropdown()} - {this.renderEndPanelToggleButton()} -
    - ); - } -} - -export default connect( - state => { - return { - selectedSource: getSelectedSource(state), - searchTabs: getSearchTabs(state), - sourceTabs: getSourcesForTabs(state), - activeSearch: getActiveSearch(state), - searchOn: getActiveSearch(state) === "source" - }; - }, - dispatch => bindActionCreators(actions, dispatch) -)(SourceTabs); diff --git a/src/components/Editor/index.js b/src/components/Editor/index.js deleted file mode 100644 index 3098daa23f..0000000000 --- a/src/components/Editor/index.js +++ /dev/null @@ -1,817 +0,0 @@ -// @flow -import PropTypes from "prop-types"; -import React, { PureComponent } from "react"; -import ReactDOM from "react-dom"; -import ImPropTypes from "react-immutable-proptypes"; -import { bindActionCreators } from "redux"; -import { connect } from "react-redux"; -import classnames from "classnames"; -import { isEnabled } from "devtools-config"; -import GutterMenu from "./GutterMenu"; -import EditorMenu from "./EditorMenu"; -import { renderConditionalPanel } from "./ConditionalPanel"; -import { debugGlobal } from "devtools-launchpad"; -import { isLoaded } from "../../utils/source"; -import { findFunctionText } from "../../utils/function"; - -import { isEmptyLineInSource } from "../../reducers/ast"; - -import { - getActiveSearch, - getSelectedLocation, - getSelectedFrame, - getSelectedSource, - getHighlightedLineRange, - getHitCountForSource, - getCoverageEnabled, - getLoadedObjects, - getPause, - getFileSearchQueryState, - getFileSearchModifierState, - getVisibleBreakpoints, - getInScopeLines, - getConditionalBreakpointPanel, - getSymbols -} from "../../selectors"; - -import actions from "../../actions"; -import Footer from "./Footer"; -import SearchBar from "./SearchBar"; -import HighlightLines from "./HighlightLines"; -import Preview from "./Preview"; -import Breakpoints from "./Breakpoints"; -import HitMarker from "./HitMarker"; -import CallSites from "./CallSites"; -import DebugLine from "./DebugLine"; -import EmptyLines from "./EmptyLines"; - -import { - showSourceText, - updateDocument, - showLoading, - shouldShowFooter, - clearLineClass, - createEditor, - getCursorLine, - resizeBreakpointGutter, - traverseResults, - lineAtHeight, - toSourceLine, - toEditorLine, - resetLineNumberFormat, - getSourceLocationFromMouseEvent -} from "../../utils/editor"; - -import { isFirefox } from "devtools-config"; -import "./Editor.css"; -import "./Highlight.css"; - -import { SourceEditor } from "devtools-source-editor"; - -const cssVars = { - searchbarHeight: "var(--editor-searchbar-height)", - secondSearchbarHeight: "var(--editor-second-searchbar-height)", - footerHeight: "var(--editor-footer-height)" -}; - -class Editor extends PureComponent { - cbPanel: any; - editor: SourceEditor; - pendingJumpLocation: any; - lastJumpLine: any; - state: Object; - - constructor() { - super(); - - this.cbPanel = null; - this.pendingJumpLocation = null; - this.lastJumpLine = null; - - this.state = { - highlightedLineRange: null, - editor: null - }; - - const self: any = this; - self.closeConditionalPanel = this.closeConditionalPanel.bind(this); - self.onEscape = this.onEscape.bind(this); - self.onGutterClick = this.onGutterClick.bind(this); - self.onGutterContextMenu = this.onGutterContextMenu.bind(this); - self.onSearchAgain = this.onSearchAgain.bind(this); - self.onToggleBreakpoint = this.onToggleBreakpoint.bind(this); - self.toggleConditionalPanel = this.toggleConditionalPanel.bind(this); - } - - componentWillReceiveProps(nextProps) { - if (!this.state.editor) { - return; - } - - this.setSize(nextProps); - this.setText(nextProps); - resizeBreakpointGutter(this.state.editor.codeMirror); - } - - setupEditor() { - const editor = createEditor(); - - // disables the default search shortcuts - // @flow - editor._initShortcuts = () => {}; - - const node = ReactDOM.findDOMNode(this); - if (node instanceof HTMLElement) { - editor.appendToLocalElement(node.querySelector(".editor-mount")); - } - - const { codeMirror } = editor; - const codeMirrorWrapper = codeMirror.getWrapperElement(); - - resizeBreakpointGutter(codeMirror); - debugGlobal("cm", codeMirror); - - codeMirror.on("gutterClick", this.onGutterClick); - - // Set code editor wrapper to be focusable - codeMirrorWrapper.tabIndex = 0; - codeMirrorWrapper.addEventListener("keydown", e => this.onKeyDown(e)); - codeMirrorWrapper.addEventListener("click", e => this.onClick(e)); - - const toggleFoldMarkerVisibility = e => { - if (node instanceof HTMLElement) { - node - .querySelectorAll(".CodeMirror-guttermarker-subtle") - .forEach(elem => { - elem.classList.toggle("visible"); - }); - } - }; - - const codeMirrorGutter = codeMirror.getGutterElement(); - codeMirrorGutter.addEventListener("mouseleave", toggleFoldMarkerVisibility); - codeMirrorGutter.addEventListener("mouseenter", toggleFoldMarkerVisibility); - - if (!isFirefox()) { - codeMirror.on("gutterContextMenu", (cm, line, eventName, event) => - this.onGutterContextMenu(event) - ); - - codeMirror.on("contextmenu", (cm, event) => this.openMenu(event, editor)); - } else { - codeMirrorWrapper.addEventListener("contextmenu", event => - this.openMenu(event, editor) - ); - } - - this.setState({ editor }); - return editor; - } - - componentDidMount() { - this.cbPanel = null; - const editor = this.setupEditor(); - - const { selectedSource, selectedLocation } = this.props; - const { shortcuts } = this.context; - - const searchAgainKey = L10N.getStr("sourceSearch.search.again.key2"); - const searchAgainPrevKey = L10N.getStr( - "sourceSearch.search.againPrev.key2" - ); - - shortcuts.on(L10N.getStr("toggleBreakpoint.key"), this.onToggleBreakpoint); - shortcuts.on(L10N.getStr("toggleCondPanel.key"), this.onToggleBreakpoint); - shortcuts.on("Esc", this.onEscape); - shortcuts.on(searchAgainPrevKey, this.onSearchAgain); - shortcuts.on(searchAgainKey, this.onSearchAgain); - - if (selectedLocation && !!selectedLocation.line) { - this.pendingJumpLocation = selectedLocation; - } - - const sourceId = selectedSource ? selectedSource.get("id") : undefined; - updateDocument(editor, sourceId); - } - - componentWillUnmount() { - this.state.editor.destroy(); - this.setState({ editor: null }); - - const searchAgainKey = L10N.getStr("sourceSearch.search.again.key2"); - const searchAgainPrevKey = L10N.getStr( - "sourceSearch.search.againPrev.key2" - ); - const shortcuts = this.context.shortcuts; - shortcuts.off(L10N.getStr("toggleBreakpoint.key")); - shortcuts.off(L10N.getStr("toggleCondPanel.key")); - shortcuts.off(searchAgainPrevKey); - shortcuts.off(searchAgainKey); - } - - componentDidUpdate(prevProps) { - // This is in `componentDidUpdate` so helper functions can expect - // `this.props` to be the current props. This lifecycle method is - // responsible for updating the editor annotations. - const { selectedLocation, selectedSource } = this.props; - - // If the location is different and a new line is requested, - // update the pending jump line. Note that if jumping to a line in - // a source where the text hasn't been loaded yet, we will set the - // line here but not jump until rendering the actual source. - if (prevProps.selectedLocation !== selectedLocation) { - if (selectedLocation && selectedLocation.line != undefined) { - this.pendingJumpLocation = selectedLocation; - } else { - this.pendingJumpLocation = null; - } - } - - // Only update and jump around in real source texts. This will - // keep the jump state around until the real source text is - // loaded. - if (selectedSource && selectedSource.has("text")) { - this.highlightLine(); - } - - if ( - this.props.conditionalBreakpointPanel !== null && - this.cbPanel == null - ) { - this.toggleConditionalPanel(this.props.conditionalBreakpointPanel); - } - } - - onToggleBreakpoint(key, e) { - e.preventDefault(); - const { codeMirror } = this.state.editor; - const { selectedSource } = this.props; - const line = getCursorLine(codeMirror); - - if (!selectedSource) { - return; - } - - const sourceLine = toSourceLine(selectedSource.get("id"), line); - - if (e.shiftKey) { - this.toggleConditionalPanel(sourceLine); - } else { - this.props.toggleBreakpoint(sourceLine); - } - } - - onKeyDown(e) { - const { codeMirror } = this.state.editor; - const { key, target } = e; - const codeWrapper = codeMirror.getWrapperElement(); - const textArea = codeWrapper.querySelector("textArea"); - - if (key === "Escape" && target == textArea) { - e.stopPropagation(); - e.preventDefault(); - codeWrapper.focus(); - } else if (key === "Enter" && target == codeWrapper) { - e.preventDefault(); - // Focus into editor's text area - textArea.focus(); - } - } - - /* - * The default Esc command is overridden in the CodeMirror keymap to allow - * the Esc keypress event to be catched by the toolbox and trigger the - * split console. Restore it here, but preventDefault if and only if there - * is a multiselection. - */ - onEscape(key, e) { - if (!this.state.editor) { - return; - } - - const { codeMirror } = this.state.editor; - if (codeMirror.listSelections().length > 1) { - codeMirror.execCommand("singleSelection"); - e.preventDefault(); - } - } - - onSearchAgain(_, e) { - const { query, searchModifiers } = this.props; - const { editor: { codeMirror } } = this.state.editor; - const ctx = { ed: this.state.editor, cm: codeMirror }; - - const direction = e.shiftKey ? "prev" : "next"; - traverseResults(e, ctx, query, direction, searchModifiers.toJS()); - } - - inSelectedFrameSource() { - const { selectedLocation, selectedFrame } = this.props; - return ( - selectedFrame && - selectedLocation && - selectedFrame.location.sourceId == selectedLocation.sourceId - ); - } - - openMenu(event, editor) { - const { - selectedSource, - selectedLocation, - showSource, - jumpToMappedLocation, - addExpression, - toggleBlackBox, - getFunctionText - } = this.props; - - return EditorMenu({ - editor, - event, - selectedLocation, - selectedSource, - showSource, - jumpToMappedLocation, - addExpression, - toggleBlackBox, - getFunctionText, - onGutterContextMenu: this.onGutterContextMenu - }); - } - - onGutterClick(cm, line, gutter, ev) { - const { - selectedSource, - toggleBreakpoint, - addOrToggleDisabledBreakpoint, - isEmptyLine, - continueToHere - } = this.props; - - // ignore right clicks in the gutter - if ( - (ev.ctrlKey && ev.button === 0) || - ev.which === 3 || - (selectedSource && selectedSource.get("isBlackBoxed")) - ) { - return; - } - - if (isEmptyLine(line)) { - return; - } - - if (this.isCbPanelOpen()) { - return this.closeConditionalPanel(); - } - - if (!selectedSource) { - return; - } - - if (gutter !== "CodeMirror-foldgutter") { - if (ev.altKey) { - continueToHere(toSourceLine(selectedSource.get("id"), line)); - } else if (ev.shiftKey) { - addOrToggleDisabledBreakpoint( - toSourceLine(selectedSource.get("id"), line) - ); - } else { - toggleBreakpoint(toSourceLine(selectedSource.get("id"), line)); - } - } - } - - onGutterContextMenu(event) { - const { - selectedSource, - breakpoints, - toggleBreakpoint, - toggleDisabledBreakpoint, - isEmptyLine, - pauseData, - continueToHere - } = this.props; - - if (selectedSource && selectedSource.get("isBlackBoxed")) { - event.preventDefault(); - return; - } - - const sourceId = selectedSource ? selectedSource.get("id") : ""; - const line = lineAtHeight(this.state.editor, sourceId, event); - const breakpoint = breakpoints.find(bp => bp.location.line === line); - - if (isEmptyLine(line - 1)) { - return; - } - - GutterMenu({ - event, - line, - breakpoint, - toggleBreakpoint, - toggleDisabledBreakpoint, - pauseData, - continueToHere, - - showConditionalPanel: this.toggleConditionalPanel, - isCbPanelOpen: this.isCbPanelOpen(), - closeConditionalPanel: this.closeConditionalPanel - }); - } - - onClick(e: MouseEvent) { - const { selectedLocation, jumpToMappedLocation } = this.props; - - if (e.metaKey && e.altKey) { - const sourceLocation = getSourceLocationFromMouseEvent( - this.state.editor, - selectedLocation, - e - ); - jumpToMappedLocation(sourceLocation); - } - } - - toggleConditionalPanel(line) { - if (this.isCbPanelOpen()) { - return this.closeConditionalPanel(); - } - - const { - selectedLocation, - setBreakpointCondition, - breakpoints - } = this.props; - const sourceId = selectedLocation ? selectedLocation.sourceId : ""; - - const breakpoint = breakpoints.find(bp => bp.location.line === line); - const location = { sourceId, line }; - const condition = breakpoint ? breakpoint.condition : ""; - - const panel = renderConditionalPanel({ - condition, - setBreakpoint: value => - setBreakpointCondition(location, { condition: value }), - closePanel: this.closeConditionalPanel - }); - - const editorLine = toEditorLine(sourceId, line); - this.cbPanel = this.state.editor.codeMirror.addLineWidget( - editorLine, - panel, - { - coverGutter: true, - noHScroll: false - } - ); - this.cbPanel.node.querySelector("input").focus(); - } - - closeConditionalPanel() { - this.props.toggleConditionalBreakpointPanel(null); - this.cbPanel.clear(); - this.cbPanel = null; - } - - isCbPanelOpen() { - return !!this.cbPanel; - } - - // If the location has changed and a specific line is requested, - // move to that line and flash it. - highlightLine() { - if (!this.pendingJumpLocation) { - return; - } - - // Make sure to clean up after ourselves. Not only does this - // cancel any existing animation, but it avoids it from - // happening ever again (in case CodeMirror re-applies the - // class, etc). - if (this.lastJumpLine) { - clearLineClass(this.state.editor.codeMirror, "highlight-line"); - } - - const { sourceId, line: sourceLine } = this.pendingJumpLocation; - const line = toEditorLine(sourceId, sourceLine); - this.state.editor.alignLine(line); - - // We only want to do the flashing animation if it's not a debug - // line, which has it's own styling. - // Also, if it the first time the debugger is being loaded, we don't want - // to flash the previously saved selected line. - if ( - this.lastJumpLine && - (!this.props.selectedFrame || - this.props.selectedFrame.location.line !== line) - ) { - this.state.editor.codeMirror.addLineClass(line, "line", "highlight-line"); - } - - this.lastJumpLine = line; - this.pendingJumpLocation = null; - } - - setSize(nextProps) { - if (!this.state.editor) { - return; - } - - if ( - nextProps.startPanelSize !== this.props.startPanelSize || - nextProps.endPanelSize !== this.props.endPanelSize - ) { - this.state.editor.codeMirror.setSize(); - } - } - - setText(nextProps) { - if (!this.state.editor) { - return; - } - - if (!nextProps.selectedSource) { - if (this.props.selectedSource) { - return this.showMessage(""); - } - - return; - } - - if (!isLoaded(nextProps.selectedSource.toJS())) { - return showLoading(this.state.editor); - } - - if (nextProps.selectedSource.get("error")) { - return this.showMessage(nextProps.selectedSource.get("error")); - } - - if (nextProps.selectedSource !== this.props.selectedSource) { - return showSourceText(this.state.editor, nextProps.selectedSource.toJS()); - } - } - - showMessage(msg) { - if (!this.state.editor) { - return; - } - - resetLineNumberFormat(this.state.editor); - } - - getInlineEditorStyles() { - const { selectedSource, horizontal, searchOn } = this.props; - - const subtractions = []; - - if (shouldShowFooter(selectedSource, horizontal)) { - subtractions.push(cssVars.footerHeight); - } - - if (searchOn) { - subtractions.push(cssVars.searchbarHeight); - subtractions.push(cssVars.secondSearchbarHeight); - } - - return { - height: - subtractions.length === 0 - ? "100%" - : `calc(100% - ${subtractions.join(" - ")})` - }; - } - - renderHighlightLines() { - const { highlightedLineRange } = this.props; - - if (!highlightedLineRange || !this.state.editor) { - return; - } - - return ( - - ); - } - - renderHitCounts() { - const { hitCount, selectedSource } = this.props; - - if ( - !selectedSource || - !isLoaded(selectedSource.toJS()) || - !hitCount || - !this.state.editor - ) { - return; - } - - return hitCount - .filter(marker => marker.get("count") > 0) - .map(marker => ( - - )); - } - - renderPreview() { - const { selectedSource } = this.props; - if (!this.state.editor || !selectedSource) { - return null; - } - - return ; - } - - renderCallSites() { - const editor = this.state.editor; - - if (!editor || !isEnabled("columnBreakpoints")) { - return null; - } - return ; - } - - renderSearchBar() { - const { - selectSource, - selectedSource, - highlightLineRange, - clearHighlightLineRange - } = this.props; - - if (!this.state.editor) { - return null; - } - - return ( - - ); - } - - renderFooter() { - const { horizontal } = this.props; - - if (!this.state.editor) { - return null; - } - return