<!DOCTYPE html>
<script src="resources/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;
  font-size: 0;
}
.row > div, .row-reverse > div {
  display: inline-flex;
  margin: 3px;
}
.column > div, .column-reverse > div {
  display: flex;
}

/* Adjust margins to account for collapsing. */
.ltr.horizontal > .row > .leaf3 {
  margin-right: 0;
}
.ltr.flipped-blocks > .row > .leaf3, .ltr.flipped-lines > .row > .leaf3 {
  margin-bottom: 0;
}
.rtl.horizontal > .row > .leaf3 {
  margin-left: 0;
}
.rtl.flipped-blocks > .row > .leaf3, .rtl.flipped-lines > .row > .leaf3 {
  margin-top: 0;
}

.ltr.horizontal > .row-reverse > .leaf3 {
  margin-left: 0;
}
.ltr.flipped-blocks > .row-reverse > .leaf3, .ltr.flipped-lines > .row-reverse > .leaf3 {
  margin-top: 0;
}
.rtl.horizontal > .row-reverse > .leaf3 {
  margin-right: 0;
}
.rtl.flipped-blocks > .row-reverse > .leaf3, .rtl.flipped-lines > .row-reverse > .leaf3 {
  margin-bottom: 0;
}

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

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

.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>

<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 = 0;
  nodes[i].scrollTop = 0;
}
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 = 0;
  nodes[i].scrollTop = 0;
}
</script>
