@function each-divide-x($divide-width-config) {
  $computed-divide-width-config: ();
  @each $key, $divide-width in $divide-width-config {
    $computed-divide-width-config: map.set(
      $computed-divide-width-config,
      $key + ">:not([hidden])~:not([hidden])",
      (
        --bs-divide-x-reverse: 0,
        border-right-width: calc(#{$divide-width} * var(--bs-divide-x-reverse)),
        border-left-width:
          calc(#{$divide-width} * calc(1 - var(--bs-divide-x-reverse))),
      )
    );
  }
  @return $computed-divide-width-config;
}

@function each-divide-y($divide-width-config) {
  $computed-divide-width-config: ();
  @each $key, $divide-width in $divide-width-config {
    $computed-divide-width-config: map.set(
      $computed-divide-width-config,
      $key + ">:not([hidden])~:not([hidden])",
      (
        --bs-divide-y-reverse: 0,
        border-top-width:
          calc(#{$divide-width} * calc(1 - var(--bs-divide-y-reverse))),
        border-bottom-width:
          calc(#{$divide-width} * var(--bs-divide-y-reverse)),
      )
    );
  }

  @return $computed-divide-width-config;
}

$utilities: map-merge(
  $utilities,
  (
    "divide-x": (
      property: border-right-width border-left-width,
      class: divide-x,
      variants: divide-width,
      values: each-divide-x($divide-width-config),
    ),
    "divide-y": (
      property: border-top-width border-bottom-width,
      class: divide-y,
      variants: divide-width,
      values: each-divide-y($divide-width-config),
    ),
    "divide-x-reverse": (
      property: --bs-divide-x-reverse,
      class: divide-x-reverse,
      variants: divide-width,
      values: (
        ">:not([hidden])~:not([hidden])": 1,
      ),
    ),
    "divide-y-reverse": (
      property: --bs-divide-y-reverse,
      class: divide-y-reverse,
      variants: divide-width,
      values: (
        ">:not([hidden])~:not([hidden])": 1,
      ),
    ),
  )
);
