--- a/devtools/client/debugger/new/debugger.js
+++ b/devtools/client/debugger/new/debugger.js
@@ -821,18 +821,18 @@ function _interopRequireDefault(obj) { r
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
/* 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/. */
/**
- * Search reducer
- * @module reducers/search
+ * Project text search reducer
+ * @module reducers/project-text-search
*/
function InitialState() {
return (0, _makeRecord2.default)({ query: "", results: I.List() })();
}
function update() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : InitialState();
@@ -1644,17 +1644,17 @@ function addSourceToNode(node, url, sour
contents.splice(childIndex, 0, newNode);
return contents;
}
/**
* @memberof utils/sources-tree
* @static
*/
-function addToTree(tree, source, debuggeeUrl) {
+function addToTree(tree, source, debuggeeUrl, projectRoot) {
var url = (0, _getURL.getURL)(source.get("url"), debuggeeUrl);
var debuggeeHost = (0, _treeOrder.getDomain)(debuggeeUrl);
if ((0, _utils.isInvalidUrl)(url, source)) {
return;
}
var finalNode = traverseTree(url, tree, debuggeeHost);
@@ -12555,17 +12555,17 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBP
* 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/. */
var React = __webpack_require__(0);
__webpack_require__(1300);
var dom = React.DOM;
var classnames = __webpack_require__(175);
-var Svg = __webpack_require__(1349);
+var Svg = __webpack_require__(1350);
var Sidebar = React.createClass({
displayName: "Sidebar",
propTypes: {
supportsFirefox: React.PropTypes.bool.isRequired,
supportsChrome: React.PropTypes.bool.isRequired,
title: React.PropTypes.string.isRequired,
selectedPane: React.PropTypes.string.isRequired,
@@ -13890,21 +13890,24 @@ if (isDevelopment()) {
pref("devtools.debugger.tabs", "[]");
pref("devtools.debugger.ui.framework-grouping-on", true);
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.project-directory-root", "");
pref("devtools.debugger.prefs-schema-version", "1.0.1");
pref("devtools.debugger.features.project-text-search", true);
pref("devtools.debugger.features.async-stepping", true);
pref("devtools.debugger.features.wasm", true);
pref("devtools.debugger.features.shortcuts", true);
+ pref("devtools.debugger.features.root", true);
+ pref("devtools.debugger.features.column-breakpoints", true);
}
const prefs = new PrefsHelper("devtools", {
clientSourceMapsEnabled: ["Bool", "source-map.client-service.enabled"],
pauseOnExceptions: ["Bool", "debugger.pause-on-exceptions"],
ignoreCaughtExceptions: ["Bool", "debugger.ignore-caught-exceptions"],
callStackVisible: ["Bool", "debugger.call-stack-visible"],
startPanelCollapsed: ["Bool", "debugger.start-panel-collapsed"],
@@ -13912,26 +13915,29 @@ const prefs = new PrefsHelper("devtools"
frameworkGroupingOn: ["Bool", "debugger.ui.framework-grouping-on"],
tabs: ["Json", "debugger.tabs", []],
pendingSelectedLocation: ["Json", "debugger.pending-selected-location", {}],
pendingBreakpoints: ["Json", "debugger.pending-breakpoints", {}],
expressions: ["Json", "debugger.expressions", []],
fileSearchCaseSensitive: ["Bool", "debugger.file-search-case-sensitive"],
fileSearchWholeWord: ["Bool", "debugger.file-search-whole-word"],
fileSearchRegexMatch: ["Bool", "debugger.file-search-regex-match"],
- debuggerPrefsSchemaVersion: ["Char", "debugger.prefs-schema-version"]
+ debuggerPrefsSchemaVersion: ["Char", "debugger.prefs-schema-version"],
+ projectDirectoryRoot: ["Bool", "project-directory-root", ""]
});
/* harmony export (immutable) */ __webpack_exports__["prefs"] = prefs;
const features = new PrefsHelper("devtools.debugger.features", {
asyncStepping: ["Bool", "async-stepping", false],
projectTextSearch: ["Bool", "project-text-search", true],
wasm: ["Bool", "wasm", true],
- shortcuts: ["Bool", "shortcuts", false]
+ shortcuts: ["Bool", "shortcuts", false],
+ root: ["Bool", "root", false],
+ columnBreakpoints: ["Bool", "column-breakpoints", false]
});
/* harmony export (immutable) */ __webpack_exports__["features"] = features;
if (prefs.debuggerPrefsSchemaVersion !== prefsSchemaVersion) {
// clear pending Breakpoints
prefs.pendingBreakpoints = {};
prefs.debuggerPrefsSchemaVersion = prefsSchemaVersion;
@@ -13976,16 +13982,20 @@ var _asyncRequests2 = _interopRequireDef
var _pause = __webpack_require__(239);
var _pause2 = _interopRequireDefault(_pause);
var _ui = __webpack_require__(240);
var _ui2 = _interopRequireDefault(_ui);
+var _fileSearch = __webpack_require__(1349);
+
+var _fileSearch2 = _interopRequireDefault(_fileSearch);
+
var _ast = __webpack_require__(1058);
var _ast2 = _interopRequireDefault(_ast);
var _coverage = __webpack_require__(241);
var _coverage2 = _interopRequireDefault(_coverage);
@@ -14002,36 +14012,40 @@ var _sourceTree = __webpack_require__(11
var _sourceTree2 = _interopRequireDefault(_sourceTree);
var _debuggee = __webpack_require__(1175);
var _debuggee2 = _interopRequireDefault(_debuggee);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-/* 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/. */
-
exports.default = {
expressions: _expressions2.default,
eventListeners: _eventListeners2.default,
sources: _sources2.default,
breakpoints: _breakpoints2.default,
pendingBreakpoints: _pendingBreakpoints2.default,
asyncRequests: _asyncRequests2.default,
pause: _pause2.default,
ui: _ui2.default,
+ fileSearch: _fileSearch2.default,
ast: _ast2.default,
coverage: _coverage2.default,
projectTextSearch: _projectTextSearch2.default,
sourceSearch: _sourceSearch2.default,
sourceTree: _sourceTree2.default,
debuggee: _debuggee2.default
-};
+}; /* 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/. */
+
+/**
+ * Reducer index
+ * @module reducers/index
+ */
/***/ }),
/* 228 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -14053,16 +14067,24 @@ var _reselect = __webpack_require__(993)
var _prefs = __webpack_require__(226);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var State = exports.State = (0, _makeRecord2.default)({
expressions: (0, _immutable.List)(restoreExpressions())
});
+/* 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/. */
+
+/**
+ * Expressions reducer
+ * @module reducers/expressions
+ */
function update() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : State();
var action = arguments[1];
switch (action.type) {
case "ADD_EXPRESSION":
return appendToList(state, ["expressions"], {
@@ -14195,16 +14217,21 @@ exports.default = makeRecord;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getEventListeners = getEventListeners;
/* 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/. */
+/**
+ * Event listeners reducer
+ * @module reducers/event-listeners
+ */
+
var initialState = {
activeEventNames: [],
listeners: [],
fetchingListeners: false
};
function update() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
@@ -15335,16 +15362,21 @@ Object.defineProperty(exports, "__esModu
});
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
/* 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/. */
+/**
+ * Async request reducer
+ * @module reducers/async-request
+ */
+
var initialState = [];
function update() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
var action = arguments[1];
var seqId = action.seqId;
@@ -15378,16 +15410,21 @@ Object.defineProperty(exports, "__esModu
});
exports.getSelectedFrame = exports.getSelectedFrameId = exports.getLoadedObjects = exports.getPause = exports.State = undefined;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
/* 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/. */
+/**
+ * Pause reducer
+ * @module reducers/pause
+ */
+
exports.isStepping = isStepping;
exports.isPaused = isPaused;
exports.isEvaluatingExpression = isEvaluatingExpression;
exports.pausedInEval = pausedInEval;
exports.getLoadedObject = getLoadedObject;
exports.getObjectProperties = getObjectProperties;
exports.getIsWaitingOnBreak = getIsWaitingOnBreak;
exports.getShouldPauseOnExceptions = getShouldPauseOnExceptions;
@@ -15641,56 +15678,47 @@ exports.default = update;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.State = undefined;
exports.getActiveSearch = getActiveSearch;
exports.getContextMenu = getContextMenu;
-exports.getFileSearchQueryState = getFileSearchQueryState;
-exports.getFileSearchModifierState = getFileSearchModifierState;
-exports.getSearchResults = getSearchResults;
exports.getFrameworkGroupingState = getFrameworkGroupingState;
exports.getSymbolSearchType = getSymbolSearchType;
exports.getShownSource = getShownSource;
exports.getPaneCollapse = getPaneCollapse;
exports.getHighlightedLineRange = getHighlightedLineRange;
exports.getConditionalPanelLine = getConditionalPanelLine;
+exports.getProjectDirectoryRoot = getProjectDirectoryRoot;
var _makeRecord = __webpack_require__(230);
var _makeRecord2 = _interopRequireDefault(_makeRecord);
var _prefs = __webpack_require__(226);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+/* 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/. */
+
/**
* UI reducer
* @module reducers/ui
*/
var State = exports.State = (0, _makeRecord2.default)({
activeSearch: null,
contextMenu: {},
- fileSearchQuery: "",
- fileSearchModifiers: (0, _makeRecord2.default)({
- caseSensitive: _prefs.prefs.fileSearchCaseSensitive,
- wholeWord: _prefs.prefs.fileSearchWholeWord,
- regexMatch: _prefs.prefs.fileSearchRegexMatch
- })(),
symbolSearchType: "functions",
- searchResults: {
- matches: [],
- matchIndex: -1,
- index: -1,
- count: 0
- },
shownSource: "",
+ projectDirectoryRoot: "",
startPanelCollapsed: _prefs.prefs.startPanelCollapsed,
endPanelCollapsed: _prefs.prefs.endPanelCollapsed,
frameworkGroupingOn: _prefs.prefs.frameworkGroupingOn,
highlightedLineRange: undefined,
conditionalPanelLine: null
});
function update() {
@@ -15704,45 +15732,16 @@ function update() {
}
case "TOGGLE_FRAMEWORK_GROUPING":
{
_prefs.prefs.frameworkGroupingOn = action.value;
return state.set("frameworkGroupingOn", action.value);
}
- case "UPDATE_FILE_SEARCH_QUERY":
- {
- return state.set("fileSearchQuery", action.query);
- }
-
- case "UPDATE_SEARCH_RESULTS":
- {
- return state.set("searchResults", action.results);
- }
-
- case "TOGGLE_FILE_SEARCH_MODIFIER":
- {
- var actionVal = !state.getIn(["fileSearchModifiers", action.modifier]);
-
- if (action.modifier == "caseSensitive") {
- _prefs.prefs.fileSearchCaseSensitive = actionVal;
- }
-
- if (action.modifier == "wholeWord") {
- _prefs.prefs.fileSearchWholeWord = actionVal;
- }
-
- if (action.modifier == "regexMatch") {
- _prefs.prefs.fileSearchRegexMatch = actionVal;
- }
-
- return state.setIn(["fileSearchModifiers", action.modifier], actionVal);
- }
-
case "SET_SYMBOL_SEARCH_TYPE":
{
return state.set("symbolSearchType", action.symbolType);
}
case "SET_CONTEXT_MENU":
{
return state.set("contextMenu", action.contextMenu);
@@ -15782,16 +15781,20 @@ function update() {
return state.set("highlightedLineRange", {});
case "OPEN_CONDITIONAL_PANEL":
return state.set("conditionalPanelLine", action.line);
case "CLOSE_CONDITIONAL_PANEL":
return state.set("conditionalPanelLine", null);
+ case "SET_PROJECT_DIRECTORY_ROOT":
+ _prefs.prefs.projectDirectoryRoot = action.url;
+ return state.set("projectDirectoryRoot", action.url);
+
default:
{
return state;
}
}
}
// NOTE: we'd like to have the app state fully typed
@@ -15799,28 +15802,16 @@ function update() {
function getActiveSearch(state) {
return state.ui.get("activeSearch");
}
function getContextMenu(state) {
return state.ui.get("contextMenu");
}
-function getFileSearchQueryState(state) {
- return state.ui.get("fileSearchQuery");
-}
-
-function getFileSearchModifierState(state) {
- return state.ui.get("fileSearchModifiers");
-}
-
-function getSearchResults(state) {
- return state.ui.get("searchResults");
-}
-
function getFrameworkGroupingState(state) {
return state.ui.get("frameworkGroupingOn");
}
function getSymbolSearchType(state) {
return state.ui.get("symbolSearchType");
}
@@ -15839,16 +15830,20 @@ function getPaneCollapse(state, position
function getHighlightedLineRange(state) {
return state.ui.get("highlightedLineRange");
}
function getConditionalPanelLine(state) {
return state.ui.get("conditionalPanelLine");
}
+function getProjectDirectoryRoot(state) {
+ return state.ui.get("projectDirectoryRoot");
+}
+
exports.default = update;
/***/ }),
/* 241 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -15875,19 +15870,22 @@ var _fromJS2 = _interopRequireDefault(_f
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var State = exports.State = (0, _makeRecord2.default)({
coverageOn: false,
hitCount: I.Map()
});
-
-/**
- * Code Coverage reducer
+/* 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/. */
+
+/**
+ * Code coverage reducer
* @module reducers/coverage
*/
function update() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : State();
var action = arguments[1];
switch (action.type) {
@@ -15950,16 +15948,20 @@ var pendingBreakpoints = _interopRequire
var _eventListeners = __webpack_require__(231);
var eventListeners = _interopRequireWildcard(_eventListeners);
var _ui = __webpack_require__(240);
var ui = _interopRequireWildcard(_ui);
+var _fileSearch = __webpack_require__(1349);
+
+var fileSearch = _interopRequireWildcard(_fileSearch);
+
var _ast = __webpack_require__(1058);
var ast = _interopRequireWildcard(_ast);
var _coverage = __webpack_require__(241);
var coverage = _interopRequireWildcard(_coverage);
@@ -15994,17 +15996,17 @@ var _isSelectedFrameVisible2 = _interopR
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
/**
* @param object - location
*/
-module.exports = _extends({}, expressions, sources, pause, debuggee, breakpoints, pendingBreakpoints, eventListeners, ui, ast, coverage, projectTextSearch, sourceSearch, sourceTree, {
+module.exports = _extends({}, expressions, sources, pause, debuggee, breakpoints, pendingBreakpoints, eventListeners, ui, ast, coverage, fileSearch, projectTextSearch, sourceSearch, sourceTree, {
getBreakpointAtLocation: _breakpointAtLocation2.default,
getInScopeLines: _linesInScope2.default,
getVisibleBreakpoints: _visibleBreakpoints2.default,
isSelectedFrameVisible: _isSelectedFrameVisible2.default
});
/***/ }),
/* 243 */
@@ -16418,16 +16420,20 @@ var pause = _interopRequireWildcard(_pau
var _navigation = __webpack_require__(320);
var navigation = _interopRequireWildcard(_navigation);
var _ui = __webpack_require__(321);
var ui = _interopRequireWildcard(_ui);
+var _fileSearch = __webpack_require__(1351);
+
+var fileSearch = _interopRequireWildcard(_fileSearch);
+
var _ast = __webpack_require__(1059);
var ast = _interopRequireWildcard(_ast);
var _coverage = __webpack_require__(322);
var coverage = _interopRequireWildcard(_coverage);
@@ -16452,17 +16458,17 @@ var _debuggee = __webpack_require__(1179
var debuggee = _interopRequireWildcard(_debuggee);
var _toolbox = __webpack_require__(1180);
var toolbox = _interopRequireWildcard(_toolbox);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
-exports.default = Object.assign({}, navigation, breakpoints, expressions, eventListeners, sources, pause, ui, ast, coverage, projectTextSearch, sourceSearch, sourceTree, loadSourceText, debuggee, toolbox);
+exports.default = Object.assign({}, navigation, breakpoints, expressions, eventListeners, sources, pause, ui, fileSearch, ast, coverage, projectTextSearch, sourceSearch, sourceTree, loadSourceText, debuggee, toolbox);
/***/ }),
/* 245 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -19139,20 +19145,20 @@ Object.defineProperty(exports, "__esModu
exports.createTree = createTree;
var _utils = __webpack_require__(18);
var _collapseTree = __webpack_require__(41);
var _addToTree = __webpack_require__(40);
-function createTree(sources, debuggeeUrl) {
+function createTree(sources, debuggeeUrl, projectRoot) {
var uncollapsedTree = (0, _utils.createNode)("root", "", []);
for (var source of sources.valueSeq()) {
- (0, _addToTree.addToTree)(uncollapsedTree, source, debuggeeUrl);
+ (0, _addToTree.addToTree)(uncollapsedTree, source, debuggeeUrl, projectRoot);
}
var sourceTree = (0, _collapseTree.collapseTree)(uncollapsedTree);
return {
uncollapsedTree,
sourceTree,
parentMap: (0, _utils.createParentMap)(sourceTree),
@@ -20071,25 +20077,23 @@ function navigated() {
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.setContextMenu = setContextMenu;
exports.closeActiveSearch = closeActiveSearch;
exports.setActiveSearch = setActiveSearch;
exports.toggleFrameworkGrouping = toggleFrameworkGrouping;
exports.setSelectedSymbolType = setSelectedSymbolType;
-exports.setFileSearchQuery = setFileSearchQuery;
-exports.updateSearchResults = updateSearchResults;
-exports.toggleFileSearchModifier = toggleFileSearchModifier;
exports.showSource = showSource;
exports.togglePaneCollapse = togglePaneCollapse;
exports.highlightLineRange = highlightLineRange;
exports.clearHighlightLineRange = clearHighlightLineRange;
exports.openConditionalPanel = openConditionalPanel;
exports.closeConditionalPanel = closeConditionalPanel;
+exports.setProjectDirectoryRoot = setProjectDirectoryRoot;
var _selectors = __webpack_require__(242);
var _sourceSearch = __webpack_require__(1144);
function setContextMenu(type, event) {
return (_ref) => {
var dispatch = _ref.dispatch;
@@ -20152,34 +20156,16 @@ function setSelectedSymbolType(symbolTyp
dispatch({
type: "SET_SYMBOL_SEARCH_TYPE",
symbolType
});
};
}
-function setFileSearchQuery(query) {
- return {
- type: "UPDATE_FILE_SEARCH_QUERY",
- query
- };
-}
-
-function updateSearchResults(results) {
- return {
- type: "UPDATE_SEARCH_RESULTS",
- results
- };
-}
-
-function toggleFileSearchModifier(modifier) {
- return { type: "TOGGLE_FILE_SEARCH_MODIFIER", modifier };
-}
-
function showSource(sourceId) {
return (_ref6) => {
var dispatch = _ref6.dispatch,
getState = _ref6.getState;
var source = (0, _selectors.getSource)(getState(), sourceId);
dispatch({
@@ -20231,16 +20217,23 @@ function openConditionalPanel(line) {
}
function closeConditionalPanel() {
return {
type: "CLOSE_CONDITIONAL_PANEL"
};
}
+function setProjectDirectoryRoot(url) {
+ return {
+ type: "SET_PROJECT_DIRECTORY_ROOT",
+ url
+ };
+}
+
/***/ }),
/* 322 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
@@ -21919,17 +21912,17 @@ Autocomplete.defaultProps = {
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
-exports.handleKeyDown = exports.scrollList = undefined;
+exports.scrollList = undefined;
var _devtoolsConfig = __webpack_require__(828);
function scrollList(resultList, index) {
if (!resultList.hasOwnProperty(index)) {
return;
}
@@ -21953,49 +21946,17 @@ function chromeScrollList(elem, index) {
var numVisible = resultsHeight / itemHeight;
var positionsToScroll = index - numVisible + 1;
var itemOffset = resultsHeight % itemHeight;
var scroll = positionsToScroll * (itemHeight + 2) + itemOffset;
resultsEl.scrollTop = Math.max(0, scroll);
}
-function handleKeyDown(e) {
- var searchResults = this.getSearchResults(),
- resultCount = searchResults.length;
-
- if (e.key === "ArrowUp") {
- var selectedIndex = Math.max(0, this.state.selectedIndex - 1);
- this.setState({ selectedIndex });
- if (this.props.onSelectedItem) {
- this.props.onSelectedItem(searchResults[selectedIndex]);
- }
- e.preventDefault();
- } else if (e.key === "ArrowDown") {
- var _selectedIndex = Math.min(resultCount - 1, this.state.selectedIndex + 1);
- this.setState({ selectedIndex: _selectedIndex });
- if (this.props.onSelectedItem) {
- this.props.onSelectedItem(searchResults[_selectedIndex]);
- }
- e.preventDefault();
- } else if (e.key === "Enter") {
- if (searchResults.length) {
- this.props.selectItem(searchResults[this.state.selectedIndex]);
- } else {
- this.props.close(this.state.inputValue);
- }
- e.preventDefault();
- } else if (e.key === "Tab") {
- this.props.close(this.state.inputValue);
- e.preventDefault();
- }
-}
-
exports.scrollList = scrollList;
-exports.handleKeyDown = handleKeyDown;
/***/ }),
/* 344 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -22483,16 +22444,20 @@ var arrowBtn = (onClick, type, className
};
class SearchInput extends _react.Component {
componentDidMount() {
this.$input.focus();
}
+ componentDidUpdate() {
+ this.$input.focus();
+ }
+
shouldShowErrorEmoji() {
var _props = this.props,
count = _props.count,
query = _props.query,
showErrorEmoji = _props.showErrorEmoji;
return count === 0 && query.trim() !== "" && !showErrorEmoji;
}
@@ -23604,18 +23569,18 @@ exports.default = (0, _reactRedux.connec
var selectedSource = (0, _selectors.getSelectedSource)(state);
var sourceId = selectedSource ? selectedSource.get("id") : "";
return {
selectedLocation: (0, _selectors.getSelectedLocation)(state),
selectedSource,
searchOn: (0, _selectors.getActiveSearch)(state) === "file",
hitCount: (0, _selectors.getHitCountForSource)(state, sourceId),
selectedFrame: (0, _selectors.getSelectedFrame)(state),
- query: (0, _selectors.getFileSearchQueryState)(state),
- modifiers: (0, _selectors.getFileSearchModifierState)(state),
+ query: (0, _selectors.getFileSearchQuery)(state),
+ modifiers: (0, _selectors.getFileSearchModifiers)(state),
coverageOn: (0, _selectors.getCoverageEnabled)(state),
conditionalPanelLine: (0, _selectors.getConditionalPanelLine)(state)
};
}, dispatch => (0, _redux.bindActionCreators)(_actions2.default, dispatch))(Editor);
/***/ }),
/* 427 */
/***/ (function(module, exports, __webpack_require__) {
@@ -23897,74 +23862,66 @@ Object.defineProperty(exports, "__esModu
var _propTypes = __webpack_require__(20);
var _propTypes2 = _interopRequireDefault(_propTypes);
var _react = __webpack_require__(0);
var _react2 = _interopRequireDefault(_react);
-var _reactDom = __webpack_require__(4);
-
var _reactRedux = __webpack_require__(1189);
var _redux = __webpack_require__(3);
var _Svg = __webpack_require__(344);
var _Svg2 = _interopRequireDefault(_Svg);
var _actions = __webpack_require__(244);
var _actions2 = _interopRequireDefault(_actions);
var _selectors = __webpack_require__(242);
var _editor = __webpack_require__(257);
-var _search = __webpack_require__(1210);
-
var _resultList = __webpack_require__(343);
var _classnames = __webpack_require__(175);
var _classnames2 = _interopRequireDefault(_classnames);
-var _lodash = __webpack_require__(2);
-
var _devtoolsSourceEditor = __webpack_require__(994);
var _SearchInput = __webpack_require__(377);
var _SearchInput2 = _interopRequireDefault(_SearchInput);
+var _lodash = __webpack_require__(2);
+
__webpack_require__(1323);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
-
function getShortcuts() {
var searchAgainKey = L10N.getStr("sourceSearch.search.again.key2");
var searchAgainPrevKey = L10N.getStr("sourceSearch.search.againPrev.key2");
var searchKey = L10N.getStr("sourceSearch.search.key2");
return {
shiftSearchAgainShortcut: searchAgainPrevKey,
searchAgainShortcut: searchAgainKey,
searchShortcut: searchKey
};
}
class SearchBar extends _react.Component {
constructor(props) {
- var _this;
-
- _this = super(props);
+ super(props);
this.onEscape = e => {
this.closeSearch(e);
};
this.clearSearch = () => {
var _props = this.props,
ed = _props.editor,
@@ -23975,25 +23932,22 @@ class SearchBar extends _react.Component
var ctx = { ed, cm: ed.codeMirror };
(0, _editor.removeOverlay)(ctx, query, modifiers.toJS());
}
};
this.closeSearch = e => {
var _props2 = this.props,
editor = _props2.editor,
- setFileSearchQuery = _props2.setFileSearchQuery,
searchOn = _props2.searchOn;
if (editor && searchOn) {
- setFileSearchQuery("");
this.clearSearch();
- this.props.setActiveSearch();
- this.props.clearHighlightLineRange();
+ this.props.closeFileSearch(editor);
e.stopPropagation();
e.preventDefault();
}
};
this.toggleSearch = e => {
e.stopPropagation();
e.preventDefault();
@@ -24001,161 +23955,80 @@ class SearchBar extends _react.Component
if (!this.props.searchOn) {
this.props.setActiveSearch("file");
}
if (this.props.searchOn && editor) {
var selection = editor.codeMirror.getSelection();
- this.setSearchValue(selection);
+ this.setState({ query: selection });
if (selection !== "") {
this.doSearch(selection);
}
- this.selectSearchInput();
- }
- };
-
- this.setSearchValue = value => {
- var searchInput = this.searchInput();
- if (value == "" || !searchInput) {
- return;
- }
-
- searchInput.value = value;
- };
-
- this.selectSearchInput = () => {
- var searchInput = this.searchInput();
- if (searchInput) {
- searchInput.setSelectionRange(0, searchInput.value.length);
- searchInput.focus();
- }
- };
-
- this.searchInput = () => {
- var node = (0, _reactDom.findDOMNode)(this);
- if (node instanceof HTMLElement) {
- var input = node.querySelector("input");
- if (input instanceof HTMLInputElement) {
- return input;
- }
- }
- return null;
+ }
};
this.doSearch = query => {
- var _props3 = this.props,
- selectedSource = _props3.selectedSource,
- setFileSearchQuery = _props3.setFileSearchQuery;
+ var selectedSource = this.props.selectedSource;
if (!selectedSource || !selectedSource.get("text")) {
return;
}
- setFileSearchQuery(query);
-
- this.searchContents(query);
+ this.props.doSearch(query, this.props.editor);
};
this.updateSearchResults = (characterIndex, line, matches) => {
var matchIndex = matches.findIndex(elm => elm.line === line && elm.ch === characterIndex);
this.props.updateSearchResults({
matches,
matchIndex,
count: matches.length,
index: characterIndex
});
};
- this.searchContents = (() => {
- var _ref = _asyncToGenerator(function* (query) {
- var _props4 = _this.props,
- selectedSource = _props4.selectedSource,
- modifiers = _props4.modifiers,
- ed = _props4.editor;
-
-
- if (!query || !ed || !selectedSource || !selectedSource.get("text") || !modifiers) {
- return;
- }
-
- var ctx = { ed, cm: ed.codeMirror };
-
- var _modifiers = modifiers.toJS();
- var matches = yield (0, _search.getMatches)(query, selectedSource.get("text"), _modifiers);
-
- var _find = (0, _editor.find)(ctx, query, true, _modifiers),
- ch = _find.ch,
- line = _find.line;
-
- _this.updateSearchResults(ch, line, matches);
- });
-
- return function (_x) {
- return _ref.apply(this, arguments);
- };
- })();
-
this.traverseResults = (e, rev) => {
e.stopPropagation();
e.preventDefault();
- var ed = this.props.editor;
-
- if (!ed) {
- return;
- }
-
- var ctx = { ed, cm: ed.codeMirror };
-
- var _props5 = this.props,
- query = _props5.query,
- modifiers = _props5.modifiers,
- matches = _props5.searchResults.matches;
-
-
- if (query === "") {
- this.props.setActiveSearch("file");
- }
-
- if (modifiers) {
- var matchedLocations = matches || [];
-
- var _ref2 = rev ? (0, _editor.findPrev)(ctx, query, true, modifiers.toJS()) : (0, _editor.findNext)(ctx, query, true, modifiers.toJS()),
- ch = _ref2.ch,
- line = _ref2.line;
-
- this.updateSearchResults(ch, line, matchedLocations);
- }
+ var editor = this.props.editor;
+
+ if (!editor) {
+ return;
+ }
+ this.props.traverseResults(rev, editor);
};
this.onChange = e => {
+ this.setState({ query: e.target.value });
+
return this.doSearch(e.target.value);
};
this.onKeyUp = e => {
if (e.key !== "Enter" && e.key !== "F3") {
return;
}
this.traverseResults(e, e.shiftKey);
e.preventDefault();
};
this.renderSearchModifiers = () => {
- var _props6 = this.props,
- modifiers = _props6.modifiers,
- toggleFileSearchModifier = _props6.toggleFileSearchModifier;
-
-
- function SearchModBtn(_ref3) {
- var modVal = _ref3.modVal,
- className = _ref3.className,
- svgName = _ref3.svgName,
- tooltip = _ref3.tooltip;
+ var _props3 = this.props,
+ modifiers = _props3.modifiers,
+ toggleFileSearchModifier = _props3.toggleFileSearchModifier;
+
+
+ function SearchModBtn(_ref) {
+ var modVal = _ref.modVal,
+ className = _ref.className,
+ svgName = _ref.svgName,
+ tooltip = _ref.tooltip;
var preppedClass = (0, _classnames2.default)(className, {
active: modifiers && modifiers.get(modVal)
});
return _react2.default.createElement(
"button",
{
className: preppedClass,
@@ -24191,16 +24064,17 @@ class SearchBar extends _react.Component
className: "whole-word-btn",
svgName: "whole-word-match",
tooltip: L10N.getStr("symbolSearch.searchModifier.wholeWord")
})
);
};
this.state = {
+ query: props.query,
selectedResultIndex: 0,
count: 0,
index: -1
};
}
componentWillUnmount() {
var shortcuts = this.context.shortcuts;
@@ -24212,57 +24086,50 @@ class SearchBar extends _react.Component
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
- this.searchContents = (0, _lodash.debounce)(this.searchContents, 100);
-
+ // overwrite this.doSearch with debounced version to
+ // reduce frequency of queries
+ this.doSearch = (0, _lodash.debounce)(this.doSearch, 100);
var shortcuts = this.context.shortcuts;
var _getShortcuts2 = getShortcuts(),
searchShortcut = _getShortcuts2.searchShortcut,
searchAgainShortcut = _getShortcuts2.searchAgainShortcut,
shiftSearchAgainShortcut = _getShortcuts2.shiftSearchAgainShortcut;
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, prevState) {
- var searchInput = this.searchInput();
-
- if (searchInput) {
- searchInput.focus();
- }
-
if (this.refs.resultList && this.refs.resultList.refs) {
(0, _resultList.scrollList)(this.refs.resultList.refs, this.state.selectedResultIndex);
}
}
// Handlers
// Renderers
buildSummaryMsg() {
- var _props7 = this.props,
- _props7$searchResults = _props7.searchResults,
- matchIndex = _props7$searchResults.matchIndex,
- count = _props7$searchResults.count,
- index = _props7$searchResults.index,
- query = _props7.query;
+ var _props4 = this.props,
+ _props4$searchResults = _props4.searchResults,
+ matchIndex = _props4$searchResults.matchIndex,
+ count = _props4$searchResults.count,
+ index = _props4$searchResults.index,
+ query = _props4.query;
if (query.trim() == "") {
return "";
}
if (count == 0) {
return L10N.getStr("editor.noResults");
@@ -24286,31 +24153,30 @@ class SearchBar extends _react.Component
onClick: () => this.props.setActiveSearch("symbol")
},
L10N.getStr("symbolSearch.search.functionsPlaceholder")
)
);
}
render() {
- var _props8 = this.props,
- count = _props8.searchResults.count,
- query = _props8.query,
- searchOn = _props8.searchOn;
+ var _props5 = this.props,
+ count = _props5.searchResults.count,
+ searchOn = _props5.searchOn;
if (!searchOn) {
return _react2.default.createElement("div", null);
}
return _react2.default.createElement(
"div",
{ className: "search-bar" },
_react2.default.createElement(_SearchInput2.default, {
- query: query,
+ query: this.state.query,
count: count,
placeholder: L10N.getStr("sourceSearch.search.placeholder"),
summaryMsg: this.buildSummaryMsg(),
onChange: this.onChange,
onKeyUp: this.onKeyUp,
handleNext: e => this.traverseResults(e, false),
handlePrev: e => this.traverseResults(e, true),
handleClose: this.closeSearch
@@ -24329,20 +24195,20 @@ SearchBar.contextTypes = {
shortcuts: _propTypes2.default.object
};
exports.default = (0, _reactRedux.connect)(state => {
return {
searchOn: (0, _selectors.getActiveSearch)(state) === "file",
selectedSource: (0, _selectors.getSelectedSource)(state),
selectedLocation: (0, _selectors.getSelectedLocation)(state),
- query: (0, _selectors.getFileSearchQueryState)(state),
- modifiers: (0, _selectors.getFileSearchModifierState)(state),
+ query: (0, _selectors.getFileSearchQuery)(state),
+ modifiers: (0, _selectors.getFileSearchModifiers)(state),
highlightedLineRange: (0, _selectors.getHighlightedLineRange)(state),
- searchResults: (0, _selectors.getSearchResults)(state)
+ searchResults: (0, _selectors.getFileSearchResults)(state)
};
}, dispatch => (0, _redux.bindActionCreators)(_actions2.default, dispatch))(SearchBar);
/***/ }),
/* 434 */,
/* 435 */,
/* 436 */,
/* 437 */,
@@ -25008,18 +24874,17 @@ class Popover extends _react.Component {
// eslint-disable-next-line react/no-did-mount-set-state
this.setState({ left, top, orientation, targetMid });
}
calculateLeft(target, editor, popover) {
- var leftOffset = target.width / 2 - popover.width / 5;
- var estimatedLeft = target.left + leftOffset;
+ var estimatedLeft = target.left;
var estimatedRight = estimatedLeft + popover.width;
var isOverflowingRight = estimatedRight > editor.right;
if (isOverflowingRight) {
var adjustedLeft = editor.right - popover.width - 8;
return adjustedLeft;
}
return estimatedLeft;
}
@@ -27626,18 +27491,16 @@ var _Close2 = _interopRequireDefault(_Cl
var _Svg = __webpack_require__(344);
var _Svg2 = _interopRequireDefault(_Svg);
var _devtoolsLaunchpad = __webpack_require__(131);
var _lodash = __webpack_require__(2);
-var _text = __webpack_require__(389);
-
__webpack_require__(1344);
var _PaneToggle = __webpack_require__(428);
var _PaneToggle2 = _interopRequireDefault(_PaneToggle);
var _Dropdown = __webpack_require__(751);
@@ -27705,17 +27568,16 @@ class SourceTabs extends _react.PureComp
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 = (0, _lodash.debounce)(() => {
this.updateHiddenSourceTabs();
});
}
@@ -27993,37 +27855,16 @@ class SourceTabs extends _react.PureComp
),
_react2.default.createElement(_Close2.default, {
handleClick: onClickClose,
tooltip: L10N.getStr("sourceTabs.closeTabButtonTooltip")
})
);
}
- renderNewButton() {
- var newTabTooltip = L10N.getFormatStr("sourceTabs.newTabButtonTooltip", (0, _text.formatKeyShortcut)(L10N.getStr("sources.search.key2")));
-
- var onButtonClick = () => {
- if (this.props.searchOn) {
- return this.props.closeActiveSearch();
- }
- this.props.setActiveSearch("source");
- };
-
- return _react2.default.createElement(
- "div",
- {
- className: "new-tab-btn",
- onClick: onButtonClick,
- title: newTabTooltip
- },
- _react2.default.createElement(_Svg2.default, { name: "plus" })
- );
- }
-
renderDropdown() {
var hiddenSourceTabs = this.state.hiddenSourceTabs;
if (!hiddenSourceTabs || hiddenSourceTabs.size == 0) {
return null;
}
var Panel = _react2.default.createElement(
"ul",
@@ -28067,17 +27908,16 @@ class SourceTabs extends _react.PureComp
}
render() {
return _react2.default.createElement(
"div",
{ className: "source-header" },
this.renderStartPanelToggleButton(),
this.renderTabs(),
- this.renderNewButton(),
this.renderDropdown(),
this.renderEndPanelToggleButton()
);
}
}
exports.default = (0, _reactRedux.connect)(state => {
return {
@@ -28669,31 +28509,33 @@ class Preview extends _react.PureCompone
if (!preview || preview.updating) {
return null;
}
var result = preview.result,
expression = preview.expression,
location = preview.location,
- cursorPos = preview.cursorPos;
+ cursorPos = preview.cursorPos,
+ extra = preview.extra;
var value = result;
if (typeof value == "undefined" || value.optimizedOut) {
return null;
}
var editorRange = (0, _editor.toEditorRange)(selectedSource.get("id"), location);
return _react2.default.createElement(_Popup2.default, {
value: value,
editor: this.props.editor,
range: editorRange,
expression: expression,
popoverPos: cursorPos,
+ extra: extra,
onClose: e => this.onClose(e)
});
}
}
exports.default = (0, _reactRedux.connect)(state => ({
preview: (0, _selectors.getPreview)(state),
selectedSource: (0, _selectors.getSelectedSource)(state),
@@ -28812,33 +28654,47 @@ class Popup extends _react.Component {
{
className: "preview-popup",
onClick: () => selectSourceURL(location.url, { line: location.line })
},
_react2.default.createElement(_PreviewFunction2.default, { func: value })
);
}
- renderObjectPreview(expression, root) {
+ renderObjectPreview(expression, root, extra) {
+ var reactHeader = null;
var loadedObjects = this.props.loadedObjects;
var getObjectProperties = id => loadedObjects[id];
var roots = this.getChildren(root, getObjectProperties);
if (!roots) {
return null;
}
if (isReactComponent(roots)) {
+ if (typeof extra !== "undefined") {
+ reactHeader = _react2.default.createElement(
+ "div",
+ { className: "header-container" },
+ _react2.default.createElement(
+ "h3",
+ null,
+ extra
+ )
+ );
+ }
+
roots = roots.filter(r => ["state", "props"].includes(r.name));
}
return _react2.default.createElement(
"div",
{ className: "preview-popup" },
+ reactHeader,
this.renderObjectInspector(roots)
);
}
renderSimplePreview(value) {
var openLink = this.props.openLink;
return _react2.default.createElement(
@@ -28900,32 +28756,32 @@ class Popup extends _react.Component {
className: "expression-to-save-button",
onClick: event => addExpression(event)
},
L10N.getStr("addWatchExpressionButton")
)
);
}
- renderPreview(expression, value) {
+ renderPreview(expression, value, extra) {
var root = {
name: expression,
path: expression,
contents: { value }
};
if (value.class === "Function") {
return this.renderFunctionPreview(value, root);
}
if (value.type === "object") {
return _react2.default.createElement(
"div",
null,
- this.renderObjectPreview(expression, root),
+ this.renderObjectPreview(expression, root, extra),
this.renderAddToExpressionBar(expression)
);
}
return this.renderSimplePreview(value);
}
getPreviewType(value) {
@@ -28936,24 +28792,25 @@ class Popup extends _react.Component {
return "popover";
}
render() {
var _props3 = this.props,
popoverPos = _props3.popoverPos,
onClose = _props3.onClose,
value = _props3.value,
- expression = _props3.expression;
+ expression = _props3.expression,
+ extra = _props3.extra;
var type = this.getPreviewType(value);
return _react2.default.createElement(
_Popover2.default,
{ targetPosition: popoverPos, onMouseLeave: onClose, type: type },
- this.renderPreview(expression, value)
+ this.renderPreview(expression, value, extra)
);
}
}
exports.Popup = Popup;
exports.default = (0, _reactRedux.connect)(state => ({
loadedObjects: (0, _selectors.getLoadedObjects)(state)
}), dispatch => (0, _redux.bindActionCreators)(_actions2.default, dispatch))(Popup);
@@ -36084,17 +35941,17 @@ module.exports = {
supportsObject,
maxLengthMap
};
/***/ }),
/* 960 */
/***/ (function(module, exports) {
-module.exports = "# This Source Code Form is subject to the terms of the Mozilla Public\n# License, v. 2.0. If a copy of the MPL was not distributed with this\n# file, You can obtain one at http://mozilla.org/MPL/2.0/.\n\n# LOCALIZATION NOTE These strings are used inside the Debugger\n# which is available from the Web Developer sub-menu -> 'Debugger'.\n# The correct localization of this file might be to keep it in\n# English, or another language commonly spoken among web developers.\n# You want to make that choice consistent across the developer tools.\n# A good criteria is the language in which you'd find the best\n# documentation on web development on the web.\n\n# LOCALIZATION NOTE (collapsePanes): This is the tooltip for the button\n# that collapses the left and right panes in the debugger UI.\ncollapsePanes=Collapse panes\n\n# LOCALIZATION NOTE (copySource): This is the text that appears in the\n# context menu to copy the selected source of file open.\ncopySource=Copy\ncopySource.accesskey=y\n\n# LOCALIZATION NOTE (copySourceUri2): This is the text that appears in the\n# context menu to copy the source URI of file open.\ncopySourceUri2=Copy source URI\ncopySourceUri2.accesskey=u\n\n# LOCALIZATION NOTE (copyFunction): This is the text that appears in the\n# context menu to copy the function the user selected\ncopyFunction.label=Copy function\ncopyFunction.accesskey=F\n\n# LOCALIZATION NOTE (copyStackTrace): This is the text that appears in the\n# context menu to copy the stack trace methods, file names and row number.\ncopyStackTrace=Copy stack trace\ncopyStackTrace.accesskey=c\n\n# LOCALIZATION NOTE (expandPanes): This is the tooltip for the button\n# that expands the left and right panes in the debugger UI.\nexpandPanes=Expand panes\n\n# LOCALIZATION NOTE (pauseButtonTooltip): The tooltip that is displayed for the pause\n# button when the debugger is in a running state.\npauseButtonTooltip=Pause %S\n\n# LOCALIZATION NOTE (pausePendingButtonTooltip): The tooltip that is displayed for\n# the pause button after it's been clicked but before the next JavaScript to run.\npausePendingButtonTooltip=Waiting for next execution\n\n# LOCALIZATION NOTE (resumeButtonTooltip): The label that is displayed on the pause\n# button when the debugger is in a paused state.\nresumeButtonTooltip=Resume %S\n\n# LOCALIZATION NOTE (stepOverTooltip): The label that is displayed on the\n# button that steps over a function call.\nstepOverTooltip=Step over %S\n\n# LOCALIZATION NOTE (stepInTooltip): The label that is displayed on the\n# button that steps into a function call.\nstepInTooltip=Step in %S\n\n# LOCALIZATION NOTE (stepOutTooltip): The label that is displayed on the\n# button that steps out of a function call.\nstepOutTooltip=Step out %S\n\n# LOCALIZATION NOTE (workersHeader): The text to display in the events\n# header.\nworkersHeader=Workers\n\n# LOCALIZATION NOTE (noWorkersText): The text to display in the workers list\n# when there are no workers.\nnoWorkersText=This page has no workers.\n\n# LOCALIZATION NOTE (noSourcesText): The text to display in the sources list\n# when there are no sources.\nnoSourcesText=This page has no sources.\n\n# LOCALIZATION NOTE (noEventListenersText): The text to display in the events tab\n# when there are no events.\nnoEventListenersText=No event listeners to display.\n\n# LOCALIZATION NOTE (eventListenersHeader): The text to display in the events\n# header.\neventListenersHeader=Event listeners\n\n# LOCALIZATION NOTE (noStackFramesText): The text to display in the call stack tab\n# when there are no stack frames.\nnoStackFramesText=No stack frames to display\n\n# LOCALIZATION NOTE (eventCheckboxTooltip): The tooltip text to display when\n# the user hovers over the checkbox used to toggle an event breakpoint.\neventCheckboxTooltip=Toggle breaking on this event\n\n# LOCALIZATION NOTE (eventOnSelector): The text to display in the events tab\n# for every event item, between the event type and event selector.\neventOnSelector=on\n\n# LOCALIZATION NOTE (eventInSource): The text to display in the events tab\n# for every event item, between the event selector and listener's owner source.\neventInSource=in\n\n# LOCALIZATION NOTE (eventNodes): The text to display in the events tab when\n# an event is listened on more than one target node.\neventNodes=%S nodes\n\n# LOCALIZATION NOTE (eventNative): The text to display in the events tab when\n# a listener is added from plugins, thus getting translated to native code.\neventNative=[native code]\n\n# LOCALIZATION NOTE (*Events): The text to display in the events tab for\n# each group of sub-level event entries.\nanimationEvents=Animation\naudioEvents=Audio\nbatteryEvents=Battery\nclipboardEvents=Clipboard\ncompositionEvents=Composition\ndeviceEvents=Device\ndisplayEvents=Display\ndragAndDropEvents=Drag and Drop\ngamepadEvents=Gamepad\nindexedDBEvents=IndexedDB\ninteractionEvents=Interaction\nkeyboardEvents=Keyboard\nmediaEvents=HTML5 Media\nmouseEvents=Mouse\nmutationEvents=Mutation\nnavigationEvents=Navigation\npointerLockEvents=Pointer Lock\nsensorEvents=Sensor\nstorageEvents=Storage\ntimeEvents=Time\ntouchEvents=Touch\notherEvents=Other\n\n# LOCALIZATION NOTE (blackboxCheckboxTooltip2): The tooltip text to display when\n# the user hovers over the checkbox used to toggle blackboxing its associated\n# source.\nblackboxCheckboxTooltip2=Toggle blackboxing\n\n# LOCALIZATION NOTE (sources.search.key2): Key shortcut to open the search for\n# searching all the source files the debugger has seen.\nsources.search.key2=CmdOrCtrl+P\n\n# LOCALIZATION NOTE (sources.search.alt.key): A second key shortcut to open the\n# search for searching all the source files the debugger has seen.\nsources.search.alt.key=CmdOrCtrl+O\n\n# LOCALIZATION NOTE (projectTextSearch.key): A key shortcut to open the\n# full project text search for searching all the files the debugger has seen.\nprojectTextSearch.key=CmdOrCtrl+Shift+F\n\n# LOCALIZATION NOTE (functionSearch.key): A key shortcut to open the\n# modal for searching functions in a file.\nfunctionSearch.key=CmdOrCtrl+Shift+O\n\n# LOCALIZATION NOTE (toggleBreakpoint.key): A key shortcut to toggle\n# breakpoints.\ntoggleBreakpoint.key=CmdOrCtrl+B\n\n# LOCALIZATION NOTE (toggleCondPanel.key): A key shortcut to toggle\n# the conditional breakpoint panel.\ntoggleCondPanel.key=CmdOrCtrl+Shift+B\n\n# LOCALIZATION NOTE (stepOut.key): A key shortcut to\n# step out.\nstepOut.key=Shift+F11\n\n# LOCALIZATION NOTE (shortcuts.header.editor): Sections header in\n# the shortcuts modal for keyboard shortcuts related to editing.\nshortcuts.header.editor=Editor\n\n# LOCALIZATION NOTE (shortcuts.header.stepping): Sections header in\n# the shortcuts modal for keyboard shortcuts related to stepping.\nshortcuts.header.stepping=Stepping\n\n# LOCALIZATION NOTE (shortcuts.header.search): Sections header in\n# the shortcuts modal for keyboard shortcuts related to search.\nshortcuts.header.search=Search\n\n# LOCALIZATION NOTE (projectTextSearch.placeholder): A placeholder shown\n# when searching across all of the files in a project.\nprojectTextSearch.placeholder=Find in files…\n\n# LOCALIZATION NOTE (projectTextSearch.noResults): The center pane Text Search\n# message when the query did not match any text of all files in a project.\nprojectTextSearch.noResults=No results found\n\n# LOCALIZATION NOTE (sources.noSourcesAvailable): Text shown when the debugger\n# does not have any sources.\nsources.noSourcesAvailable=This page has no sources\n\n# LOCALIZATION NOTE (sourceSearch.search.key2): Key shortcut to open the search\n# for searching within a the currently opened files in the editor\nsourceSearch.search.key2=CmdOrCtrl+F\n\n# LOCALIZATION NOTE (sourceSearch.search.placeholder): placeholder text in\n# the source search input bar\nsourceSearch.search.placeholder=Search in file…\n\n# LOCALIZATION NOTE (sourceSearch.search.again.key2): Key shortcut to highlight\n# the next occurrence of the last search triggered from a source search\nsourceSearch.search.again.key2=CmdOrCtrl+G\n\n# LOCALIZATION NOTE (sourceSearch.search.againPrev.key2): Key shortcut to highlight\n# the previous occurrence of the last search triggered from a source search\nsourceSearch.search.againPrev.key2=CmdOrCtrl+Shift+G\n\n# LOCALIZATION NOTE (sourceSearch.resultsSummary1): Shows a summary of\n# the number of matches for autocomplete\nsourceSearch.resultsSummary1=%d results\n\n# LOCALIZATION NOTE (noMatchingStringsText): The text to display in the\n# global search results when there are no matching strings after filtering.\nnoMatchingStringsText=No matches found\n\n# LOCALIZATION NOTE (emptySearchText): This is the text that appears in the\n# filter text box when it is empty and the scripts container is selected.\nemptySearchText=Search scripts (%S)\n\n# LOCALIZATION NOTE (emptyVariablesFilterText): This is the text that\n# appears in the filter text box for the variables view container.\nemptyVariablesFilterText=Filter variables\n\n# LOCALIZATION NOTE (emptyPropertiesFilterText): This is the text that\n# appears in the filter text box for the editor's variables view bubble.\nemptyPropertiesFilterText=Filter properties\n\n# LOCALIZATION NOTE (searchPanelFilter): This is the text that appears in the\n# filter panel popup for the filter scripts operation.\nsearchPanelFilter=Filter scripts (%S)\n\n# LOCALIZATION NOTE (searchPanelGlobal): This is the text that appears in the\n# filter panel popup for the global search operation.\nsearchPanelGlobal=Search in all files (%S)\n\n# LOCALIZATION NOTE (searchPanelFunction): This is the text that appears in the\n# filter panel popup for the function search operation.\nsearchPanelFunction=Search for function definition (%S)\n\n# LOCALIZATION NOTE (searchPanelToken): This is the text that appears in the\n# filter panel popup for the token search operation.\nsearchPanelToken=Find in this file (%S)\n\n# LOCALIZATION NOTE (searchPanelGoToLine): This is the text that appears in the\n# filter panel popup for the line search operation.\nsearchPanelGoToLine=Go to line (%S)\n\n# LOCALIZATION NOTE (searchPanelVariable): This is the text that appears in the\n# filter panel popup for the variables search operation.\nsearchPanelVariable=Filter variables (%S)\n\n# LOCALIZATION NOTE (breakpointMenuItem): The text for all the elements that\n# are displayed in the breakpoints menu item popup.\nbreakpointMenuItem.setConditional=Configure conditional breakpoint\nbreakpointMenuItem.enableSelf2.label=Enable\nbreakpointMenuItem.enableSelf2.accesskey=E\nbreakpointMenuItem.disableSelf2.label=Disable\nbreakpointMenuItem.disableSelf2.accesskey=D\nbreakpointMenuItem.deleteSelf2.label=Remove\nbreakpointMenuItem.deleteSelf2.accesskey=R\nbreakpointMenuItem.enableOthers2.label=Enable others\nbreakpointMenuItem.enableOthers2.accesskey=o\nbreakpointMenuItem.disableOthers2.label=Disable others\nbreakpointMenuItem.disableOthers2.accesskey=s\nbreakpointMenuItem.deleteOthers2.label=Remove others\nbreakpointMenuItem.deleteOthers2.accesskey=h\nbreakpointMenuItem.enableAll2.label=Enable all\nbreakpointMenuItem.enableAll2.accesskey=b\nbreakpointMenuItem.disableAll2.label=Disable all\nbreakpointMenuItem.disableAll2.accesskey=k\nbreakpointMenuItem.deleteAll2.label=Remove all\nbreakpointMenuItem.deleteAll2.accesskey=a\nbreakpointMenuItem.removeCondition2.label=Remove condition\nbreakpointMenuItem.removeCondition2.accesskey=c\nbreakpointMenuItem.addCondition2.label=Add condition\nbreakpointMenuItem.addCondition2.accesskey=A\nbreakpointMenuItem.editCondition2.label=Edit condition\nbreakpointMenuItem.editCondition2.accesskey=n\nbreakpointMenuItem.enableSelf=Enable breakpoint\nbreakpointMenuItem.enableSelf.accesskey=E\nbreakpointMenuItem.disableSelf=Disable breakpoint\nbreakpointMenuItem.disableSelf.accesskey=D\nbreakpointMenuItem.deleteSelf=Remove breakpoint\nbreakpointMenuItem.deleteSelf.accesskey=R\nbreakpointMenuItem.enableOthers=Enable others\nbreakpointMenuItem.enableOthers.accesskey=o\nbreakpointMenuItem.disableOthers=Disable others\nbreakpointMenuItem.disableOthers.accesskey=s\nbreakpointMenuItem.deleteOthers=Remove others\nbreakpointMenuItem.deleteOthers.accesskey=h\nbreakpointMenuItem.enableAll=Enable all breakpoints\nbreakpointMenuItem.enableAll.accesskey=b\nbreakpointMenuItem.disableAll=Disable all breakpoints\nbreakpointMenuItem.disableAll.accesskey=k\nbreakpointMenuItem.deleteAll=Remove all breakpoints\nbreakpointMenuItem.deleteAll.accesskey=a\nbreakpointMenuItem.removeCondition.label=Remove breakpoint condition\nbreakpointMenuItem.removeCondition.accesskey=c\nbreakpointMenuItem.editCondition.label=Edit breakpoint condition\nbreakpointMenuItem.editCondition.accesskey=n\n\n# LOCALIZATION NOTE (breakpoints.header): Breakpoints right sidebar pane header.\nbreakpoints.header=Breakpoints\n\n# LOCALIZATION NOTE (breakpoints.none): The text that appears when there are\n# no breakpoints present\nbreakpoints.none=No breakpoints\n\n# LOCALIZATION NOTE (breakpoints.enable): The text that may appear as a tooltip\n# when hovering over the 'disable breakpoints' switch button in right sidebar\nbreakpoints.enable=Enable breakpoints\n\n# LOCALIZATION NOTE (breakpoints.disable): The text that may appear as a tooltip\n# when hovering over the 'disable breakpoints' switch button in right sidebar\nbreakpoints.disable=Disable breakpoints\n\n# LOCALIZATION NOTE (breakpoints.removeBreakpointTooltip): The tooltip that is displayed\n# for remove breakpoint button in right sidebar\nbreakpoints.removeBreakpointTooltip=Remove breakpoint\n\n# LOCALIZATION NOTE (callStack.header): Call Stack right sidebar pane header.\ncallStack.header=Call stack\n\n# LOCALIZATION NOTE (callStack.notPaused): Call Stack right sidebar pane\n# message when not paused.\ncallStack.notPaused=Not paused\n\n# LOCALIZATION NOTE (callStack.collapse): Call Stack right sidebar pane\n# message to hide some of the frames that are shown.\ncallStack.collapse=Collapse rows\n\n# LOCALIZATION NOTE (callStack.expand): Call Stack right sidebar pane\n# message to show more of the frames.\ncallStack.expand=Expand rows\n\n# LOCALIZATION NOTE (editor.searchResults): Editor Search bar message\n# for the summarizing the selected search result. e.g. 5 of 10 results.\neditor.searchResults=%d of %d results\n\n# LOCALIZATION NOTE (sourceSearch.singleResult): Copy shown when there is one result.\neditor.singleResult=1 result\n\n# LOCALIZATION NOTE (editor.noResults): Editor Search bar message\n# for when no results found.\neditor.noResults=No results\n\n# LOCALIZATION NOTE (editor.searchResults.nextResult): Editor Search bar\n# tooltip for traversing to the Next Result\neditor.searchResults.nextResult=Next result\n\n# LOCALIZATION NOTE (editor.searchResults.prevResult): Editor Search bar\n# tooltip for traversing to the Previous Result\neditor.searchResults.prevResult=Previous result\n\n# LOCALIZATION NOTE (editor.searchTypeToggleTitle): Search bar title for\n# toggling search type buttons(function search, variable search)\neditor.searchTypeToggleTitle=Search for:\n\n# LOCALIZATION NOTE (editor.continueToHere.label): Editor gutter context\n# menu item for jumping to a new paused location\neditor.continueToHere.label=Continue to here\neditor.continueToHere.accesskey=H\n\n# LOCALIZATION NOTE (editor.addBreakpoint): Editor gutter context menu item\n# for adding a breakpoint on a line.\neditor.addBreakpoint=Add breakpoint\n\n# LOCALIZATION NOTE (editor.disableBreakpoint): Editor gutter context menu item\n# for disabling a breakpoint on a line.\neditor.disableBreakpoint=Disable breakpoint\n\n# LOCALIZATION NOTE (editor.enableBreakpoint): Editor gutter context menu item\n# for enabling a breakpoint on a line.\neditor.enableBreakpoint=Enable breakpoint\n\n# LOCALIZATION NOTE (editor.removeBreakpoint): Editor gutter context menu item\n# for removing a breakpoint on a line.\neditor.removeBreakpoint=Remove breakpoint\n\n# LOCALIZATION NOTE (editor.editBreakpoint): Editor gutter context menu item\n# for setting a breakpoint condition on a line.\neditor.editBreakpoint=Edit breakpoint\n\n# LOCALIZATION NOTE (editor.addConditionalBreakpoint): Editor gutter context\n# menu item for adding a breakpoint condition on a line.\neditor.addConditionalBreakpoint=Add conditional breakpoint\n\n# LOCALIZATION NOTE (editor.conditionalPanel.placeholder): Placeholder text for\n# input element inside ConditionalPanel component\neditor.conditionalPanel.placeholder=This breakpoint will pause when the expression is true\n\n# LOCALIZATION NOTE (editor.conditionalPanel.placeholder): Tooltip text for\n# close button inside ConditionalPanel component\neditor.conditionalPanel.close=Cancel edit breakpoint and close\n\n# LOCALIZATION NOTE (editor.jumpToMappedLocation1): Context menu item\n# for navigating to a source mapped location\neditor.jumpToMappedLocation1=Jump to %S location\n\n# LOCALIZATION NOTE (framework.disableGrouping): This is the text that appears in the\n# context menu to disable framework grouping.\nframework.disableGrouping=Disable framework grouping\nframework.disableGrouping.accesskey=u\n\n# LOCALIZATION NOTE (framework.enableGrouping): This is the text that appears in the\n# context menu to enable framework grouping.\nframework.enableGrouping=Enable framework grouping\nframework.enableGrouping.accesskey=u\n\n# LOCALIZATION NOTE (generated): Source Map term for a server source location\ngenerated=Generated\n\n# LOCALIZATION NOTE (original): Source Map term for a debugger UI source location\noriginal=original\n\n# LOCALIZATION NOTE (expressions.placeholder): Placeholder text for expression\n# input element\nexpressions.placeholder=Add watch expression\n\n# LOCALIZATION NOTE (sourceTabs.closeTab): Editor source tab context menu item\n# for closing the selected tab below the mouse.\nsourceTabs.closeTab=Close tab\nsourceTabs.closeTab.accesskey=c\n\n# LOCALIZATION NOTE (sourceTabs.closeOtherTabs): Editor source tab context menu item\n# for closing the other tabs.\nsourceTabs.closeOtherTabs=Close other tabs\nsourceTabs.closeOtherTabs.accesskey=o\n\n# LOCALIZATION NOTE (sourceTabs.closeTabsToEnd): Editor source tab context menu item\n# for closing the tabs to the end (the right for LTR languages) of the selected tab.\nsourceTabs.closeTabsToEnd=Close tabs to the right\nsourceTabs.closeTabsToEnd.accesskey=e\n\n# LOCALIZATION NOTE (sourceTabs.closeAllTabs): Editor source tab context menu item\n# for closing all tabs.\nsourceTabs.closeAllTabs=Close all tabs\nsourceTabs.closeAllTabs.accesskey=a\n\n# LOCALIZATION NOTE (sourceTabs.revealInTree): Editor source tab context menu item\n# for revealing source in tree.\nsourceTabs.revealInTree=Reveal in tree\nsourceTabs.revealInTree.accesskey=r\n\n# LOCALIZATION NOTE (sourceTabs.prettyPrint): Editor source tab context menu item\n# for pretty printing the source.\nsourceTabs.prettyPrint=Pretty print source\nsourceTabs.prettyPrint.accesskey=p\n\n# LOCALIZATION NOTE (sourceFooter.blackbox): Tooltip text associated\n# with the blackbox button\nsourceFooter.blackbox=Blackbox source\nsourceFooter.blackbox.accesskey=B\n\n# LOCALIZATION NOTE (sourceFooter.unblackbox): Tooltip text associated\n# with the blackbox button\nsourceFooter.unblackbox=Unblackbox source\nsourceFooter.unblackbox.accesskey=b\n\n# LOCALIZATION NOTE (sourceFooter.blackboxed): Text associated\n# with a blackboxed source\nsourceFooter.blackboxed=Blackboxed source\n\n# LOCALIZATION NOTE (sourceFooter.codeCoverage): Text associated\n# with a code coverage button\nsourceFooter.codeCoverage=Code coverage\n\n# LOCALIZATION NOTE (sourceTabs.closeTabButtonTooltip): The tooltip that is displayed\n# for close tab button in source tabs.\nsourceTabs.closeTabButtonTooltip=Close tab\n\n# LOCALIZATION NOTE (sourceTabs.newTabButtonTooltip): The tooltip that is displayed for\n# new tab button in source tabs.\nsourceTabs.newTabButtonTooltip=Search for sources (%S)\n\n# LOCALIZATION NOTE (scopes.header): Scopes right sidebar pane header.\nscopes.header=Scopes\n\n# LOCALIZATION NOTE (scopes.notAvailable): Scopes right sidebar pane message\n# for when the debugger is paused, but there isn't pause data.\nscopes.notAvailable=Scopes unavailable\n\n# LOCALIZATION NOTE (scopes.notPaused): Scopes right sidebar pane message\n# for when the debugger is not paused.\nscopes.notPaused=Not paused\n\n# LOCALIZATION NOTE (scopes.block): Refers to a block of code in\n# the scopes pane when the debugger is paused.\nscopes.block=Block\n\n# LOCALIZATION NOTE (sources.header): Sources left sidebar header\nsources.header=Sources\n\n# LOCALIZATION NOTE (outline.header): Outline left sidebar header\noutline.header=Outline\n\n# LOCALIZATION NOTE (outline.noFunctions): Outline text when there are no functions to display\noutline.noFunctions=No functions\n\n# LOCALIZATION NOTE (sources.search): Sources left sidebar prompt\n# e.g. Cmd+P to search. On a mac, we use the command unicode character.\n# On windows, it's ctrl.\nsources.search=%S to search\n\n# LOCALIZATION NOTE (watchExpressions.header): Watch Expressions right sidebar\n# pane header.\nwatchExpressions.header=Watch expressions\n\n# LOCALIZATION NOTE (watchExpressions.refreshButton): Watch Expressions header\n# button for refreshing the expressions.\nwatchExpressions.refreshButton=Refresh\n\n# LOCALIZATION NOTE (welcome.search): The center pane welcome panel's\n# search prompt. e.g. cmd+p to search for files. On windows, it's ctrl, on\n# a mac we use the unicode character.\nwelcome.search=%S to search for sources\n\n# LOCALIZATION NOTE (welcome.findInFiles): The center pane welcome panel's\n# search prompt. e.g. cmd+f to search for files. On windows, it's ctrl+shift+f, on\n# a mac we use the unicode character.\nwelcome.findInFiles=%S to find in files\n\n# LOCALIZATION NOTE (welcome.searchFunction): Label displayed in the welcome\n# panel. %S is replaced by the keyboard shortcut to search for functions.\nwelcome.searchFunction=%S to search for functions in file\n\n# LOCALIZATION NOTE (sourceSearch.search): The center pane Source Search\n# prompt for searching for files.\nsourceSearch.search=Search sources…\n\n# LOCALIZATION NOTE (sourceSearch.noResults): The center pane Source Search\n# message when the query did not match any of the sources.\nsourceSearch.noResults2=No results found\n\n# LOCALIZATION NOTE (ignoreExceptions): The pause on exceptions button tooltip\n# when the debugger will not pause on exceptions.\nignoreExceptions=Ignore exceptions. Click to pause on uncaught exceptions\n\n# LOCALIZATION NOTE (pauseOnUncaughtExceptions): The pause on exceptions button\n# tooltip when the debugger will pause on uncaught exceptions.\npauseOnUncaughtExceptions=Pause on uncaught exceptions. Click to pause on all exceptions\n\n# LOCALIZATION NOTE (pauseOnExceptions): The pause on exceptions button tooltip\n# when the debugger will pause on all exceptions.\npauseOnExceptions=Pause on all exceptions. Click to ignore exceptions\n\n# LOCALIZATION NOTE (loadingText): The text that is displayed in the script\n# editor when the loading process has started but there is no file to display\n# yet.\nloadingText=Loading\\u2026\n\n# LOCALIZATION NOTE (errorLoadingText3): The text that is displayed in the debugger\n# viewer when there is an error loading a file\nerrorLoadingText3=Error loading this URI: %S\n\n# LOCALIZATION NOTE (addWatchExpressionText): The text that is displayed in the\n# watch expressions list to add a new item.\naddWatchExpressionText=Add watch expression\n\n# LOCALIZATION NOTE (addWatchExpressionButton): The button that is displayed in the\n# variables view popup.\naddWatchExpressionButton=Watch\n\n# LOCALIZATION NOTE (emptyVariablesText): The text that is displayed in the\n# variables pane when there are no variables to display.\nemptyVariablesText=No variables to display\n\n# LOCALIZATION NOTE (scopeLabel): The text that is displayed in the variables\n# pane as a header for each variable scope (e.g. \"Global scope, \"With scope\",\n# etc.).\nscopeLabel=%S scope\n\n# LOCALIZATION NOTE (watchExpressionsScopeLabel): The name of the watch\n# expressions scope. This text is displayed in the variables pane as a header for\n# the watch expressions scope.\nwatchExpressionsScopeLabel=Watch expressions\n\n# LOCALIZATION NOTE (globalScopeLabel): The name of the global scope. This text\n# is added to scopeLabel and displayed in the variables pane as a header for\n# the global scope.\nglobalScopeLabel=Global\n\n# LOCALIZATION NOTE (variablesViewErrorStacktrace): This is the text that is\n# shown before the stack trace in an error.\nvariablesViewErrorStacktrace=Stack trace:\n\n# LOCALIZATION NOTE (variablesViewMoreObjects): the text that is displayed\n# when you have an object preview that does not show all of the elements. At the end of the list\n# you see \"N more...\" in the web console output.\n# This is a semi-colon list of plural forms.\n# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals\n# #1 number of remaining items in the object\n# example: 3 more…\nvariablesViewMoreObjects=#1 more…;#1 more…\n\n# LOCALIZATION NOTE (variablesEditableNameTooltip): The text that is displayed\n# in the variables list on an item with an editable name.\nvariablesEditableNameTooltip=Double click to edit\n\n# LOCALIZATION NOTE (variablesEditableValueTooltip): The text that is displayed\n# in the variables list on an item with an editable value.\nvariablesEditableValueTooltip=Click to change value\n\n# LOCALIZATION NOTE (variablesCloseButtonTooltip): The text that is displayed\n# in the variables list on an item which can be removed.\nvariablesCloseButtonTooltip=Click to remove\n\n# LOCALIZATION NOTE (variablesEditButtonTooltip): The text that is displayed\n# in the variables list on a getter or setter which can be edited.\nvariablesEditButtonTooltip=Click to set value\n\n# LOCALIZATION NOTE (variablesEditableValueTooltip): The text that is displayed\n# in a tooltip on the \"open in inspector\" button in the the variables list for a\n# DOMNode item.\nvariablesDomNodeValueTooltip=Click to select the node in the inspector\n\n# LOCALIZATION NOTE (configurable|...|Tooltip): The text that is displayed\n# in the variables list on certain variables or properties as tooltips.\n# Expanations of what these represent can be found at the following links:\n# https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty\n# https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/isExtensible\n# https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/isFrozen\n# https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/isSealed\n# It's probably best to keep these in English.\nconfigurableTooltip=configurable\nenumerableTooltip=enumerable\nwritableTooltip=writable\nfrozenTooltip=frozen\nsealedTooltip=sealed\nextensibleTooltip=extensible\noverriddenTooltip=overridden\nWebIDLTooltip=WebIDL\n\n# LOCALIZATION NOTE (variablesSeparatorLabel): The text that is displayed\n# in the variables list as a separator between the name and value.\nvariablesSeparatorLabel=:\n\n# LOCALIZATION NOTE (watchExpressionsSeparatorLabel2): The text that is displayed\n# in the watch expressions list as a separator between the code and evaluation.\nwatchExpressionsSeparatorLabel2=\\u0020→\n\n# LOCALIZATION NOTE (functionSearchSeparatorLabel): The text that is displayed\n# in the functions search panel as a separator between function's inferred name\n# and its real name (if available).\nfunctionSearchSeparatorLabel=←\n\n# LOCALIZATION NOTE(gotoLineModal.placeholder): The placeholder\n# text displayed when the user searches for specific lines in a file\ngotoLineModal.placeholder=Go to line…\ngotoLineModal.key=CmdOrCtrl+Shift+;\n\n# LOCALIZATION NOTE(symbolSearch.search.functionsPlaceholder): The placeholder\n# text displayed when the user searches for functions in a file\nsymbolSearch.search.functionsPlaceholder=Search functions…\n\n# LOCALIZATION NOTE(symbolSearch.search.variablesPlaceholder): The placeholder\n# text displayed when the user searches for variables in a file\nsymbolSearch.search.variablesPlaceholder=Search variables…\n\n# LOCALIZATION NOTE(symbolSearch.search.key2): The Key Shortcut for\n# searching for a function or variable\nsymbolSearch.search.key2=CmdOrCtrl+Shift+O\n\n# LOCALIZATION NOTE(symbolSearch.searchModifier.modifiersLabel): A label\n# preceding the group of modifiers\nsymbolSearch.searchModifier.modifiersLabel=Modifiers:\n\n# LOCALIZATION NOTE(symbolSearch.searchModifier.regex): A search option\n# when searching text in a file\nsymbolSearch.searchModifier.regex=Regex\n\n# LOCALIZATION NOTE(symbolSearch.searchModifier.caseSensitive): A search option\n# when searching text in a file\nsymbolSearch.searchModifier.caseSensitive=Case sensitive\n\n# LOCALIZATION NOTE(symbolSearch.searchModifier.wholeWord): A search option\n# when searching text in a file\nsymbolSearch.searchModifier.wholeWord=Whole word\n\n# LOCALIZATION NOTE (resumptionOrderPanelTitle): This is the text that appears\n# as a description in the notification panel popup, when multiple debuggers are\n# open in separate tabs and the user tries to resume them in the wrong order.\n# The substitution parameter is the URL of the last paused window that must be\n# resumed first.\nresumptionOrderPanelTitle=There are one or more paused debuggers. Please resume the most-recently paused debugger first at: %S\n\nvariablesViewOptimizedOut=(optimized away)\nvariablesViewUninitialized=(uninitialized)\nvariablesViewMissingArgs=(unavailable)\n\nanonymousSourcesLabel=Anonymous sources\n\nexperimental=This is an experimental feature\n\n# LOCALIZATION NOTE (whyPaused.debuggerStatement): The text that is displayed\n# in a info block explaining how the debugger is currently paused due to a `debugger`\n# statement in the code\nwhyPaused.debuggerStatement=Paused on debugger statement\n\n# LOCALIZATION NOTE (whyPaused.breakpoint): The text that is displayed\n# in a info block explaining how the debugger is currently paused on a breakpoint\nwhyPaused.breakpoint=Paused on breakpoint\n\n# LOCALIZATION NOTE (whyPaused.exception): The text that is displayed\n# in a info block explaining how the debugger is currently paused on an exception\nwhyPaused.exception=Paused on exception\n\n# LOCALIZATION NOTE (whyPaused.resumeLimit): The text that is displayed\n# in a info block explaining how the debugger is currently paused while stepping\n# in or out of the stack\nwhyPaused.resumeLimit=Paused while stepping\n\n# LOCALIZATION NOTE (whyPaused.pauseOnDOMEvents): The text that is displayed\n# in a info block explaining how the debugger is currently paused on a\n# dom event\nwhyPaused.pauseOnDOMEvents=Paused on event listener\n\n# LOCALIZATION NOTE (whyPaused.breakpointConditionThrown): The text that is displayed\n# in an info block when evaluating a conditional breakpoint throws an error\nwhyPaused.breakpointConditionThrown=Error with conditional breakpoint\n\n# LOCALIZATION NOTE (whyPaused.xhr): The text that is displayed\n# in a info block explaining how the debugger is currently paused on an\n# xml http request\nwhyPaused.xhr=Paused on XMLHttpRequest\n\n# LOCALIZATION NOTE (whyPaused.promiseRejection): The text that is displayed\n# in a info block explaining how the debugger is currently paused on a\n# promise rejection\nwhyPaused.promiseRejection=Paused on promise rejection\n\n# LOCALIZATION NOTE (whyPaused.assert): The text that is displayed\n# in a info block explaining how the debugger is currently paused on an\n# assert\nwhyPaused.assert=Paused on assertion\n\n# LOCALIZATION NOTE (whyPaused.debugCommand): The text that is displayed\n# in a info block explaining how the debugger is currently paused on a\n# debugger statement\nwhyPaused.debugCommand=Paused on debugged function\n\n# LOCALIZATION NOTE (whyPaused.other): The text that is displayed\n# in a info block explaining how the debugger is currently paused on an event\n# listener breakpoint set\nwhyPaused.other=Debugger paused\n\n# LOCALIZATION NOTE (ctrl): The text that is used for documenting\n# keyboard shortcuts that use the control key\nctrl=Ctrl\n\n# LOCALIZATION NOTE (anonymous): The text that is displayed when the\n# display name is null.\nanonymous=(anonymous)\n\n# LOCALIZATION NOTE (shortcuts.toggleBreakpoint): text describing\n# keyboard shortcut action for toggling breakpoint\nshortcuts.toggleBreakpoint=Toggle Breakpoint\n\n# LOCALIZATION NOTE (shortcuts.toggleCondPanel): text describing\n# keyboard shortcut action for toggling conditional panel keyboard\nshortcuts.toggleCondPanel=Toggle Conditional Panel\n\n# LOCALIZATION NOTE (shortcuts.pauseOrResume): text describing\n# keyboard shortcut action for pause of resume\nshortcuts.pauseOrResume=Pause/Resume\n\n# LOCALIZATION NOTE (shortcuts.stepOver): text describing\n# keyboard shortcut action for stepping over\nshortcuts.stepOver=Step Over\n\n# LOCALIZATION NOTE (shortcuts.stepIn): text describing\n# keyboard shortcut action for stepping in\nshortcuts.stepIn=Step In\n\n# LOCALIZATION NOTE (shortcuts.stepOut): text describing\n# keyboard shortcut action for stepping out\nshortcuts.stepOut=Step Out\n\n# LOCALIZATION NOTE (shortcuts.fileSearch): text describing\n# keyboard shortcut action for source file search\nshortcuts.fileSearch=Source File Search\n\n# LOCALIZATION NOTE (shortcuts.searchAgain): text describing\n# keyboard shortcut action for searching again\nshortcuts.searchAgain=Search Again\n\n# LOCALIZATION NOTE (shortcuts.projectSearch): text describing\n# keyboard shortcut action for full project search\nshortcuts.projectSearch=Full Project Search\n\n# LOCALIZATION NOTE (shortcuts.functionSearch): text describing\n# keyboard shortcut action for function search\nshortcuts.functionSearch=Function Search\n\n# LOCALIZATION NOTE (shortcuts.buttonName): text describing\n# keyboard shortcut button text\nshortcuts.buttonName=Keyboard shortcuts\n"
+module.exports = "# This Source Code Form is subject to the terms of the Mozilla Public\n# License, v. 2.0. If a copy of the MPL was not distributed with this\n# file, You can obtain one at http://mozilla.org/MPL/2.0/.\n\n# LOCALIZATION NOTE These strings are used inside the Debugger\n# which is available from the Web Developer sub-menu -> 'Debugger'.\n# The correct localization of this file might be to keep it in\n# English, or another language commonly spoken among web developers.\n# You want to make that choice consistent across the developer tools.\n# A good criteria is the language in which you'd find the best\n# documentation on web development on the web.\n\n# LOCALIZATION NOTE (collapsePanes): This is the tooltip for the button\n# that collapses the left and right panes in the debugger UI.\ncollapsePanes=Collapse panes\n\n# LOCALIZATION NOTE (copySource): This is the text that appears in the\n# context menu to copy the selected source of file open.\ncopySource=Copy\ncopySource.accesskey=y\n\n# LOCALIZATION NOTE (copySourceUri2): This is the text that appears in the\n# context menu to copy the source URI of file open.\ncopySourceUri2=Copy source URI\ncopySourceUri2.accesskey=u\n\n# LOCALIZATION NOTE (setDirectoryRoot): This is the text that appears in the\n# context menu to set a directory as root directory\nsetDirectoryRoot.label=Set directory root\nsetDirectoryRoot.accesskey=r\n\n# LOCALIZATION NOTE (copyFunction): This is the text that appears in the\n# context menu to copy the function the user selected\ncopyFunction.label=Copy function\ncopyFunction.accesskey=F\n\n# LOCALIZATION NOTE (copyStackTrace): This is the text that appears in the\n# context menu to copy the stack trace methods, file names and row number.\ncopyStackTrace=Copy stack trace\ncopyStackTrace.accesskey=c\n\n# LOCALIZATION NOTE (expandPanes): This is the tooltip for the button\n# that expands the left and right panes in the debugger UI.\nexpandPanes=Expand panes\n\n# LOCALIZATION NOTE (pauseButtonTooltip): The tooltip that is displayed for the pause\n# button when the debugger is in a running state.\npauseButtonTooltip=Pause %S\n\n# LOCALIZATION NOTE (pausePendingButtonTooltip): The tooltip that is displayed for\n# the pause button after it's been clicked but before the next JavaScript to run.\npausePendingButtonTooltip=Waiting for next execution\n\n# LOCALIZATION NOTE (resumeButtonTooltip): The label that is displayed on the pause\n# button when the debugger is in a paused state.\nresumeButtonTooltip=Resume %S\n\n# LOCALIZATION NOTE (stepOverTooltip): The label that is displayed on the\n# button that steps over a function call.\nstepOverTooltip=Step over %S\n\n# LOCALIZATION NOTE (stepInTooltip): The label that is displayed on the\n# button that steps into a function call.\nstepInTooltip=Step in %S\n\n# LOCALIZATION NOTE (stepOutTooltip): The label that is displayed on the\n# button that steps out of a function call.\nstepOutTooltip=Step out %S\n\n# LOCALIZATION NOTE (workersHeader): The text to display in the events\n# header.\nworkersHeader=Workers\n\n# LOCALIZATION NOTE (noWorkersText): The text to display in the workers list\n# when there are no workers.\nnoWorkersText=This page has no workers.\n\n# LOCALIZATION NOTE (noSourcesText): The text to display in the sources list\n# when there are no sources.\nnoSourcesText=This page has no sources.\n\n# LOCALIZATION NOTE (noEventListenersText): The text to display in the events tab\n# when there are no events.\nnoEventListenersText=No event listeners to display.\n\n# LOCALIZATION NOTE (eventListenersHeader): The text to display in the events\n# header.\neventListenersHeader=Event listeners\n\n# LOCALIZATION NOTE (noStackFramesText): The text to display in the call stack tab\n# when there are no stack frames.\nnoStackFramesText=No stack frames to display\n\n# LOCALIZATION NOTE (eventCheckboxTooltip): The tooltip text to display when\n# the user hovers over the checkbox used to toggle an event breakpoint.\neventCheckboxTooltip=Toggle breaking on this event\n\n# LOCALIZATION NOTE (eventOnSelector): The text to display in the events tab\n# for every event item, between the event type and event selector.\neventOnSelector=on\n\n# LOCALIZATION NOTE (eventInSource): The text to display in the events tab\n# for every event item, between the event selector and listener's owner source.\neventInSource=in\n\n# LOCALIZATION NOTE (eventNodes): The text to display in the events tab when\n# an event is listened on more than one target node.\neventNodes=%S nodes\n\n# LOCALIZATION NOTE (eventNative): The text to display in the events tab when\n# a listener is added from plugins, thus getting translated to native code.\neventNative=[native code]\n\n# LOCALIZATION NOTE (*Events): The text to display in the events tab for\n# each group of sub-level event entries.\nanimationEvents=Animation\naudioEvents=Audio\nbatteryEvents=Battery\nclipboardEvents=Clipboard\ncompositionEvents=Composition\ndeviceEvents=Device\ndisplayEvents=Display\ndragAndDropEvents=Drag and Drop\ngamepadEvents=Gamepad\nindexedDBEvents=IndexedDB\ninteractionEvents=Interaction\nkeyboardEvents=Keyboard\nmediaEvents=HTML5 Media\nmouseEvents=Mouse\nmutationEvents=Mutation\nnavigationEvents=Navigation\npointerLockEvents=Pointer Lock\nsensorEvents=Sensor\nstorageEvents=Storage\ntimeEvents=Time\ntouchEvents=Touch\notherEvents=Other\n\n# LOCALIZATION NOTE (blackboxCheckboxTooltip2): The tooltip text to display when\n# the user hovers over the checkbox used to toggle blackboxing its associated\n# source.\nblackboxCheckboxTooltip2=Toggle blackboxing\n\n# LOCALIZATION NOTE (sources.search.key2): Key shortcut to open the search for\n# searching all the source files the debugger has seen.\nsources.search.key2=CmdOrCtrl+P\n\n# LOCALIZATION NOTE (sources.search.alt.key): A second key shortcut to open the\n# search for searching all the source files the debugger has seen.\nsources.search.alt.key=CmdOrCtrl+O\n\n# LOCALIZATION NOTE (projectTextSearch.key): A key shortcut to open the\n# full project text search for searching all the files the debugger has seen.\nprojectTextSearch.key=CmdOrCtrl+Shift+F\n\n# LOCALIZATION NOTE (functionSearch.key): A key shortcut to open the\n# modal for searching functions in a file.\nfunctionSearch.key=CmdOrCtrl+Shift+O\n\n# LOCALIZATION NOTE (toggleBreakpoint.key): A key shortcut to toggle\n# breakpoints.\ntoggleBreakpoint.key=CmdOrCtrl+B\n\n# LOCALIZATION NOTE (toggleCondPanel.key): A key shortcut to toggle\n# the conditional breakpoint panel.\ntoggleCondPanel.key=CmdOrCtrl+Shift+B\n\n# LOCALIZATION NOTE (stepOut.key): A key shortcut to\n# step out.\nstepOut.key=Shift+F11\n\n# LOCALIZATION NOTE (shortcuts.header.editor): Sections header in\n# the shortcuts modal for keyboard shortcuts related to editing.\nshortcuts.header.editor=Editor\n\n# LOCALIZATION NOTE (shortcuts.header.stepping): Sections header in\n# the shortcuts modal for keyboard shortcuts related to stepping.\nshortcuts.header.stepping=Stepping\n\n# LOCALIZATION NOTE (shortcuts.header.search): Sections header in\n# the shortcuts modal for keyboard shortcuts related to search.\nshortcuts.header.search=Search\n\n# LOCALIZATION NOTE (projectTextSearch.placeholder): A placeholder shown\n# when searching across all of the files in a project.\nprojectTextSearch.placeholder=Find in files…\n\n# LOCALIZATION NOTE (projectTextSearch.noResults): The center pane Text Search\n# message when the query did not match any text of all files in a project.\nprojectTextSearch.noResults=No results found\n\n# LOCALIZATION NOTE (sources.noSourcesAvailable): Text shown when the debugger\n# does not have any sources.\nsources.noSourcesAvailable=This page has no sources\n\n# LOCALIZATION NOTE (sourceSearch.search.key2): Key shortcut to open the search\n# for searching within a the currently opened files in the editor\nsourceSearch.search.key2=CmdOrCtrl+F\n\n# LOCALIZATION NOTE (sourceSearch.search.placeholder): placeholder text in\n# the source search input bar\nsourceSearch.search.placeholder=Search in file…\n\n# LOCALIZATION NOTE (sourceSearch.search.again.key2): Key shortcut to highlight\n# the next occurrence of the last search triggered from a source search\nsourceSearch.search.again.key2=CmdOrCtrl+G\n\n# LOCALIZATION NOTE (sourceSearch.search.againPrev.key2): Key shortcut to highlight\n# the previous occurrence of the last search triggered from a source search\nsourceSearch.search.againPrev.key2=CmdOrCtrl+Shift+G\n\n# LOCALIZATION NOTE (sourceSearch.resultsSummary1): Shows a summary of\n# the number of matches for autocomplete\nsourceSearch.resultsSummary1=%d results\n\n# LOCALIZATION NOTE (noMatchingStringsText): The text to display in the\n# global search results when there are no matching strings after filtering.\nnoMatchingStringsText=No matches found\n\n# LOCALIZATION NOTE (emptySearchText): This is the text that appears in the\n# filter text box when it is empty and the scripts container is selected.\nemptySearchText=Search scripts (%S)\n\n# LOCALIZATION NOTE (emptyVariablesFilterText): This is the text that\n# appears in the filter text box for the variables view container.\nemptyVariablesFilterText=Filter variables\n\n# LOCALIZATION NOTE (emptyPropertiesFilterText): This is the text that\n# appears in the filter text box for the editor's variables view bubble.\nemptyPropertiesFilterText=Filter properties\n\n# LOCALIZATION NOTE (searchPanelFilter): This is the text that appears in the\n# filter panel popup for the filter scripts operation.\nsearchPanelFilter=Filter scripts (%S)\n\n# LOCALIZATION NOTE (searchPanelGlobal): This is the text that appears in the\n# filter panel popup for the global search operation.\nsearchPanelGlobal=Search in all files (%S)\n\n# LOCALIZATION NOTE (searchPanelFunction): This is the text that appears in the\n# filter panel popup for the function search operation.\nsearchPanelFunction=Search for function definition (%S)\n\n# LOCALIZATION NOTE (searchPanelToken): This is the text that appears in the\n# filter panel popup for the token search operation.\nsearchPanelToken=Find in this file (%S)\n\n# LOCALIZATION NOTE (searchPanelGoToLine): This is the text that appears in the\n# filter panel popup for the line search operation.\nsearchPanelGoToLine=Go to line (%S)\n\n# LOCALIZATION NOTE (searchPanelVariable): This is the text that appears in the\n# filter panel popup for the variables search operation.\nsearchPanelVariable=Filter variables (%S)\n\n# LOCALIZATION NOTE (breakpointMenuItem): The text for all the elements that\n# are displayed in the breakpoints menu item popup.\nbreakpointMenuItem.setConditional=Configure conditional breakpoint\nbreakpointMenuItem.enableSelf2.label=Enable\nbreakpointMenuItem.enableSelf2.accesskey=E\nbreakpointMenuItem.disableSelf2.label=Disable\nbreakpointMenuItem.disableSelf2.accesskey=D\nbreakpointMenuItem.deleteSelf2.label=Remove\nbreakpointMenuItem.deleteSelf2.accesskey=R\nbreakpointMenuItem.enableOthers2.label=Enable others\nbreakpointMenuItem.enableOthers2.accesskey=o\nbreakpointMenuItem.disableOthers2.label=Disable others\nbreakpointMenuItem.disableOthers2.accesskey=s\nbreakpointMenuItem.deleteOthers2.label=Remove others\nbreakpointMenuItem.deleteOthers2.accesskey=h\nbreakpointMenuItem.enableAll2.label=Enable all\nbreakpointMenuItem.enableAll2.accesskey=b\nbreakpointMenuItem.disableAll2.label=Disable all\nbreakpointMenuItem.disableAll2.accesskey=k\nbreakpointMenuItem.deleteAll2.label=Remove all\nbreakpointMenuItem.deleteAll2.accesskey=a\nbreakpointMenuItem.removeCondition2.label=Remove condition\nbreakpointMenuItem.removeCondition2.accesskey=c\nbreakpointMenuItem.addCondition2.label=Add condition\nbreakpointMenuItem.addCondition2.accesskey=A\nbreakpointMenuItem.editCondition2.label=Edit condition\nbreakpointMenuItem.editCondition2.accesskey=n\nbreakpointMenuItem.enableSelf=Enable breakpoint\nbreakpointMenuItem.enableSelf.accesskey=E\nbreakpointMenuItem.disableSelf=Disable breakpoint\nbreakpointMenuItem.disableSelf.accesskey=D\nbreakpointMenuItem.deleteSelf=Remove breakpoint\nbreakpointMenuItem.deleteSelf.accesskey=R\nbreakpointMenuItem.enableOthers=Enable others\nbreakpointMenuItem.enableOthers.accesskey=o\nbreakpointMenuItem.disableOthers=Disable others\nbreakpointMenuItem.disableOthers.accesskey=s\nbreakpointMenuItem.deleteOthers=Remove others\nbreakpointMenuItem.deleteOthers.accesskey=h\nbreakpointMenuItem.enableAll=Enable all breakpoints\nbreakpointMenuItem.enableAll.accesskey=b\nbreakpointMenuItem.disableAll=Disable all breakpoints\nbreakpointMenuItem.disableAll.accesskey=k\nbreakpointMenuItem.deleteAll=Remove all breakpoints\nbreakpointMenuItem.deleteAll.accesskey=a\nbreakpointMenuItem.removeCondition.label=Remove breakpoint condition\nbreakpointMenuItem.removeCondition.accesskey=c\nbreakpointMenuItem.editCondition.label=Edit breakpoint condition\nbreakpointMenuItem.editCondition.accesskey=n\n\n# LOCALIZATION NOTE (breakpoints.header): Breakpoints right sidebar pane header.\nbreakpoints.header=Breakpoints\n\n# LOCALIZATION NOTE (breakpoints.none): The text that appears when there are\n# no breakpoints present\nbreakpoints.none=No breakpoints\n\n# LOCALIZATION NOTE (breakpoints.enable): The text that may appear as a tooltip\n# when hovering over the 'disable breakpoints' switch button in right sidebar\nbreakpoints.enable=Enable breakpoints\n\n# LOCALIZATION NOTE (breakpoints.disable): The text that may appear as a tooltip\n# when hovering over the 'disable breakpoints' switch button in right sidebar\nbreakpoints.disable=Disable breakpoints\n\n# LOCALIZATION NOTE (breakpoints.removeBreakpointTooltip): The tooltip that is displayed\n# for remove breakpoint button in right sidebar\nbreakpoints.removeBreakpointTooltip=Remove breakpoint\n\n# LOCALIZATION NOTE (callStack.header): Call Stack right sidebar pane header.\ncallStack.header=Call stack\n\n# LOCALIZATION NOTE (callStack.notPaused): Call Stack right sidebar pane\n# message when not paused.\ncallStack.notPaused=Not paused\n\n# LOCALIZATION NOTE (callStack.collapse): Call Stack right sidebar pane\n# message to hide some of the frames that are shown.\ncallStack.collapse=Collapse rows\n\n# LOCALIZATION NOTE (callStack.expand): Call Stack right sidebar pane\n# message to show more of the frames.\ncallStack.expand=Expand rows\n\n# LOCALIZATION NOTE (editor.searchResults): Editor Search bar message\n# for the summarizing the selected search result. e.g. 5 of 10 results.\neditor.searchResults=%d of %d results\n\n# LOCALIZATION NOTE (sourceSearch.singleResult): Copy shown when there is one result.\neditor.singleResult=1 result\n\n# LOCALIZATION NOTE (editor.noResults): Editor Search bar message\n# for when no results found.\neditor.noResults=No results\n\n# LOCALIZATION NOTE (editor.searchResults.nextResult): Editor Search bar\n# tooltip for traversing to the Next Result\neditor.searchResults.nextResult=Next result\n\n# LOCALIZATION NOTE (editor.searchResults.prevResult): Editor Search bar\n# tooltip for traversing to the Previous Result\neditor.searchResults.prevResult=Previous result\n\n# LOCALIZATION NOTE (editor.searchTypeToggleTitle): Search bar title for\n# toggling search type buttons(function search, variable search)\neditor.searchTypeToggleTitle=Search for:\n\n# LOCALIZATION NOTE (editor.continueToHere.label): Editor gutter context\n# menu item for jumping to a new paused location\neditor.continueToHere.label=Continue to here\neditor.continueToHere.accesskey=H\n\n# LOCALIZATION NOTE (editor.addBreakpoint): Editor gutter context menu item\n# for adding a breakpoint on a line.\neditor.addBreakpoint=Add breakpoint\n\n# LOCALIZATION NOTE (editor.disableBreakpoint): Editor gutter context menu item\n# for disabling a breakpoint on a line.\neditor.disableBreakpoint=Disable breakpoint\n\n# LOCALIZATION NOTE (editor.enableBreakpoint): Editor gutter context menu item\n# for enabling a breakpoint on a line.\neditor.enableBreakpoint=Enable breakpoint\n\n# LOCALIZATION NOTE (editor.removeBreakpoint): Editor gutter context menu item\n# for removing a breakpoint on a line.\neditor.removeBreakpoint=Remove breakpoint\n\n# LOCALIZATION NOTE (editor.editBreakpoint): Editor gutter context menu item\n# for setting a breakpoint condition on a line.\neditor.editBreakpoint=Edit breakpoint\n\n# LOCALIZATION NOTE (editor.addConditionalBreakpoint): Editor gutter context\n# menu item for adding a breakpoint condition on a line.\neditor.addConditionalBreakpoint=Add conditional breakpoint\n\n# LOCALIZATION NOTE (editor.conditionalPanel.placeholder): Placeholder text for\n# input element inside ConditionalPanel component\neditor.conditionalPanel.placeholder=This breakpoint will pause when the expression is true\n\n# LOCALIZATION NOTE (editor.conditionalPanel.placeholder): Tooltip text for\n# close button inside ConditionalPanel component\neditor.conditionalPanel.close=Cancel edit breakpoint and close\n\n# LOCALIZATION NOTE (editor.jumpToMappedLocation1): Context menu item\n# for navigating to a source mapped location\neditor.jumpToMappedLocation1=Jump to %S location\n\n# LOCALIZATION NOTE (framework.disableGrouping): This is the text that appears in the\n# context menu to disable framework grouping.\nframework.disableGrouping=Disable framework grouping\nframework.disableGrouping.accesskey=u\n\n# LOCALIZATION NOTE (framework.enableGrouping): This is the text that appears in the\n# context menu to enable framework grouping.\nframework.enableGrouping=Enable framework grouping\nframework.enableGrouping.accesskey=u\n\n# LOCALIZATION NOTE (generated): Source Map term for a server source location\ngenerated=Generated\n\n# LOCALIZATION NOTE (original): Source Map term for a debugger UI source location\noriginal=original\n\n# LOCALIZATION NOTE (expressions.placeholder): Placeholder text for expression\n# input element\nexpressions.placeholder=Add watch expression\n\n# LOCALIZATION NOTE (sourceTabs.closeTab): Editor source tab context menu item\n# for closing the selected tab below the mouse.\nsourceTabs.closeTab=Close tab\nsourceTabs.closeTab.accesskey=c\n\n# LOCALIZATION NOTE (sourceTabs.closeOtherTabs): Editor source tab context menu item\n# for closing the other tabs.\nsourceTabs.closeOtherTabs=Close other tabs\nsourceTabs.closeOtherTabs.accesskey=o\n\n# LOCALIZATION NOTE (sourceTabs.closeTabsToEnd): Editor source tab context menu item\n# for closing the tabs to the end (the right for LTR languages) of the selected tab.\nsourceTabs.closeTabsToEnd=Close tabs to the right\nsourceTabs.closeTabsToEnd.accesskey=e\n\n# LOCALIZATION NOTE (sourceTabs.closeAllTabs): Editor source tab context menu item\n# for closing all tabs.\nsourceTabs.closeAllTabs=Close all tabs\nsourceTabs.closeAllTabs.accesskey=a\n\n# LOCALIZATION NOTE (sourceTabs.revealInTree): Editor source tab context menu item\n# for revealing source in tree.\nsourceTabs.revealInTree=Reveal in tree\nsourceTabs.revealInTree.accesskey=r\n\n# LOCALIZATION NOTE (sourceTabs.prettyPrint): Editor source tab context menu item\n# for pretty printing the source.\nsourceTabs.prettyPrint=Pretty print source\nsourceTabs.prettyPrint.accesskey=p\n\n# LOCALIZATION NOTE (sourceFooter.blackbox): Tooltip text associated\n# with the blackbox button\nsourceFooter.blackbox=Blackbox source\nsourceFooter.blackbox.accesskey=B\n\n# LOCALIZATION NOTE (sourceFooter.unblackbox): Tooltip text associated\n# with the blackbox button\nsourceFooter.unblackbox=Unblackbox source\nsourceFooter.unblackbox.accesskey=b\n\n# LOCALIZATION NOTE (sourceFooter.blackboxed): Text associated\n# with a blackboxed source\nsourceFooter.blackboxed=Blackboxed source\n\n# LOCALIZATION NOTE (sourceFooter.codeCoverage): Text associated\n# with a code coverage button\nsourceFooter.codeCoverage=Code coverage\n\n# LOCALIZATION NOTE (sourceTabs.closeTabButtonTooltip): The tooltip that is displayed\n# for close tab button in source tabs.\nsourceTabs.closeTabButtonTooltip=Close tab\n\n# LOCALIZATION NOTE (scopes.header): Scopes right sidebar pane header.\nscopes.header=Scopes\n\n# LOCALIZATION NOTE (scopes.notAvailable): Scopes right sidebar pane message\n# for when the debugger is paused, but there isn't pause data.\nscopes.notAvailable=Scopes unavailable\n\n# LOCALIZATION NOTE (scopes.notPaused): Scopes right sidebar pane message\n# for when the debugger is not paused.\nscopes.notPaused=Not paused\n\n# LOCALIZATION NOTE (scopes.block): Refers to a block of code in\n# the scopes pane when the debugger is paused.\nscopes.block=Block\n\n# LOCALIZATION NOTE (sources.header): Sources left sidebar header\nsources.header=Sources\n\n# LOCALIZATION NOTE (outline.header): Outline left sidebar header\noutline.header=Outline\n\n# LOCALIZATION NOTE (outline.noFunctions): Outline text when there are no functions to display\noutline.noFunctions=No functions\n\n# LOCALIZATION NOTE (sources.search): Sources left sidebar prompt\n# e.g. Cmd+P to search. On a mac, we use the command unicode character.\n# On windows, it's ctrl.\nsources.search=%S to search\n\n# LOCALIZATION NOTE (watchExpressions.header): Watch Expressions right sidebar\n# pane header.\nwatchExpressions.header=Watch expressions\n\n# LOCALIZATION NOTE (watchExpressions.refreshButton): Watch Expressions header\n# button for refreshing the expressions.\nwatchExpressions.refreshButton=Refresh\n\n# LOCALIZATION NOTE (welcome.search): The center pane welcome panel's\n# search prompt. e.g. cmd+p to search for files. On windows, it's ctrl, on\n# a mac we use the unicode character.\nwelcome.search=%S to search for sources\n\n# LOCALIZATION NOTE (welcome.findInFiles): The center pane welcome panel's\n# search prompt. e.g. cmd+f to search for files. On windows, it's ctrl+shift+f, on\n# a mac we use the unicode character.\nwelcome.findInFiles=%S to find in files\n\n# LOCALIZATION NOTE (welcome.searchFunction): Label displayed in the welcome\n# panel. %S is replaced by the keyboard shortcut to search for functions.\nwelcome.searchFunction=%S to search for functions in file\n\n# LOCALIZATION NOTE (sourceSearch.search): The center pane Source Search\n# prompt for searching for files.\nsourceSearch.search=Search sources…\n\n# LOCALIZATION NOTE (sourceSearch.noResults): The center pane Source Search\n# message when the query did not match any of the sources.\nsourceSearch.noResults2=No results found\n\n# LOCALIZATION NOTE (ignoreExceptions): The pause on exceptions button tooltip\n# when the debugger will not pause on exceptions.\nignoreExceptions=Ignore exceptions. Click to pause on uncaught exceptions\n\n# LOCALIZATION NOTE (pauseOnUncaughtExceptions): The pause on exceptions button\n# tooltip when the debugger will pause on uncaught exceptions.\npauseOnUncaughtExceptions=Pause on uncaught exceptions. Click to pause on all exceptions\n\n# LOCALIZATION NOTE (pauseOnExceptions): The pause on exceptions button tooltip\n# when the debugger will pause on all exceptions.\npauseOnExceptions=Pause on all exceptions. Click to ignore exceptions\n\n# LOCALIZATION NOTE (loadingText): The text that is displayed in the script\n# editor when the loading process has started but there is no file to display\n# yet.\nloadingText=Loading\\u2026\n\n# LOCALIZATION NOTE (errorLoadingText3): The text that is displayed in the debugger\n# viewer when there is an error loading a file\nerrorLoadingText3=Error loading this URI: %S\n\n# LOCALIZATION NOTE (addWatchExpressionText): The text that is displayed in the\n# watch expressions list to add a new item.\naddWatchExpressionText=Add watch expression\n\n# LOCALIZATION NOTE (addWatchExpressionButton): The button that is displayed in the\n# variables view popup.\naddWatchExpressionButton=Watch\n\n# LOCALIZATION NOTE (emptyVariablesText): The text that is displayed in the\n# variables pane when there are no variables to display.\nemptyVariablesText=No variables to display\n\n# LOCALIZATION NOTE (scopeLabel): The text that is displayed in the variables\n# pane as a header for each variable scope (e.g. \"Global scope, \"With scope\",\n# etc.).\nscopeLabel=%S scope\n\n# LOCALIZATION NOTE (watchExpressionsScopeLabel): The name of the watch\n# expressions scope. This text is displayed in the variables pane as a header for\n# the watch expressions scope.\nwatchExpressionsScopeLabel=Watch expressions\n\n# LOCALIZATION NOTE (globalScopeLabel): The name of the global scope. This text\n# is added to scopeLabel and displayed in the variables pane as a header for\n# the global scope.\nglobalScopeLabel=Global\n\n# LOCALIZATION NOTE (variablesViewErrorStacktrace): This is the text that is\n# shown before the stack trace in an error.\nvariablesViewErrorStacktrace=Stack trace:\n\n# LOCALIZATION NOTE (variablesViewMoreObjects): the text that is displayed\n# when you have an object preview that does not show all of the elements. At the end of the list\n# you see \"N more...\" in the web console output.\n# This is a semi-colon list of plural forms.\n# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals\n# #1 number of remaining items in the object\n# example: 3 more…\nvariablesViewMoreObjects=#1 more…;#1 more…\n\n# LOCALIZATION NOTE (variablesEditableNameTooltip): The text that is displayed\n# in the variables list on an item with an editable name.\nvariablesEditableNameTooltip=Double click to edit\n\n# LOCALIZATION NOTE (variablesEditableValueTooltip): The text that is displayed\n# in the variables list on an item with an editable value.\nvariablesEditableValueTooltip=Click to change value\n\n# LOCALIZATION NOTE (variablesCloseButtonTooltip): The text that is displayed\n# in the variables list on an item which can be removed.\nvariablesCloseButtonTooltip=Click to remove\n\n# LOCALIZATION NOTE (variablesEditButtonTooltip): The text that is displayed\n# in the variables list on a getter or setter which can be edited.\nvariablesEditButtonTooltip=Click to set value\n\n# LOCALIZATION NOTE (variablesEditableValueTooltip): The text that is displayed\n# in a tooltip on the \"open in inspector\" button in the the variables list for a\n# DOMNode item.\nvariablesDomNodeValueTooltip=Click to select the node in the inspector\n\n# LOCALIZATION NOTE (configurable|...|Tooltip): The text that is displayed\n# in the variables list on certain variables or properties as tooltips.\n# Expanations of what these represent can be found at the following links:\n# https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty\n# https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/isExtensible\n# https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/isFrozen\n# https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/isSealed\n# It's probably best to keep these in English.\nconfigurableTooltip=configurable\nenumerableTooltip=enumerable\nwritableTooltip=writable\nfrozenTooltip=frozen\nsealedTooltip=sealed\nextensibleTooltip=extensible\noverriddenTooltip=overridden\nWebIDLTooltip=WebIDL\n\n# LOCALIZATION NOTE (variablesSeparatorLabel): The text that is displayed\n# in the variables list as a separator between the name and value.\nvariablesSeparatorLabel=:\n\n# LOCALIZATION NOTE (watchExpressionsSeparatorLabel2): The text that is displayed\n# in the watch expressions list as a separator between the code and evaluation.\nwatchExpressionsSeparatorLabel2=\\u0020→\n\n# LOCALIZATION NOTE (functionSearchSeparatorLabel): The text that is displayed\n# in the functions search panel as a separator between function's inferred name\n# and its real name (if available).\nfunctionSearchSeparatorLabel=←\n\n# LOCALIZATION NOTE(gotoLineModal.placeholder): The placeholder\n# text displayed when the user searches for specific lines in a file\ngotoLineModal.placeholder=Go to line…\ngotoLineModal.key=CmdOrCtrl+Shift+;\n\n# LOCALIZATION NOTE(symbolSearch.search.functionsPlaceholder): The placeholder\n# text displayed when the user searches for functions in a file\nsymbolSearch.search.functionsPlaceholder=Search functions…\n\n# LOCALIZATION NOTE(symbolSearch.search.variablesPlaceholder): The placeholder\n# text displayed when the user searches for variables in a file\nsymbolSearch.search.variablesPlaceholder=Search variables…\n\n# LOCALIZATION NOTE(symbolSearch.search.key2): The Key Shortcut for\n# searching for a function or variable\nsymbolSearch.search.key2=CmdOrCtrl+Shift+O\n\n# LOCALIZATION NOTE(symbolSearch.searchModifier.modifiersLabel): A label\n# preceding the group of modifiers\nsymbolSearch.searchModifier.modifiersLabel=Modifiers:\n\n# LOCALIZATION NOTE(symbolSearch.searchModifier.regex): A search option\n# when searching text in a file\nsymbolSearch.searchModifier.regex=Regex\n\n# LOCALIZATION NOTE(symbolSearch.searchModifier.caseSensitive): A search option\n# when searching text in a file\nsymbolSearch.searchModifier.caseSensitive=Case sensitive\n\n# LOCALIZATION NOTE(symbolSearch.searchModifier.wholeWord): A search option\n# when searching text in a file\nsymbolSearch.searchModifier.wholeWord=Whole word\n\n# LOCALIZATION NOTE (resumptionOrderPanelTitle): This is the text that appears\n# as a description in the notification panel popup, when multiple debuggers are\n# open in separate tabs and the user tries to resume them in the wrong order.\n# The substitution parameter is the URL of the last paused window that must be\n# resumed first.\nresumptionOrderPanelTitle=There are one or more paused debuggers. Please resume the most-recently paused debugger first at: %S\n\nvariablesViewOptimizedOut=(optimized away)\nvariablesViewUninitialized=(uninitialized)\nvariablesViewMissingArgs=(unavailable)\n\nanonymousSourcesLabel=Anonymous sources\n\nexperimental=This is an experimental feature\n\n# LOCALIZATION NOTE (whyPaused.debuggerStatement): The text that is displayed\n# in a info block explaining how the debugger is currently paused due to a `debugger`\n# statement in the code\nwhyPaused.debuggerStatement=Paused on debugger statement\n\n# LOCALIZATION NOTE (whyPaused.breakpoint): The text that is displayed\n# in a info block explaining how the debugger is currently paused on a breakpoint\nwhyPaused.breakpoint=Paused on breakpoint\n\n# LOCALIZATION NOTE (whyPaused.exception): The text that is displayed\n# in a info block explaining how the debugger is currently paused on an exception\nwhyPaused.exception=Paused on exception\n\n# LOCALIZATION NOTE (whyPaused.resumeLimit): The text that is displayed\n# in a info block explaining how the debugger is currently paused while stepping\n# in or out of the stack\nwhyPaused.resumeLimit=Paused while stepping\n\n# LOCALIZATION NOTE (whyPaused.pauseOnDOMEvents): The text that is displayed\n# in a info block explaining how the debugger is currently paused on a\n# dom event\nwhyPaused.pauseOnDOMEvents=Paused on event listener\n\n# LOCALIZATION NOTE (whyPaused.breakpointConditionThrown): The text that is displayed\n# in an info block when evaluating a conditional breakpoint throws an error\nwhyPaused.breakpointConditionThrown=Error with conditional breakpoint\n\n# LOCALIZATION NOTE (whyPaused.xhr): The text that is displayed\n# in a info block explaining how the debugger is currently paused on an\n# xml http request\nwhyPaused.xhr=Paused on XMLHttpRequest\n\n# LOCALIZATION NOTE (whyPaused.promiseRejection): The text that is displayed\n# in a info block explaining how the debugger is currently paused on a\n# promise rejection\nwhyPaused.promiseRejection=Paused on promise rejection\n\n# LOCALIZATION NOTE (whyPaused.assert): The text that is displayed\n# in a info block explaining how the debugger is currently paused on an\n# assert\nwhyPaused.assert=Paused on assertion\n\n# LOCALIZATION NOTE (whyPaused.debugCommand): The text that is displayed\n# in a info block explaining how the debugger is currently paused on a\n# debugger statement\nwhyPaused.debugCommand=Paused on debugged function\n\n# LOCALIZATION NOTE (whyPaused.other): The text that is displayed\n# in a info block explaining how the debugger is currently paused on an event\n# listener breakpoint set\nwhyPaused.other=Debugger paused\n\n# LOCALIZATION NOTE (ctrl): The text that is used for documenting\n# keyboard shortcuts that use the control key\nctrl=Ctrl\n\n# LOCALIZATION NOTE (anonymous): The text that is displayed when the\n# display name is null.\nanonymous=(anonymous)\n\n# LOCALIZATION NOTE (shortcuts.toggleBreakpoint): text describing\n# keyboard shortcut action for toggling breakpoint\nshortcuts.toggleBreakpoint=Toggle Breakpoint\n\n# LOCALIZATION NOTE (shortcuts.toggleCondPanel): text describing\n# keyboard shortcut action for toggling conditional panel keyboard\nshortcuts.toggleCondPanel=Toggle Conditional Panel\n\n# LOCALIZATION NOTE (shortcuts.pauseOrResume): text describing\n# keyboard shortcut action for pause of resume\nshortcuts.pauseOrResume=Pause/Resume\n\n# LOCALIZATION NOTE (shortcuts.stepOver): text describing\n# keyboard shortcut action for stepping over\nshortcuts.stepOver=Step Over\n\n# LOCALIZATION NOTE (shortcuts.stepIn): text describing\n# keyboard shortcut action for stepping in\nshortcuts.stepIn=Step In\n\n# LOCALIZATION NOTE (shortcuts.stepOut): text describing\n# keyboard shortcut action for stepping out\nshortcuts.stepOut=Step Out\n\n# LOCALIZATION NOTE (shortcuts.fileSearch): text describing\n# keyboard shortcut action for source file search\nshortcuts.fileSearch=Source File Search\n\n# LOCALIZATION NOTE (shortcuts.searchAgain): text describing\n# keyboard shortcut action for searching again\nshortcuts.searchAgain=Search Again\n\n# LOCALIZATION NOTE (shortcuts.projectSearch): text describing\n# keyboard shortcut action for full project search\nshortcuts.projectSearch=Full Project Search\n\n# LOCALIZATION NOTE (shortcuts.functionSearch): text describing\n# keyboard shortcut action for function search\nshortcuts.functionSearch=Function Search\n\n# LOCALIZATION NOTE (shortcuts.buttonName): text describing\n# keyboard shortcut button text\nshortcuts.buttonName=Keyboard shortcuts\n"
/***/ }),
/* 961 */,
/* 962 */,
/* 963 */,
/* 964 */,
/* 965 */
/***/ (function(module, exports) {
@@ -39777,19 +39634,23 @@ var I = _interopRequireWildcard(_immutab
var _makeRecord = __webpack_require__(230);
var _makeRecord2 = _interopRequireDefault(_makeRecord);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
-/**
- * UI reducer
- * @module reducers/ui
+/* 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/. */
+
+/**
+ * Ast reducer
+ * @module reducers/ast
*/
function initialState() {
return (0, _makeRecord2.default)({
symbols: I.Map(),
emptyLines: I.Map(),
outOfScopeLocations: null,
preview: null
@@ -39837,25 +39698,27 @@ function update() {
return state.set("preview", null);
}
var _action$value = action.value,
_expression = _action$value.expression,
_location = _action$value.location,
_result = _action$value.result,
_tokenPos = _action$value.tokenPos,
- _cursorPos = _action$value.cursorPos;
+ _cursorPos = _action$value.cursorPos,
+ extra = _action$value.extra;
return state.set("preview", {
updating: false,
expression: _expression,
location: _location,
result: _result,
tokenPos: _tokenPos,
- cursorPos: _cursorPos
+ cursorPos: _cursorPos,
+ extra
});
}
case "RESUMED":
{
return state.set("outOfScopeLocations", null);
}
@@ -39942,16 +39805,20 @@ var _expressions = __webpack_require__(2
var _promise = __webpack_require__(193);
var _parser = __webpack_require__(1208);
var _devtoolsSourceMap = __webpack_require__(898);
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
+var extraProps = {
+ react: { displayName: "this._reactInternalInstance.getName()" }
+};
+
function setSymbols(sourceId) {
return (() => {
var _ref = _asyncToGenerator(function* (_ref2) {
var dispatch = _ref2.dispatch,
getState = _ref2.getState;
var sourceRecord = (0, _selectors.getSource)(getState(), sourceId);
if (!sourceRecord) {
@@ -40121,26 +39988,31 @@ function setPreview(token, tokenPos, cur
var selectedFrame = (0, _selectors.getSelectedFrame)(getState());
var _ref11 = yield client.evaluate(expression, {
frameId: selectedFrame.id
}),
result = _ref11.result;
+ var data = yield client.evaluate(extraProps.react.displayName, {
+ frameId: selectedFrame.id
+ });
+
if (result === undefined) {
return;
}
return {
expression,
result,
location,
tokenPos,
- cursorPos
+ cursorPos,
+ extra: data && data.result
};
})()
});
});
return function (_x4) {
return _ref8.apply(this, arguments);
};
@@ -40817,17 +40689,24 @@ var _makeRecord = __webpack_require__(23
var _makeRecord2 = _interopRequireDefault(_makeRecord);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function InitialState() {
return (0, _makeRecord2.default)({
queryString: ""
})();
-}
+} /* 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/. */
+
+/**
+ * Source search reducer
+ * @module reducers/source-search
+ */
function update() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : InitialState();
var action = arguments[1];
switch (action.type) {
case "SET_QUERY_STRING":
return state.update("queryString", value => action.queryString);
@@ -40872,18 +40751,18 @@ function _interopRequireDefault(obj) { r
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
/* 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/. */
/**
- * Breakpoints reducer
- * @module reducers/breakpoints
+ * Pending breakpoints reducer
+ * @module reducers/pending-breakpoints
*/
function initialState() {
return (0, _makeRecord2.default)({
pendingBreakpoints: restorePendingBreakpoints()
})();
}
@@ -41369,18 +41248,16 @@ var _TextSearch2 = _interopRequireDefaul
var _SourceSearch = __webpack_require__(1141);
var _SourceSearch2 = _interopRequireDefault(_SourceSearch);
var _ToggleSearch = __webpack_require__(284);
var _ToggleSearch2 = _interopRequireDefault(_ToggleSearch);
-var _prefs = __webpack_require__(226);
-
var _selectors = __webpack_require__(242);
__webpack_require__(1317);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
class ProjectSearch extends _react.Component {
@@ -41412,20 +41289,16 @@ class ProjectSearch extends _react.Compo
var _props = this.props,
closeActiveSearch = _props.closeActiveSearch,
setActiveSearch = _props.setActiveSearch;
if (e) {
e.preventDefault();
}
- if (!_prefs.features.projectTextSearch) {
- return;
- }
-
if (this.isProjectSearchEnabled()) {
return closeActiveSearch();
}
return setActiveSearch("project");
}
toggleSourceSearch(key, e) {
var _props2 = this.props,
@@ -42005,16 +41878,18 @@ var _redux = __webpack_require__(3);
var _react = __webpack_require__(0);
var _actions = __webpack_require__(244);
var _actions2 = _interopRequireDefault(_actions);
var _selectors = __webpack_require__(242);
+var _editor = __webpack_require__(257);
+
__webpack_require__(1330);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
class EmptyLines extends _react.Component {
componentDidMount() {
this.disableEmptyLines();
@@ -42022,38 +41897,46 @@ class EmptyLines extends _react.Componen
componentDidUpdate() {
this.disableEmptyLines();
}
componentWillUnmount() {
var _props = this.props,
emptyLines = _props.emptyLines,
+ selectedSource = _props.selectedSource,
editor = _props.editor;
if (!emptyLines) {
return;
}
editor.codeMirror.operation(() => {
- emptyLines.forEach(line => editor.codeMirror.removeLineClass(line, "line", "empty-line"));
+ emptyLines.forEach(emptyLine => {
+ var line = (0, _editor.toEditorLine)(selectedSource.get("id"), emptyLine);
+ editor.codeMirror.removeLineClass(line, "line", "empty-line");
+ });
});
}
disableEmptyLines() {
var _props2 = this.props,
emptyLines = _props2.emptyLines,
+ selectedSource = _props2.selectedSource,
editor = _props2.editor;
if (!emptyLines) {
return;
}
editor.codeMirror.operation(() => {
- emptyLines.forEach(line => editor.codeMirror.addLineClass(line, "line", "empty-line"));
+ emptyLines.forEach(emptyLine => {
+ var line = (0, _editor.toEditorLine)(selectedSource.get("id"), emptyLine);
+ editor.codeMirror.addLineClass(line, "line", "empty-line");
+ });
});
}
render() {
return null;
}
}
@@ -42108,23 +41991,27 @@ var _sourcesTree = __webpack_require__(3
var _immutable = __webpack_require__(146);
var _devtoolsLaunchpad = __webpack_require__(131);
var _clipboard = __webpack_require__(423);
var _utils = __webpack_require__(234);
+var _prefs = __webpack_require__(226);
+
+var _ui = __webpack_require__(321);
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
class SourcesTree extends _react.Component {
constructor(props) {
super(props);
- this.state = (0, _sourcesTree.createTree)(this.props.sources, this.props.debuggeeUrl);
+ this.state = (0, _sourcesTree.createTree)(this.props.sources, this.props.debuggeeUrl, this.props.projectRoot);
this.focusItem = this.focusItem.bind(this);
this.selectItem = this.selectItem.bind(this);
this.getIcon = this.getIcon.bind(this);
this.onContextMenu = this.onContextMenu.bind(this);
this.renderItem = this.renderItem.bind(this);
this.queueUpdate = (0, _utils.throttle)(function () {
if (!this.mounted) {
@@ -42144,19 +42031,19 @@ class SourcesTree extends _react.Compone
}
shouldComponentUpdate() {
this.queueUpdate();
return false;
}
componentWillReceiveProps(nextProps) {
- if (this.props.debuggeeUrl !== nextProps.debuggeeUrl) {
+ if (this.props.projectRoot !== nextProps.projectRoot || this.props.debuggeeUrl !== nextProps.debuggeeUrl) {
// Recreate tree because the sort order changed
- this.setState((0, _sourcesTree.createTree)(nextProps.sources, nextProps.debuggeeUrl));
+ this.setState((0, _sourcesTree.createTree)(nextProps.sources, nextProps.debuggeeUrl, nextProps.projectRoot));
return;
}
var selectedSource = this.props.selectedSource;
if (nextProps.shownSource && nextProps.shownSource != this.props.shownSource) {
var _listItems = (0, _sourcesTree.getDirectories)(nextProps.shownSource, this.state.sourceTree);
if (_listItems && _listItems[0]) {
@@ -42173,17 +42060,17 @@ class SourcesTree extends _react.Compone
}
if (nextProps.sources === this.props.sources) {
return;
}
if (nextProps.sources.size === 0) {
// remove all sources
- this.setState((0, _sourcesTree.createTree)(nextProps.sources, this.props.debuggeeUrl));
+ this.setState((0, _sourcesTree.createTree)(nextProps.sources, nextProps.debuggeeUrl, nextProps.projectRoot));
return;
}
// TODO: do not run this every time a source is clicked,
// only when a new source is added
var next = (0, _immutable.Set)(nextProps.sources.valueSeq());
var prev = (0, _immutable.Set)(this.props.sources.valueSeq());
var newSet = next.subtract(prev);
@@ -42192,17 +42079,17 @@ class SourcesTree extends _react.Compone
// TODO: recreating the tree every time messes with the expanded
// state of ManagedTree, because it depends on item instances
// being the same. The result is that if a source is added at a
// later time, all expanded state is lost.
var sourceTree = this.state.sourceTree;
if (newSet.size > 0) {
for (var source of newSet) {
- (0, _sourcesTree.addToTree)(uncollapsedTree, source, this.props.debuggeeUrl);
+ (0, _sourcesTree.addToTree)(uncollapsedTree, source, this.props.debuggeeUrl, this.props.projectRoot);
}
sourceTree = (0, _sourcesTree.collapseTree)(uncollapsedTree);
}
this.setState({
uncollapsedTree,
sourceTree,
parentMap: (0, _sourcesTree.createParentMap)(sourceTree)
@@ -42233,16 +42120,18 @@ class SourcesTree extends _react.Compone
}
return _react2.default.createElement(_Svg2.default, { name: "folder" });
}
onContextMenu(event, item) {
var copySourceUri2Label = L10N.getStr("copySourceUri2");
var copySourceUri2Key = L10N.getStr("copySourceUri2.accesskey");
+ var setDirectoryRootLabel = L10N.getStr("setDirectoryRoot.label");
+ var setDirectoryRootKey = L10N.getStr("setDirectoryRoot.accesskey");
event.stopPropagation();
event.preventDefault();
var menuOptions = [];
if (!(0, _sourcesTree.isDirectory)(item)) {
var source = item.contents.get("url");
@@ -42250,18 +42139,25 @@ class SourcesTree extends _react.Compone
id: "node-menu-copy-source",
label: copySourceUri2Label,
accesskey: copySourceUri2Key,
disabled: false,
click: () => (0, _clipboard.copyToTheClipboard)(source)
};
menuOptions.push(copySourceUri2);
- }
-
+ } else if (_prefs.features.root) {
+ menuOptions.push({
+ id: "node-set-directory-root",
+ label: setDirectoryRootLabel,
+ accesskey: setDirectoryRootKey,
+ disabled: false,
+ click: () => (0, _ui.setProjectDirectoryRoot)(item.path)
+ });
+ }
(0, _devtoolsLaunchpad.showMenu)(event, menuOptions);
}
renderItem(item, depth, focused, _, expanded, _ref) {
var setExpanded = _ref.setExpanded;
var arrow = (0, _sourcesTree.nodeHasChildren)(item) ? _react2.default.createElement("img", {
className: (0, _classnames2.default)("arrow", {
@@ -42371,17 +42267,18 @@ class SourcesTree extends _react.Compone
// React
exports.default = (0, _reactRedux.connect)(state => {
return {
shownSource: (0, _selectors.getShownSource)(state),
selectedSource: (0, _selectors.getSelectedSource)(state),
debuggeeUrl: (0, _selectors.getDebuggeeUrl)(state),
- expanded: (0, _selectors.getExpandedState)(state)
+ expanded: (0, _selectors.getExpandedState)(state),
+ projectRoot: (0, _selectors.getProjectDirectoryRoot)(state)
};
}, dispatch => (0, _redux.bindActionCreators)(_actions2.default, dispatch))(SourcesTree);
/***/ }),
/* 1149 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -43464,17 +43361,17 @@ var _extends = Object.assign || function
var _react = __webpack_require__(0);
var _react2 = _interopRequireDefault(_react);
var _reactRedux = __webpack_require__(1189);
var _redux = __webpack_require__(3);
-var _devtoolsConfig = __webpack_require__(828);
+var _prefs = __webpack_require__(226);
var _lodash = __webpack_require__(2);
var _CallSite = __webpack_require__(1167);
var _CallSite2 = _interopRequireDefault(_CallSite);
var _selectors = __webpack_require__(242);
@@ -43541,17 +43438,17 @@ class CallSites extends _react.Component
onTokenClick(e) {
var target = e.target;
var _props = this.props,
editor = _props.editor,
selectedLocation = _props.selectedLocation;
- if (!(0, _devtoolsConfig.isEnabled)("columnBreakpoints") || !e.altKey && !target.classList.contains("call-site-bp") || !target.classList.contains("call-site") && !target.classList.contains("call-site-bp")) {
+ if (!_prefs.features.columnBreakpoints || !e.altKey && !target.classList.contains("call-site-bp") || !target.classList.contains("call-site") && !target.classList.contains("call-site-bp")) {
return;
}
var sourceId = selectedLocation.sourceId;
var _getTokenLocation = (0, _editor.getTokenLocation)(editor.codeMirror, target),
line = _getTokenLocation.line,
column = _getTokenLocation.column;
@@ -44426,16 +44323,24 @@ var _makeRecord = __webpack_require__(23
var _makeRecord2 = _interopRequireDefault(_makeRecord);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var State = exports.State = (0, _makeRecord2.default)({
workers: (0, _immutable.List)()
});
+/* 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/. */
+
+/**
+ * Debuggee reducer
+ * @module reducers/debuggee
+ */
function debuggee() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : State();
var action = arguments[1];
switch (action.type) {
case "SET_WORKERS":
return state.set("workers", (0, _immutable.List)(action.workers.workers));
@@ -44476,16 +44381,17 @@ function InitialState() {
/* 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/. */
/**
* Source tree reducer
* @module reducers/source-tree
*/
+
function update() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : InitialState();
var action = arguments[1];
switch (action.type) {
case "SET_EXPANDED_STATE":
return state.set("expanded", action.expanded);
}
@@ -47213,16 +47119,116 @@ module.exports = "<!-- This Source Code
/***/ }),
/* 1349 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.State = undefined;
+exports.getFileSearchQuery = getFileSearchQuery;
+exports.getFileSearchModifiers = getFileSearchModifiers;
+exports.getFileSearchResults = getFileSearchResults;
+
+var _makeRecord = __webpack_require__(230);
+
+var _makeRecord2 = _interopRequireDefault(_makeRecord);
+
+var _prefs = __webpack_require__(226);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/**
+ * File Search reducer
+ * @module reducers/fileSearch
+ */
+
+var State = exports.State = (0, _makeRecord2.default)({
+ query: "",
+ searchResults: {
+ matches: [],
+ matchIndex: -1,
+ index: -1,
+ count: 0
+ },
+ modifiers: (0, _makeRecord2.default)({
+ caseSensitive: _prefs.prefs.fileSearchCaseSensitive,
+ wholeWord: _prefs.prefs.fileSearchWholeWord,
+ regexMatch: _prefs.prefs.fileSearchRegexMatch
+ })()
+});
+
+function update() {
+ var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : State();
+ var action = arguments[1];
+
+ switch (action.type) {
+ case "UPDATE_FILE_SEARCH_QUERY":
+ {
+ return state.set("query", action.query);
+ }
+
+ case "UPDATE_SEARCH_RESULTS":
+ {
+ return state.set("searchResults", action.results);
+ }
+
+ case "TOGGLE_FILE_SEARCH_MODIFIER":
+ {
+ var actionVal = !state.getIn(["modifiers", action.modifier]);
+
+ if (action.modifier == "caseSensitive") {
+ _prefs.prefs.fileSearchCaseSensitive = actionVal;
+ }
+
+ if (action.modifier == "wholeWord") {
+ _prefs.prefs.fileSearchWholeWord = actionVal;
+ }
+
+ if (action.modifier == "regexMatch") {
+ _prefs.prefs.fileSearchRegexMatch = actionVal;
+ }
+
+ return state.setIn(["modifiers", action.modifier], actionVal);
+ }
+
+ default:
+ {
+ return state;
+ }
+ }
+}
+
+// NOTE: we'd like to have the app state fully typed
+// https://github.com/devtools-html/debugger.html/blob/master/src/reducers/sources.js#L179-L185
+function getFileSearchQuery(state) {
+ return state.fileSearch.get("query");
+}
+
+function getFileSearchModifiers(state) {
+ return state.fileSearch.get("modifiers");
+}
+
+function getFileSearchResults(state) {
+ return state.fileSearch.get("searchResults");
+}
+
+exports.default = update;
+
+/***/ }),
+/* 1350 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
var React = __webpack_require__(0);
var InlineSVG = __webpack_require__(1205);
var _require = __webpack_require__(828),
isDevelopment = _require.isDevelopment;
var svg = {
"rocket": __webpack_require__(1126)
@@ -47250,11 +47256,168 @@ function Svg(_ref) {
return React.createElement(InlineSVG, props);
}
// Svg.displayName = "Svg";
module.exports = Svg;
+/***/ }),
+/* 1351 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.doSearch = doSearch;
+exports.setFileSearchQuery = setFileSearchQuery;
+exports.toggleFileSearchModifier = toggleFileSearchModifier;
+exports.updateSearchResults = updateSearchResults;
+exports.searchContents = searchContents;
+exports.traverseResults = traverseResults;
+exports.closeFileSearch = closeFileSearch;
+
+var _editor = __webpack_require__(257);
+
+var _search = __webpack_require__(1210);
+
+var _selectors = __webpack_require__(242);
+
+var _ui = __webpack_require__(321);
+
+function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
+
+function doSearch(query, editor) {
+ return (_ref) => {
+ var getState = _ref.getState,
+ dispatch = _ref.dispatch;
+
+ var selectedSource = (0, _selectors.getSelectedSource)(getState());
+ if (!selectedSource || !selectedSource.get("text")) {
+ return;
+ }
+
+ dispatch(setFileSearchQuery(query));
+ dispatch(searchContents(query, editor));
+ };
+}
+
+function setFileSearchQuery(query) {
+ return {
+ type: "UPDATE_FILE_SEARCH_QUERY",
+ query
+ };
+}
+
+function toggleFileSearchModifier(modifier) {
+ return { type: "TOGGLE_FILE_SEARCH_MODIFIER", modifier };
+}
+
+function updateSearchResults(characterIndex, line, matches) {
+ var matchIndex = matches.findIndex(elm => elm.line === line && elm.ch === characterIndex);
+
+ return {
+ type: "UPDATE_SEARCH_RESULTS",
+ results: {
+ matches,
+ matchIndex,
+ count: matches.length,
+ index: characterIndex
+ }
+ };
+}
+
+function searchContents(query, editor) {
+ return (() => {
+ var _ref2 = _asyncToGenerator(function* (_ref3) {
+ var getState = _ref3.getState,
+ dispatch = _ref3.dispatch;
+
+ var modifiers = (0, _selectors.getFileSearchModifiers)(getState());
+ var selectedSource = (0, _selectors.getSelectedSource)(getState());
+
+ if (!query || !editor || !selectedSource || !selectedSource.get("text") || !modifiers) {
+ return;
+ }
+
+ var ctx = { ed: editor, cm: editor.codeMirror };
+ var _modifiers = modifiers.toJS();
+ var matches = yield (0, _search.getMatches)(query, selectedSource.get("text"), _modifiers);
+
+ var _find = (0, _editor.find)(ctx, query, true, _modifiers),
+ ch = _find.ch,
+ line = _find.line;
+
+ dispatch(updateSearchResults(ch, line, matches));
+ });
+
+ return function (_x) {
+ return _ref2.apply(this, arguments);
+ };
+ })();
+}
+
+function traverseResults(rev, editor) {
+ return (() => {
+ var _ref4 = _asyncToGenerator(function* (_ref5) {
+ var getState = _ref5.getState,
+ dispatch = _ref5.dispatch;
+
+ if (!editor) {
+ return;
+ }
+
+ var ctx = { ed: editor, cm: editor.codeMirror };
+
+ var query = (0, _selectors.getFileSearchQuery)(getState());
+ var modifiers = (0, _selectors.getFileSearchModifiers)(getState());
+
+ var _getFileSearchResults = (0, _selectors.getFileSearchResults)(getState()),
+ matches = _getFileSearchResults.matches;
+
+ if (query === "") {
+ dispatch((0, _ui.setActiveSearch)("file"));
+ }
+
+ if (modifiers) {
+ var matchedLocations = matches || [];
+
+ var _ref6 = rev ? (0, _editor.findPrev)(ctx, query, true, modifiers.toJS()) : (0, _editor.findNext)(ctx, query, true, modifiers.toJS()),
+ ch = _ref6.ch,
+ line = _ref6.line;
+
+ console.log(line);
+ dispatch(updateSearchResults(ch, line, matchedLocations));
+ }
+ });
+
+ return function (_x2) {
+ return _ref4.apply(this, arguments);
+ };
+ })();
+}
+
+function closeFileSearch(editor) {
+ return (_ref7) => {
+ var getState = _ref7.getState,
+ dispatch = _ref7.dispatch;
+
+ var modifiers = (0, _selectors.getFileSearchModifiers)(getState());
+ var query = (0, _selectors.getFileSearchQuery)(getState());
+
+ if (editor && modifiers) {
+ var ctx = { ed: editor, cm: editor.codeMirror };
+ (0, _editor.removeOverlay)(ctx, query, modifiers.toJS());
+ }
+
+ dispatch(setFileSearchQuery(""));
+ dispatch((0, _ui.closeActiveSearch)());
+ dispatch((0, _ui.clearHighlightLineRange)());
+ };
+}
+
/***/ })
/******/ ]);
});
\ No newline at end of file