Skip to content

Commit 5261c1a

Browse files
committed
[css-typed-om] Drop CSSPositionValue from this level.
1 parent 106aefd commit 5261c1a

File tree

1 file changed

+0
-180
lines changed

1 file changed

+0
-180
lines changed

css-typed-om/Overview.bs

Lines changed: 0 additions & 180 deletions
Original file line numberDiff line numberDiff line change
@@ -641,7 +641,6 @@ probably in an appendix.
641641
(such as ''Auto'' matching the keyword ''auto'' specified in the grammar for 'width'),
642642
they apply to this comparison as well.
643643
* A {{CSSTransformValue}} matches <<transform-list>>.
644-
* A {{CSSPositionValue}} matches <<position>>.
645644
* A {{CSSNumericValue}} matches what its type [=CSSNumericValue/matches=].
646645
* A {{CSSURLImageValue}} matches <<url>>.
647646
* Any subclass of {{CSSImageValue}} matches <<image>>.
@@ -2302,21 +2301,6 @@ partial namespace CSS {
23022301
to avoid defining the unit individually for all ~20 functions.
23032302
</div>
23042303

2305-
<div class=example>
2306-
For example, rather than creating a new {{CSSPositionValue}} with code like:
2307-
2308-
<pre class=lang-js>
2309-
let pos = new CSSPositionValue(
2310-
new CSSUnitValue(5, "px"),
2311-
new CSSUnitValue(10, "px"));
2312-
</pre>
2313-
2314-
One can instead write:
2315-
2316-
<pre class=lang-js>
2317-
let pos = new CSSPositionValue(CSS.px(5), CSS.px(10));
2318-
</pre>
2319-
</div>
23202304

23212305
<!--
23222306
████████ ████████ ███ ██ ██ ██████ ████████ ███████ ████████ ██ ██
@@ -2787,86 +2771,6 @@ This list is the object's [=values to iterate over=].
27872771
respectively.
27882772
</div>
27892773

2790-
<!--
2791-
████████ ███████ ██████ ████ ████████ ████ ███████ ██ ██
2792-
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ███ ██
2793-
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ████ ██
2794-
████████ ██ ██ ██████ ██ ██ ██ ██ ██ ██ ██ ██
2795-
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ████
2796-
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ███
2797-
██ ███████ ██████ ████ ██ ████ ███████ ██ ██
2798-
-->
2799-
2800-
{{CSSPositionValue}} objects {#positionvalue-objects}
2801-
--------------------------------------------------
2802-
2803-
{{CSSPositionValue}} objects represent <<position>> values,
2804-
used by properties such as 'object-position'.
2805-
2806-
<pre class='idl'>
2807-
[Exposed=(Window, Worker, PaintWorklet, LayoutWorklet),
2808-
Constructor(CSSNumericValue x, CSSNumericValue y)]
2809-
interface CSSPositionValue : CSSStyleValue {
2810-
attribute CSSNumericValue x;
2811-
attribute CSSNumericValue y;
2812-
};
2813-
</pre>
2814-
2815-
The {{CSSPositionValue/x}} attribute expresses the offset from the left edge of the container;
2816-
{{CSSPositionValue/y}} expresses the offset from the top edge of the container.
2817-
2818-
<div algorithm>
2819-
The <dfn constructor for=CSSPositionValue>CSSPositionValue(|x|, |y|)</dfn> constructor must,
2820-
when called,
2821-
perform the following steps:
2822-
2823-
1. If |x| or |y| doesn't [=CSSNumericValue/match=] <<length-percentage>>,
2824-
[=throw=] a {{TypeError}}.
2825-
2826-
2. Otherwise, return a new {{CSSPositionValue}}
2827-
whose {{CSSPositionValue/x}} internal slot is set to |x|,
2828-
and whose {{CSSPositionValue/y}} internal slot is set to |y|.
2829-
</div>
2830-
2831-
<div algorithm="CSSPositionValue.x">
2832-
The <dfn attribute for=CSSPositionValue>x</dfn> and <dfn attribute for=CSSPositionValue>y</dfn> attribute of a {{CSSPositionValue}} |this| must,
2833-
on setting a value |value|,
2834-
perform the following steps:
2835-
2836-
1. If |value| doesn't [=CSSNumericValue/match=] <<length-percentage>>,
2837-
[=throw=] a {{TypeError}}.
2838-
2839-
2. Otherwise, set |this|’s {{CSSPositionValue/x}} or {{CSSPositionValue/y}} internal slot,
2840-
as appropriate,
2841-
to |value|.
2842-
2843-
On reading, the attributes must return the value of the {{CSSPositionValue/x}} or {{CSSPositionValue/y}} internal slot,
2844-
as appropriate.
2845-
</div>
2846-
2847-
<div class='example'>
2848-
<<position>> values accept a complicated combination of keywords and values,
2849-
but Typed OM always simplifies to just two offsets as per the [[#reify-position]] algorithm.
2850-
For example, the following style sheet:
2851-
2852-
<pre class='lang-css'>
2853-
.example {
2854-
object-position: center bottom 10px;
2855-
}
2856-
</pre>
2857-
2858-
Will produce the following behavior:
2859-
2860-
<pre class='lang-javascript'>
2861-
let map = document.querySelector('.example').computedStyleMap();
2862-
2863-
map.get('object-position').x;
2864-
// CSS.percent(50)
2865-
2866-
map.get('object-position').y;
2867-
// CSSMathSum(CSS.percent(100), CSS.px(-10))
2868-
</pre>
2869-
</div>
28702774

28712775
<!--
28722776
████ ██ ██ ███ ██████ ████████
@@ -5064,79 +4968,6 @@ while CSS <<transform-function>> values become {{CSSTransformComponent}}s.
50644968
</dl>
50654969
</div>
50664970

5067-
<<position>> Values {#reify-position}
5068-
-----------------------------------------------
5069-
5070-
CSS <<position>> values become {{CSSPositionValue}}s in the Typed OM, with <var>x</var> and <var>y</var>
5071-
components determined via the following process. If this process, or any sub-process referenced by this
5072-
process fails, then reification as a whole fails.
5073-
5074-
1. Initialize both <var>x</var> and <var>y</var> to a {{CSSNumericValue}} value representing 50%.
5075-
1. If the provided value is a single keyword, length, percentage, or calc expression, then follow
5076-
the procedure outlined in [[#from-single-keyword]] with <var>value</var> given
5077-
by the provided value and an auto <var>bias</var>.
5078-
1. Otherwise, if the provided value consists of a combination of two keywords, then:
5079-
5080-
1. follow the procedure outlined in [[#from-single-keyword]] with <var>value</var> given by the
5081-
first keyword and an auto <var>bias</var>.
5082-
1. if <var>bias</var> is horizontal, set it to vertical. Otherwise, set it to horizontal.
5083-
1. follow the procedure again with <var>value</var> given by the second keyword, using the existing <var>bias</var>.
5084-
5085-
1. Otherwise, if the provided value consists of a combination of two keywords, lengths, percentages, and
5086-
calc expressions, then follow the procedure outlined in [[#from-single-keyword]] with
5087-
<var>value</var> given by the first part of the provided value and a horizontal <var>bias</var>, then follow the
5088-
procedure again with <var>value</var> given by the second part of the provided value and a vertical <var>bias</var>.
5089-
1. Otherwise:
5090-
5091-
1. if the provided value starts with a keyword followed by a length, percentage, or calc expression, then follow
5092-
the procedure outlined in [[#from-keyword-and-length]] with <var>keyword</var> set to the
5093-
keyword, <var>length</var> set to the length, percentage, or calc expression, and auto <var>bias</var>.
5094-
1. otherwise, follow the procedure outlined in [[#from-single-keyword]] with <var>value</var>
5095-
set to the first component of the provided value and an auto <var>bias</var>.
5096-
1. if <var>bias</var> is horizontal, set it to vertical. Otherwise, set it to horizontal.
5097-
1. if the remainder of the provided value is a single keyword, length, percentage or calc expression, follow
5098-
the procedure outlined in
5099-
[[#from-single-keyword]] with <var>value</var> set to the keyword and the existing
5100-
<var>bias</var>.
5101-
1. otherwise, if the remainder of the provided value consists of a keyword followed by a length, percentage or
5102-
calc expression, follow the procedure outlined in [[#from-keyword-and-length]] with
5103-
<var>keyword</var> set to the keyword, <var>length</var> set to the length, percentage, or calc expression, and
5104-
the existing <var>bias</var>.
5105-
1. Otherwise, the process fails.
5106-
5107-
<h4 id='from-single-keyword'>Determining <var>x</var> or <var>y</var> from a single value</h4>
5108-
5109-
The following process sets a value for either <var>x</var> or <var>y</var>, depending on an input <var>value</var>
5110-
and <var>bias</var>. The process also updates <var>bias</var> based on the <var>value</var>.
5111-
5112-
1. If <var>value</var> is the keyword "left" and <var>bias</var> is not vertical, then set <var>x</var> to a
5113-
{{CSSNumericValue}} value representing 0% and <var>bias</var> to horizontal and exit this process.
5114-
1. If <var>value</var> is the keyword "right" and <var>bias</var> is not vertical, then set <var>x</var> to a
5115-
{{CSSNumericValue}} value representing 100% and <var>bias</var> to horizontal and exit this process.
5116-
1. If <var>value</var> is the keyword "top" and <var>bias</var> is not horizontal, then set <var>y</var> to a
5117-
{{CSSNumericValue}} value representing 0% and <var>bias</var> to vertical and exit this process.
5118-
1. If <var>value</var> is the keyword "bottom" and <var>bias</var> is not horizontal, then set <var>y</var> to a
5119-
{{CSSNumericValue}} value representing 100% and <var>bias</var> to vertical and exit this process.
5120-
1. If <var>value</var> [=CSSNumericValue/matches=] the <<length-percentage>> production, then set <var>norm</var> to the result of
5121-
[=reify a numeric value|reifying |value| as a numeric value=]. If <var>bias</var> is vertical,
5122-
set <var>y</var> to <var>norm</var>, otherwise set <var>x</var> to <var>norm</var> and <var>bias</var> to
5123-
horizontal. Exit this process.
5124-
1. If <var>value</var> is not the keyword "center", then this process fails.
5125-
5126-
<h4 id='from-keyword-and-length'>Determining <var>x</var> or <var>y</var> from a keyword and a length</h4>
5127-
5128-
The following process sets a value for either <var>x</var> or<var>y</var>, depending on an input <var>keyword</var>,
5129-
<var>length</var>, and <var>bias</var>. The process also updates <var>bias</var> based on the <var>keyword</var> and
5130-
<var>length</var>.
5131-
5132-
1. Follow the procedure outlined in [[#from-single-keyword]] with <var>value</var> given by
5133-
<var>keyword</var>, using the provided <var>bias</var>
5134-
1. Let <var>adjustment</var> be the result of
5135-
[=reify a numeric value|reifying |length| as a numeric value=].
5136-
1. If the keyword is "right" or "bottom", let <var>adjustment</var> be the result of subtracting
5137-
<var>adjustment</var> from a zero length.
5138-
1. Amend <var>x</var> (if <var>bias</var> is horizontal) or <var>y</var> (if <var>bias</var> is vertical) by
5139-
adding <var>adjustment</var> to it.
51404971

51414972
<<url>> (and subtype) Values {#reify-url}
51424973
--------------------------------------------------------------
@@ -5580,17 +5411,6 @@ length3.toString(); // "42px";
55805411
</div>
55815412

55825413

5583-
{{CSSPositionValue}} Serialization {#positionvalue-serialization}
5584-
-----------------------------------------------------------------
5585-
5586-
{{CSSPositionValue}} objects are serialized by:
5587-
* serializing the {{CSSPositionValue/x}} attribute according to
5588-
the rules for {{CSSNumericValue}} objects above.
5589-
* serializing the {{CSSPositionValue/y}} attribute according to
5590-
the rules for {{CSSNumericValue}} objects above.
5591-
* returning the concatenation of the two serializations (x before y), separated
5592-
by a space.
5593-
55945414
{{CSSURLImageValue}} Serialization {#urlimagevalue-serialization}
55955415
-----------------------------------------------------------
55965416

0 commit comments

Comments
 (0)