--- a/devtools/client/shared/components/reps/reps.js
+++ b/devtools/client/shared/components/reps/reps.js
@@ -2,17 +2,17 @@
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory(require("devtools/client/shared/vendor/react-dom-factories"), require("devtools/client/shared/vendor/lodash"), require("devtools/client/shared/vendor/react-prop-types"), require("devtools/client/shared/vendor/react"));
else if(typeof define === 'function' && define.amd)
define(["devtools/client/shared/vendor/react-dom-factories", "devtools/client/shared/vendor/lodash", "devtools/client/shared/vendor/react-prop-types", "devtools/client/shared/vendor/react"], factory);
else {
var a = typeof exports === 'object' ? factory(require("devtools/client/shared/vendor/react-dom-factories"), require("devtools/client/shared/vendor/lodash"), require("devtools/client/shared/vendor/react-prop-types"), require("devtools/client/shared/vendor/react")) : factory(root["devtools/client/shared/vendor/react-dom-factories"], root["devtools/client/shared/vendor/lodash"], root["devtools/client/shared/vendor/react-prop-types"], root["devtools/client/shared/vendor/react"]);
for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
}
-})(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_53__, __WEBPACK_EXTERNAL_MODULE_2__, __WEBPACK_EXTERNAL_MODULE_6__) {
+})(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_53__, __WEBPACK_EXTERNAL_MODULE_2__, __WEBPACK_EXTERNAL_MODULE_7__) {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
@@ -528,17 +528,17 @@ module.exports = {
* 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/. */
__webpack_require__(18);
// Load all existing rep templates
const Undefined = __webpack_require__(19);
const Null = __webpack_require__(20);
-const StringRep = __webpack_require__(7);
+const StringRep = __webpack_require__(6);
const LongStringRep = __webpack_require__(21);
const Number = __webpack_require__(22);
const ArrayRep = __webpack_require__(10);
const Obj = __webpack_require__(23);
const SymbolRep = __webpack_require__(24);
const InfinityRep = __webpack_require__(25);
const NaNRep = __webpack_require__(26);
const Accessor = __webpack_require__(27);
@@ -739,22 +739,16 @@ function PropRep(props) {
}, equal), Rep(Object.assign({}, props))];
}
// Exports from this module
module.exports = wrapRender(PropRep);
/***/ }),
/* 6 */
-/***/ (function(module, exports) {
-
-module.exports = __WEBPACK_EXTERNAL_MODULE_6__;
-
-/***/ }),
-/* 7 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
/* 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/. */
@@ -838,18 +832,18 @@ function StringRep(props) {
* @param {String} text: The actual string to linkify.
* @param {Integer | null} cropLimit
* @param {Boolean} omitLinkHref: Do not create an href attribute if true.
* @param {Function} openLink: Function handling the link opening.
* @returns {Array<String|ReactElement>}
*/
function getLinkifiedElements(text, cropLimit, omitLinkHref, openLink) {
const halfLimit = Math.ceil((cropLimit - ELLIPSIS.length) / 2);
- const startCropIndex = halfLimit;
- const endCropIndex = text.length - halfLimit;
+ const startCropIndex = cropLimit ? halfLimit : null;
+ const endCropIndex = cropLimit ? text.length - halfLimit : null;
// As we walk through the tokens of the source string, we make sure to preserve
// the original whitespace that separated the tokens.
let currentIndex = 0;
const items = [];
for (let token of text.split(tokenSplitRegex)) {
if (isURL(token)) {
// Let's grab all the non-url strings before the link.
@@ -897,23 +891,27 @@ function getLinkifiedElements(text, crop
/**
* Returns a cropped substring given an offset, start and end crop indices in a parent
* string.
*
* @param {String} text: The substring to crop.
* @param {Integer} offset: The offset corresponding to the index at which the substring
* is in the parent string.
- * @param {Integer} startCropIndex: the index where the start of the crop should happen
- * in the parent string
- * @param {Integer} endCropIndex: the index where the end of the crop should happen
- * in the parent string
+ * @param {Integer|null} startCropIndex: the index where the start of the crop should
+ * happen in the parent string.
+ * @param {Integer|null} endCropIndex: the index where the end of the crop should happen
+ * in the parent string
* @returns {String|null} The cropped substring, or null if the text is completly cropped.
*/
function getCroppedString(text, offset = 0, startCropIndex, endCropIndex) {
+ if (!startCropIndex) {
+ return text;
+ }
+
const start = offset;
const end = offset + text.length;
const shouldBeVisible = !(start >= startCropIndex && end <= endCropIndex);
if (!shouldBeVisible) {
return null;
}
@@ -940,16 +938,22 @@ function supportsObject(object, noGrip =
// Exports from this module
module.exports = {
rep: wrapRender(StringRep),
supportsObject
};
/***/ }),
+/* 7 */
+/***/ (function(module, exports) {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE_7__;
+
+/***/ }),
/* 8 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
/* 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
@@ -1274,17 +1278,17 @@ var _svgInlineReact = __webpack_require_
var _svgInlineReact2 = _interopRequireDefault(_svgInlineReact);
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/. */
-const React = __webpack_require__(6);
+const React = __webpack_require__(7);
const PropTypes = __webpack_require__(2);
const svg = {
"open-inspector": __webpack_require__(34),
"jump-definition": __webpack_require__(35)
};
@@ -1465,17 +1469,17 @@ module.exports = {
Object.defineProperty(exports, "__esModule", {
value: true
});
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; };
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-var _react = __webpack_require__(6);
+var _react = __webpack_require__(7);
var _react2 = _interopRequireDefault(_react);
var _propTypes = __webpack_require__(2);
var _util = __webpack_require__(33);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -1634,30 +1638,40 @@ function GripArray(props) {
let brackets;
let needSpace = function (space) {
return space ? { left: "[ ", right: " ]" } : { left: "[", right: "]" };
};
if (mode === MODE.TINY) {
let objectLength = getLength(object);
let isEmpty = objectLength === 0;
- if (isEmpty) {
- items = [];
- } else {
- items = [span({
+ let ellipsis;
+ if (!isEmpty) {
+ ellipsis = span({
className: "more-ellipsis",
title: "more…"
- }, "…")];
+ }, "…");
+ }
+
+ let title;
+ if (object.class != "Array") {
+ title = object.class + " ";
}
brackets = needSpace(false);
- } else {
- let max = maxLengthMap.get(mode);
- items = arrayIterator(props, object, max);
- brackets = needSpace(items.length > 0);
- }
+ return span({
+ "data-link-actor-id": object.actor,
+ className: "objectBox objectBox-array" }, title, span({
+ className: "arrayLeftBracket"
+ }, brackets.left), ellipsis, span({
+ className: "arrayRightBracket"
+ }, brackets.right));
+ }
+ let max = maxLengthMap.get(mode);
+ items = arrayIterator(props, object, max);
+ brackets = needSpace(items.length > 0);
let title = getTitle(props, object);
return span({
"data-link-actor-id": object.actor,
className: "objectBox objectBox-array" }, title, span({
className: "arrayLeftBracket"
}, brackets.left), ...interleaveCommas(items), span({
@@ -3411,17 +3425,17 @@ const dom = __webpack_require__(1);
const { span } = dom;
// Reps
const {
getGripType,
isGrip,
wrapRender
} = __webpack_require__(0);
-const { rep: StringRep } = __webpack_require__(7);
+const { rep: StringRep } = __webpack_require__(6);
/**
* Renders DOM attribute
*/
Attribute.propTypes = {
object: PropTypes.object.isRequired
};
@@ -3718,33 +3732,35 @@ const {
wrapRender
} = __webpack_require__(0);
const { MODE } = __webpack_require__(3);
const Svg = __webpack_require__(9);
const dom = __webpack_require__(1);
const { span } = dom;
+const IGNORED_SOURCE_URLS = ["debugger eval code"];
+
/**
* This component represents a template for Function objects.
*/
FunctionRep.propTypes = {
object: PropTypes.object.isRequired,
parameterNames: PropTypes.array,
onViewSourceInDebugger: PropTypes.func
};
function FunctionRep(props) {
let {
object: grip,
onViewSourceInDebugger
} = props;
let jumpToDefinitionButton;
- if (onViewSourceInDebugger && grip.location && grip.location.url) {
+ if (onViewSourceInDebugger && grip.location && grip.location.url && !IGNORED_SOURCE_URLS.includes(grip.location.url)) {
jumpToDefinitionButton = Svg("jump-definition", {
element: "a",
draggable: false,
title: "Jump to definition",
onClick: e => {
// Stop the event propagation so we don't trigger ObjectInspector expand/collapse.
e.stopPropagation();
onViewSourceInDebugger(grip.location);
@@ -4227,17 +4243,17 @@ module.exports = {
// ReactJS
const PropTypes = __webpack_require__(2);
// Utils
const {
isGrip,
wrapRender
} = __webpack_require__(0);
-const { rep: StringRep } = __webpack_require__(7);
+const { rep: StringRep } = __webpack_require__(6);
const { MODE } = __webpack_require__(3);
const nodeConstants = __webpack_require__(12);
const Svg = __webpack_require__(9);
const dom = __webpack_require__(1);
const { span } = dom;
/**
@@ -4631,40 +4647,44 @@ module.exports = {
const PropTypes = __webpack_require__(2);
// Reps
const {
isGrip,
wrapRender
} = __webpack_require__(0);
+const String = __webpack_require__(6).rep;
+
const dom = __webpack_require__(1);
const { span } = dom;
/**
* Renders a grip object with textual data.
*/
ObjectWithText.propTypes = {
object: PropTypes.object.isRequired
};
function ObjectWithText(props) {
let grip = props.object;
return span({
"data-link-actor-id": grip.actor,
- className: "objectBox objectBox-" + getType(grip)
- }, span({ className: "objectPropValue" }, getDescription(grip)));
+ className: "objectTitle objectBox objectBox-" + getType(grip)
+ }, getType(grip), " ", getDescription(grip));
}
function getType(grip) {
return grip.class;
}
function getDescription(grip) {
- return "\"" + grip.preview.text + "\"";
+ return String({
+ object: grip.preview.text
+ });
}
// Registration
function supportsObject(grip, noGrip = false) {
if (noGrip === true || !isGrip(grip)) {
return false;
}
@@ -4755,17 +4775,17 @@ var _devtoolsComponents = __webpack_requ
var _devtoolsComponents2 = _interopRequireDefault(_devtoolsComponents);
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/. */
-const { Component, createFactory } = __webpack_require__(6);
+const { Component, createFactory } = __webpack_require__(7);
const PropTypes = __webpack_require__(2);
const dom = __webpack_require__(1);
const Tree = createFactory(_devtoolsComponents2.default.Tree);
__webpack_require__(51);
const classnames = __webpack_require__(52);
@@ -5208,17 +5228,17 @@ exports.default = {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
-var _react = __webpack_require__(6);
+var _react = __webpack_require__(7);
var _react2 = _interopRequireDefault(_react);
var _reactDomFactories = __webpack_require__(1);
var _reactDomFactories2 = _interopRequireDefault(_reactDomFactories);
var _propTypes = __webpack_require__(2);