UNPKG

@benmalka/foxdriver

Version:

Foxdriver is a Node library which provides a high-level API to control Firefox over the Remote Debugging Protocol

119 lines (104 loc) 9.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _actor = require("../actor"); var _actor2 = _interopRequireDefault(_actor); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * The Highlighter is the server-side entry points for any tool that wishes to * highlight elements in some way in the content document. * * A little bit of vocabulary: * - <something>HighlighterActor classes are the actors that can be used from * the client. They do very little else than instantiate a given * <something>Highlighter and use it to highlight elements. * - <something>Highlighter classes aren't actors, they're just JS classes that * know how to create and attach the actual highlighter elements on top of the * content * * The most used highlighter actor is the HighlighterActor which can be * conveniently retrieved via the InspectorActor's 'getHighlighter' method. * The InspectorActor will always return the same instance of * HighlighterActor if asked several times and this instance is used in the * toolbox to highlighter elements's box-model from the markup-view, * box model view, console, debugger, ... as well as select elements with the * pointer (pick). * * Other types of highlighter actors exist and can be accessed via the * InspectorActor's 'getHighlighterByType' method. */ class Highlighter extends _actor2.default { /** * Display the box model highlighting on a given NodeActor. * There is only one instance of the box model highlighter, so calling this * method several times won't display several highlighters, it will just move * the highlighter instance to these nodes. * * @param {NodeActor} node * The node to be highlighted * @param {Object} region * region of box model * @param {Boolean} hideInfoBar * true if to hide info bar * @param {Boolean} hideGuides * true if to hide guides * @param {Boolean} showOnly * true if show only * @param {Boolean} onlyRegionArea * true if only region area * @return {Promise} request response */ showBoxModel(node, region, hideInfoBar, hideGuides, showOnly, onlyRegionArea) { return this.request('showBoxModel', { node, region, hideInfoBar, hideGuides, showOnly, onlyRegionArea }); } /** * Hide the box model highlighting if it was shown before * * @return {Promise} request response */ hideBoxModel() { return this.request('hideBoxModel'); } /** * Pick a node on click, and highlight hovered nodes in the process. * * This method doesn't respond anything interesting, however, it starts * mousemove, and click listeners on the content document to fire * events and let connected clients know when nodes are hovered over or * clicked. * * Once a node is picked, events will cease, and listeners will be removed. * * @return {Promise} request response */ pick() { return this.request('pick'); } /** * This pick method also focuses the highlighter's target window. * * @return {Promise} request response */ pickAndFocus() { return this.request('pickAndFocus'); } /** * cancel current pick * * @return {Promise} request response */ cancelPick() { return this.request('cancelPick'); } } exports.default = Highlighter; module.exports = exports["default"]; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9tb2RlbHMvaGlnaGxpZ2h0ZXIuanMiXSwibmFtZXMiOlsiSGlnaGxpZ2h0ZXIiLCJBY3RvciIsInNob3dCb3hNb2RlbCIsIm5vZGUiLCJyZWdpb24iLCJoaWRlSW5mb0JhciIsImhpZGVHdWlkZXMiLCJzaG93T25seSIsIm9ubHlSZWdpb25BcmVhIiwicmVxdWVzdCIsImhpZGVCb3hNb2RlbCIsInBpY2siLCJwaWNrQW5kRm9jdXMiLCJjYW5jZWxQaWNrIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdUJlLE1BQU1BLFdBQU4sU0FBMEJDLGVBQTFCLENBQWdDO0FBQzNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQUMsRUFBQUEsWUFBWSxDQUFFQyxJQUFGLEVBQVFDLE1BQVIsRUFBZ0JDLFdBQWhCLEVBQTZCQyxVQUE3QixFQUF5Q0MsUUFBekMsRUFBbURDLGNBQW5ELEVBQW1FO0FBQzNFLFdBQU8sS0FBS0MsT0FBTCxDQUFhLGNBQWIsRUFBNkI7QUFDaENOLE1BQUFBLElBRGdDO0FBQzFCQyxNQUFBQSxNQUQwQjtBQUNsQkMsTUFBQUEsV0FEa0I7QUFDTEMsTUFBQUEsVUFESztBQUNPQyxNQUFBQSxRQURQO0FBQ2lCQyxNQUFBQTtBQURqQixLQUE3QixDQUFQO0FBR0g7QUFFRDs7Ozs7OztBQUtBRSxFQUFBQSxZQUFZLEdBQUk7QUFDWixXQUFPLEtBQUtELE9BQUwsQ0FBYSxjQUFiLENBQVA7QUFDSDtBQUVEOzs7Ozs7Ozs7Ozs7OztBQVlBRSxFQUFBQSxJQUFJLEdBQUk7QUFDSixXQUFPLEtBQUtGLE9BQUwsQ0FBYSxNQUFiLENBQVA7QUFDSDtBQUVEOzs7Ozs7O0FBS0FHLEVBQUFBLFlBQVksR0FBSTtBQUNaLFdBQU8sS0FBS0gsT0FBTCxDQUFhLGNBQWIsQ0FBUDtBQUNIO0FBRUQ7Ozs7Ozs7QUFLQUksRUFBQUEsVUFBVSxHQUFJO0FBQ1YsV0FBTyxLQUFLSixPQUFMLENBQWEsWUFBYixDQUFQO0FBQ0g7O0FBcEUwQzs7a0JBQTFCVCxXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEFjdG9yIGZyb20gJy4uL2FjdG9yJ1xyXG5cclxuLyoqXHJcbiAqIFRoZSBIaWdobGlnaHRlciBpcyB0aGUgc2VydmVyLXNpZGUgZW50cnkgcG9pbnRzIGZvciBhbnkgdG9vbCB0aGF0IHdpc2hlcyB0b1xyXG4gKiBoaWdobGlnaHQgZWxlbWVudHMgaW4gc29tZSB3YXkgaW4gdGhlIGNvbnRlbnQgZG9jdW1lbnQuXHJcbiAqXHJcbiAqIEEgbGl0dGxlIGJpdCBvZiB2b2NhYnVsYXJ5OlxyXG4gKiAtIDxzb21ldGhpbmc+SGlnaGxpZ2h0ZXJBY3RvciBjbGFzc2VzIGFyZSB0aGUgYWN0b3JzIHRoYXQgY2FuIGJlIHVzZWQgZnJvbVxyXG4gKiAgIHRoZSBjbGllbnQuIFRoZXkgZG8gdmVyeSBsaXR0bGUgZWxzZSB0aGFuIGluc3RhbnRpYXRlIGEgZ2l2ZW5cclxuICogICA8c29tZXRoaW5nPkhpZ2hsaWdodGVyIGFuZCB1c2UgaXQgdG8gaGlnaGxpZ2h0IGVsZW1lbnRzLlxyXG4gKiAtIDxzb21ldGhpbmc+SGlnaGxpZ2h0ZXIgY2xhc3NlcyBhcmVuJ3QgYWN0b3JzLCB0aGV5J3JlIGp1c3QgSlMgY2xhc3NlcyB0aGF0XHJcbiAqICAga25vdyBob3cgdG8gY3JlYXRlIGFuZCBhdHRhY2ggdGhlIGFjdHVhbCBoaWdobGlnaHRlciBlbGVtZW50cyBvbiB0b3Agb2YgdGhlXHJcbiAqICAgY29udGVudFxyXG4gKlxyXG4gKiBUaGUgbW9zdCB1c2VkIGhpZ2hsaWdodGVyIGFjdG9yIGlzIHRoZSBIaWdobGlnaHRlckFjdG9yIHdoaWNoIGNhbiBiZVxyXG4gKiBjb252ZW5pZW50bHkgcmV0cmlldmVkIHZpYSB0aGUgSW5zcGVjdG9yQWN0b3IncyAnZ2V0SGlnaGxpZ2h0ZXInIG1ldGhvZC5cclxuICogVGhlIEluc3BlY3RvckFjdG9yIHdpbGwgYWx3YXlzIHJldHVybiB0aGUgc2FtZSBpbnN0YW5jZSBvZlxyXG4gKiBIaWdobGlnaHRlckFjdG9yIGlmIGFza2VkIHNldmVyYWwgdGltZXMgYW5kIHRoaXMgaW5zdGFuY2UgaXMgdXNlZCBpbiB0aGVcclxuICogdG9vbGJveCB0byBoaWdobGlnaHRlciBlbGVtZW50cydzIGJveC1tb2RlbCBmcm9tIHRoZSBtYXJrdXAtdmlldyxcclxuICogYm94IG1vZGVsIHZpZXcsIGNvbnNvbGUsIGRlYnVnZ2VyLCAuLi4gYXMgd2VsbCBhcyBzZWxlY3QgZWxlbWVudHMgd2l0aCB0aGVcclxuICogcG9pbnRlciAocGljaykuXHJcbiAqXHJcbiAqIE90aGVyIHR5cGVzIG9mIGhpZ2hsaWdodGVyIGFjdG9ycyBleGlzdCBhbmQgY2FuIGJlIGFjY2Vzc2VkIHZpYSB0aGVcclxuICogSW5zcGVjdG9yQWN0b3IncyAnZ2V0SGlnaGxpZ2h0ZXJCeVR5cGUnIG1ldGhvZC5cclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEhpZ2hsaWdodGVyIGV4dGVuZHMgQWN0b3Ige1xyXG4gICAgLyoqXHJcbiAgICAgKiBEaXNwbGF5IHRoZSBib3ggbW9kZWwgaGlnaGxpZ2h0aW5nIG9uIGEgZ2l2ZW4gTm9kZUFjdG9yLlxyXG4gICAgICogVGhlcmUgaXMgb25seSBvbmUgaW5zdGFuY2Ugb2YgdGhlIGJveCBtb2RlbCBoaWdobGlnaHRlciwgc28gY2FsbGluZyB0aGlzXHJcbiAgICAgKiBtZXRob2Qgc2V2ZXJhbCB0aW1lcyB3b24ndCBkaXNwbGF5IHNldmVyYWwgaGlnaGxpZ2h0ZXJzLCBpdCB3aWxsIGp1c3QgbW92ZVxyXG4gICAgICogdGhlIGhpZ2hsaWdodGVyIGluc3RhbmNlIHRvIHRoZXNlIG5vZGVzLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7Tm9kZUFjdG9yfSBub2RlXHJcbiAgICAgKiAgICAgICAgVGhlIG5vZGUgdG8gYmUgaGlnaGxpZ2h0ZWRcclxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSAgICByZWdpb25cclxuICAgICAqICAgICAgICByZWdpb24gb2YgYm94IG1vZGVsXHJcbiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59ICAgaGlkZUluZm9CYXJcclxuICAgICAqICAgICAgICB0cnVlIGlmIHRvIGhpZGUgaW5mbyBiYXJcclxuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gICBoaWRlR3VpZGVzXHJcbiAgICAgKiAgICAgICAgdHJ1ZSBpZiB0byBoaWRlIGd1aWRlc1xyXG4gICAgICogQHBhcmFtIHtCb29sZWFufSAgIHNob3dPbmx5XHJcbiAgICAgKiAgICAgICAgdHJ1ZSBpZiBzaG93IG9ubHlcclxuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gICBvbmx5UmVnaW9uQXJlYVxyXG4gICAgICogICAgICAgIHRydWUgaWYgb25seSByZWdpb24gYXJlYVxyXG4gICAgICogQHJldHVybiB7UHJvbWlzZX0gIHJlcXVlc3QgcmVzcG9uc2VcclxuICAgICAqL1xyXG4gICAgc2hvd0JveE1vZGVsIChub2RlLCByZWdpb24sIGhpZGVJbmZvQmFyLCBoaWRlR3VpZGVzLCBzaG93T25seSwgb25seVJlZ2lvbkFyZWEpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KCdzaG93Qm94TW9kZWwnLCB7XHJcbiAgICAgICAgICAgIG5vZGUsIHJlZ2lvbiwgaGlkZUluZm9CYXIsIGhpZGVHdWlkZXMsIHNob3dPbmx5LCBvbmx5UmVnaW9uQXJlYVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIaWRlIHRoZSBib3ggbW9kZWwgaGlnaGxpZ2h0aW5nIGlmIGl0IHdhcyBzaG93biBiZWZvcmVcclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlfSAgcmVxdWVzdCByZXNwb25zZVxyXG4gICAgICovXHJcbiAgICBoaWRlQm94TW9kZWwgKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJlcXVlc3QoJ2hpZGVCb3hNb2RlbCcpXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQaWNrIGEgbm9kZSBvbiBjbGljaywgYW5kIGhpZ2hsaWdodCBob3ZlcmVkIG5vZGVzIGluIHRoZSBwcm9jZXNzLlxyXG4gICAgICpcclxuICAgICAqIFRoaXMgbWV0aG9kIGRvZXNuJ3QgcmVzcG9uZCBhbnl0aGluZyBpbnRlcmVzdGluZywgaG93ZXZlciwgaXQgc3RhcnRzXHJcbiAgICAgKiBtb3VzZW1vdmUsIGFuZCBjbGljayBsaXN0ZW5lcnMgb24gdGhlIGNvbnRlbnQgZG9jdW1lbnQgdG8gZmlyZVxyXG4gICAgICogZXZlbnRzIGFuZCBsZXQgY29ubmVjdGVkIGNsaWVudHMga25vdyB3aGVuIG5vZGVzIGFyZSBob3ZlcmVkIG92ZXIgb3JcclxuICAgICAqIGNsaWNrZWQuXHJcbiAgICAgKlxyXG4gICAgICogT25jZSBhIG5vZGUgaXMgcGlja2VkLCBldmVudHMgd2lsbCBjZWFzZSwgYW5kIGxpc3RlbmVycyB3aWxsIGJlIHJlbW92ZWQuXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybiB7UHJvbWlzZX0gIHJlcXVlc3QgcmVzcG9uc2VcclxuICAgICAqL1xyXG4gICAgcGljayAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdCgncGljaycpXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIHBpY2sgbWV0aG9kIGFsc28gZm9jdXNlcyB0aGUgaGlnaGxpZ2h0ZXIncyB0YXJnZXQgd2luZG93LlxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm4ge1Byb21pc2V9ICByZXF1ZXN0IHJlc3BvbnNlXHJcbiAgICAgKi9cclxuICAgIHBpY2tBbmRGb2N1cyAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdCgncGlja0FuZEZvY3VzJylcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGNhbmNlbCBjdXJyZW50IHBpY2tcclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlfSAgcmVxdWVzdCByZXNwb25zZVxyXG4gICAgICovXHJcbiAgICBjYW5jZWxQaWNrICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KCdjYW5jZWxQaWNrJylcclxuICAgIH1cclxufVxyXG4iXX0=