box.mako.rs (17386B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ 4 5 <%namespace name="helpers" file="/helpers.mako.rs" /> 6 <% from data import ALL_AXES %> 7 8 ${helpers.predefined_type( 9 "display", 10 "Display", 11 "computed::Display::inline()", 12 engines="gecko servo", 13 initial_specified_value="specified::Display::inline()", 14 animation_type="discrete", 15 spec="https://drafts.csswg.org/css-display/#propdef-display", 16 servo_restyle_damage="rebuild_box", 17 affects="layout", 18 )} 19 20 ${helpers.single_keyword( 21 "-moz-top-layer", 22 "none auto", 23 engines="gecko", 24 gecko_enum_prefix="StyleTopLayer", 25 gecko_ffi_name="mTopLayer", 26 animation_type="discrete", 27 enabled_in="ua", 28 spec="Internal (not web-exposed)", 29 affects="layout", 30 )} 31 32 // An internal-only property for elements in a top layer 33 // https://fullscreen.spec.whatwg.org/#top-layer 34 ${helpers.single_keyword( 35 "-servo-top-layer", 36 "none top", 37 engines="servo", 38 animation_type="none", 39 enabled_in="ua", 40 spec="Internal (not web-exposed)", 41 affects="layout", 42 )} 43 44 ${helpers.predefined_type( 45 "position", 46 "PositionProperty", 47 "computed::PositionProperty::Static", 48 engines="gecko servo", 49 initial_specified_value="specified::PositionProperty::Static", 50 animation_type="discrete", 51 spec="https://drafts.csswg.org/css-position/#position-property", 52 servo_restyle_damage="rebuild_box", 53 affects="layout", 54 )} 55 56 // Changes do not invalidate our element. We handle notify/invalidating 57 // elements that reference anchor-name elsewhere. 58 ${helpers.predefined_type( 59 "anchor-name", 60 "AnchorName", 61 "computed::AnchorName::none()", 62 engines="gecko", 63 animation_type="discrete", 64 gecko_pref="layout.css.anchor-positioning.enabled", 65 spec="https://drafts.csswg.org/css-anchor-position-1/#propdef-anchor-name", 66 affects="", 67 )} 68 69 // Changes do not invalidate our element. We handle notify/invalidating 70 // any affected descendants elsewhere. 71 ${helpers.predefined_type( 72 "anchor-scope", 73 "AnchorScope", 74 "computed::AnchorScope::none()", 75 engines="gecko", 76 animation_type="discrete", 77 gecko_pref="layout.css.anchor-positioning.enabled", 78 spec="https://drafts.csswg.org/css-anchor-position-1/#propdef-scope", 79 affects="", 80 )} 81 82 ${helpers.predefined_type( 83 "float", 84 "Float", 85 "computed::Float::None", 86 engines="gecko servo", 87 animation_type="discrete", 88 spec="https://drafts.csswg.org/css-box/#propdef-float", 89 servo_restyle_damage="rebuild_box", 90 affects="layout", 91 )} 92 93 ${helpers.predefined_type( 94 "clear", 95 "Clear", 96 "computed::Clear::None", 97 engines="gecko servo", 98 animation_type="discrete", 99 spec="https://drafts.csswg.org/css2/#propdef-clear", 100 servo_restyle_damage="rebuild_box", 101 affects="layout", 102 )} 103 104 ${helpers.predefined_type( 105 "vertical-align", 106 "VerticalAlign", 107 "computed::VerticalAlign::baseline()", 108 engines="gecko servo", 109 spec="https://www.w3.org/TR/CSS2/visudet.html#propdef-vertical-align", 110 servo_restyle_damage = "rebuild_box", 111 affects="layout", 112 )} 113 114 ${helpers.predefined_type( 115 "baseline-source", 116 "BaselineSource", 117 "computed::BaselineSource::Auto", 118 engines="gecko servo", 119 animation_type="discrete", 120 spec="https://drafts.csswg.org/css-inline-3/#baseline-source", 121 servo_restyle_damage = "rebuild_box", 122 affects="layout", 123 )} 124 125 // CSS 2.1, Section 11 - Visual effects 126 127 ${helpers.single_keyword( 128 "-servo-overflow-clip-box", 129 "padding-box content-box", 130 engines="servo", 131 animation_type="none", 132 enabled_in="ua", 133 spec="Internal, not web-exposed, \ 134 may be standardized in the future (https://developer.mozilla.org/en-US/docs/Web/CSS/overflow-clip-box)", 135 affects="layout", 136 )} 137 138 % for (axis, logical) in ALL_AXES: 139 <% full_name = "overflow-{}".format(axis) %> 140 ${helpers.predefined_type( 141 full_name, 142 "Overflow", 143 "computed::Overflow::Visible", 144 engines="gecko servo", 145 logical_group="overflow", 146 logical=logical, 147 animation_type="discrete", 148 spec="https://drafts.csswg.org/css-overflow-3/#propdef-{}".format(full_name), 149 servo_restyle_damage = "rebuild_box", 150 affects="layout", 151 )} 152 % endfor 153 154 ${helpers.predefined_type( 155 "overflow-anchor", 156 "OverflowAnchor", 157 "computed::OverflowAnchor::Auto", 158 engines="gecko", 159 initial_specified_value="specified::OverflowAnchor::Auto", 160 gecko_pref="layout.css.scroll-anchoring.enabled", 161 spec="https://drafts.csswg.org/css-scroll-anchoring/#exclusion-api", 162 animation_type="discrete", 163 affects="", 164 )} 165 166 <% transform_extra_prefixes = "moz:layout.css.prefixes.transforms webkit" %> 167 168 ${helpers.predefined_type( 169 "transform", 170 "Transform", 171 "generics::transform::Transform::none()", 172 engines="gecko servo", 173 extra_prefixes="moz:layout.css.prefixes.transforms", 174 flags="CAN_ANIMATE_ON_COMPOSITOR", 175 spec="https://drafts.csswg.org/css-transforms/#propdef-transform", 176 servo_restyle_damage="recalculate_overflow", 177 affects="overflow", 178 )} 179 180 ${helpers.predefined_type( 181 "rotate", 182 "Rotate", 183 "generics::transform::Rotate::None", 184 engines="gecko servo", 185 boxed=True, 186 flags="CAN_ANIMATE_ON_COMPOSITOR", 187 spec="https://drafts.csswg.org/css-transforms-2/#individual-transforms", 188 servo_restyle_damage = "recalculate_overflow", 189 affects="overflow", 190 )} 191 192 ${helpers.predefined_type( 193 "scale", 194 "Scale", 195 "generics::transform::Scale::None", 196 engines="gecko servo", 197 boxed=True, 198 flags="CAN_ANIMATE_ON_COMPOSITOR", 199 spec="https://drafts.csswg.org/css-transforms-2/#individual-transforms", 200 servo_restyle_damage = "recalculate_overflow", 201 affects="overflow", 202 )} 203 204 ${helpers.predefined_type( 205 "translate", 206 "Translate", 207 "generics::transform::Translate::None", 208 engines="gecko servo", 209 boxed=True, 210 flags="CAN_ANIMATE_ON_COMPOSITOR", 211 spec="https://drafts.csswg.org/css-transforms-2/#individual-transforms", 212 servo_restyle_damage="recalculate_overflow", 213 affects="overflow", 214 )} 215 216 // Motion Path Module Level 1 217 ${helpers.predefined_type( 218 "offset-path", 219 "OffsetPath", 220 "computed::OffsetPath::none()", 221 engines="gecko servo", 222 servo_pref="layout.unimplemented", 223 flags="CAN_ANIMATE_ON_COMPOSITOR", 224 spec="https://drafts.fxtf.org/motion-1/#offset-path-property", 225 servo_restyle_damage="rebuild_box", 226 affects="overflow", 227 )} 228 229 // Motion Path Module Level 1 230 ${helpers.predefined_type( 231 "offset-distance", 232 "LengthPercentage", 233 "computed::LengthPercentage::zero()", 234 engines="gecko", 235 flags="CAN_ANIMATE_ON_COMPOSITOR", 236 spec="https://drafts.fxtf.org/motion-1/#offset-distance-property", 237 servo_restyle_damage="rebuild_box", 238 affects="overflow", 239 )} 240 241 // Motion Path Module Level 1 242 ${helpers.predefined_type( 243 "offset-rotate", 244 "OffsetRotate", 245 "computed::OffsetRotate::auto()", 246 engines="gecko", 247 flags="CAN_ANIMATE_ON_COMPOSITOR", 248 spec="https://drafts.fxtf.org/motion-1/#offset-rotate-property", 249 servo_restyle_damage="rebuild_box", 250 affects="overflow", 251 )} 252 253 // Motion Path Module Level 1 254 ${helpers.predefined_type( 255 "offset-anchor", 256 "PositionOrAuto", 257 "computed::PositionOrAuto::auto()", 258 engines="gecko", 259 flags="CAN_ANIMATE_ON_COMPOSITOR", 260 spec="https://drafts.fxtf.org/motion-1/#offset-anchor-property", 261 servo_restyle_damage="rebuild_box", 262 boxed=True, 263 affects="overflow", 264 )} 265 266 // Motion Path Module Level 1 267 ${helpers.predefined_type( 268 "offset-position", 269 "OffsetPosition", 270 "computed::OffsetPosition::normal()", 271 engines="gecko", 272 flags="CAN_ANIMATE_ON_COMPOSITOR", 273 spec="https://drafts.fxtf.org/motion-1/#offset-position-property", 274 servo_restyle_damage="rebuild_box", 275 boxed=True, 276 affects="overflow", 277 )} 278 279 // CSSOM View Module 280 // https://www.w3.org/TR/cssom-view-1/ 281 ${helpers.single_keyword( 282 "scroll-behavior", 283 "auto smooth", 284 engines="gecko", 285 spec="https://drafts.csswg.org/cssom-view/#propdef-scroll-behavior", 286 animation_type="discrete", 287 gecko_enum_prefix="StyleScrollBehavior", 288 affects="", 289 )} 290 291 ${helpers.predefined_type( 292 "scroll-snap-align", 293 "ScrollSnapAlign", 294 "computed::ScrollSnapAlign::none()", 295 engines="gecko", 296 spec="https://drafts.csswg.org/css-scroll-snap-1/#scroll-snap-align", 297 animation_type="discrete", 298 affects="paint", 299 )} 300 301 ${helpers.predefined_type( 302 "scroll-snap-type", 303 "ScrollSnapType", 304 "computed::ScrollSnapType::none()", 305 engines="gecko", 306 spec="https://drafts.csswg.org/css-scroll-snap-1/#scroll-snap-type", 307 animation_type="discrete", 308 affects="paint", 309 )} 310 311 ${helpers.predefined_type( 312 "scroll-snap-stop", 313 "ScrollSnapStop", 314 "computed::ScrollSnapStop::Normal", 315 engines="gecko", 316 spec="https://drafts.csswg.org/css-scroll-snap-1/#scroll-snap-stop", 317 animation_type="discrete", 318 affects="paint", 319 )} 320 321 % for (axis, logical) in ALL_AXES: 322 ${helpers.predefined_type( 323 "overscroll-behavior-" + axis, 324 "OverscrollBehavior", 325 "computed::OverscrollBehavior::Auto", 326 engines="gecko", 327 logical_group="overscroll-behavior", 328 logical=logical, 329 spec="https://wicg.github.io/overscroll-behavior/#overscroll-behavior-properties", 330 animation_type="discrete", 331 affects="paint", 332 )} 333 % endfor 334 335 // Compositing and Blending Level 1 336 // http://www.w3.org/TR/compositing-1/ 337 ${helpers.single_keyword( 338 "isolation", 339 "auto isolate", 340 engines="gecko servo", 341 spec="https://drafts.fxtf.org/compositing/#isolation", 342 gecko_enum_prefix="StyleIsolation", 343 animation_type="discrete", 344 affects="paint", 345 servo_restyle_damage="repaint", 346 )} 347 348 ${helpers.predefined_type( 349 "break-after", 350 "BreakBetween", 351 "computed::BreakBetween::Auto", 352 engines="gecko", 353 spec="https://drafts.csswg.org/css-break/#propdef-break-after", 354 animation_type="discrete", 355 affects="layout", 356 )} 357 358 ${helpers.predefined_type( 359 "break-before", 360 "BreakBetween", 361 "computed::BreakBetween::Auto", 362 engines="gecko", 363 spec="https://drafts.csswg.org/css-break/#propdef-break-before", 364 animation_type="discrete", 365 affects="layout", 366 )} 367 368 ${helpers.predefined_type( 369 "break-inside", 370 "BreakWithin", 371 "computed::BreakWithin::Auto", 372 engines="gecko", 373 spec="https://drafts.csswg.org/css-break/#propdef-break-inside", 374 animation_type="discrete", 375 affects="layout", 376 )} 377 378 // CSS Basic User Interface Module Level 3 379 // http://dev.w3.org/csswg/css-ui 380 ${helpers.predefined_type( 381 "resize", 382 "Resize", 383 "computed::Resize::None", 384 engines="gecko", 385 animation_type="discrete", 386 gecko_ffi_name="mResize", 387 spec="https://drafts.csswg.org/css-ui/#propdef-resize", 388 affects="layout", 389 )} 390 391 ${helpers.predefined_type( 392 "perspective", 393 "Perspective", 394 "computed::Perspective::none()", 395 engines="gecko servo", 396 gecko_ffi_name="mChildPerspective", 397 spec="https://drafts.csswg.org/css-transforms/#perspective", 398 extra_prefixes="moz:layout.css.prefixes.transforms", 399 servo_restyle_damage = "recalculate_overflow", 400 affects="overflow", 401 )} 402 403 ${helpers.predefined_type( 404 "perspective-origin", 405 "Position", 406 "computed::position::Position::center()", 407 engines="gecko servo", 408 boxed=True, 409 extra_prefixes=transform_extra_prefixes, 410 spec="https://drafts.csswg.org/css-transforms-2/#perspective-origin-property", 411 servo_restyle_damage="recalculate_overflow", 412 affects="overflow", 413 )} 414 415 ${helpers.single_keyword( 416 "backface-visibility", 417 "visible hidden", 418 engines="gecko servo", 419 gecko_enum_prefix="StyleBackfaceVisibility", 420 spec="https://drafts.csswg.org/css-transforms/#backface-visibility-property", 421 extra_prefixes=transform_extra_prefixes, 422 animation_type="discrete", 423 servo_restyle_damage="repaint", 424 affects="paint", 425 )} 426 427 ${helpers.predefined_type( 428 "transform-box", 429 "TransformBox", 430 "computed::TransformBox::ViewBox", 431 engines="gecko", 432 spec="https://drafts.csswg.org/css-transforms/#transform-box", 433 animation_type="discrete", 434 affects="overflow", 435 )} 436 437 ${helpers.predefined_type( 438 "transform-style", 439 "TransformStyle", 440 "computed::TransformStyle::Flat", 441 engines="gecko servo", 442 spec="https://drafts.csswg.org/css-transforms-2/#transform-style-property", 443 extra_prefixes=transform_extra_prefixes, 444 animation_type="discrete", 445 servo_restyle_damage = "recalculate_overflow", 446 affects="overflow", 447 )} 448 449 ${helpers.predefined_type( 450 "transform-origin", 451 "TransformOrigin", 452 "computed::TransformOrigin::initial_value()", 453 engines="gecko servo", 454 extra_prefixes=transform_extra_prefixes, 455 gecko_ffi_name="mTransformOrigin", 456 boxed=True, 457 spec="https://drafts.csswg.org/css-transforms/#transform-origin-property", 458 servo_restyle_damage="recalculate_overflow", 459 affects="overflow", 460 )} 461 462 ${helpers.predefined_type( 463 "contain", 464 "Contain", 465 "specified::Contain::empty()", 466 engines="gecko servo", 467 servo_pref="layout.unimplemented", 468 animation_type="none", 469 spec="https://drafts.csswg.org/css-contain/#contain-property", 470 affects="layout", 471 )} 472 473 ${helpers.predefined_type( 474 "content-visibility", 475 "ContentVisibility", 476 "computed::ContentVisibility::Visible", 477 engines="gecko", 478 spec="https://drafts.csswg.org/css-contain/#content-visibility", 479 affects="layout", 480 )} 481 482 ${helpers.predefined_type( 483 "container-type", 484 "ContainerType", 485 "computed::ContainerType::NORMAL", 486 engines="gecko servo", 487 animation_type="none", 488 servo_pref="layout.container-queries.enabled", 489 spec="https://drafts.csswg.org/css-contain-3/#container-type", 490 affects="layout", 491 )} 492 493 ${helpers.predefined_type( 494 "container-name", 495 "ContainerName", 496 "computed::ContainerName::none()", 497 engines="gecko servo", 498 animation_type="none", 499 servo_pref="layout.container-queries.enabled", 500 spec="https://drafts.csswg.org/css-contain-3/#container-name", 501 affects="", 502 )} 503 504 ${helpers.predefined_type( 505 "appearance", 506 "Appearance", 507 "computed::Appearance::None", 508 engines="gecko", 509 extra_prefixes="moz:layout.css.moz-appearance.enabled webkit", 510 spec="https://drafts.csswg.org/css-ui-4/#propdef-appearance", 511 animation_type="discrete", 512 gecko_ffi_name="mAppearance", 513 affects="paint", 514 )} 515 516 // The inherent widget type of an element, selected by specifying 517 // `appearance: auto`. 518 ${helpers.predefined_type( 519 "-moz-default-appearance", 520 "Appearance", 521 "computed::Appearance::None", 522 engines="gecko", 523 animation_type="none", 524 spec="Internal (not web-exposed)", 525 enabled_in="chrome", 526 gecko_ffi_name="mDefaultAppearance", 527 affects="paint", 528 )} 529 530 ${helpers.single_keyword( 531 "-moz-orient", 532 "inline block horizontal vertical", 533 engines="gecko", 534 gecko_ffi_name="mOrient", 535 gecko_enum_prefix="StyleOrient", 536 spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-orient)", 537 animation_type="discrete", 538 affects="layout", 539 )} 540 541 ${helpers.predefined_type( 542 "will-change", 543 "WillChange", 544 "computed::WillChange::auto()", 545 engines="gecko servo", 546 animation_type="none", 547 spec="https://drafts.csswg.org/css-will-change/#will-change", 548 affects="layout", 549 )} 550 551 // The spec issue for the parse_method: https://github.com/w3c/csswg-drafts/issues/4102. 552 ${helpers.predefined_type( 553 "shape-image-threshold", 554 "Opacity", 555 "0.0", 556 engines="gecko", 557 spec="https://drafts.csswg.org/css-shapes/#shape-image-threshold-property", 558 affects="layout", 559 )} 560 561 ${helpers.predefined_type( 562 "shape-margin", 563 "NonNegativeLengthPercentage", 564 "computed::NonNegativeLengthPercentage::zero()", 565 engines="gecko", 566 spec="https://drafts.csswg.org/css-shapes/#shape-margin-property", 567 affects="layout", 568 )} 569 570 ${helpers.predefined_type( 571 "shape-outside", 572 "basic_shape::ShapeOutside", 573 "generics::basic_shape::ShapeOutside::None", 574 engines="gecko", 575 spec="https://drafts.csswg.org/css-shapes/#shape-outside-property", 576 affects="layout", 577 )} 578 579 ${helpers.predefined_type( 580 "touch-action", 581 "TouchAction", 582 "computed::TouchAction::auto()", 583 engines="gecko", 584 animation_type="discrete", 585 spec="https://compat.spec.whatwg.org/#touch-action", 586 affects="paint", 587 )} 588 589 ${helpers.predefined_type( 590 "-webkit-line-clamp", 591 "LineClamp", 592 "computed::LineClamp::none()", 593 engines="gecko", 594 spec="https://drafts.csswg.org/css-overflow-3/#line-clamp", 595 affects="layout", 596 )} 597 598 ${helpers.predefined_type( 599 "scrollbar-gutter", 600 "ScrollbarGutter", 601 "computed::ScrollbarGutter::AUTO", 602 engines="gecko", 603 animation_type="discrete", 604 spec="https://drafts.csswg.org/css-overflow-3/#scrollbar-gutter-property", 605 affects="layout", 606 )} 607 608 ${helpers.predefined_type( 609 "zoom", 610 "Zoom", 611 "computed::box_::Zoom::ONE", 612 engines="gecko servo", 613 spec="Non-standard (https://github.com/atanassov/css-zoom/ is the closest)", 614 gecko_pref="layout.css.zoom.enabled", 615 servo_pref="layout.unimplemented", 616 affects="layout", 617 enabled_in="chrome", 618 )}