@semcore/data-table 3.7.16 → 3.7.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"DataTable.js","names":["REVERSED_SORT_DIRECTION","desc","asc","DEFAULT_SORT_DIRECTION","ROW_GROUP","Symbol","cssVarReg","createCssVarForWidth","name","replace","setBorderGroupColumns","columns","side","firstColumn","lastColumn","length","borderLeft","borderRight","RootDefinitionTable","props","React","createRef","event","column","find","fire","active","sortDirection","forceUpdate","tableRef","current","scrollIntoView","block","inline","behavior","syncScroll","scrollBodyRef","scrollHeadRef","setVar","style","setProperty","varWidth","width","children","options","fixed","undefined","sort","asProps","columnsChildren","Children","forEach","child","isValidElement","type","DefinitionTable","Column","resizable","sortable","flex","vBorders","lastColumnChildren","isGroup","childrenToColumns","some","c","flattenColumns","map","join","toArray","filter","columnChildren","ref","getBoundingClientRect","forwardRef","push","use","$onSortClick","callAllEventHandlers","handlerSortClick","scrollToUp","onResize","handlerResize","$scrollRef","data","uniqueKey","cellPropsLayers","rowPropsLayers","other","Cell","split","childrenPropsGetter","Row","rows","dataToRows","parseData","exclude","row","groupByName","columnsWithoutRowGroup","rowKey","columnNames","groupedColumns","groupData","rowsGroup","rowsGroupedNames","Object","fromEntries","subRow","keys","flat","key","cells","cssVar","flatRowData","setVarStyle","SDataTable","Box","styles","sstyled","Component","ComponentDefinition","createComponent","Head","Body"],"sources":["../../src/DataTable.tsx"],"sourcesContent":["import React from 'react';\nimport { Property } from 'csstype';\nimport createComponent, { Component, PropGetterFn, Root, sstyled } from '@semcore/core';\nimport { Box, IBoxProps, IFlexProps } from '@semcore/flex-box';\nimport syncScroll from '@semcore/utils/lib/syncScroll';\nimport { callAllEventHandlers } from '@semcore/utils/lib/assignProps';\nimport fire from '@semcore/utils/lib/fire';\nimport { flattenColumns } from './utils';\nimport type {\n Column,\n NestedCells,\n PropsLayer,\n PseudoChildPropsGetter,\n RowData,\n SortDirection,\n} from './types';\nimport Head from './Head';\nimport Body from './Body';\n\nimport style from './style/data-table.shadow.css';\n\nconst REVERSED_SORT_DIRECTION: { [direction in SortDirection]: SortDirection } = {\n desc: 'asc',\n asc: 'desc',\n};\nconst DEFAULT_SORT_DIRECTION: SortDirection = 'desc';\n\nconst ROW_GROUP = Symbol('ROW_GROUP');\n\nconst cssVarReg = /[:;]/g;\n\nconst createCssVarForWidth = (name: string) => {\n return `--${name.replace(cssVarReg, '_')}_width`;\n};\n\ntype AsProps = {\n use: 'primary' | 'secondary';\n sort: SortDirection[];\n data: RowData[];\n uniqueKey: string;\n};\n\ntype HeadAsProps = {\n children: React.ReactChild;\n};\ntype BodyAsProps = {\n children: React.ReactChild;\n};\n\n/* utils type */\ntype CProps<Props, Ctx = {}, UCProps = {}> = Props & {\n children?: ((props: Props & Ctx, handlers: UCProps) => React.ReactNode) | React.ReactNode;\n};\ntype ReturnEl = React.ReactElement | null;\ntype ChildRenderFn<Props> = Props & {\n children?: (props: Props, column: DataTableData, index: number) => { [key: string]: unknown };\n};\n/* utils type */\n\nexport type DataTableData = { [key: string]: unknown };\nexport type DataTableSort = [string, 'desc' | 'asc'];\nexport type DataTableTheme = 'muted' | 'info' | 'success' | 'warning' | 'danger';\nexport type DataTableUse = 'primary' | 'secondary';\nexport type DataTableRow = DataTableCell[];\nexport type DataTableCell = {\n /** Name of column */\n name: string;\n /** Data of column */\n data: React.ReactNode;\n [key: string]: unknown;\n};\n\nexport interface IDataTableProps extends IBoxProps {\n /** Theme for table\n * @default primary\n * */\n use?: DataTableUse;\n /** Data for table */\n data?: DataTableData[];\n /** Active sort object */\n sort?: DataTableSort;\n /** Handler call when will request change sort */\n onSortChange?: (sort: DataTableSort, e?: React.SyntheticEvent) => void;\n /** Field name in one data entity that is unique accross all set of data\n * @default id\n */\n uniqueKey?: string;\n}\n\nexport interface IDataTableHeadProps extends IBoxProps {\n /** Sticky header table\n * @deprecated\n * */\n sticky?: boolean;\n\n /** Hidden header */\n hidden?: boolean;\n\n /** Disabled scroll */\n disabledScroll?: boolean;\n}\n\nexport interface IDataTableColumnProps extends IFlexProps {\n /** Unique name column */\n name?: string;\n /** Enable sort for column also if you pass string you can set default sort */\n sortable?: boolean | 'desc' | 'asc';\n /** Enable resize for column\n * @ignore */\n resizable?: boolean;\n /** Fixed column on the left/right */\n fixed?: 'left' | 'right';\n /** Fields to control the size of the column. */\n flex?: Property.Flex | 'inherit';\n /** Add vertical borders */\n vBorders?: boolean;\n /** Add vertical border to the right side */\n borderRight?: boolean;\n /** Add vertical border to the left side */\n borderLeft?: boolean;\n /** Make cells less */\n compact?: boolean;\n}\n\nexport interface IDataTableBodyProps extends IBoxProps {\n /** Rows table */\n rows?: DataTableRow[];\n /** When enabled, only visually acessable rows are rendered.\n * `tollerance` property controls how many rows outside of viewport are render.\n * `rowHeight` fixes the rows height if it has known. If not provided, first row node height is measured.\n * @default { tollerance: 2 }\n */\n virtualScroll?: boolean | { tollerance?: number; rowHeight?: number };\n /**\n * Called every time user scrolls area\n */\n onScroll?: (event: React.SyntheticEvent<HTMLElement>) => void;\n /** Disabled scroll */\n disabledScroll?: boolean;\n}\n\nexport interface IDataTableRowProps extends IBoxProps {\n /** Theme for row */\n theme?: DataTableTheme;\n /** Displays row as active/hover */\n active?: boolean;\n}\n\nexport interface IDataTableCellProps extends IFlexProps {\n /** Unique name column or columns separated by / */\n name: string;\n /** Theme for cell */\n theme?: DataTableTheme;\n}\n\nfunction setBorderGroupColumns(columns: Column[], side?: string) {\n const firstColumn = columns[0];\n const lastColumn = columns[columns.length - 1];\n if (firstColumn && (!side || side === 'left')) {\n firstColumn.borderLeft = true;\n if (firstColumn.columns) {\n setBorderGroupColumns(firstColumn.columns, 'left');\n }\n }\n if (lastColumn && (!side || side === 'right')) {\n lastColumn.borderRight = true;\n if (lastColumn.columns) {\n setBorderGroupColumns(lastColumn.columns, 'right');\n }\n }\n}\n\nclass RootDefinitionTable extends Component<AsProps> {\n static displayName = 'DefinitionTable';\n\n static style = style;\n\n static defaultProps = {\n use: 'primary',\n uniqueKey: 'id',\n sort: [],\n data: [],\n } as AsProps;\n\n columns: Column[] = [];\n\n tableRef = React.createRef<HTMLElement>();\n scrollBodyRef: null | ReturnType<ReturnType<typeof syncScroll>> = null;\n scrollHeadRef: null | ReturnType<ReturnType<typeof syncScroll>> = null;\n\n constructor(props: AsProps) {\n super(props);\n\n const createRef = syncScroll();\n // first create body ref for master scroll\n this.scrollBodyRef = createRef('body');\n this.scrollHeadRef = createRef('head');\n }\n\n handlerSortClick = (name: string, event: React.MouseEvent) => {\n const column = this.columns.find((column) => column.name === name)!;\n return fire(\n this,\n 'onSortChange',\n [\n column.name,\n column.active ? REVERSED_SORT_DIRECTION[column.sortDirection] : column.sortDirection,\n ],\n event,\n );\n };\n\n handlerResize = () => {\n this.forceUpdate();\n };\n\n scrollToUp = () => {\n this.tableRef?.current?.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n behavior: 'smooth',\n });\n };\n\n setVarStyle(columns: Column[]) {\n for (const column of columns) {\n if (column.setVar) {\n this.tableRef.current?.style.setProperty(column.varWidth, `${column.width}px`);\n }\n }\n }\n\n childrenToColumns(\n children: React.ReactNode,\n options: { fixed?: 'left' | 'right' } = { fixed: undefined },\n ) {\n const { sort } = this.asProps;\n const columnsChildren: Column[] = [];\n React.Children.forEach(children, (child) => {\n if (!React.isValidElement(child)) return;\n if (child.type !== DefinitionTable.Column) return;\n\n let {\n children,\n name,\n fixed = options.fixed,\n resizable,\n sortable,\n flex,\n vBorders,\n active,\n ...props\n } = child.props as Column['props'];\n const lastColumnChildren = columnsChildren[columnsChildren.length - 1];\n const isGroup = !name;\n let columns: Column[] | undefined;\n\n if (isGroup) {\n columns = this.childrenToColumns(children, { fixed });\n active = typeof active === 'boolean' ? active : columns.some((c) => c.active);\n\n if (vBorders) {\n setBorderGroupColumns(columns);\n }\n\n name = flattenColumns(columns)\n .map(({ name }) => name)\n .join('/');\n if (!columns.length) return;\n children = React.Children.toArray(children).filter(\n (child) => !(React.isValidElement(child) && child.type === DefinitionTable.Column),\n );\n }\n\n const column = this.columns.find((column) => column.name === name);\n const columnChildren = {\n get width() {\n // @ts-ignore\n return this.props.ref.current?.getBoundingClientRect().width || 0;\n },\n name,\n varWidth: createCssVarForWidth(name),\n setVar: flex !== 'inherit',\n fixed,\n resizable,\n active: typeof active === 'boolean' ? active : sort[0] === name,\n sortable,\n borderLeft: lastColumnChildren?.borderRight === true ? false : vBorders,\n borderRight: vBorders,\n sortDirection:\n sort[0] === name\n ? sort[1]\n : column?.sortDirection ||\n (typeof sortable == 'string' ? sortable : DEFAULT_SORT_DIRECTION),\n props: {\n name,\n flex: flex === 'inherit' ? undefined : flex,\n ...props,\n // @ts-ignore\n forwardRef: child.ref,\n children,\n ref: column?.props?.ref || React.createRef(),\n },\n } as unknown as Column;\n\n if (columns) {\n columnChildren.columns = columns;\n }\n columnsChildren.push(columnChildren);\n });\n return columnsChildren;\n }\n\n getHeadProps(props: HeadAsProps) {\n const { use } = this.asProps;\n const columnsChildren = this.childrenToColumns(props.children);\n\n this.columns = flattenColumns(columnsChildren);\n return {\n $onSortClick: callAllEventHandlers(this.handlerSortClick, this.scrollToUp),\n columnsChildren,\n use,\n onResize: this.handlerResize,\n $scrollRef: this.scrollHeadRef,\n };\n }\n\n getBodyProps(props: BodyAsProps) {\n const { data, use, uniqueKey } = this.asProps;\n const cellPropsLayers: { [columnName: string]: PropsLayer[] } = {};\n const rowPropsLayers: PropsLayer[] = [];\n\n React.Children.forEach(props.children, (child) => {\n if (React.isValidElement(child)) {\n const { name, children, ...other } = child.props as {\n name?: string;\n children?: PseudoChildPropsGetter;\n } & { [propName: string]: unknown };\n if (child.type === DefinitionTable.Cell && name) {\n name.split('/').forEach((name) => {\n cellPropsLayers[name] = cellPropsLayers[name] || [];\n cellPropsLayers[name].push({\n ...other,\n childrenPropsGetter: children,\n });\n });\n }\n if (child.type === DefinitionTable.Row) {\n rowPropsLayers.push({\n ...other,\n childrenPropsGetter: children,\n });\n }\n }\n });\n\n return {\n columns: this.columns,\n rows: this.dataToRows(data, cellPropsLayers),\n uniqueKey,\n use,\n rowPropsLayers,\n $scrollRef: this.scrollBodyRef,\n };\n }\n\n dataToRows(data: RowData[], cellPropsLayers: { [columnName: string]: PropsLayer[] }) {\n const parseData = (data: RowData[], exclude: { [columnName: string]: true }) =>\n data.map((row) => {\n const groupByName: {\n [columnName: string]: {\n groupedColumns: string[];\n groupData: { [columnName: string]: unknown };\n };\n } = {};\n const columnsWithoutRowGroup: { [columnname: string]: true } = {};\n for (const rowKey in row) {\n const columnNames = rowKey.split('/');\n if (columnNames.length >= 2) {\n for (const column of columnNames) {\n groupByName[column] = {\n groupedColumns: columnNames,\n groupData: row[rowKey] as { [columnName: string]: unknown },\n };\n columnsWithoutRowGroup[column] = true;\n }\n } else {\n columnsWithoutRowGroup[rowKey] = true;\n }\n }\n\n const rowsGroup = row[ROW_GROUP] || [];\n const rowsGroupedNames = Object.fromEntries(\n rowsGroup\n .map((subRow) => Object.keys(subRow))\n .flat()\n .map(key => key.split('/'))\n .flat()\n .map((key) => [key, true]),\n );\n\n let isGroup = false;\n\n const cells: NestedCells = this.columns\n .map((column) => {\n if (groupByName[column.name]) {\n const { groupedColumns, groupData } = groupByName[column.name];\n if (groupedColumns[0] === column.name) {\n return {\n name: groupedColumns.join('/'),\n cssVar: groupedColumns.map(createCssVarForWidth),\n fixed: column.fixed,\n data: groupData,\n cellPropsLayers: cellPropsLayers[column.name] || [],\n };\n }\n } else if (column.name in row) {\n return {\n name: column.name,\n cssVar: column.varWidth,\n fixed: column.fixed,\n data: row[column.name],\n cellPropsLayers: cellPropsLayers[column.name] || [],\n };\n } else if (!isGroup && rowsGroupedNames[column.name]) {\n // TODO: make it work not only with first group\n isGroup = true;\n return parseData(rowsGroup, {\n ...exclude,\n ...columnsWithoutRowGroup,\n });\n } else if (!exclude[column.name] && !rowsGroupedNames[column.name]) {\n // add empty cell if it is not present in data\n return {\n name: column.name,\n cssVar: column.varWidth,\n fixed: column.fixed,\n data: null,\n cellPropsLayers: cellPropsLayers[column.name] || [],\n };\n }\n })\n .filter((column) => column)\n .map((column) => column!);\n\n cells.flatRowData = row;\n return cells;\n });\n\n return parseData(data, {});\n }\n\n componentDidUpdate() {\n this.setVarStyle(this.columns);\n }\n\n render() {\n const SDataTable = Root;\n const { Children, styles, data } = this.asProps;\n\n return sstyled(styles)(\n <SDataTable\n render={Box}\n __excludeProps={['data']}\n ref={this.tableRef}\n role='table'\n aria-rowcount={(data ?? []).length}\n >\n <Children />\n </SDataTable>,\n );\n }\n}\n\ninterface IDataTableCtx {\n getHeadProps: PropGetterFn;\n getBodyProps: PropGetterFn;\n}\n\nfunction ComponentDefinition() {\n return null;\n}\n\nconst DefinitionTable = createComponent(\n RootDefinitionTable,\n {\n Head,\n Body,\n Column: ComponentDefinition,\n Cell: ComponentDefinition,\n Row: ComponentDefinition,\n },\n {},\n) as (<T>(props: CProps<IDataTableProps & T, IDataTableCtx>) => ReturnEl) & {\n Head: <T>(props: IDataTableHeadProps & T) => ReturnEl;\n Body: <T>(props: IDataTableBodyProps & T) => ReturnEl;\n Column: <T>(props: IDataTableColumnProps & T) => ReturnEl;\n Cell: <T>(props: ChildRenderFn<IDataTableCellProps & T>) => ReturnEl;\n Row: <T>(props: ChildRenderFn<IDataTableRowProps & T>) => ReturnEl;\n};\n\nexport { ROW_GROUP };\nexport default DefinitionTable;\n"],"mappings":"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"}
1
+ {"version":3,"file":"DataTable.js","names":["REVERSED_SORT_DIRECTION","desc","asc","DEFAULT_SORT_DIRECTION","ROW_GROUP","Symbol","cssVarReg","createCssVarForWidth","name","replace","setBorderGroupColumns","columns","side","firstColumn","lastColumn","length","borderLeft","borderRight","RootDefinitionTable","props","React","createRef","event","column","find","fire","active","sortDirection","forceUpdate","tableRef","current","scrollIntoView","block","inline","behavior","syncScroll","scrollBodyRef","scrollHeadRef","setVar","style","setProperty","varWidth","width","children","options","fixed","undefined","sort","asProps","columnsChildren","Children","forEach","child","isValidElement","type","DefinitionTable","Column","resizable","sortable","flex","vBorders","lastColumnChildren","isGroup","childrenToColumns","some","c","flattenColumns","map","join","toArray","filter","columnChildren","ref","getBoundingClientRect","forwardRef","push","use","$onSortClick","callAllEventHandlers","handlerSortClick","scrollToUp","onResize","handlerResize","$scrollRef","data","uniqueKey","cellPropsLayers","rowPropsLayers","other","Cell","split","childrenPropsGetter","Row","rows","dataToRows","parseData","exclude","row","groupByName","columnsWithoutRowGroup","rowKey","columnNames","groupedColumns","groupData","rowsGroup","rowsGroupedNames","Object","fromEntries","subRow","keys","flat","key","cells","cssVar","flatRowData","setVarStyle","SDataTable","Box","styles","sstyled","Component","ComponentDefinition","createComponent","Head","Body"],"sources":["../../src/DataTable.tsx"],"sourcesContent":["import React from 'react';\nimport { Property } from 'csstype';\nimport createComponent, { Component, PropGetterFn, Root, sstyled } from '@semcore/core';\nimport { Box, IBoxProps, IFlexProps } from '@semcore/flex-box';\nimport syncScroll from '@semcore/utils/lib/syncScroll';\nimport { callAllEventHandlers } from '@semcore/utils/lib/assignProps';\nimport fire from '@semcore/utils/lib/fire';\nimport { flattenColumns } from './utils';\nimport type {\n Column,\n NestedCells,\n PropsLayer,\n PseudoChildPropsGetter,\n RowData,\n SortDirection,\n} from './types';\nimport Head from './Head';\nimport Body from './Body';\n\nimport style from './style/data-table.shadow.css';\n\nconst REVERSED_SORT_DIRECTION: { [direction in SortDirection]: SortDirection } = {\n desc: 'asc',\n asc: 'desc',\n};\nconst DEFAULT_SORT_DIRECTION: SortDirection = 'desc';\n\nconst ROW_GROUP = Symbol('ROW_GROUP');\n\nconst cssVarReg = /[:;]/g;\n\nconst createCssVarForWidth = (name: string) => {\n return `--${name.replace(cssVarReg, '_')}_width`;\n};\n\ntype AsProps = {\n use: 'primary' | 'secondary';\n sort: SortDirection[];\n data: RowData[];\n uniqueKey: string;\n};\n\ntype HeadAsProps = {\n children: React.ReactChild;\n};\ntype BodyAsProps = {\n children: React.ReactChild;\n};\n\n/* utils type */\ntype CProps<Props, Ctx = {}, UCProps = {}> = Props & {\n children?: ((props: Props & Ctx, handlers: UCProps) => React.ReactNode) | React.ReactNode;\n};\ntype ReturnEl = React.ReactElement | null;\ntype ChildRenderFn<Props> = Props & {\n children?: (props: Props, column: DataTableData, index: number) => { [key: string]: unknown };\n};\n/* utils type */\n\nexport type DataTableData = { [key: string]: unknown };\nexport type DataTableSort = [string, 'desc' | 'asc'];\nexport type DataTableTheme = 'muted' | 'info' | 'success' | 'warning' | 'danger';\nexport type DataTableUse = 'primary' | 'secondary';\nexport type DataTableRow = DataTableCell[];\nexport type DataTableCell = {\n /** Name of column */\n name: string;\n /** Data of column */\n data: React.ReactNode;\n [key: string]: unknown;\n};\n\nexport interface IDataTableProps extends IBoxProps {\n /** Theme for table\n * @default primary\n * */\n use?: DataTableUse;\n /** Data for table */\n data?: DataTableData[];\n /** Active sort object */\n sort?: DataTableSort;\n /** Handler call when will request change sort */\n onSortChange?: (sort: DataTableSort, e?: React.SyntheticEvent) => void;\n /** Field name in one data entity that is unique accross all set of data\n * @default id\n */\n uniqueKey?: string;\n}\n\nexport interface IDataTableHeadProps extends IBoxProps {\n /** Sticky header table\n * @deprecated\n * */\n sticky?: boolean;\n\n /** Hidden header */\n hidden?: boolean;\n\n /** Disabled scroll */\n disabledScroll?: boolean;\n}\n\nexport interface IDataTableColumnProps extends IFlexProps {\n /** Unique name column */\n name?: string;\n /** Enable sort for column also if you pass string you can set default sort */\n sortable?: boolean | 'desc' | 'asc';\n /** Enable resize for column\n * @ignore */\n resizable?: boolean;\n /** Fixed column on the left/right */\n fixed?: 'left' | 'right';\n /** Fields to control the size of the column. */\n flex?: Property.Flex | 'inherit';\n /** Add vertical borders */\n vBorders?: boolean;\n /** Add vertical border to the right side */\n borderRight?: boolean;\n /** Add vertical border to the left side */\n borderLeft?: boolean;\n /** Make cells less */\n compact?: boolean;\n}\n\nexport interface IDataTableBodyProps extends IBoxProps {\n /** Rows table */\n rows?: DataTableRow[];\n /** When enabled, only visually acessable rows are rendered.\n * `tollerance` property controls how many rows outside of viewport are render.\n * `rowHeight` fixes the rows height if it has known. If not provided, first row node height is measured.\n * @default { tollerance: 2 }\n */\n virtualScroll?: boolean | { tollerance?: number; rowHeight?: number };\n /**\n * Called every time user scrolls area\n */\n onScroll?: (event: React.SyntheticEvent<HTMLElement>) => void;\n /** Disabled scroll */\n disabledScroll?: boolean;\n}\n\nexport interface IDataTableRowProps extends IBoxProps {\n /** Theme for row */\n theme?: DataTableTheme;\n /** Displays row as active/hover */\n active?: boolean;\n}\n\nexport interface IDataTableCellProps extends IFlexProps {\n /** Unique name column or columns separated by / */\n name: string;\n /** Theme for cell */\n theme?: DataTableTheme;\n}\n\nfunction setBorderGroupColumns(columns: Column[], side?: string) {\n const firstColumn = columns[0];\n const lastColumn = columns[columns.length - 1];\n if (firstColumn && (!side || side === 'left')) {\n firstColumn.borderLeft = true;\n if (firstColumn.columns) {\n setBorderGroupColumns(firstColumn.columns, 'left');\n }\n }\n if (lastColumn && (!side || side === 'right')) {\n lastColumn.borderRight = true;\n if (lastColumn.columns) {\n setBorderGroupColumns(lastColumn.columns, 'right');\n }\n }\n}\n\nclass RootDefinitionTable extends Component<AsProps> {\n static displayName = 'DefinitionTable';\n\n static style = style;\n\n static defaultProps = {\n use: 'primary',\n uniqueKey: 'id',\n sort: [],\n data: [],\n } as AsProps;\n\n columns: Column[] = [];\n\n tableRef = React.createRef<HTMLElement>();\n scrollBodyRef: null | ReturnType<ReturnType<typeof syncScroll>> = null;\n scrollHeadRef: null | ReturnType<ReturnType<typeof syncScroll>> = null;\n\n constructor(props: AsProps) {\n super(props);\n\n const createRef = syncScroll();\n // first create body ref for master scroll\n this.scrollBodyRef = createRef('body');\n this.scrollHeadRef = createRef('head');\n }\n\n handlerSortClick = (name: string, event: React.MouseEvent) => {\n const column = this.columns.find((column) => column.name === name)!;\n return fire(\n this,\n 'onSortChange',\n [\n column.name,\n column.active ? REVERSED_SORT_DIRECTION[column.sortDirection] : column.sortDirection,\n ],\n event,\n );\n };\n\n handlerResize = () => {\n this.forceUpdate();\n };\n\n scrollToUp = () => {\n this.tableRef?.current?.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n behavior: 'smooth',\n });\n };\n\n setVarStyle(columns: Column[]) {\n for (const column of columns) {\n if (column.setVar) {\n this.tableRef.current?.style.setProperty(column.varWidth, `${column.width}px`);\n }\n }\n }\n\n childrenToColumns(\n children: React.ReactNode,\n options: { fixed?: 'left' | 'right' } = { fixed: undefined },\n ) {\n const { sort } = this.asProps;\n const columnsChildren: Column[] = [];\n React.Children.forEach(children, (child) => {\n if (!React.isValidElement(child)) return;\n if (child.type !== DefinitionTable.Column) return;\n\n let {\n children,\n name,\n fixed = options.fixed,\n resizable,\n sortable,\n flex,\n vBorders,\n active,\n ...props\n } = child.props as Column['props'];\n const lastColumnChildren = columnsChildren[columnsChildren.length - 1];\n const isGroup = !name;\n let columns: Column[] | undefined;\n\n if (isGroup) {\n columns = this.childrenToColumns(children, { fixed });\n active = typeof active === 'boolean' ? active : columns.some((c) => c.active);\n\n if (vBorders) {\n setBorderGroupColumns(columns);\n }\n\n name = flattenColumns(columns)\n .map(({ name }) => name)\n .join('/');\n if (!columns.length) return;\n children = React.Children.toArray(children).filter(\n (child) => !(React.isValidElement(child) && child.type === DefinitionTable.Column),\n );\n }\n\n const column = this.columns.find((column) => column.name === name);\n const columnChildren = {\n get width() {\n // @ts-ignore\n return this.props.ref.current?.getBoundingClientRect().width || 0;\n },\n name,\n varWidth: createCssVarForWidth(name),\n setVar: flex !== 'inherit',\n fixed,\n resizable,\n active: typeof active === 'boolean' ? active : sort[0] === name,\n sortable,\n borderLeft: lastColumnChildren?.borderRight === true ? false : vBorders,\n borderRight: vBorders,\n sortDirection:\n sort[0] === name\n ? sort[1]\n : column?.sortDirection ||\n (typeof sortable == 'string' ? sortable : DEFAULT_SORT_DIRECTION),\n props: {\n name,\n flex: flex === 'inherit' ? undefined : flex,\n ...props,\n // @ts-ignore\n forwardRef: child.ref,\n children,\n ref: column?.props?.ref || React.createRef(),\n },\n } as unknown as Column;\n\n if (columns) {\n columnChildren.columns = columns;\n }\n columnsChildren.push(columnChildren);\n });\n return columnsChildren;\n }\n\n getHeadProps(props: HeadAsProps) {\n const { use } = this.asProps;\n const columnsChildren = this.childrenToColumns(props.children);\n\n this.columns = flattenColumns(columnsChildren);\n return {\n $onSortClick: callAllEventHandlers(this.handlerSortClick, this.scrollToUp),\n columnsChildren,\n use,\n onResize: this.handlerResize,\n $scrollRef: this.scrollHeadRef,\n };\n }\n\n getBodyProps(props: BodyAsProps) {\n const { data, use, uniqueKey } = this.asProps;\n const cellPropsLayers: { [columnName: string]: PropsLayer[] } = {};\n const rowPropsLayers: PropsLayer[] = [];\n\n React.Children.forEach(props.children, (child) => {\n if (React.isValidElement(child)) {\n const { name, children, ...other } = child.props as {\n name?: string;\n children?: PseudoChildPropsGetter;\n } & { [propName: string]: unknown };\n if (child.type === DefinitionTable.Cell && name) {\n name.split('/').forEach((name) => {\n cellPropsLayers[name] = cellPropsLayers[name] || [];\n cellPropsLayers[name].push({\n ...other,\n childrenPropsGetter: children,\n });\n });\n }\n if (child.type === DefinitionTable.Row) {\n rowPropsLayers.push({\n ...other,\n childrenPropsGetter: children,\n });\n }\n }\n });\n\n return {\n columns: this.columns,\n rows: this.dataToRows(data, cellPropsLayers),\n uniqueKey,\n use,\n rowPropsLayers,\n $scrollRef: this.scrollBodyRef,\n };\n }\n\n dataToRows(data: RowData[], cellPropsLayers: { [columnName: string]: PropsLayer[] }) {\n const parseData = (data: RowData[], exclude: { [columnName: string]: true }) =>\n data.map((row) => {\n const groupByName: {\n [columnName: string]: {\n groupedColumns: string[];\n groupData: { [columnName: string]: unknown };\n };\n } = {};\n const columnsWithoutRowGroup: { [columnname: string]: true } = {};\n for (const rowKey in row) {\n const columnNames = rowKey.split('/');\n if (columnNames.length >= 2) {\n for (const column of columnNames) {\n groupByName[column] = {\n groupedColumns: columnNames,\n groupData: row[rowKey] as { [columnName: string]: unknown },\n };\n columnsWithoutRowGroup[column] = true;\n }\n } else {\n columnsWithoutRowGroup[rowKey] = true;\n }\n }\n\n const rowsGroup = row[ROW_GROUP] || [];\n const rowsGroupedNames = Object.fromEntries(\n rowsGroup\n .map((subRow) => Object.keys(subRow))\n .flat()\n .map(key => key.split('/'))\n .flat()\n .map((key) => [key, true]),\n );\n\n let isGroup = false;\n\n const cells: NestedCells = this.columns\n .map((column) => {\n if (groupByName[column.name]) {\n const { groupedColumns, groupData } = groupByName[column.name];\n if (groupedColumns[0] === column.name) {\n return {\n name: groupedColumns.join('/'),\n cssVar: groupedColumns.map(createCssVarForWidth),\n fixed: column.fixed,\n data: groupData,\n cellPropsLayers: cellPropsLayers[column.name] || [],\n };\n }\n } else if (column.name in row) {\n return {\n name: column.name,\n cssVar: column.varWidth,\n fixed: column.fixed,\n data: row[column.name],\n cellPropsLayers: cellPropsLayers[column.name] || [],\n };\n } else if (!isGroup && rowsGroupedNames[column.name]) {\n // TODO: make it work not only with first group\n isGroup = true;\n return parseData(rowsGroup, {\n ...exclude,\n ...columnsWithoutRowGroup,\n });\n } else if (!exclude[column.name] && !rowsGroupedNames[column.name]) {\n // add empty cell if it is not present in data\n return {\n name: column.name,\n cssVar: column.varWidth,\n fixed: column.fixed,\n data: null,\n cellPropsLayers: cellPropsLayers[column.name] || [],\n };\n }\n })\n .filter((column) => column)\n .map((column) => column!);\n\n cells.flatRowData = row;\n return cells;\n });\n\n return parseData(data, {});\n }\n\n componentDidUpdate() {\n this.setVarStyle(this.columns);\n }\n\n render() {\n const SDataTable = Root;\n const { Children, styles, data } = this.asProps;\n\n return sstyled(styles)(\n <SDataTable\n render={Box}\n __excludeProps={['data']}\n ref={this.tableRef}\n role='table'\n aria-rowcount={(data ?? []).length}\n >\n <Children />\n </SDataTable>,\n );\n }\n}\n\ninterface IDataTableCtx {\n getHeadProps: PropGetterFn;\n getBodyProps: PropGetterFn;\n}\n\nfunction ComponentDefinition() {\n return null;\n}\n\nconst DefinitionTable = createComponent(\n RootDefinitionTable,\n {\n Head,\n Body,\n Column: ComponentDefinition,\n Cell: ComponentDefinition,\n Row: ComponentDefinition,\n },\n {},\n) as (<T>(props: CProps<IDataTableProps & T, IDataTableCtx>) => ReturnEl) & {\n Head: <T>(props: IDataTableHeadProps & T) => ReturnEl;\n Body: <T>(props: IDataTableBodyProps & T) => ReturnEl;\n Column: <T>(props: IDataTableColumnProps & T) => ReturnEl;\n Cell: <T>(props: ChildRenderFn<IDataTableCellProps & T>) => ReturnEl;\n Row: <T>(props: ChildRenderFn<IDataTableRowProps & T>) => ReturnEl;\n};\n\nexport { ROW_GROUP };\nexport default DefinitionTable;\n"],"mappings":"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"}
package/lib/cjs/Head.js CHANGED
@@ -7,6 +7,8 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports["default"] = void 0;
9
9
 
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
+
10
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
13
 
12
14
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
@@ -17,9 +19,7 @@ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/hel
17
19
 
18
20
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
21
 
20
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
-
22
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
22
+ var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
23
23
 
24
24
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
25
 
@@ -45,29 +45,21 @@ var _ref4 = require("@semcore/utils/lib/ref");
45
45
 
46
46
  require("resize-observer-polyfill");
47
47
 
48
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
49
-
50
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
51
-
52
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
53
-
54
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
55
-
56
48
  /*__reshadow-styles__:"./style/scroll-area.shadow.css"*/
57
49
  var scrollStyles = (
58
50
  /*__reshadow_css_start__*/
59
51
  _core.sstyled.insert(
60
52
  /*__inner_css_start__*/
61
- ".___SShadowHorizontal_1i5sm_gg_:before{left:var(--left_1i5sm)!important}.___SShadowHorizontal_1i5sm_gg_:after{right:var(--right_1i5sm)!important}.___SContainer_1i5sm_gg_.__disabledScroll_1i5sm_gg_{overflow:visible}"
53
+ ".___SShadowHorizontal_177hg_gg_:before{left:var(--left_177hg)!important}.___SShadowHorizontal_177hg_gg_:after{right:var(--right_177hg)!important}.___SContainer_177hg_gg_.__disabledScroll_177hg_gg_{overflow:visible}"
62
54
  /*__inner_css_end__*/
63
- , "1i5sm_gg_")
55
+ , "177hg_gg_")
64
56
  /*__reshadow_css_end__*/
65
57
  , {
66
- "__SShadowHorizontal": "___SShadowHorizontal_1i5sm_gg_",
67
- "--left": "--left_1i5sm",
68
- "--right": "--right_1i5sm",
69
- "__SContainer": "___SContainer_1i5sm_gg_",
70
- "_disabledScroll": "__disabledScroll_1i5sm_gg_"
58
+ "__SShadowHorizontal": "___SShadowHorizontal_177hg_gg_",
59
+ "--left": "--left_177hg",
60
+ "--right": "--right_177hg",
61
+ "__SContainer": "___SContainer_177hg_gg_",
62
+ "_disabledScroll": "__disabledScroll_177hg_gg_"
71
63
  });
72
64
  var SORTING_ICON = {
73
65
  desc: _m["default"],
@@ -81,7 +73,7 @@ var ariaSort = {
81
73
  var Head = /*#__PURE__*/function (_Component) {
82
74
  (0, _inherits2["default"])(Head, _Component);
83
75
 
84
- var _super = _createSuper(Head);
76
+ var _super = (0, _createSuper2["default"])(Head);
85
77
 
86
78
  function Head() {
87
79
  var _this;
@@ -149,7 +141,7 @@ var Head = /*#__PURE__*/function (_Component) {
149
141
  name = _getFixedStyle2[0],
150
142
  value = _getFixedStyle2[1];
151
143
 
152
- var style = _objectSpread({
144
+ var style = (0, _objectSpread2["default"])({
153
145
  flexBasis: column.props.flex === undefined && "".concat(width * cSize, "%")
154
146
  }, column.props.style);
155
147
 
@@ -161,7 +153,7 @@ var Head = /*#__PURE__*/function (_Component) {
161
153
  style['flexBasis'] = "var(".concat(column.varWidth, ")");
162
154
  }
163
155
 
164
- return _ref2 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SColumn, _ref2.cn("SColumn", _objectSpread(_objectSpread({
156
+ return _ref2 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SColumn, _ref2.cn("SColumn", (0, _objectSpread2["default"])((0, _objectSpread2["default"])({
165
157
  "role": isGroup ? undefined : 'columnheader',
166
158
  "key": column.name,
167
159
  "use": use,
@@ -229,7 +221,7 @@ var Head = /*#__PURE__*/function (_Component) {
229
221
  }), /*#__PURE__*/_react["default"].createElement(_scrollArea["default"].Container, {
230
222
  ref: $scrollRef,
231
223
  disabledScroll: disabledScroll
232
- }, /*#__PURE__*/_react["default"].createElement(SHead, _ref3.cn("SHead", _objectSpread({}, (0, _core.assignProps)({
224
+ }, /*#__PURE__*/_react["default"].createElement(SHead, _ref3.cn("SHead", (0, _objectSpread2["default"])({}, (0, _core.assignProps)({
233
225
  "role": "row"
234
226
  }, _ref))), this.renderColumns(columnsChildren, 100 / this.columns.length)))), Children.origin);
235
227
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Head.js","names":["SORTING_ICON","desc","SortDesc","asc","SortAsc","ariaSort","Head","name","event","asProps","$onSortClick","code","props","ref","setRef","forwardRef","columns","width","map","column","renderColumn","styles","use","hidden","SColumn","Flex","SHead","Box","SSortWrapper","SSortIcon","sortDirection","ariaSortValue","sortable","active","undefined","isGroup","length","cSize","flattenColumns","getFixedStyle","value","style","flexBasis","flex","setVar","varWidth","sstyled","fixed","resizable","justifyContent","includes","borderLeft","borderRight","refColumn","callAllEventHandlers","onClick","bindHandlerSortClick","onKeyDown","bindHandlerKeyDown","children","renderColumns","SHeadWrapper","Children","columnsChildren","onResize","$scrollRef","sticky","disabledScroll","getScrollOffsetValue","offsetLeftSum","offsetRightSum","logger","warn","displayName","scrollStyles","origin","Component"],"sources":["../../src/Head.tsx"],"sourcesContent":["import React from 'react';\nimport { Component, sstyled, Root } from '@semcore/core';\nimport { Box, Flex } from '@semcore/flex-box';\nimport ScrollArea from '@semcore/scroll-area';\nimport SortDesc from '@semcore/icon/SortDesc/m';\nimport SortAsc from '@semcore/icon/SortAsc/m';\nimport { callAllEventHandlers } from '@semcore/utils/lib/assignProps';\nimport { flattenColumns, getFixedStyle, getScrollOffsetValue } from './utils';\nimport type { Column } from './types';\nimport logger from '@semcore/utils/lib/logger';\nimport { setRef } from '@semcore/utils/lib/ref';\nimport 'resize-observer-polyfill';\n\nimport scrollStyles from './style/scroll-area.shadow.css';\n\nconst SORTING_ICON = {\n desc: SortDesc,\n asc: SortAsc,\n} as const;\nconst ariaSort = {\n desc: 'descending',\n asc: 'ascending',\n} as const;\n\ntype AsProps = {\n $onSortClick: (name: string, event: React.MouseEvent | React.KeyboardEvent) => void;\n $scrollRef: (instance: unknown) => void;\n use: 'primary' | 'secondary';\n columnsChildren: Column[];\n onResize: ResizeObserverCallback;\n sticky: boolean;\n disabledScroll?: boolean;\n ['data-ui-name']: string;\n};\n\nclass Head extends Component<AsProps> {\n columns: Column[] = [];\n\n static displayName: string;\n\n bindHandlerSortClick = (name: string) => (event: React.MouseEvent) => {\n this.asProps.$onSortClick(name, event);\n };\n\n bindHandlerKeyDown = (name: string) => (event: React.KeyboardEvent) => {\n if (event.code === 'Enter') {\n this.asProps.$onSortClick(name, event);\n }\n };\n\n refColumn = (props: Column['props']) => (ref: HTMLElement) => {\n setRef(props.ref, ref);\n if (props.forwardRef) {\n setRef(props.forwardRef, ref);\n }\n };\n\n renderColumns(columns: Column[], width: number) {\n return columns.map((column) => this.renderColumn(column, width));\n }\n\n renderColumn(column: Column, width: number) {\n const { styles, use, hidden } = this.asProps;\n const SColumn = Flex;\n const SHead = Box;\n const SSortWrapper = 'div';\n const SSortIcon = SORTING_ICON[column.sortDirection];\n const ariaSortValue =\n column.sortable && column.active ? ariaSort[column.sortDirection] : undefined;\n const isGroup = column.columns?.length > 0;\n const cSize = isGroup ? flattenColumns(column.columns).length : 1;\n const [name, value] = getFixedStyle(column, this.columns);\n\n const style = {\n flexBasis: column.props.flex === undefined && `${width * cSize}%`,\n ...column.props.style,\n };\n\n if (name !== undefined && value !== undefined) {\n style[name] = value;\n }\n\n if (!column.setVar) {\n style['flexBasis'] = `var(${column.varWidth})`;\n }\n\n return sstyled(styles)(\n <SColumn\n role={isGroup ? undefined : 'columnheader'}\n key={column.name}\n use={use}\n fixed={column.fixed}\n resizable={column.resizable}\n sortable={column.sortable}\n sortIconFloat={column.props.justifyContent?.includes('end')}\n borderLeft={isGroup ? false : column.borderLeft}\n borderRight={isGroup ? false : column.borderRight}\n active={isGroup ? false : column.active}\n group={isGroup}\n tabIndex={column.sortable && 0}\n {...column.props}\n ref={this.refColumn(column.props)}\n onClick={callAllEventHandlers(\n column.props.onClick,\n column.sortable ? this.bindHandlerSortClick(column.name) : undefined,\n )}\n onKeyDown={callAllEventHandlers(\n column.props.onKeyDown,\n column.sortable ? this.bindHandlerKeyDown(column.name) : undefined,\n )}\n style={style}\n hidden={hidden}\n aria-sort={ariaSortValue}\n >\n {isGroup ? (\n <>\n <SColumn\n role=\"columnheader\"\n groupHead\n use={use}\n active={column.active}\n borderLeft={column.borderLeft}\n borderRight={column.borderRight}\n >\n <div>{column.props.children}</div>\n </SColumn>\n <SHead>{this.renderColumns(column.columns, 100 / cSize)}</SHead>\n </>\n ) : (\n <>\n {column.props.children}\n {column.sortable ? (\n <SSortWrapper>\n <SSortIcon active={column.active} />\n </SSortWrapper>\n ) : null}\n </>\n )}\n </SColumn>,\n );\n }\n\n render() {\n const SHead = Root;\n const SHeadWrapper = Box;\n const { Children, styles, columnsChildren, onResize, $scrollRef, sticky, disabledScroll } =\n this.asProps;\n\n this.columns = flattenColumns(columnsChildren);\n\n const [offsetLeftSum, offsetRightSum] = getScrollOffsetValue(this.columns);\n\n logger.warn(\n sticky,\n \"'sticky' property is deprecated, use '<Sticky/>' wrapper\",\n this.asProps['data-ui-name'] || Head.displayName,\n );\n\n return sstyled(styles)(\n <SHeadWrapper sticky={sticky} role=\"rowgroup\">\n <ScrollArea\n styles={scrollStyles}\n use:left={`${offsetLeftSum}px`}\n use:right={`${offsetRightSum}px`}\n shadow\n onResize={onResize}\n >\n <ScrollArea.Container ref={$scrollRef} disabledScroll={disabledScroll}>\n <SHead render={Box} role=\"row\">\n {this.renderColumns(columnsChildren, 100 / this.columns.length)}\n </SHead>\n </ScrollArea.Container>\n </ScrollArea>\n {Children.origin}\n </SHeadWrapper>,\n );\n }\n}\n\nexport default Head;\n"],"mappings":"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"}
1
+ {"version":3,"file":"Head.js","names":["SORTING_ICON","desc","SortDesc","asc","SortAsc","ariaSort","Head","name","event","asProps","$onSortClick","code","props","ref","setRef","forwardRef","columns","width","map","column","renderColumn","styles","use","hidden","SColumn","Flex","SHead","Box","SSortWrapper","SSortIcon","sortDirection","ariaSortValue","sortable","active","undefined","isGroup","length","cSize","flattenColumns","getFixedStyle","value","style","flexBasis","flex","setVar","varWidth","sstyled","fixed","resizable","justifyContent","includes","borderLeft","borderRight","refColumn","callAllEventHandlers","onClick","bindHandlerSortClick","onKeyDown","bindHandlerKeyDown","children","renderColumns","SHeadWrapper","Children","columnsChildren","onResize","$scrollRef","sticky","disabledScroll","getScrollOffsetValue","offsetLeftSum","offsetRightSum","logger","warn","displayName","scrollStyles","origin","Component"],"sources":["../../src/Head.tsx"],"sourcesContent":["import React from 'react';\nimport { Component, sstyled, Root } from '@semcore/core';\nimport { Box, Flex } from '@semcore/flex-box';\nimport ScrollArea from '@semcore/scroll-area';\nimport SortDesc from '@semcore/icon/SortDesc/m';\nimport SortAsc from '@semcore/icon/SortAsc/m';\nimport { callAllEventHandlers } from '@semcore/utils/lib/assignProps';\nimport { flattenColumns, getFixedStyle, getScrollOffsetValue } from './utils';\nimport type { Column } from './types';\nimport logger from '@semcore/utils/lib/logger';\nimport { setRef } from '@semcore/utils/lib/ref';\nimport 'resize-observer-polyfill';\n\nimport scrollStyles from './style/scroll-area.shadow.css';\n\nconst SORTING_ICON = {\n desc: SortDesc,\n asc: SortAsc,\n} as const;\nconst ariaSort = {\n desc: 'descending',\n asc: 'ascending',\n} as const;\n\ntype AsProps = {\n $onSortClick: (name: string, event: React.MouseEvent | React.KeyboardEvent) => void;\n $scrollRef: (instance: unknown) => void;\n use: 'primary' | 'secondary';\n columnsChildren: Column[];\n onResize: ResizeObserverCallback;\n sticky: boolean;\n disabledScroll?: boolean;\n ['data-ui-name']: string;\n};\n\nclass Head extends Component<AsProps> {\n columns: Column[] = [];\n\n static displayName: string;\n\n bindHandlerSortClick = (name: string) => (event: React.MouseEvent) => {\n this.asProps.$onSortClick(name, event);\n };\n\n bindHandlerKeyDown = (name: string) => (event: React.KeyboardEvent) => {\n if (event.code === 'Enter') {\n this.asProps.$onSortClick(name, event);\n }\n };\n\n refColumn = (props: Column['props']) => (ref: HTMLElement) => {\n setRef(props.ref, ref);\n if (props.forwardRef) {\n setRef(props.forwardRef, ref);\n }\n };\n\n renderColumns(columns: Column[], width: number) {\n return columns.map((column) => this.renderColumn(column, width));\n }\n\n renderColumn(column: Column, width: number) {\n const { styles, use, hidden } = this.asProps;\n const SColumn = Flex;\n const SHead = Box;\n const SSortWrapper = 'div';\n const SSortIcon = SORTING_ICON[column.sortDirection];\n const ariaSortValue =\n column.sortable && column.active ? ariaSort[column.sortDirection] : undefined;\n const isGroup = column.columns?.length > 0;\n const cSize = isGroup ? flattenColumns(column.columns).length : 1;\n const [name, value] = getFixedStyle(column, this.columns);\n\n const style = {\n flexBasis: column.props.flex === undefined && `${width * cSize}%`,\n ...column.props.style,\n };\n\n if (name !== undefined && value !== undefined) {\n style[name] = value;\n }\n\n if (!column.setVar) {\n style['flexBasis'] = `var(${column.varWidth})`;\n }\n\n return sstyled(styles)(\n <SColumn\n role={isGroup ? undefined : 'columnheader'}\n key={column.name}\n use={use}\n fixed={column.fixed}\n resizable={column.resizable}\n sortable={column.sortable}\n sortIconFloat={column.props.justifyContent?.includes('end')}\n borderLeft={isGroup ? false : column.borderLeft}\n borderRight={isGroup ? false : column.borderRight}\n active={isGroup ? false : column.active}\n group={isGroup}\n tabIndex={column.sortable && 0}\n {...column.props}\n ref={this.refColumn(column.props)}\n onClick={callAllEventHandlers(\n column.props.onClick,\n column.sortable ? this.bindHandlerSortClick(column.name) : undefined,\n )}\n onKeyDown={callAllEventHandlers(\n column.props.onKeyDown,\n column.sortable ? this.bindHandlerKeyDown(column.name) : undefined,\n )}\n style={style}\n hidden={hidden}\n aria-sort={ariaSortValue}\n >\n {isGroup ? (\n <>\n <SColumn\n role=\"columnheader\"\n groupHead\n use={use}\n active={column.active}\n borderLeft={column.borderLeft}\n borderRight={column.borderRight}\n >\n <div>{column.props.children}</div>\n </SColumn>\n <SHead>{this.renderColumns(column.columns, 100 / cSize)}</SHead>\n </>\n ) : (\n <>\n {column.props.children}\n {column.sortable ? (\n <SSortWrapper>\n <SSortIcon active={column.active} />\n </SSortWrapper>\n ) : null}\n </>\n )}\n </SColumn>,\n );\n }\n\n render() {\n const SHead = Root;\n const SHeadWrapper = Box;\n const { Children, styles, columnsChildren, onResize, $scrollRef, sticky, disabledScroll } =\n this.asProps;\n\n this.columns = flattenColumns(columnsChildren);\n\n const [offsetLeftSum, offsetRightSum] = getScrollOffsetValue(this.columns);\n\n logger.warn(\n sticky,\n \"'sticky' property is deprecated, use '<Sticky/>' wrapper\",\n this.asProps['data-ui-name'] || Head.displayName,\n );\n\n return sstyled(styles)(\n <SHeadWrapper sticky={sticky} role=\"rowgroup\">\n <ScrollArea\n styles={scrollStyles}\n use:left={`${offsetLeftSum}px`}\n use:right={`${offsetRightSum}px`}\n shadow\n onResize={onResize}\n >\n <ScrollArea.Container ref={$scrollRef} disabledScroll={disabledScroll}>\n <SHead render={Box} role=\"row\">\n {this.renderColumns(columnsChildren, 100 / this.columns.length)}\n </SHead>\n </ScrollArea.Container>\n </ScrollArea>\n {Children.origin}\n </SHeadWrapper>,\n );\n }\n}\n\nexport default Head;\n"],"mappings":"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"}
package/lib/cjs/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- var _typeof = require("@babel/runtime/helpers/typeof");
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
4
 
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
@@ -26,8 +26,4 @@ Object.keys(_DataTable).forEach(function (key) {
26
26
  }
27
27
  });
28
28
  });
29
-
30
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
31
-
32
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
29
  //# sourceMappingURL=index.js.map
package/lib/es6/Body.js CHANGED
@@ -1,32 +1,18 @@
1
1
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
2
+ import _objectSpread from "@babel/runtime/helpers/objectSpread2";
3
+ import _createForOfIteratorHelper from "@babel/runtime/helpers/createForOfIteratorHelper";
2
4
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
5
  import _typeof from "@babel/runtime/helpers/typeof";
4
6
  import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
5
7
  import _createClass from "@babel/runtime/helpers/createClass";
6
8
  import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
7
9
  import _inherits from "@babel/runtime/helpers/inherits";
8
- import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
9
- import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
10
+ import _createSuper from "@babel/runtime/helpers/createSuper";
10
11
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
11
12
  import { sstyled as _sstyled } from "@semcore/core";
12
13
  import { assignProps as _assignProps } from "@semcore/core";
13
14
  var _excluded = ["childrenPropsGetter"],
14
15
  _excluded2 = ["childrenPropsGetter"];
15
-
16
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
17
-
18
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
19
-
20
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
21
-
22
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
23
-
24
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
25
-
26
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
27
-
28
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
29
-
30
16
  import React from 'react';
31
17
  import { Component, sstyled, Root } from '@semcore/core';
32
18
  import { Box, Flex } from '@semcore/flex-box';
@@ -40,16 +26,16 @@ var scrollStyles = (
40
26
  /*__reshadow_css_start__*/
41
27
  _sstyled.insert(
42
28
  /*__inner_css_start__*/
43
- ".___SShadowHorizontal_1i5sm_gg_:before{left:var(--left_1i5sm)!important}.___SShadowHorizontal_1i5sm_gg_:after{right:var(--right_1i5sm)!important}.___SContainer_1i5sm_gg_.__disabledScroll_1i5sm_gg_{overflow:visible}"
29
+ ".___SShadowHorizontal_177hg_gg_:before{left:var(--left_177hg)!important}.___SShadowHorizontal_177hg_gg_:after{right:var(--right_177hg)!important}.___SContainer_177hg_gg_.__disabledScroll_177hg_gg_{overflow:visible}"
44
30
  /*__inner_css_end__*/
45
- , "1i5sm_gg_")
31
+ , "177hg_gg_")
46
32
  /*__reshadow_css_end__*/
47
33
  , {
48
- "__SShadowHorizontal": "___SShadowHorizontal_1i5sm_gg_",
49
- "--left": "--left_1i5sm",
50
- "--right": "--right_1i5sm",
51
- "__SContainer": "___SContainer_1i5sm_gg_",
52
- "_disabledScroll": "__disabledScroll_1i5sm_gg_"
34
+ "__SShadowHorizontal": "___SShadowHorizontal_177hg_gg_",
35
+ "--left": "--left_177hg",
36
+ "--right": "--right_177hg",
37
+ "__SContainer": "___SContainer_177hg_gg_",
38
+ "_disabledScroll": "__disabledScroll_177hg_gg_"
53
39
  });
54
40
  import trottle from '@semcore/utils/lib/rafTrottle';
55
41
  var testEnv = process.env.NODE_ENV === 'test';
@@ -1 +1 @@
1
- {"version":3,"file":"Body.js","names":["React","Component","sstyled","Root","Box","Flex","ScrollArea","getFixedStyle","getScrollOffsetValue","assignProps","callAllEventHandlers","ResizeObserver","trottle","testEnv","process","env","NODE_ENV","getCellsByColumn","cells","flattenCells","flat","Object","fromEntries","map","cell","name","data","Body","rowHeight","undefined","scrollAreaHeight","scrollOffset","createRef","virtualScroll","asProps","rowHeightFromProps","state","entries","contentRect","height","setState","oldState","event","target","scrollTop","firstRowRef","current","firstRowResizeObserver","handleFirstRowResize","observe","rowData","index","SCell","styles","columns","use","Array","isArray","SGroupCell","renderRows","nameParts","split","firstName","lastName","length","firstColumn","find","c","lastColumn","column","value","vars","cssVar","props","children","justifyContent","alignItems","borderLeft","borderRight","style","width","join","cellPropsLayers","cellPropLayer","childrenPropsGetter","p","other","propsCell","fixed","theme","dataIndex","topOffset","nested","SRow","rowPropsLayers","uniqueKey","flatRowData","key","String","needToMeasureHeight","renderCells","active","positioned","top","ref","rowPropsLayer","propsRow","rows","renderRow","getRowHeight","tollerance","startIndex","Math","max","floor","lastIndex","min","ceil","needToMeasureFirstRowHeight","firstRow","visibleRows","slice","processedVisibleRows","unshift","disconnect","SBody","SBodyWrapper","SScrollAreaBar","Bar","SHeightHold","Children","$scrollRef","onResize","onScroll","disabledScroll","columnsInitialized","reduce","sum","offsetLeftSum","offsetRightSum","offsetSum","holdHeight","Promise","setupRowSizeObserver","scrollStyles","handleScrollAreaResize","handleScrollAreaScroll","renderVirtualizedRows","origin"],"sources":["../../src/Body.tsx"],"sourcesContent":["import React from 'react';\nimport { Component, sstyled, Root } from '@semcore/core';\nimport { Box, Flex, IBoxProps } from '@semcore/flex-box';\nimport ScrollArea from '@semcore/scroll-area';\nimport { getFixedStyle, getScrollOffsetValue } from './utils';\nimport { RowData, Column, NestedCells, PropsLayer, Cell } from './types';\nimport assignProps, { callAllEventHandlers } from '@semcore/utils/lib/assignProps';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport scrollStyles from './style/scroll-area.shadow.css';\nimport syncScroll from '@semcore/utils/lib/syncScroll';\nimport trottle from '@semcore/utils/lib/rafTrottle';\n\nconst testEnv = process.env.NODE_ENV === 'test';\n\nconst getCellsByColumn = (cells: NestedCells): RowData => {\n const flattenCells = cells.flat(20) as Cell[];\n return Object.fromEntries(flattenCells.map((cell) => [cell.name, cell.data]));\n};\n\ntype AsProps = {\n rows: NestedCells[];\n columns: Column[];\n $scrollRef: ReturnType<ReturnType<typeof syncScroll>>;\n onResize: ResizeObserverCallback;\n onScroll?: (event: React.SyntheticEvent<HTMLElement>) => void;\n rowPropsLayers: PropsLayer[];\n use: 'primary' | 'secondary';\n uniqueKey: string;\n virtualScroll?: boolean | { tollerance?: number; rowHeight?: number };\n disabledScroll?: boolean;\n};\n\ntype State = {\n rowHeight: number | undefined;\n scrollAreaHeight: undefined | number;\n scrollOffset: number;\n};\n\nclass Body extends Component<AsProps, State> {\n state: State = {\n rowHeight: undefined,\n scrollAreaHeight: undefined,\n scrollOffset: 0,\n };\n\n firstRowRef = React.createRef<HTMLElement>();\n firstRowResizeObserver: ResizeObserver | null = null;\n\n getRowHeight = () => {\n const { virtualScroll } = this.asProps;\n const rowHeightFromProps = typeof virtualScroll === 'object' && virtualScroll?.rowHeight;\n return rowHeightFromProps || this.state.rowHeight;\n };\n\n renderCells(cells: NestedCells, rowData: RowData, index: number) {\n const SCell = Flex;\n const { styles, columns, use } = this.asProps;\n return cells.map((cell) => {\n if (Array.isArray(cell)) {\n const SGroupCell = 'div';\n return sstyled(styles)(\n <SGroupCell role=\"rowgroup\" data-ui-name=\"group-cell\">\n {this.renderRows(cell as NestedCells[])}\n </SGroupCell>,\n );\n } else {\n const nameParts = cell.name.split('/');\n const firstName = nameParts[0];\n const lastName = nameParts[nameParts.length - 1];\n const firstColumn = columns.find((c) => c.name === firstName);\n const lastColumn = columns.find((c) => c.name === lastName);\n const column = columns.find((c) => c.name === cell.name);\n const [name, value] = getFixedStyle(cell, columns);\n const vars = (Array.isArray(cell.cssVar) ? cell.cssVar : [cell.cssVar]).map(\n (name) => `var(${name})`,\n );\n type CellProps = IBoxProps & {\n name: string;\n children: React.ReactNode;\n style: React.CSSProperties;\n };\n\n let props: CellProps = {\n name: cell.name,\n children: <>{cell.data}</>,\n justifyContent: column?.props?.justifyContent,\n alignItems: column?.props?.alignItems,\n borderLeft: firstColumn?.borderLeft,\n borderRight: lastColumn?.borderRight,\n style: {\n width: vars.length === 1 ? vars[0] : `calc(${vars.join(' + ')})`,\n },\n };\n if (name !== undefined && value !== undefined) {\n props.style[name] = value;\n }\n\n for (const cellPropLayer of cell.cellPropsLayers || []) {\n const { childrenPropsGetter = (p) => p, ...other } = cellPropLayer;\n const propsCell = assignProps(other, props);\n props = assignProps(childrenPropsGetter(propsCell, rowData, index), propsCell);\n }\n\n return sstyled(styles)(\n <SCell\n key={cell.name}\n role=\"cell\"\n {...props}\n fixed={cell.fixed}\n theme={props.theme}\n use={use}\n borderLeft={props.borderLeft}\n borderRight={props.borderRight}\n />,\n ) as React.ReactElement;\n }\n }, [] as React.ReactElement[]);\n }\n\n renderRow(\n cells: NestedCells,\n { dataIndex, topOffset, nested }: { dataIndex: number; topOffset?: number; nested: boolean },\n ) {\n const SRow = Box;\n const { styles, rowPropsLayers, uniqueKey, virtualScroll } = this.asProps;\n const rowHeightFromProps = typeof virtualScroll === 'object' && virtualScroll?.rowHeight;\n\n const rowData = cells.flatRowData || getCellsByColumn(cells);\n const key = rowData[uniqueKey] ? String(rowData[uniqueKey]) : `row_${dataIndex}`;\n const needToMeasureHeight = dataIndex === 0 && !nested && !rowHeightFromProps;\n\n let props = {\n children: this.renderCells(cells, rowData, dataIndex),\n theme: undefined,\n active: undefined,\n positioned: topOffset !== undefined,\n top: topOffset,\n ref: needToMeasureHeight ? this.firstRowRef : undefined,\n key,\n 'aria-rowindex': dataIndex + 1,\n };\n\n for (const rowPropsLayer of rowPropsLayers) {\n const { childrenPropsGetter = (p) => p, ...other } = rowPropsLayer;\n const propsRow = assignProps(other, props);\n props = assignProps(childrenPropsGetter(propsRow, rowData, dataIndex), propsRow);\n }\n\n return sstyled(styles)(<SRow role=\"row\" {...props} />);\n }\n\n renderRows(rows: NestedCells[]) {\n return rows.map((cells, dataIndex) => this.renderRow(cells, { dataIndex, nested: false }));\n }\n\n renderVirtualizedRows(rows: NestedCells[]) {\n if (rows.length === 0) return [];\n\n const { virtualScroll } = this.asProps;\n const { scrollOffset, scrollAreaHeight } = this.state;\n const rowHeight = this.getRowHeight();\n\n const tollerance = (typeof virtualScroll === 'object' ? virtualScroll?.tollerance : 2) ?? 2;\n const startIndex = Math.max(Math.floor(scrollOffset / rowHeight!) - tollerance, 0);\n const lastIndex = Math.min(\n Math.ceil((scrollOffset + scrollAreaHeight!) / rowHeight!) + tollerance,\n rows.length,\n );\n\n const rowHeightFromProps = typeof virtualScroll === 'object' && virtualScroll?.rowHeight;\n const needToMeasureFirstRowHeight = !rowHeightFromProps;\n\n const firstRow = { cells: rows[0], dataIndex: 0, topOffset: 0 };\n const visibleRows = rowHeight !== undefined ? rows.slice(startIndex, lastIndex) : [];\n const processedVisibleRows = visibleRows.map((cells, index) => ({\n cells,\n dataIndex: startIndex + index,\n topOffset: rowHeight! * (startIndex + index),\n }));\n if (needToMeasureFirstRowHeight && startIndex !== 0) {\n processedVisibleRows.unshift(firstRow);\n }\n\n return processedVisibleRows.map(({ cells, dataIndex, topOffset }) =>\n this.renderRow(cells, { dataIndex, topOffset, nested: false }),\n );\n }\n\n handleFirstRowResize = trottle((entries: ResizeObserverEntry[]) => {\n const { contentRect } = entries[0];\n const { height } = contentRect;\n this.setState((oldState: State) => {\n if (oldState.rowHeight === height) return oldState;\n return { rowHeight: height };\n });\n });\n\n handleScrollAreaResize = trottle((entries: ResizeObserverEntry[]) => {\n const { virtualScroll } = this.asProps;\n if (!virtualScroll) return;\n const { contentRect } = entries[0];\n const { height } = contentRect;\n this.setState((oldState: State) => {\n if (oldState.scrollAreaHeight === height) return oldState;\n return { scrollAreaHeight: height };\n });\n });\n\n handleScrollAreaScroll = (event: React.SyntheticEvent<HTMLElement>) => {\n const { scrollTop } = event.target as HTMLElement;\n const { virtualScroll } = this.asProps;\n if (virtualScroll) {\n this.setState((oldState: State) => {\n if (oldState.scrollOffset === scrollTop) return oldState;\n return { scrollOffset: scrollTop };\n });\n }\n };\n\n setupRowSizeObserver = () => {\n if (!this.firstRowRef.current) return;\n if (!this.asProps.virtualScroll) return;\n this.firstRowResizeObserver = new ResizeObserver(this.handleFirstRowResize);\n this.firstRowResizeObserver.observe(this.firstRowRef.current);\n };\n\n componentWillUnmount() {\n this.firstRowResizeObserver?.disconnect();\n }\n\n render() {\n const SBody = Root;\n const SBodyWrapper = Box;\n const SScrollAreaBar = ScrollArea.Bar;\n const SHeightHold = Box;\n const {\n Children,\n styles,\n rows,\n columns,\n $scrollRef,\n virtualScroll,\n onResize,\n onScroll,\n disabledScroll,\n } = this.asProps;\n\n const columnsInitialized = columns.reduce((sum, { width }) => sum + width, 0) > 0 || testEnv;\n\n const [offsetLeftSum, offsetRightSum] = getScrollOffsetValue(columns);\n const offsetSum = offsetLeftSum + offsetRightSum;\n\n const rowHeight = this.getRowHeight();\n const holdHeight =\n rowHeight !== undefined && virtualScroll ? rowHeight * rows.length : undefined;\n\n if (virtualScroll && columnsInitialized && !rowHeight) {\n new Promise(() => this.setupRowSizeObserver());\n }\n\n return sstyled(styles)(\n <SBodyWrapper>\n <ScrollArea\n shadow\n styles={scrollStyles}\n use:left={`${offsetLeftSum}px`}\n use:right={`${offsetRightSum}px`}\n onResize={callAllEventHandlers(onResize, this.handleScrollAreaResize)}\n onScroll={callAllEventHandlers(onScroll, this.handleScrollAreaScroll)}\n >\n <ScrollArea.Container ref={$scrollRef} disabledScroll={disabledScroll}>\n <SBody render={Box} role=\"rowgroup\">\n {holdHeight ? <SHeightHold hMin={holdHeight} aria-hidden={true} /> : null}\n {columnsInitialized && !virtualScroll ? this.renderRows(rows) : null}\n {columnsInitialized && virtualScroll ? this.renderVirtualizedRows(rows) : null}\n </SBody>\n </ScrollArea.Container>\n <SScrollAreaBar\n orientation=\"horizontal\"\n left={`${offsetLeftSum}px`}\n right={`${offsetRightSum}px`}\n offsetSum={`${offsetSum}px`}\n />\n <SScrollAreaBar orientation=\"vertical\" />\n </ScrollArea>\n {Children.origin}\n </SBodyWrapper>,\n );\n }\n}\n\nexport default Body;\n"],"mappings":"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"}
1
+ {"version":3,"file":"Body.js","names":["React","Component","sstyled","Root","Box","Flex","ScrollArea","getFixedStyle","getScrollOffsetValue","assignProps","callAllEventHandlers","ResizeObserver","trottle","testEnv","process","env","NODE_ENV","getCellsByColumn","cells","flattenCells","flat","Object","fromEntries","map","cell","name","data","Body","rowHeight","undefined","scrollAreaHeight","scrollOffset","createRef","virtualScroll","asProps","rowHeightFromProps","state","entries","contentRect","height","setState","oldState","event","target","scrollTop","firstRowRef","current","firstRowResizeObserver","handleFirstRowResize","observe","rowData","index","SCell","styles","columns","use","Array","isArray","SGroupCell","renderRows","nameParts","split","firstName","lastName","length","firstColumn","find","c","lastColumn","column","value","vars","cssVar","props","children","justifyContent","alignItems","borderLeft","borderRight","style","width","join","cellPropsLayers","cellPropLayer","childrenPropsGetter","p","other","propsCell","fixed","theme","dataIndex","topOffset","nested","SRow","rowPropsLayers","uniqueKey","flatRowData","key","String","needToMeasureHeight","renderCells","active","positioned","top","ref","rowPropsLayer","propsRow","rows","renderRow","getRowHeight","tollerance","startIndex","Math","max","floor","lastIndex","min","ceil","needToMeasureFirstRowHeight","firstRow","visibleRows","slice","processedVisibleRows","unshift","disconnect","SBody","SBodyWrapper","SScrollAreaBar","Bar","SHeightHold","Children","$scrollRef","onResize","onScroll","disabledScroll","columnsInitialized","reduce","sum","offsetLeftSum","offsetRightSum","offsetSum","holdHeight","Promise","setupRowSizeObserver","scrollStyles","handleScrollAreaResize","handleScrollAreaScroll","renderVirtualizedRows","origin"],"sources":["../../src/Body.tsx"],"sourcesContent":["import React from 'react';\nimport { Component, sstyled, Root } from '@semcore/core';\nimport { Box, Flex, IBoxProps } from '@semcore/flex-box';\nimport ScrollArea from '@semcore/scroll-area';\nimport { getFixedStyle, getScrollOffsetValue } from './utils';\nimport { RowData, Column, NestedCells, PropsLayer, Cell } from './types';\nimport assignProps, { callAllEventHandlers } from '@semcore/utils/lib/assignProps';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport scrollStyles from './style/scroll-area.shadow.css';\nimport syncScroll from '@semcore/utils/lib/syncScroll';\nimport trottle from '@semcore/utils/lib/rafTrottle';\n\nconst testEnv = process.env.NODE_ENV === 'test';\n\nconst getCellsByColumn = (cells: NestedCells): RowData => {\n const flattenCells = cells.flat(20) as Cell[];\n return Object.fromEntries(flattenCells.map((cell) => [cell.name, cell.data]));\n};\n\ntype AsProps = {\n rows: NestedCells[];\n columns: Column[];\n $scrollRef: ReturnType<ReturnType<typeof syncScroll>>;\n onResize: ResizeObserverCallback;\n onScroll?: (event: React.SyntheticEvent<HTMLElement>) => void;\n rowPropsLayers: PropsLayer[];\n use: 'primary' | 'secondary';\n uniqueKey: string;\n virtualScroll?: boolean | { tollerance?: number; rowHeight?: number };\n disabledScroll?: boolean;\n};\n\ntype State = {\n rowHeight: number | undefined;\n scrollAreaHeight: undefined | number;\n scrollOffset: number;\n};\n\nclass Body extends Component<AsProps, State> {\n state: State = {\n rowHeight: undefined,\n scrollAreaHeight: undefined,\n scrollOffset: 0,\n };\n\n firstRowRef = React.createRef<HTMLElement>();\n firstRowResizeObserver: ResizeObserver | null = null;\n\n getRowHeight = () => {\n const { virtualScroll } = this.asProps;\n const rowHeightFromProps = typeof virtualScroll === 'object' && virtualScroll?.rowHeight;\n return rowHeightFromProps || this.state.rowHeight;\n };\n\n renderCells(cells: NestedCells, rowData: RowData, index: number) {\n const SCell = Flex;\n const { styles, columns, use } = this.asProps;\n return cells.map((cell) => {\n if (Array.isArray(cell)) {\n const SGroupCell = 'div';\n return sstyled(styles)(\n <SGroupCell role=\"rowgroup\" data-ui-name=\"group-cell\">\n {this.renderRows(cell as NestedCells[])}\n </SGroupCell>,\n );\n } else {\n const nameParts = cell.name.split('/');\n const firstName = nameParts[0];\n const lastName = nameParts[nameParts.length - 1];\n const firstColumn = columns.find((c) => c.name === firstName);\n const lastColumn = columns.find((c) => c.name === lastName);\n const column = columns.find((c) => c.name === cell.name);\n const [name, value] = getFixedStyle(cell, columns);\n const vars = (Array.isArray(cell.cssVar) ? cell.cssVar : [cell.cssVar]).map(\n (name) => `var(${name})`,\n );\n type CellProps = IBoxProps & {\n name: string;\n children: React.ReactNode;\n style: React.CSSProperties;\n };\n\n let props: CellProps = {\n name: cell.name,\n children: <>{cell.data}</>,\n justifyContent: column?.props?.justifyContent,\n alignItems: column?.props?.alignItems,\n borderLeft: firstColumn?.borderLeft,\n borderRight: lastColumn?.borderRight,\n style: {\n width: vars.length === 1 ? vars[0] : `calc(${vars.join(' + ')})`,\n },\n };\n if (name !== undefined && value !== undefined) {\n props.style[name] = value;\n }\n\n for (const cellPropLayer of cell.cellPropsLayers || []) {\n const { childrenPropsGetter = (p) => p, ...other } = cellPropLayer;\n const propsCell = assignProps(other, props);\n props = assignProps(childrenPropsGetter(propsCell, rowData, index), propsCell);\n }\n\n return sstyled(styles)(\n <SCell\n key={cell.name}\n role=\"cell\"\n {...props}\n fixed={cell.fixed}\n theme={props.theme}\n use={use}\n borderLeft={props.borderLeft}\n borderRight={props.borderRight}\n />,\n ) as React.ReactElement;\n }\n }, [] as React.ReactElement[]);\n }\n\n renderRow(\n cells: NestedCells,\n { dataIndex, topOffset, nested }: { dataIndex: number; topOffset?: number; nested: boolean },\n ) {\n const SRow = Box;\n const { styles, rowPropsLayers, uniqueKey, virtualScroll } = this.asProps;\n const rowHeightFromProps = typeof virtualScroll === 'object' && virtualScroll?.rowHeight;\n\n const rowData = cells.flatRowData || getCellsByColumn(cells);\n const key = rowData[uniqueKey] ? String(rowData[uniqueKey]) : `row_${dataIndex}`;\n const needToMeasureHeight = dataIndex === 0 && !nested && !rowHeightFromProps;\n\n let props = {\n children: this.renderCells(cells, rowData, dataIndex),\n theme: undefined,\n active: undefined,\n positioned: topOffset !== undefined,\n top: topOffset,\n ref: needToMeasureHeight ? this.firstRowRef : undefined,\n key,\n 'aria-rowindex': dataIndex + 1,\n };\n\n for (const rowPropsLayer of rowPropsLayers) {\n const { childrenPropsGetter = (p) => p, ...other } = rowPropsLayer;\n const propsRow = assignProps(other, props);\n props = assignProps(childrenPropsGetter(propsRow, rowData, dataIndex), propsRow);\n }\n\n return sstyled(styles)(<SRow role=\"row\" {...props} />);\n }\n\n renderRows(rows: NestedCells[]) {\n return rows.map((cells, dataIndex) => this.renderRow(cells, { dataIndex, nested: false }));\n }\n\n renderVirtualizedRows(rows: NestedCells[]) {\n if (rows.length === 0) return [];\n\n const { virtualScroll } = this.asProps;\n const { scrollOffset, scrollAreaHeight } = this.state;\n const rowHeight = this.getRowHeight();\n\n const tollerance = (typeof virtualScroll === 'object' ? virtualScroll?.tollerance : 2) ?? 2;\n const startIndex = Math.max(Math.floor(scrollOffset / rowHeight!) - tollerance, 0);\n const lastIndex = Math.min(\n Math.ceil((scrollOffset + scrollAreaHeight!) / rowHeight!) + tollerance,\n rows.length,\n );\n\n const rowHeightFromProps = typeof virtualScroll === 'object' && virtualScroll?.rowHeight;\n const needToMeasureFirstRowHeight = !rowHeightFromProps;\n\n const firstRow = { cells: rows[0], dataIndex: 0, topOffset: 0 };\n const visibleRows = rowHeight !== undefined ? rows.slice(startIndex, lastIndex) : [];\n const processedVisibleRows = visibleRows.map((cells, index) => ({\n cells,\n dataIndex: startIndex + index,\n topOffset: rowHeight! * (startIndex + index),\n }));\n if (needToMeasureFirstRowHeight && startIndex !== 0) {\n processedVisibleRows.unshift(firstRow);\n }\n\n return processedVisibleRows.map(({ cells, dataIndex, topOffset }) =>\n this.renderRow(cells, { dataIndex, topOffset, nested: false }),\n );\n }\n\n handleFirstRowResize = trottle((entries: ResizeObserverEntry[]) => {\n const { contentRect } = entries[0];\n const { height } = contentRect;\n this.setState((oldState: State) => {\n if (oldState.rowHeight === height) return oldState;\n return { rowHeight: height };\n });\n });\n\n handleScrollAreaResize = trottle((entries: ResizeObserverEntry[]) => {\n const { virtualScroll } = this.asProps;\n if (!virtualScroll) return;\n const { contentRect } = entries[0];\n const { height } = contentRect;\n this.setState((oldState: State) => {\n if (oldState.scrollAreaHeight === height) return oldState;\n return { scrollAreaHeight: height };\n });\n });\n\n handleScrollAreaScroll = (event: React.SyntheticEvent<HTMLElement>) => {\n const { scrollTop } = event.target as HTMLElement;\n const { virtualScroll } = this.asProps;\n if (virtualScroll) {\n this.setState((oldState: State) => {\n if (oldState.scrollOffset === scrollTop) return oldState;\n return { scrollOffset: scrollTop };\n });\n }\n };\n\n setupRowSizeObserver = () => {\n if (!this.firstRowRef.current) return;\n if (!this.asProps.virtualScroll) return;\n this.firstRowResizeObserver = new ResizeObserver(this.handleFirstRowResize);\n this.firstRowResizeObserver.observe(this.firstRowRef.current);\n };\n\n componentWillUnmount() {\n this.firstRowResizeObserver?.disconnect();\n }\n\n render() {\n const SBody = Root;\n const SBodyWrapper = Box;\n const SScrollAreaBar = ScrollArea.Bar;\n const SHeightHold = Box;\n const {\n Children,\n styles,\n rows,\n columns,\n $scrollRef,\n virtualScroll,\n onResize,\n onScroll,\n disabledScroll,\n } = this.asProps;\n\n const columnsInitialized = columns.reduce((sum, { width }) => sum + width, 0) > 0 || testEnv;\n\n const [offsetLeftSum, offsetRightSum] = getScrollOffsetValue(columns);\n const offsetSum = offsetLeftSum + offsetRightSum;\n\n const rowHeight = this.getRowHeight();\n const holdHeight =\n rowHeight !== undefined && virtualScroll ? rowHeight * rows.length : undefined;\n\n if (virtualScroll && columnsInitialized && !rowHeight) {\n new Promise(() => this.setupRowSizeObserver());\n }\n\n return sstyled(styles)(\n <SBodyWrapper>\n <ScrollArea\n shadow\n styles={scrollStyles}\n use:left={`${offsetLeftSum}px`}\n use:right={`${offsetRightSum}px`}\n onResize={callAllEventHandlers(onResize, this.handleScrollAreaResize)}\n onScroll={callAllEventHandlers(onScroll, this.handleScrollAreaScroll)}\n >\n <ScrollArea.Container ref={$scrollRef} disabledScroll={disabledScroll}>\n <SBody render={Box} role=\"rowgroup\">\n {holdHeight ? <SHeightHold hMin={holdHeight} aria-hidden={true} /> : null}\n {columnsInitialized && !virtualScroll ? this.renderRows(rows) : null}\n {columnsInitialized && virtualScroll ? this.renderVirtualizedRows(rows) : null}\n </SBody>\n </ScrollArea.Container>\n <SScrollAreaBar\n orientation=\"horizontal\"\n left={`${offsetLeftSum}px`}\n right={`${offsetRightSum}px`}\n offsetSum={`${offsetSum}px`}\n />\n <SScrollAreaBar orientation=\"vertical\" />\n </ScrollArea>\n {Children.origin}\n </SBodyWrapper>,\n );\n }\n}\n\nexport default Body;\n"],"mappings":"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"}