<template>
  <div class="canvas-row">
    <slot></slot>
  </div>
</template>

<script setup lang="ts">
import { computed, defineProps } from 'vue'
import { getStyleValue, alignMap, justAlignMap } from './helper'

const props = defineProps({
  minHeight: {
    type: [String, Number],
    default: ''
  },
  rowGap: {
    type: [String, Number],
    default: ''
  },
  colGap: {
    type: [String, Number],
    default: ''
  },
  align: {
    type: [String, Number],
    default: ''
  },
  justAlign: {
    type: [String, Number],
    default: ''
  }
})

const styles = computed(() => ({
  minHeight: getStyleValue(props.minHeight),
  rowGap: getStyleValue(props.rowGap),
  colGap: getStyleValue(props.colGap),
  align: alignMap[props.align] || 'stretch',
  justAlign: justAlignMap[props.justAlign] || 'flex-start'
}))
</script>

<style lang="less" scoped>
.canvas-row {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  justify-content: v-bind('styles.justAlign');
  align-items: v-bind('styles.align');
  column-gap: v-bind('styles.rowGap');
  row-gap: v-bind('styles.colGap');
  min-height: v-bind('styles.minHeight');
}
</style>