<!DOCTYPE html>
<head>

<script src="support/scrollbars.js"></script>

<style>
.horizontal-header {
  width: 120px;
}
.vertical-header {
  width: 60px;
}
.container-row {
  display: flex;
  flex-direction: row;
  align-items: flex-start;
  justify-content: flex-start;
}
.container {
  flex: none;
  margin: 5px;
}
.ltr {
  direction: ltr;
}
.rtl {
  direction: rtl;
}
.horizontal {
  writing-mode: horizontal-tb;
}
.flipped-blocks {
  writing-mode: vertical-rl;
}
.flipped-lines {
  writing-mode: vertical-lr;
}
.flex {
  border: 2px solid red;
  overflow: scroll;
  max-width: 100px;
  max-height: 100px;
  white-space: nowrap;
}
.row > div, .row-reverse > div {
  display: inline-flex;
  margin: 3px;
}
.column > div, .column-reverse > div {
  display: flex;
  margin: 3px;
}

/* Adjust margins to account for collapsing. */
.horizontal > .column > .leaf1, .horizontal > .column > .leaf2 {
  margin: 3px 3px 6px 3px;
}
.flipped-blocks > .column > .leaf1, .flipped-blocks > .column > .leaf2 {
  margin: 3px 3px 3px 6px;
}
.flipped-lines > .column > .leaf1, .flipped-lines > .column > .leaf2 {
  margin: 3px 6px 3px 3px;
}

.horizontal > .column-reverse > .leaf1, .horizontal > .column-reverse > .leaf2 {
  margin: 6px 3px 3px 3px;
}
.flipped-blocks > .column-reverse > .leaf1, .flipped-blocks > .column-reverse > .leaf2 {
  margin: 3px 6px 3px 3px;
}
.flipped-lines > .column-reverse > .leaf1, .flipped-lines > .column-reverse > .leaf2 {
  margin: 3px 3px 3px 6px;
}

.flex > div {
  width: 30px;
  height: 30px;
  border: 2px solid blue;
  flex-direction: column;
  justify-content: center;
}
.flex > div > div {
  font-size: 20px;
  text-align: center;
  flex: none;
}
</style>

</head>

<div class="container-row">
  <div class="vertical-header ltr horizontal"></div>
  <div class="horizontal-header ltr horizontal">ltr<br>horizontal-tb</div>
  <div class="vertical-header ltr flipped-blocks">ltr<br>vertical-rl</div>
  <div class="vertical-header ltr flipped-blocks">ltr<br>vertical-lr</div>
  <div class="horizontal-header rtl horizontal">rtl<br>horizontal-tb</div>
  <div class="vertical-header rtl flipped-blocks">rtl<br>vertical-rl</div>
  <div class="vertical-header rtl flipped-blocks">rtl<br>vertical-lr</div>
</div>

<script>
// Override createContentNode to emulate reverse flow direction.
createContentNode = (flexDirection, textDirection, writingMode) => {
  var flexNode = document.createElement("div");
  flexNode.className = "flex " + flexDirection;
  flexNode.title = "flex-direction: " + flexDirection + "; direction: " + textDirection + "; writing-mode: " + writingMode;
  for (var i = 1; i < 4; i++)
    flexNode.appendChild(createLeafNode(flexDirection.endsWith("reverse") ? 4 - i : i));
  return flexNode;
}

flexDirections.forEach((flexDirection) => {
  var containerRow = createContainerRow(flexDirection);
  document.body.appendChild(containerRow);
});

// Scroll all flex containers to the emulated beginning of flow.
var nodes = document.querySelectorAll(".ltr > .row-reverse");
for (var i = 0; i < nodes.length; i++) {
  nodes[i].scrollLeft = 10000;
  nodes[i].scrollTop = 10000;
}
nodes = document.querySelectorAll(".rtl > .row-reverse");
for (var i = 0; i < nodes.length; i++) {
  nodes[i].scrollLeft = -10000;
  nodes[i].scrollTop = -10000;
}
nodes = document.querySelectorAll(".column-reverse");
for (var i = 0; i < nodes.length; i++) {
  nodes[i].scrollLeft = 10000;
  nodes[i].scrollTop = 10000;
}
nodes = document.querySelectorAll(".flipped-blocks > .column-reverse");
for (var i = 0; i < nodes.length; i++) {
  nodes[i].scrollLeft = -10000;
  nodes[i].scrollTop = 0;
}
</script>
