summaryrefslogtreecommitdiffstats
path: root/dom/webidl/Grid.webidl
blob: 0bd5525b03003b6465bbcad01ddc312ff384ad10 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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/.
 */

/* These objects support visualization of a css-grid by the dev tools. */

/**
 * Explicit and implicit types apply to tracks, lines, and areas.
 * https://drafts.csswg.org/css-grid/#explicit-grids
 * https://drafts.csswg.org/css-grid/#implicit-grids
 */
enum GridDeclaration { "explicit", "implicit" };

/**
 * Tracks expanded from auto-fill are repeat , auto-fits with elements are
 * also repeat, auto-fits with no elements are removed, other tracks are static.
 */
enum GridTrackState { "static", "repeat", "removed" };

[ChromeOnly,
 Exposed=Window]
interface Grid
{
  readonly attribute GridDimension rows;
  readonly attribute GridDimension cols;
  [Cached, Constant]
  readonly attribute sequence<GridArea> areas;
};

[ChromeOnly,
 Exposed=Window]
interface GridDimension
{
  readonly attribute GridLines lines;
  readonly attribute GridTracks tracks;
};

[ChromeOnly,
 Exposed=Window]
interface GridLines
{
  readonly attribute unsigned long length;

  /**
   * This accessor method allows array-like access to lines.
   * @param index A 0-indexed value.
   */
  getter GridLine? item(unsigned long index);
};

[ChromeOnly,
 Exposed=Window]
interface GridLine
{
  /**
   * Names include both explicit names and implicit names, which will be
   * assigned if the line contributes to a named area.
   * https://drafts.csswg.org/css-grid/#implicit-named-lines
   */
  [Cached, Constant]
  readonly attribute sequence<DOMString> names;

  readonly attribute double start;

  /**
   * Breadth is the gap between the start of this line and the start of the
   * next track in flow direction. It primarily is set by use of the -gap
   * properties.
   * https://drafts.csswg.org/css-grid/#gutters
   */
  readonly attribute double breadth;

  readonly attribute GridDeclaration type;

  /**
   * Number is the 1-indexed index of the line in flow order. The
   * first explicit line has number 1, and numbers increment by 1 for
   * each line after that. Lines before the first explicit line
   * have number 0, which is not a valid addressable line number, and
   * should be filtered out by callers.
   */
  readonly attribute unsigned long number;

  /**
   * NegativeNumber is the 1-indexed index of the line in reverse
   * flow order. The last explicit line has negativeNumber -1, and
   * negativeNumbers decrement by 1 for each line before that.
   * Lines after the last explicit line have negativeNumber 0, which
   * is not a valid addressable line number, and should be filtered
   * out by callers.
   */
  readonly attribute long negativeNumber;
};

[ChromeOnly,
 Exposed=Window]
interface GridTracks
{
  readonly attribute unsigned long length;

  /**
   * This accessor method allows array-like access to tracks.
   * @param index A 0-indexed value.
   */
  getter GridTrack? item(unsigned long index);
};

[ChromeOnly,
 Exposed=Window]
interface GridTrack
{
  readonly attribute double start;
  readonly attribute double breadth;
  readonly attribute GridDeclaration type;
  readonly attribute GridTrackState state;
};

[ChromeOnly,
 Exposed=Window]
interface GridArea
{
  readonly attribute DOMString name;
  readonly attribute GridDeclaration type;

  /**
   * These values are 1-indexed line numbers bounding the area.
   */
  readonly attribute unsigned long rowStart;
  readonly attribute unsigned long rowEnd;
  readonly attribute unsigned long columnStart;
  readonly attribute unsigned long columnEnd;
};