Source code

Revision control

Copy as Markdown

Other Tools

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
const {
safeAsyncMethod,
} = require("resource://devtools/shared/async-utils.js");
const {
FrontClassWithSpec,
registerFront,
} = require("resource://devtools/shared/protocol.js");
const {
flexboxSpec,
flexItemSpec,
gridSpec,
layoutSpec,
} = require("resource://devtools/shared/specs/layout.js");
class FlexboxFront extends FrontClassWithSpec(flexboxSpec) {
form(form) {
this._form = form;
}
/**
* In some cases, the FlexboxActor already knows the NodeActor ID of the node where the
* flexbox is located. In such cases, this getter returns the NodeFront for it.
*/
get containerNodeFront() {
if (!this._form.containerNodeActorID) {
return null;
}
return this.conn.getFrontByID(this._form.containerNodeActorID);
}
/**
* Get the WalkerFront instance that owns this FlexboxFront.
*/
get walkerFront() {
return this.parentFront.walkerFront;
}
/**
* Get the computed style properties for the flex container.
*/
get properties() {
return this._form.properties;
}
}
class FlexItemFront extends FrontClassWithSpec(flexItemSpec) {
form(form) {
this._form = form;
}
/**
* Get the flex item sizing data.
*/
get flexItemSizing() {
return this._form.flexItemSizing;
}
/**
* In some cases, the FlexItemActor already knows the NodeActor ID of the node where the
* flex item is located. In such cases, this getter returns the NodeFront for it.
*/
get nodeFront() {
if (!this._form.nodeActorID) {
return null;
}
return this.conn.getFrontByID(this._form.nodeActorID);
}
/**
* Get the WalkerFront instance that owns this FlexItemFront.
*/
get walkerFront() {
return this.parentFront.walkerFront;
}
/**
* Get the computed style properties for the flex item.
*/
get computedStyle() {
return this._form.computedStyle;
}
/**
* Get the style properties for the flex item.
*/
get properties() {
return this._form.properties;
}
}
class GridFront extends FrontClassWithSpec(gridSpec) {
form(form) {
this._form = form;
}
/**
* In some cases, the GridActor already knows the NodeActor ID of the node where the
* grid is located. In such cases, this getter returns the NodeFront for it.
*/
get containerNodeFront() {
if (!this._form.containerNodeActorID) {
return null;
}
return this.conn.getFrontByID(this._form.containerNodeActorID);
}
/**
* Get the WalkerFront instance that owns this GridFront.
*/
get walkerFront() {
return this.parentFront.walkerFront;
}
/**
* Get the text direction of the grid container.
*/
get direction() {
return this._form.direction;
}
/**
* Getter for the grid fragments data.
*/
get gridFragments() {
return this._form.gridFragments;
}
/**
* Get whether or not the grid is a subgrid.
*/
get isSubgrid() {
return !!this._form.isSubgrid;
}
/**
* Get the writing mode of the grid container.
*/
get writingMode() {
return this._form.writingMode;
}
}
class LayoutFront extends FrontClassWithSpec(layoutSpec) {
constructor(client, targetFront, parentFront) {
super(client, targetFront, parentFront);
this.getAllGrids = safeAsyncMethod(
this.getAllGrids.bind(this),
() => this.isDestroyed(),
[]
);
}
/**
* Get the WalkerFront instance that owns this LayoutFront.
*/
get walkerFront() {
return this.parentFront;
}
getAllGrids() {
if (!this.walkerFront.rootNode) {
return [];
}
return this.getGrids(this.walkerFront.rootNode);
}
}
exports.FlexboxFront = FlexboxFront;
registerFront(FlexboxFront);
exports.FlexItemFront = FlexItemFront;
registerFront(FlexItemFront);
exports.GridFront = GridFront;
registerFront(GridFront);
exports.LayoutFront = LayoutFront;
registerFront(LayoutFront);