@join-x5/react-data-grid 1.4.0 → 1.4.1

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.
package/dist/hook.es.js CHANGED
@@ -1,23 +1,20 @@
1
1
  "use client";
2
- import { useState as u, useMemo as N } from "react";
3
- import { useUpdateEffect as V } from "@join-x5/react-theme";
4
- import { ColumnArea as h } from "@join-x5/react-data-grid-settings";
5
- const y = (r) => !r || !r.length ? {} : r.reduce((n, i) => (n[i.id] = i.isVisible, n), {}), O = (r) => !r || !r.length ? [] : r.sort((n, i) => n.sort - i.sort).map((n) => String(n.id)), s = (r) => !r || !r.length ? {} : r.reduce((n, i) => {
6
- var t, o;
7
- return i.area === h.FixedLeft ? (n.left ?? (n.left = []), (t = n.left) == null || t.push(String(i.id))) : i.area === h.FixedRight && (n.right ?? (n.right = []), (o = n.right) == null || o.push(String(i.id))), n;
8
- }, {}), w = (r, n) => {
9
- const [i, t] = u(y(r)), [o, S] = u(O(r)), [f, C] = u(s(r)), l = n == null ? void 0 : n.state, J = N(() => ({
2
+ import { useState as o, useMemo as p } from "react";
3
+ import { useUpdateEffect as C } from "@join-x5/react-theme";
4
+ import { ColumnArea as c } from "@join-x5/react-data-grid-settings";
5
+ const d = (r) => !r || !r.length ? {} : r.reduce((n, i) => (n[i.id] = i.isVisible, n), {}), g = (r) => !r || !r.length ? [] : r.sort((n, i) => n.sort - i.sort).map((n) => String(n.id)), h = (r) => !r || !r.length ? {} : r.reduce((n, i) => (i.area === c.FixedLeft ? (n.left ??= [], n.left?.push(String(i.id))) : i.area === c.FixedRight && (n.right ??= [], n.right?.push(String(i.id))), n), {}), V = (r, n) => {
6
+ const [i, y] = o(d(r)), [t, O] = o(g(r)), [u, a] = o(h(r)), f = n?.state, S = p(() => ({
10
7
  columnVisibility: i,
11
- columnOrder: o,
12
- columnPinning: f,
13
- ...l
14
- }), [l, i, o, f]);
15
- return V(() => {
16
- const m = y(r), d = O(r), g = s(r);
17
- t((e) => JSON.stringify(e) === JSON.stringify(m) ? e : m), S((e) => JSON.stringify(e) === JSON.stringify(d) ? e : d), C((e) => JSON.stringify(e) === JSON.stringify(g) ? e : g);
18
- }, [r]), J;
8
+ columnOrder: t,
9
+ columnPinning: u,
10
+ ...f
11
+ }), [f, i, t, u]);
12
+ return C(() => {
13
+ const l = d(r), s = g(r), m = h(r);
14
+ y((e) => JSON.stringify(e) === JSON.stringify(l) ? e : l), O((e) => JSON.stringify(e) === JSON.stringify(s) ? e : s), a((e) => JSON.stringify(e) === JSON.stringify(m) ? e : m);
15
+ }, [r]), S;
19
16
  };
20
17
  export {
21
- w as useDataGridColumnSettings
18
+ V as useDataGridColumnSettings
22
19
  };
23
20
  //# sourceMappingURL=hook.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hook.es.js","sources":["../src/hook.ts"],"sourcesContent":["'use client';\n\nimport {useMemo, useState} from 'react';\n\nimport {useUpdateEffect} from '@join-x5/react-theme';\nimport {ColumnArea} from '@join-x5/react-data-grid-settings';\n\nimport type {ColumnOrderState, ColumnPinningState, TableState, VisibilityState} from '@tanstack/react-table';\nimport type {ColumnItem} from '@join-x5/react-data-grid-settings';\nimport type {DataGridProps} from 'types';\n\nconst convertVisibility = (settings?: ColumnItem[]): VisibilityState => {\n if (!settings || !settings.length) {\n return {};\n }\n\n return settings.reduce((acc, item) => {\n acc[item.id] = item.isVisible;\n return acc;\n }, {} as VisibilityState);\n};\n\nconst convertOrder = (settings?: ColumnItem[]): ColumnOrderState => {\n if (!settings || !settings.length) {\n return [];\n }\n\n return settings.sort((a, b) => a.sort - b.sort).map(item => String(item.id));\n};\n\nconst convertPinning = (settings?: ColumnItem[]): ColumnPinningState => {\n if (!settings || !settings.length) {\n return {};\n }\n\n return settings.reduce((acc, item) => {\n if (item.area === ColumnArea.FixedLeft) {\n acc.left ??= [];\n acc.left?.push(String(item.id));\n } else if (item.area === ColumnArea.FixedRight) {\n acc.right ??= [];\n acc.right?.push(String(item.id));\n }\n\n return acc;\n }, {} as ColumnPinningState);\n};\n\nexport const useDataGridColumnSettings = (\n settings?: DataGridProps['columnSettings'],\n tableProps?: DataGridProps['tableProps']\n) => {\n const [columnVisibility, onColumnVisibilityChange] = useState<VisibilityState>(convertVisibility(settings));\n const [columnOrder, onColumnOrderChange] = useState<ColumnOrderState>(convertOrder(settings));\n const [columnPinning, onColumnPinningChange] = useState<ColumnPinningState>(convertPinning(settings));\n\n const externalState = tableProps?.state;\n\n const state = useMemo((): Partial<TableState> => {\n return {columnVisibility, columnOrder, columnPinning, ...externalState};\n }, [externalState, columnVisibility, columnOrder, columnPinning]);\n\n useUpdateEffect(() => {\n const newVisibility = convertVisibility(settings);\n const newOrder = convertOrder(settings);\n const newPinning = convertPinning(settings);\n\n onColumnVisibilityChange(oldState =>\n JSON.stringify(oldState) === JSON.stringify(newVisibility) ? oldState : newVisibility\n );\n\n onColumnOrderChange(oldState => (JSON.stringify(oldState) === JSON.stringify(newOrder) ? oldState : newOrder));\n\n onColumnPinningChange(oldState =>\n JSON.stringify(oldState) === JSON.stringify(newPinning) ? oldState : newPinning\n );\n }, [settings]);\n\n return state;\n};\n"],"names":["columnVisibility","columnOrder","columnPinning","externalState","useUpdateEffect","onColumnVisibilityChange"],"mappings":";;;;AAWA;;AAyBI;AASF;AAOA;AAOS;AAACA;AAAkBC;AAAaC;AAAkBC;AAG3DC;AACE;AAIAC;AAQA;AAIJ;;;;"}
1
+ {"version":3,"file":"hook.es.js","sources":["../src/hook.ts"],"sourcesContent":["'use client';\n\nimport {useMemo, useState} from 'react';\n\nimport {useUpdateEffect} from '@join-x5/react-theme';\nimport {ColumnArea} from '@join-x5/react-data-grid-settings';\n\nimport type {ColumnOrderState, ColumnPinningState, TableState, VisibilityState} from '@tanstack/react-table';\nimport type {ColumnItem} from '@join-x5/react-data-grid-settings';\nimport type {DataGridProps} from 'types';\n\nconst convertVisibility = (settings?: ColumnItem[]): VisibilityState => {\n if (!settings || !settings.length) {\n return {};\n }\n\n return settings.reduce((acc, item) => {\n acc[item.id] = item.isVisible;\n return acc;\n }, {} as VisibilityState);\n};\n\nconst convertOrder = (settings?: ColumnItem[]): ColumnOrderState => {\n if (!settings || !settings.length) {\n return [];\n }\n\n return settings.sort((a, b) => a.sort - b.sort).map(item => String(item.id));\n};\n\nconst convertPinning = (settings?: ColumnItem[]): ColumnPinningState => {\n if (!settings || !settings.length) {\n return {};\n }\n\n return settings.reduce((acc, item) => {\n if (item.area === ColumnArea.FixedLeft) {\n acc.left ??= [];\n acc.left?.push(String(item.id));\n } else if (item.area === ColumnArea.FixedRight) {\n acc.right ??= [];\n acc.right?.push(String(item.id));\n }\n\n return acc;\n }, {} as ColumnPinningState);\n};\n\nexport const useDataGridColumnSettings = (\n settings?: DataGridProps['columnSettings'],\n tableProps?: DataGridProps['tableProps']\n) => {\n const [columnVisibility, onColumnVisibilityChange] = useState<VisibilityState>(convertVisibility(settings));\n const [columnOrder, onColumnOrderChange] = useState<ColumnOrderState>(convertOrder(settings));\n const [columnPinning, onColumnPinningChange] = useState<ColumnPinningState>(convertPinning(settings));\n\n const externalState = tableProps?.state;\n\n const state = useMemo((): Partial<TableState> => {\n return {columnVisibility, columnOrder, columnPinning, ...externalState};\n }, [externalState, columnVisibility, columnOrder, columnPinning]);\n\n useUpdateEffect(() => {\n const newVisibility = convertVisibility(settings);\n const newOrder = convertOrder(settings);\n const newPinning = convertPinning(settings);\n\n onColumnVisibilityChange(oldState =>\n JSON.stringify(oldState) === JSON.stringify(newVisibility) ? oldState : newVisibility\n );\n\n onColumnOrderChange(oldState => (JSON.stringify(oldState) === JSON.stringify(newOrder) ? oldState : newOrder));\n\n onColumnPinningChange(oldState =>\n JSON.stringify(oldState) === JSON.stringify(newPinning) ? oldState : newPinning\n );\n }, [settings]);\n\n return state;\n};\n"],"names":["columnVisibility","columnOrder","columnPinning","externalState","useUpdateEffect","onColumnVisibilityChange"],"mappings":";;;;AAWA;AAyCE;AAOS;AAACA;AAAkBC;AAAaC;AAAkBC;AAG3DC;AACE;AAIAC;AAQA;AAIJ;;;;"}