#' Col ggplot
#'
#' @description A col ggplot with [geom_col()][ggplot2::geom_col()] defaults for the geom, stat and position.
#'
#' @inheritParams gg_blanket
#'
#' @return A ggplot object.
#' @export
#'
#' @examples
#' ggplot2::diamonds |>
#'   dplyr::count(color) |>
#'   gg_col(
#'     x = color,
#'     y = n,
#'   )
#'
#' ggplot2::diamonds |>
#'   dplyr::count(color, cut) |>
#'   gg_col(
#'     x = color,
#'     y = n,
#'     fill = cut,
#'     position = ggplot2::position_dodge(),
#'   )
#'
#' ggplot2::diamonds |>
#'   dplyr::filter(cut %in% c("Premium", "Ideal")) |>
#'   dplyr::count(color, cut) |>
#'   gg_col(
#'     x = color,
#'     y = n,
#'     facet_wrap = cut,
#'   )
#'
gg_col <- function(
  data,
  ...,
  geom = "col",
  stat = "identity",
  position = ggplot2::position_stack(),
  before = NULL,
  with = NULL,
  focus = NULL,
  refine = NULL,
  border = TRUE,
  x = NULL,
  xmin = NULL,
  xmax = NULL,
  xend = NULL,
  xintercept = NULL,
  y = NULL,
  ymin = NULL,
  ymax = NULL,
  yend = NULL,
  yintercept = NULL,
  z = NULL,
  fill = NULL,
  colour = NULL,
  alpha = NULL,
  shape = NULL,
  linetype = NULL,
  linewidth = NULL,
  size = NULL,
  stroke = NULL,
  label = NULL,
  weight = NULL,
  group = NULL,
  width = NULL,
  height = NULL,
  slope = NULL,
  intercept = NULL,
  sample = NULL,
  angle = NULL,
  radius = NULL,
  mapping = ggplot2::aes(),
  x_type = NULL,
  x_subtype = NULL,
  x_breaks = NULL,
  x_drop = TRUE,
  x_expand = NULL,
  x_guide = ggplot2::waiver(),
  x_labels = NULL,
  x_limits = NULL,
  x_minor_breaks = ggplot2::waiver(),
  x_name = ggplot2::waiver(),
  x_oob = scales::oob_censor,
  x_palette = seq_len,
  x_position = "bottom",
  x_sec_axis = ggplot2::waiver(),
  x_transform = NULL,
  y_type = NULL,
  y_subtype = NULL,
  y_breaks = NULL,
  y_drop = TRUE,
  y_expand = NULL,
  y_guide = ggplot2::waiver(),
  y_labels = NULL,
  y_limits = NULL,
  y_minor_breaks = ggplot2::waiver(),
  y_name = ggplot2::waiver(),
  y_oob = scales::oob_censor,
  y_palette = seq_len,
  y_position = "left",
  y_sec_axis = ggplot2::waiver(),
  y_transform = NULL,
  fill_type = NULL,
  fill_subtype = NULL,
  fill_breaks = ggplot2::waiver(),
  fill_drop = TRUE,
  fill_guide = NULL,
  fill_labels = NULL,
  fill_limits = NULL,
  fill_name = ggplot2::waiver(),
  fill_oob = scales::oob_censor,
  fill_rescaler = scales::rescale,
  fill_palette = NULL,
  fill_transform = NULL,
  colour_type = NULL,
  colour_subtype = NULL,
  colour_breaks = NULL,
  colour_drop = NULL,
  colour_guide = NULL,
  colour_labels = NULL,
  colour_limits = NULL,
  colour_name = NULL,
  colour_oob = NULL,
  colour_rescaler = NULL,
  colour_palette = NULL,
  colour_transform = NULL,
  alpha_type = NULL,
  alpha_subtype = NULL,
  alpha_breaks = ggplot2::waiver(),
  alpha_drop = TRUE,
  alpha_guide = NULL,
  alpha_labels = NULL,
  alpha_limits = NULL,
  alpha_name = ggplot2::waiver(),
  alpha_oob = scales::oob_censor,
  alpha_palette = NULL,
  alpha_transform = NULL,
  size_type = NULL,
  size_subtype = NULL,
  size_breaks = ggplot2::waiver(),
  size_drop = TRUE,
  size_guide = NULL,
  size_labels = NULL,
  size_limits = NULL,
  size_name = ggplot2::waiver(),
  size_oob = scales::oob_censor,
  size_palette = NULL,
  size_transform = NULL,
  linewidth_type = NULL,
  linewidth_subtype = NULL,
  linewidth_breaks = ggplot2::waiver(),
  linewidth_drop = TRUE,
  linewidth_guide = NULL,
  linewidth_labels = NULL,
  linewidth_limits = NULL,
  linewidth_name = ggplot2::waiver(),
  linewidth_oob = scales::oob_censor,
  linewidth_palette = NULL,
  linewidth_transform = NULL,
  linetype_type = NULL,
  linetype_breaks = ggplot2::waiver(),
  linetype_drop = TRUE,
  linetype_guide = NULL,
  linetype_labels = NULL,
  linetype_limits = NULL,
  linetype_name = ggplot2::waiver(),
  linetype_palette = NULL,
  shape_type = NULL,
  shape_breaks = ggplot2::waiver(),
  shape_drop = TRUE,
  shape_guide = NULL,
  shape_labels = NULL,
  shape_limits = NULL,
  shape_name = ggplot2::waiver(),
  shape_palette = NULL,
  facet_wrap = NULL,
  facet_rows = NULL,
  facet_cols = NULL,
  facet_axes = "margins",
  facet_axis_labels = "all",
  facet_drop = TRUE,
  facet_labeller = "label_value",
  facet_ncol = NULL,
  facet_nrow = NULL,
  facet_scales = "fixed",
  facet_space = "fixed",

  coord_xlim = NULL,
  coord_ylim = NULL,
  coord_clip = NULL,
  coord_reverse = "none",
  coord_ratio = NULL,


  title = NULL,
  subtitle = NULL,
  caption = NULL,
  ggplot = NULL
) {
  gg_blanket(
    data = data,
    ...,
    geom = geom,
    stat = stat,
    position = position,
    before = before,
    with = with,
    focus = focus,
    refine = refine,
    border = border,
    x = {{ x }},
    xmin = {{ xmin }},
    xmax = {{ xmax }},
    xend = {{ xend }},
    xintercept = {{ xintercept }},
    y = {{ y }},
    ymin = {{ ymin }},
    ymax = {{ ymax }},
    yend = {{ yend }},
    yintercept = {{ yintercept }},
    z = {{ z }},
    fill = {{ fill }},
    colour = {{ colour }},
    alpha = {{ alpha }},
    shape = {{ shape }},
    linetype = {{ linetype }},
    linewidth = {{ linewidth }},
    size = {{ size }},
    stroke = {{ stroke }},
    label = {{ label }},
    weight = {{ weight }},
    group = {{ group }},
    width = {{ width }},
    height = {{ height }},
    slope = {{ slope }},
    intercept = {{ intercept }},
    sample = {{ sample }},
    angle = {{ angle }},
    radius = {{ radius }},
    mapping = mapping,
    x_type = x_type,
    x_subtype = x_subtype,
    x_breaks = x_breaks,
    x_drop = x_drop,
    x_expand = x_expand,
    x_guide = x_guide,
    x_labels = x_labels,
    x_limits = x_limits,
    x_minor_breaks = x_minor_breaks,
    x_name = x_name,
    x_oob = x_oob,
    x_palette = x_palette,
    x_position = x_position,
    x_sec_axis = x_sec_axis,
    x_transform = x_transform,
    y_type = y_type,
    y_subtype = y_subtype,
    y_breaks = y_breaks,
    y_drop = y_drop,
    y_expand = y_expand,
    y_guide = y_guide,
    y_labels = y_labels,
    y_limits = y_limits,
    y_minor_breaks = y_minor_breaks,
    y_name = y_name,
    y_oob = y_oob,
    y_palette = y_palette,
    y_position = y_position,
    y_sec_axis = y_sec_axis,
    y_transform = y_transform,
    fill_type = fill_type,
    fill_subtype = fill_subtype,
    fill_breaks = fill_breaks,
    fill_drop = fill_drop,
    fill_guide = fill_guide,
    fill_labels = fill_labels,
    fill_limits = fill_limits,
    fill_name = fill_name,
    fill_oob = fill_oob,
    fill_rescaler = fill_rescaler,
    fill_palette = fill_palette,
    fill_transform = fill_transform,
    colour_type = colour_type,
    colour_subtype = colour_subtype,
    colour_breaks = colour_breaks,
    colour_drop = colour_drop,
    colour_guide = colour_guide,
    colour_labels = colour_labels,
    colour_limits = colour_limits,
    colour_name = colour_name,
    colour_oob = colour_oob,
    colour_rescaler = colour_rescaler,
    colour_palette = colour_palette,
    colour_transform = colour_transform,
    alpha_type = alpha_type,
    alpha_subtype = alpha_subtype,
    alpha_breaks = alpha_breaks,
    alpha_drop = alpha_drop,
    alpha_guide = alpha_guide,
    alpha_labels = alpha_labels,
    alpha_limits = alpha_limits,
    alpha_name = alpha_name,
    alpha_oob = alpha_oob,
    alpha_palette = alpha_palette,
    alpha_transform = alpha_transform,
    size_type = size_type,
    size_subtype = size_subtype,
    size_breaks = size_breaks,
    size_drop = size_drop,
    size_guide = size_guide,
    size_labels = size_labels,
    size_limits = size_limits,
    size_name = size_name,
    size_oob = size_oob,
    size_palette = size_palette,
    size_transform = size_transform,
    linewidth_type = linewidth_type,
    linewidth_subtype = linewidth_subtype,
    linewidth_breaks = linewidth_breaks,
    linewidth_drop = linewidth_drop,
    linewidth_guide = linewidth_guide,
    linewidth_labels = linewidth_labels,
    linewidth_limits = linewidth_limits,
    linewidth_name = linewidth_name,
    linewidth_oob = linewidth_oob,
    linewidth_palette = linewidth_palette,
    linewidth_transform = linewidth_transform,
    linetype_type = linetype_type,
    linetype_breaks = linetype_breaks,
    linetype_drop = linetype_drop,
    linetype_guide = linetype_guide,
    linetype_labels = linetype_labels,
    linetype_limits = linetype_limits,
    linetype_name = linetype_name,
    linetype_palette = linetype_palette,
    shape_type = shape_type,
    shape_breaks = shape_breaks,
    shape_drop = shape_drop,
    shape_guide = shape_guide,
    shape_labels = shape_labels,
    shape_limits = shape_limits,
    shape_name = shape_name,
    shape_palette = shape_palette,
    facet_wrap = {{ facet_wrap }},
    facet_rows = {{ facet_rows }},
    facet_cols = {{ facet_cols }},
    facet_axes = facet_axes,
    facet_axis_labels = facet_axis_labels,
    facet_drop = facet_drop,
    facet_labeller = facet_labeller,
    facet_ncol = facet_ncol,
    facet_nrow = facet_nrow,
    facet_scales = facet_scales,
    facet_space = facet_space,

    coord_xlim = coord_xlim,
    coord_ylim = coord_ylim,
    coord_clip = coord_clip,
    coord_reverse = coord_reverse,
    coord_ratio = coord_ratio,


    title = title,
    subtitle = subtitle,
    caption = caption,
    ggplot = ggplot
  )
}
