{"version":3,"file":"props.mjs","sources":["../../../../../../packages/components/virtual-list/src/props.ts"],"sourcesContent":["import { buildProp, buildProps, definePropType, mutable } from '@bigin/utils'\nimport { VERTICAL } from './defaults'\n\nimport type { ExtractPropTypes, StyleValue } from 'vue'\nimport type { GridItemKeyGetter, ItemSize } from './types'\n\nconst itemSize = buildProp({\n  type: definePropType<number | ItemSize>([Number, Function]),\n  required: true,\n} as const)\n\nconst estimatedItemSize = buildProp({\n  type: Number,\n} as const)\n\nconst cache = buildProp({\n  type: Number,\n  default: 2,\n} as const)\n\nconst direction = buildProp({\n  type: String,\n  values: ['ltr', 'rtl'],\n  default: 'ltr',\n} as const)\n\nconst initScrollOffset = buildProp({\n  type: Number,\n  default: 0,\n} as const)\n\nconst total = buildProp({\n  type: Number,\n  required: true,\n} as const)\n\nconst layout = buildProp({\n  type: String,\n  values: ['horizontal', 'vertical'],\n  default: VERTICAL,\n} as const)\n\nexport const virtualizedProps = buildProps({\n  className: {\n    type: String,\n    default: '',\n  },\n\n  containerElement: {\n    type: definePropType<string | Element>([String, Object]),\n    default: 'div',\n  },\n\n  data: {\n    type: definePropType<any[]>(Array),\n    default: () => mutable([] as const),\n  },\n\n  /**\n   * @description controls the horizontal direction.\n   */\n  direction,\n\n  height: {\n    type: [String, Number],\n    required: true,\n  },\n\n  innerElement: {\n    type: [String, Object],\n    default: 'div',\n  },\n\n  style: {\n    type: definePropType<StyleValue>([Object, String, Array]),\n  },\n\n  useIsScrolling: {\n    type: Boolean,\n    default: false,\n  },\n\n  width: {\n    type: [Number, String],\n    required: false,\n  },\n\n  perfMode: {\n    type: Boolean,\n    default: true,\n  },\n  scrollbarAlwaysOn: {\n    type: Boolean,\n    default: false,\n  },\n} as const)\n\nexport const virtualizedListProps = buildProps({\n  /**\n   * @description describes how many items should be pre rendered to the head\n   * and the tail of the window\n   */\n  cache,\n\n  estimatedItemSize,\n\n  /**\n   * @description controls the list's orientation\n   */\n  layout,\n\n  initScrollOffset,\n\n  /**\n   * @description describes the total number of the list.\n   */\n  total,\n\n  itemSize,\n  ...virtualizedProps,\n} as const)\n\nconst scrollbarSize = {\n  type: Number,\n  default: 6,\n} as const\n\nconst startGap = { type: Number, default: 0 } as const\nconst endGap = { type: Number, default: 2 } as const\n\nexport const virtualizedGridProps = buildProps({\n  columnCache: cache,\n  columnWidth: itemSize,\n  estimatedColumnWidth: estimatedItemSize,\n  estimatedRowHeight: estimatedItemSize,\n  initScrollLeft: initScrollOffset,\n  initScrollTop: initScrollOffset,\n  itemKey: {\n    type: definePropType<GridItemKeyGetter>(Function),\n    default: ({\n      columnIndex,\n      rowIndex,\n    }: {\n      columnIndex: number\n      rowIndex: number\n    }) => `${rowIndex}:${columnIndex}`,\n  },\n  rowCache: cache,\n  rowHeight: itemSize,\n  totalColumn: total,\n  totalRow: total,\n  hScrollbarSize: scrollbarSize,\n  vScrollbarSize: scrollbarSize,\n  scrollbarStartGap: startGap,\n  scrollbarEndGap: endGap,\n  ...virtualizedProps,\n} as const)\n\nexport const virtualizedScrollbarProps = buildProps({\n  alwaysOn: Boolean,\n  class: String,\n  layout,\n  total,\n  ratio: {\n    type: Number,\n    required: true,\n  },\n  clientSize: {\n    type: Number,\n    required: true,\n  },\n  scrollFrom: {\n    type: Number,\n    required: true,\n  },\n  scrollbarSize,\n  startGap,\n  endGap,\n\n  visible: Boolean,\n} as const)\n\nexport type VirtualizedProps = ExtractPropTypes<typeof virtualizedProps>\nexport type VirtualizedListProps = ExtractPropTypes<typeof virtualizedListProps>\nexport type VirtualizedGridProps = ExtractPropTypes<typeof virtualizedGridProps>\n\nexport type VirtualizedScrollbarProps = ExtractPropTypes<\n  typeof virtualizedScrollbarProps\n>\n"],"names":[],"mappings":"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"}