{"version":3,"file":"index.mjs","sources":["../../../../../../../packages/components/table/src/table-column/index.ts"],"sourcesContent":["// @ts-nocheck\nimport {\n  Fragment,\n  computed,\n  defineComponent,\n  getCurrentInstance,\n  h,\n  onBeforeMount,\n  onBeforeUnmount,\n  onMounted,\n  ref,\n} from 'vue'\nimport BCheckbox from '@bigin/components/checkbox'\nimport { isString } from '@bigin/utils'\nimport { useGlobalConfig } from '@bigin/hooks'\nimport { cellStarts } from '../config'\nimport { compose, mergeOptions } from '../util'\nimport useWatcher from './watcher-helper'\nimport useRender from './render-helper'\nimport defaultProps from './defaults'\nimport type { TableColumn, TableColumnCtx } from './defaults'\n\nimport type { DefaultRow } from '../table/defaults'\n\nlet columnIdSeed = 1\n\nexport default defineComponent({\n  name: 'BTableColumn',\n  components: {\n    BCheckbox,\n  },\n  props: defaultProps,\n  setup(props, { slots }) {\n    const instance = getCurrentInstance() as TableColumn<DefaultRow>\n    const columnConfig = ref<Partial<TableColumnCtx<DefaultRow>>>({})\n    const tableConfig = useGlobalConfig('table', {\n      sort: { ascending: 'ascending', descending: 'descending' },\n    })\n    const owner = computed(() => {\n      let parent = instance.parent as any\n      while (parent && !parent.tableId) {\n        parent = parent.parent\n      }\n      return parent\n    })\n\n    const { registerNormalWatchers, registerComplexWatchers } = useWatcher(\n      owner,\n      props\n    )\n    const {\n      columnId,\n      isSubColumn,\n      realHeaderAlign,\n      columnOrTableParent,\n      setColumnWidth,\n      setColumnForcedProps,\n      setColumnRenders,\n      getPropsData,\n      getColumnElIndex,\n      realAlign,\n    } = useRender(props as unknown as TableColumnCtx<unknown>, slots, owner)\n\n    const parent = columnOrTableParent.value\n    columnId.value = `${\n      parent.tableId || parent.columnId\n    }_column_${columnIdSeed++}`\n    onBeforeMount(() => {\n      isSubColumn.value = owner.value !== parent\n\n      const type = props.type || 'default'\n      const sortable = props.sortable === '' ? true : props.sortable\n      const defaults = {\n        ...cellStarts[type],\n        id: columnId.value,\n        type,\n        property: props.prop || props.property,\n        align: realAlign,\n        headerAlign: realHeaderAlign,\n        showOverflowTooltip:\n          props.showOverflowTooltip || props.showTooltipWhenOverflow,\n        filterable: props.filters || props.filterMethod,\n        filteredValue: [],\n        filterPlacement: '',\n        isColumnGroup: false,\n        isSubColumn: false,\n        filterOpened: false,\n        sortable,\n        sortOrders: [\n          tableConfig.value.sort.ascending,\n          tableConfig.value.sort.descending,\n          null,\n        ],\n        index: props.index,\n        // <b-table-column key=\"xxx\" />\n        rawColumnKey: instance.vnode.key,\n      }\n\n      const basicProps = [\n        'columnKey',\n        'label',\n        'className',\n        'labelClassName',\n        'type',\n        'renderHeader',\n        'formatter',\n        'fixed',\n        'resizable',\n      ]\n      const sortProps = ['sortMethod', 'sortBy']\n      const selectProps = ['selectable', 'reserveSelection']\n      const filterProps = [\n        'filterMethod',\n        'filters',\n        'filterMultiple',\n        'filterOpened',\n        'filteredValue',\n        'filterPlacement',\n      ]\n\n      let column = getPropsData(basicProps, sortProps, selectProps, filterProps)\n\n      column = mergeOptions(defaults, column)\n      const chains = compose(\n        setColumnRenders,\n        setColumnWidth,\n        setColumnForcedProps\n      )\n      column = chains(column)\n      columnConfig.value = column\n\n      registerNormalWatchers()\n      registerComplexWatchers()\n    })\n    onMounted(() => {\n      const parent = columnOrTableParent.value\n      const children = isSubColumn.value\n        ? parent.vnode.el.children\n        : parent.refs.hiddenColumns?.children\n      const getColumnIndex = () =>\n        getColumnElIndex(children || [], instance.vnode.el)\n      columnConfig.value.getColumnIndex = getColumnIndex\n      const columnIndex = getColumnIndex()\n      columnIndex > -1 &&\n        owner.value.store.commit(\n          'insertColumn',\n          columnConfig.value,\n          isSubColumn.value ? parent.columnConfig.value : null\n        )\n    })\n    onBeforeUnmount(() => {\n      owner.value.store.commit(\n        'removeColumn',\n        columnConfig.value,\n        isSubColumn.value ? parent.columnConfig.value : null\n      )\n    })\n    instance.columnId = columnId.value\n\n    instance.columnConfig = columnConfig\n    return\n  },\n  render() {\n    try {\n      const renderDefault = this.$slots.default?.({\n        row: {},\n        column: {},\n        $index: -1,\n      })\n      const children = []\n      if (Array.isArray(renderDefault)) {\n        for (const childNode of renderDefault) {\n          if (\n            childNode.type?.name === 'BTableColumn' ||\n            childNode.shapeFlag & 2\n          ) {\n            children.push(childNode)\n          } else if (\n            childNode.type === Fragment &&\n            Array.isArray(childNode.children)\n          ) {\n            childNode.children.forEach((vnode) => {\n              // No rendering when vnode is dynamic slot or text\n              if (vnode?.patchFlag !== 1024 && !isString(vnode?.children)) {\n                children.push(vnode)\n              }\n            })\n          }\n        }\n      }\n      const vnode = h('div', children)\n      return vnode\n    } catch {\n      return h('div', [])\n    }\n  },\n})\n"],"names":["parent","vnode"],"mappings":";;;;;;;;;;;;AAwBA,IAAI,YAAe,GAAA,CAAA,CAAA;AAEnB,mBAAe,eAAgB,CAAA;AAAA,EAC7B,IAAM,EAAA,cAAA;AAAA,EACN,UAAY,EAAA;AAAA,IACV,SAAA;AAAA,GACF;AAAA,EACA,KAAO,EAAA,YAAA;AAAA,EACP,KAAM,CAAA,KAAA,EAAO,EAAE,KAAA,EAAS,EAAA;AACtB,IAAA,MAAM,WAAW,kBAAmB,EAAA,CAAA;AACpC,IAAM,MAAA,YAAA,GAAe,GAAyC,CAAA,EAAE,CAAA,CAAA;AAChE,IAAM,MAAA,WAAA,GAAc,gBAAgB,OAAS,EAAA;AAAA,MAC3C,IAAM,EAAA,EAAE,SAAW,EAAA,WAAA,EAAa,YAAY,YAAa,EAAA;AAAA,KAC1D,CAAA,CAAA;AACD,IAAM,MAAA,KAAA,GAAQ,SAAS,MAAM;AAC3B,MAAA,IAAIA,UAAS,QAAS,CAAA,MAAA,CAAA;AACtB,MAAOA,OAAAA,OAAAA,IAAU,CAACA,OAAAA,CAAO,OAAS,EAAA;AAChC,QAAAA,UAASA,OAAO,CAAA,MAAA,CAAA;AAAA,OAClB;AACA,MAAOA,OAAAA,OAAAA,CAAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAM,MAAA,EAAE,sBAAwB,EAAA,uBAAA,EAA4B,GAAA,UAAA;AAAA,MAC1D,KAAA;AAAA,MACA,KAAA;AAAA,KACF,CAAA;AACA,IAAM,MAAA;AAAA,MACJ,QAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA,mBAAA;AAAA,MACA,cAAA;AAAA,MACA,oBAAA;AAAA,MACA,gBAAA;AAAA,MACA,YAAA;AAAA,MACA,gBAAA;AAAA,MACA,SAAA;AAAA,KACE,GAAA,SAAA,CAAU,KAA6C,EAAA,KAAA,EAAO,KAAK,CAAA,CAAA;AAEvE,IAAA,MAAM,SAAS,mBAAoB,CAAA,KAAA,CAAA;AACnC,IAAA,QAAA,CAAS,KAAQ,GAAA,CAAA,EACf,MAAO,CAAA,OAAA,IAAW,OAAO,QAChB,CAAA,QAAA,EAAA,YAAA,EAAA,CAAA,CAAA,CAAA;AACX,IAAA,aAAA,CAAc,MAAM;AAClB,MAAY,WAAA,CAAA,KAAA,GAAQ,MAAM,KAAU,KAAA,MAAA,CAAA;AAEpC,MAAM,MAAA,IAAA,GAAO,MAAM,IAAQ,IAAA,SAAA,CAAA;AAC3B,MAAA,MAAM,QAAW,GAAA,KAAA,CAAM,QAAa,KAAA,EAAA,GAAK,OAAO,KAAM,CAAA,QAAA,CAAA;AACtD,MAAA,MAAM,QAAW,GAAA;AAAA,QACf,GAAG,UAAW,CAAA,IAAA,CAAA;AAAA,QACd,IAAI,QAAS,CAAA,KAAA;AAAA,QACb,IAAA;AAAA,QACA,QAAA,EAAU,KAAM,CAAA,IAAA,IAAQ,KAAM,CAAA,QAAA;AAAA,QAC9B,KAAO,EAAA,SAAA;AAAA,QACP,WAAa,EAAA,eAAA;AAAA,QACb,mBAAA,EACE,KAAM,CAAA,mBAAA,IAAuB,KAAM,CAAA,uBAAA;AAAA,QACrC,UAAA,EAAY,KAAM,CAAA,OAAA,IAAW,KAAM,CAAA,YAAA;AAAA,QACnC,eAAe,EAAC;AAAA,QAChB,eAAiB,EAAA,EAAA;AAAA,QACjB,aAAe,EAAA,KAAA;AAAA,QACf,WAAa,EAAA,KAAA;AAAA,QACb,YAAc,EAAA,KAAA;AAAA,QACd,QAAA;AAAA,QACA,UAAY,EAAA;AAAA,UACV,WAAA,CAAY,MAAM,IAAK,CAAA,SAAA;AAAA,UACvB,WAAA,CAAY,MAAM,IAAK,CAAA,UAAA;AAAA,UACvB,IAAA;AAAA,SACF;AAAA,QACA,OAAO,KAAM,CAAA,KAAA;AAAA,QAEb,YAAA,EAAc,SAAS,KAAM,CAAA,GAAA;AAAA,OAC/B,CAAA;AAEA,MAAA,MAAM,UAAa,GAAA;AAAA,QACjB,WAAA;AAAA,QACA,OAAA;AAAA,QACA,WAAA;AAAA,QACA,gBAAA;AAAA,QACA,MAAA;AAAA,QACA,cAAA;AAAA,QACA,WAAA;AAAA,QACA,OAAA;AAAA,QACA,WAAA;AAAA,OACF,CAAA;AACA,MAAM,MAAA,SAAA,GAAY,CAAC,YAAA,EAAc,QAAQ,CAAA,CAAA;AACzC,MAAM,MAAA,WAAA,GAAc,CAAC,YAAA,EAAc,kBAAkB,CAAA,CAAA;AACrD,MAAA,MAAM,WAAc,GAAA;AAAA,QAClB,cAAA;AAAA,QACA,SAAA;AAAA,QACA,gBAAA;AAAA,QACA,cAAA;AAAA,QACA,eAAA;AAAA,QACA,iBAAA;AAAA,OACF,CAAA;AAEA,MAAA,IAAI,MAAS,GAAA,YAAA,CAAa,UAAY,EAAA,SAAA,EAAW,aAAa,WAAW,CAAA,CAAA;AAEzE,MAAS,MAAA,GAAA,YAAA,CAAa,UAAU,MAAM,CAAA,CAAA;AACtC,MAAA,MAAM,MAAS,GAAA,OAAA;AAAA,QACb,gBAAA;AAAA,QACA,cAAA;AAAA,QACA,oBAAA;AAAA,OACF,CAAA;AACA,MAAA,MAAA,GAAS,OAAO,MAAM,CAAA,CAAA;AACtB,MAAA,YAAA,CAAa,KAAQ,GAAA,MAAA,CAAA;AAErB,MAAuB,sBAAA,EAAA,CAAA;AACvB,MAAwB,uBAAA,EAAA,CAAA;AAAA,KACzB,CAAA,CAAA;AACD,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,MAAMA,UAAS,mBAAoB,CAAA,KAAA,CAAA;AACnC,MAAM,MAAA,QAAA,GAAW,YAAY,KACzBA,GAAAA,OAAAA,CAAO,MAAM,EAAG,CAAA,QAAA,GAChBA,OAAO,CAAA,IAAA,CAAK,aAAe,EAAA,QAAA,CAAA;AAC/B,MAAM,MAAA,cAAA,GAAiB,MACrB,gBAAiB,CAAA,QAAA,IAAY,EAAI,EAAA,QAAA,CAAS,MAAM,EAAE,CAAA,CAAA;AACpD,MAAA,YAAA,CAAa,MAAM,cAAiB,GAAA,cAAA,CAAA;AACpC,MAAA,MAAM,cAAc,cAAe,EAAA,CAAA;AACnC,MAAc,WAAA,GAAA,CAAA,CAAA,IACZ,KAAM,CAAA,KAAA,CAAM,KAAM,CAAA,MAAA;AAAA,QAChB,cAAA;AAAA,QACA,YAAa,CAAA,KAAA;AAAA,QACb,WAAY,CAAA,KAAA,GAAQA,OAAO,CAAA,YAAA,CAAa,KAAQ,GAAA,IAAA;AAAA,OAClD,CAAA;AAAA,KACH,CAAA,CAAA;AACD,IAAA,eAAA,CAAgB,MAAM;AACpB,MAAA,KAAA,CAAM,MAAM,KAAM,CAAA,MAAA;AAAA,QAChB,cAAA;AAAA,QACA,YAAa,CAAA,KAAA;AAAA,QACb,WAAY,CAAA,KAAA,GAAQ,MAAO,CAAA,YAAA,CAAa,KAAQ,GAAA,IAAA;AAAA,OAClD,CAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAA,QAAA,CAAS,WAAW,QAAS,CAAA,KAAA,CAAA;AAE7B,IAAA,QAAA,CAAS,YAAe,GAAA,YAAA,CAAA;AACxB,IAAA,OAAA;AAAA,GACF;AAAA,EACA,MAAS,GAAA;AACP,IAAI,IAAA;AACF,MAAM,MAAA,aAAA,GAAgB,IAAK,CAAA,MAAA,CAAO,OAAU,GAAA;AAAA,QAC1C,KAAK,EAAC;AAAA,QACN,QAAQ,EAAC;AAAA,QACT,MAAQ,EAAA,CAAA,CAAA;AAAA,OACT,CAAA,CAAA;AACD,MAAA,MAAM,WAAW,EAAC,CAAA;AAClB,MAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,aAAa,CAAG,EAAA;AAChC,QAAA,KAAA,MAAW,aAAa,aAAe,EAAA;AACrC,UAAA,IACE,UAAU,IAAM,EAAA,IAAA,KAAS,cACzB,IAAA,SAAA,CAAU,YAAY,CACtB,EAAA;AACA,YAAA,QAAA,CAAS,KAAK,SAAS,CAAA,CAAA;AAAA,WACzB,MAAA,IACE,UAAU,IAAS,KAAA,QAAA,IACnB,MAAM,OAAQ,CAAA,SAAA,CAAU,QAAQ,CAChC,EAAA;AACA,YAAU,SAAA,CAAA,QAAA,CAAS,OAAQ,CAAA,CAACC,MAAU,KAAA;AAEpC,cAAA,IAAIA,QAAO,SAAc,KAAA,IAAA,IAAQ,CAAC,QAASA,CAAAA,MAAAA,EAAO,QAAQ,CAAG,EAAA;AAC3D,gBAAA,QAAA,CAAS,KAAKA,MAAK,CAAA,CAAA;AAAA,eACrB;AAAA,aACD,CAAA,CAAA;AAAA,WACH;AAAA,SACF;AAAA,OACF;AACA,MAAM,MAAA,KAAA,GAAQ,CAAE,CAAA,KAAA,EAAO,QAAQ,CAAA,CAAA;AAC/B,MAAO,OAAA,KAAA,CAAA;AAAA,KACP,CAAA,MAAA;AACA,MAAO,OAAA,CAAA,CAAE,KAAO,EAAA,EAAE,CAAA,CAAA;AAAA,KACpB;AAAA,GACF;AACF,CAAC,CAAA;;;;"}