@join-x5/react-data-grid 1.1.1-nightly → 1.1.2-nightly

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.
Files changed (86) hide show
  1. package/dist/DataGrid.d.ts +3 -0
  2. package/dist/DataGrid.es.js +67 -0
  3. package/dist/DataGrid.es.js.map +1 -0
  4. package/dist/DataGridContext.d.ts +10 -0
  5. package/dist/DataGridContext.es.js +23 -0
  6. package/dist/DataGridContext.es.js.map +1 -0
  7. package/dist/Table/index.d.ts +25 -0
  8. package/dist/Table/index.es.js +93 -0
  9. package/dist/Table/index.es.js.map +1 -0
  10. package/dist/Table/types.d.ts +3 -0
  11. package/dist/TableBody/index.d.ts +11 -0
  12. package/dist/TableBody/index.es.js +26 -0
  13. package/dist/TableBody/index.es.js.map +1 -0
  14. package/dist/TableCell/hook.d.ts +4 -0
  15. package/dist/TableCell/hook.es.js +42 -0
  16. package/dist/TableCell/hook.es.js.map +1 -0
  17. package/dist/TableCell/index.d.ts +9 -0
  18. package/dist/TableCell/index.es.js +234 -0
  19. package/dist/TableCell/index.es.js.map +1 -0
  20. package/dist/TableCell/types.d.ts +46 -0
  21. package/dist/TableDropdown/index.d.ts +8 -0
  22. package/dist/TableDropdown/index.es.js +26 -0
  23. package/dist/TableDropdown/index.es.js.map +1 -0
  24. package/dist/TableHead/index.d.ts +6 -0
  25. package/dist/TableHead/index.es.js +31 -0
  26. package/dist/TableHead/index.es.js.map +1 -0
  27. package/dist/TableHeadCell/index.d.ts +14 -0
  28. package/dist/TableHeadCell/index.es.js +146 -0
  29. package/dist/TableHeadCell/index.es.js.map +1 -0
  30. package/dist/TableHeadCell/types.d.ts +37 -0
  31. package/dist/TableHeadCell/types.es.js +5 -0
  32. package/dist/TableHeadCell/types.es.js.map +1 -0
  33. package/dist/TableHeadRow/index.d.ts +3 -0
  34. package/dist/TableHeadRow/index.es.js +14 -0
  35. package/dist/TableHeadRow/index.es.js.map +1 -0
  36. package/dist/TableHeadRow/types.d.ts +2 -0
  37. package/dist/TableInputCell/button.d.ts +8 -0
  38. package/dist/TableInputCell/button.es.js +30 -0
  39. package/dist/TableInputCell/button.es.js.map +1 -0
  40. package/dist/TableInputCell/checkbox.d.ts +11 -0
  41. package/dist/TableInputCell/checkbox.es.js +32 -0
  42. package/dist/TableInputCell/checkbox.es.js.map +1 -0
  43. package/dist/TableInputCell/date.d.ts +18 -0
  44. package/dist/TableInputCell/date.es.js +40 -0
  45. package/dist/TableInputCell/date.es.js.map +1 -0
  46. package/dist/TableInputCell/dropdown.d.ts +19 -0
  47. package/dist/TableInputCell/dropdown.es.js +40 -0
  48. package/dist/TableInputCell/dropdown.es.js.map +1 -0
  49. package/dist/TableInputCell/expanding.d.ts +11 -0
  50. package/dist/TableInputCell/expanding.es.js +58 -0
  51. package/dist/TableInputCell/expanding.es.js.map +1 -0
  52. package/dist/TableInputCell/hook.d.ts +611 -0
  53. package/dist/TableInputCell/hook.es.js +52 -0
  54. package/dist/TableInputCell/hook.es.js.map +1 -0
  55. package/dist/TableInputCell/icon.d.ts +8 -0
  56. package/dist/TableInputCell/icon.es.js +30 -0
  57. package/dist/TableInputCell/icon.es.js.map +1 -0
  58. package/dist/TableInputCell/index.d.ts +10 -0
  59. package/dist/TableInputCell/label.d.ts +8 -0
  60. package/dist/TableInputCell/label.es.js +30 -0
  61. package/dist/TableInputCell/label.es.js.map +1 -0
  62. package/dist/TableInputCell/switch.d.ts +11 -0
  63. package/dist/TableInputCell/switch.es.js +32 -0
  64. package/dist/TableInputCell/switch.es.js.map +1 -0
  65. package/dist/TableInputCell/text.d.ts +22 -0
  66. package/dist/TableInputCell/text.es.js +91 -0
  67. package/dist/TableInputCell/text.es.js.map +1 -0
  68. package/dist/TableInputCell/textarea.d.ts +23 -0
  69. package/dist/TableInputCell/textarea.es.js +83 -0
  70. package/dist/TableInputCell/textarea.es.js.map +1 -0
  71. package/dist/TableInputCell/types.d.ts +4 -0
  72. package/dist/TableRow/index.d.ts +5 -0
  73. package/dist/TableRow/index.es.js +25 -0
  74. package/dist/TableRow/index.es.js.map +1 -0
  75. package/dist/TableRow/types.d.ts +2 -0
  76. package/dist/hook.d.ts +3 -0
  77. package/dist/hook.es.js +23 -0
  78. package/dist/hook.es.js.map +1 -0
  79. package/dist/index.cjs +2 -0
  80. package/dist/index.cjs.map +1 -0
  81. package/dist/index.d.ts +10 -0
  82. package/dist/index.es.js +72 -0
  83. package/dist/index.es.js.map +1 -0
  84. package/dist/types.d.ts +54 -0
  85. package/package.json +1 -1
  86. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1,52 @@
1
+ "use client";
2
+ import { useContext as d, useRef as f } from "react";
3
+ import { useRefMerge as C } from "@join-x5/react-theme";
4
+ import { DataGridContext as m } from "../DataGridContext.es.js";
5
+ import { useDataGridTableCell as D } from "../TableCell/hook.es.js";
6
+ const w = (t, u) => {
7
+ const {
8
+ isDisabled: o,
9
+ isActive: c,
10
+ setIsActive: i
11
+ } = t, l = C(u), s = f(null), r = () => {
12
+ const e = s.current;
13
+ o || !e || (i == null || i(!0), setTimeout(() => {
14
+ e.selectionStart = e.value.length, e.focus();
15
+ }));
16
+ };
17
+ return {
18
+ cellProps: {
19
+ ...t,
20
+ ref: l,
21
+ onClick: (e) => {
22
+ var n;
23
+ c || e.currentTarget.focus(), (n = t.onClick) == null || n.call(t, e);
24
+ },
25
+ onDoubleClick: (e) => {
26
+ var n;
27
+ r(), (n = t.onDoubleClick) == null || n.call(t, e);
28
+ },
29
+ onKeyDown: (e) => {
30
+ var a;
31
+ (a = t.onKeyDown) == null || a.call(t, e);
32
+ const n = e.code === "Enter" || e.code === "NumpadEnter";
33
+ !c && n && r();
34
+ },
35
+ "data-editable": o ? void 0 : !0
36
+ },
37
+ ref: l,
38
+ inputRef: s
39
+ };
40
+ }, y = (t) => {
41
+ const u = D(t), o = d(m), c = t.id === o.activeCell;
42
+ return {
43
+ ...u,
44
+ isActive: c,
45
+ setIsActive: (l) => o.setActiveCell(l ? t.id : null)
46
+ };
47
+ };
48
+ export {
49
+ y as useDataGridInputCell,
50
+ w as useTableCellTextInput
51
+ };
52
+ //# sourceMappingURL=hook.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook.es.js","sources":["../../src/TableInputCell/hook.ts"],"sourcesContent":["'use client';\n\nimport {useContext, useRef} from 'react';\nimport {useRefMerge} from '@join-x5/react-theme';\n\nimport {DataGridContext} from '../DataGridContext';\nimport {useDataGridTableCell} from '../TableCell/hook';\n\nimport type {KeyboardEventHandler, MouseEventHandler, Ref} from 'react';\nimport type {Cell as ReactTableCell} from '@tanstack/react-table';\nimport type {TableCellProps} from 'TableCell';\n\nexport const useTableCellTextInput = <T extends HTMLInputElement | HTMLTextAreaElement>(\n props: TableCellProps,\n baseRef: Ref<HTMLTableCellElement>\n) => {\n const {isDisabled, isActive, setIsActive} = props;\n\n const ref = useRefMerge(baseRef);\n const inputRef = useRef<T>(null);\n\n const onEdit = () => {\n const input = inputRef.current;\n if (isDisabled || !input) {\n return;\n }\n\n setIsActive?.(true);\n\n setTimeout(() => {\n input.selectionStart = input.value.length;\n input.focus();\n });\n };\n\n const onClick: MouseEventHandler<HTMLTableCellElement> = e => {\n if (!isActive) {\n e.currentTarget.focus();\n }\n\n props.onClick?.(e);\n };\n\n const onDoubleClick: MouseEventHandler<HTMLTableCellElement> = e => {\n onEdit();\n\n props.onDoubleClick?.(e);\n };\n\n const onKeyDown: KeyboardEventHandler<HTMLTableCellElement> = e => {\n props.onKeyDown?.(e);\n\n const isEnterCode = e.code === 'Enter' || e.code === 'NumpadEnter';\n\n if (!isActive && isEnterCode) {\n onEdit();\n }\n };\n\n const cellProps = {\n ...props,\n\n ref,\n onClick,\n onDoubleClick,\n onKeyDown,\n\n 'data-editable': !isDisabled ? true : undefined,\n };\n\n return {cellProps, ref, inputRef};\n};\n\nexport const useDataGridInputCell = (cell: ReactTableCell<unknown, unknown>) => {\n const props = useDataGridTableCell(cell);\n const context = useContext(DataGridContext);\n\n const isActive = cell.id === context.activeCell;\n const setIsActive = newIsActive => context.setActiveCell(newIsActive ? cell.id : null);\n\n return {...props, isActive, setIsActive};\n};\n"],"names":["useTableCellTextInput","isDisabled","isActive","setIsActive","selectionStart","props","ref","e","inputRef"],"mappings":";;;;;AAYaA;AAIL;AAAA;AAACC;AAAYC;AAAUC;AAM3B;AACIF;AAOIG;AACM;AACb;AAsCI;AAAA;AAXW;AACbC;AAEHC;;AA1BA;AAIgBC;AAClB;;AAGS;AAEeA;AACxB;;AAGEF;AAEA;AAEI;AACK;AAEX;AAUiC;AACjC;AAEmBC;AAAKE;AAC1B;AAGQH;AAMC;AAAA;AAAIA;AAAOH;AAFmE;AAGvF;;;;;"}
@@ -0,0 +1,8 @@
1
+ import { FRC, PropsWithChildren } from '@join-x5/react-theme';
2
+ import { DataGridTableCellProps, TableCellProps } from '../TableCell';
3
+ type DefaultAny = any;
4
+ type TIconCell = FRC<HTMLTableCellElement, TableCellProps>;
5
+ export declare const IconCell: TIconCell;
6
+ export type DataGridIconCellProps<T = DefaultAny, V = DefaultAny> = DataGridTableCellProps<T, V> & PropsWithChildren;
7
+ export declare const DataGridIconCell: FRC<HTMLTableCellElement, DataGridIconCellProps>;
8
+ export {};
@@ -0,0 +1,30 @@
1
+ "use client";
2
+ import { jsx as n } from "@emotion/react/jsx-runtime";
3
+ import { SizeTokenValue as e, forwardRef as a } from "@join-x5/react-theme";
4
+ import { TableCell as m } from "../TableCell/index.es.js";
5
+ import { useDataGridInputCell as c } from "./hook.es.js";
6
+ const s = {
7
+ [e.XXSmall]: 8,
8
+ [e.XSmall]: 8,
9
+ [e.Small]: 8,
10
+ [e.Medium]: 12,
11
+ [e.Large]: 14,
12
+ [e.XLarge]: 14
13
+ }, d = a((l, r) => {
14
+ const {
15
+ padding: o = s[l.size ?? e.Medium],
16
+ ...t
17
+ } = l;
18
+ return /* @__PURE__ */ n(m, { ref: r, padding: o, ...t });
19
+ }), C = a((l, r) => {
20
+ const {
21
+ cell: o,
22
+ children: t
23
+ } = l, i = c(o);
24
+ return /* @__PURE__ */ n(d, { ref: r, ...i, children: t });
25
+ });
26
+ export {
27
+ C as DataGridIconCell,
28
+ d as IconCell
29
+ };
30
+ //# sourceMappingURL=icon.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon.es.js","sources":["../../src/TableInputCell/icon.tsx"],"sourcesContent":["'use client';\n\nimport {forwardRef, SizeTokenValue} from '@join-x5/react-theme';\n\nimport {TableCell} from '../TableCell';\n\nimport {useDataGridInputCell} from './hook';\n\nimport type {FRC, PropsWithChildren} from '@join-x5/react-theme';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\ntype TIconCell = FRC<HTMLTableCellElement, TableCellProps>;\n\nconst sizePadding: Record<SizeTokenValue, number> = {\n [SizeTokenValue.XXSmall]: 8,\n [SizeTokenValue.XSmall]: 8,\n [SizeTokenValue.Small]: 8,\n [SizeTokenValue.Medium]: 12,\n [SizeTokenValue.Large]: 14,\n [SizeTokenValue.XLarge]: 14,\n};\n\nexport const IconCell: TIconCell = forwardRef((props, ref) => {\n const {padding = sizePadding[props.size ?? SizeTokenValue.Medium], ...rest} = props;\n\n return <TableCell ref={ref} padding={padding} {...rest} />;\n});\n\nexport type DataGridIconCellProps<T = DefaultAny, V = DefaultAny> = DataGridTableCellProps<T, V> & PropsWithChildren;\n\nexport const DataGridIconCell: FRC<HTMLTableCellElement, DataGridIconCellProps> = forwardRef((props, ref) => {\n const {cell, children} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n return (\n <IconCell ref={ref} {...cellProps}>\n {children}\n </IconCell>\n );\n});\n"],"names":["rest","cell","children"],"mappings":";;;;;AAgBA;AAAoD;AACxB;AACD;AACD;AACC;AACD;AAE1B;AAGQ;AAAA;AAA0D;AAAMA;AAEtE;AACF;AAKQ;AAAA;AAACC;AAAMC;AAIb;AAKF;;;;;"}
@@ -0,0 +1,10 @@
1
+ export * from './button';
2
+ export * from './checkbox';
3
+ export * from './date';
4
+ export * from './dropdown';
5
+ export * from './expanding';
6
+ export * from './icon';
7
+ export * from './label';
8
+ export * from './switch';
9
+ export * from './text';
10
+ export * from './textarea';
@@ -0,0 +1,8 @@
1
+ import { FRC, PropsWithChildren } from '@join-x5/react-theme';
2
+ import { DataGridTableCellProps, TableCellProps } from '../TableCell';
3
+ type DefaultAny = any;
4
+ type TLabelCell = FRC<HTMLTableCellElement, TableCellProps>;
5
+ export declare const LabelCell: TLabelCell;
6
+ export type DataGridLabelCellProps<T = DefaultAny, V = DefaultAny> = DataGridTableCellProps<T, V> & PropsWithChildren;
7
+ export declare const DataGridLabelCell: FRC<HTMLTableCellElement, DataGridLabelCellProps>;
8
+ export {};
@@ -0,0 +1,30 @@
1
+ "use client";
2
+ import { jsx as a } from "@emotion/react/jsx-runtime";
3
+ import { SizeTokenValue as e, forwardRef as p } from "@join-x5/react-theme";
4
+ import { TableCell as m } from "../TableCell/index.es.js";
5
+ import { useDataGridInputCell as n } from "./hook.es.js";
6
+ const x = {
7
+ [e.XXSmall]: "6px 8px",
8
+ [e.XSmall]: "6px 8px",
9
+ [e.Small]: "6px 8px",
10
+ [e.Medium]: "10px 12px",
11
+ [e.Large]: "12px",
12
+ [e.XLarge]: "12px"
13
+ }, s = p((l, r) => {
14
+ const {
15
+ padding: o = x[l.size ?? e.Medium],
16
+ ...t
17
+ } = l;
18
+ return /* @__PURE__ */ a(m, { ref: r, padding: o, ...t });
19
+ }), g = p((l, r) => {
20
+ const {
21
+ cell: o,
22
+ children: t
23
+ } = l, i = n(o);
24
+ return /* @__PURE__ */ a(s, { ref: r, ...i, children: t });
25
+ });
26
+ export {
27
+ g as DataGridLabelCell,
28
+ s as LabelCell
29
+ };
30
+ //# sourceMappingURL=label.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.es.js","sources":["../../src/TableInputCell/label.tsx"],"sourcesContent":["'use client';\n\nimport {forwardRef, SizeTokenValue} from '@join-x5/react-theme';\n\nimport {TableCell} from '../TableCell';\n\nimport {useDataGridInputCell} from './hook';\n\nimport type {FRC, PropsWithChildren} from '@join-x5/react-theme';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\ntype TLabelCell = FRC<HTMLTableCellElement, TableCellProps>;\n\nconst sizePadding: Record<SizeTokenValue, string> = {\n [SizeTokenValue.XXSmall]: '6px 8px',\n [SizeTokenValue.XSmall]: '6px 8px',\n [SizeTokenValue.Small]: '6px 8px',\n [SizeTokenValue.Medium]: '10px 12px',\n [SizeTokenValue.Large]: '12px',\n [SizeTokenValue.XLarge]: '12px',\n};\n\nexport const LabelCell: TLabelCell = forwardRef((props, ref) => {\n const {padding = sizePadding[props.size ?? SizeTokenValue.Medium], ...rest} = props;\n\n return <TableCell ref={ref} padding={padding} {...rest} />;\n});\n\nexport type DataGridLabelCellProps<T = DefaultAny, V = DefaultAny> = DataGridTableCellProps<T, V> & PropsWithChildren;\n\nexport const DataGridLabelCell: FRC<HTMLTableCellElement, DataGridLabelCellProps> = forwardRef((props, ref) => {\n const {cell, children} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n return (\n <LabelCell ref={ref} {...cellProps}>\n {children}\n </LabelCell>\n );\n});\n"],"names":["rest","cell","children"],"mappings":";;;;;AAgBA;AAAoD;AACxB;AACD;AACD;AACC;AACD;AAE1B;AAGQ;AAAA;AAA0D;AAAMA;AAEtE;AACF;AAKQ;AAAA;AAACC;AAAMC;AAIb;AAKF;;;;;"}
@@ -0,0 +1,11 @@
1
+ import { SwitchProps } from '@join-x5/react';
2
+ import { FRC } from '@join-x5/react-theme';
3
+ import { DataGridTableCellProps, TableCellProps } from '../TableCell';
4
+ type DefaultAny = any;
5
+ type TSwitchCell = FRC<HTMLTableCellElement, {
6
+ inputProps: SwitchProps;
7
+ } & Omit<TableCellProps, 'value' | 'onChange'>>;
8
+ export declare const SwitchCell: TSwitchCell;
9
+ export type DataGridSwitchCellProps<T = DefaultAny, V = DefaultAny> = SwitchProps & DataGridTableCellProps<T, V>;
10
+ export declare const DataGridSwitchCell: FRC<HTMLTableCellElement, DataGridSwitchCellProps>;
11
+ export {};
@@ -0,0 +1,32 @@
1
+ "use client";
2
+ import { jsx as p } from "@emotion/react/jsx-runtime";
3
+ import { SizeTokenValue as t, forwardRef as a } from "@join-x5/react-theme";
4
+ import { Switch as n } from "@join-x5/react";
5
+ import { TableCell as s } from "../TableCell/index.es.js";
6
+ import { useDataGridInputCell as m } from "./hook.es.js";
7
+ const d = {
8
+ [t.XXSmall]: "8px",
9
+ [t.XSmall]: "8px",
10
+ [t.Small]: "8px",
11
+ [t.Medium]: "12px",
12
+ [t.Large]: "14px 12px 14px 14px",
13
+ [t.XLarge]: "14px 12px 14px 14px"
14
+ }, x = a((e, r) => {
15
+ const {
16
+ inputProps: i,
17
+ padding: l = d[e.size ?? t.Medium],
18
+ ...o
19
+ } = e;
20
+ return /* @__PURE__ */ p(s, { ref: r, padding: l, ...o, children: /* @__PURE__ */ p(n, { "data-action": !0, tabIndex: -1, disabled: e.isDisabled, size: t.Small, ...i }) });
21
+ }), g = a((e, r) => {
22
+ const {
23
+ cell: i,
24
+ ...l
25
+ } = e, o = m(i);
26
+ return /* @__PURE__ */ p(x, { ref: r, ...o, inputProps: l });
27
+ });
28
+ export {
29
+ g as DataGridSwitchCell,
30
+ x as SwitchCell
31
+ };
32
+ //# sourceMappingURL=switch.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch.es.js","sources":["../../src/TableInputCell/switch.tsx"],"sourcesContent":["'use client';\n\nimport {forwardRef, SizeTokenValue} from '@join-x5/react-theme';\nimport {Switch} from '@join-x5/react';\n\nimport {TableCell} from '../TableCell';\n\nimport {useDataGridInputCell} from './hook';\n\nimport type {SwitchProps} from '@join-x5/react';\nimport type {FRC, CSSProperties} from '@join-x5/react-theme';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\ntype TSwitchCell = FRC<\n HTMLTableCellElement,\n {\n inputProps: SwitchProps;\n } & Omit<TableCellProps, 'value' | 'onChange'>\n>;\n\nconst sizePadding: Record<SizeTokenValue, CSSProperties['padding']> = {\n [SizeTokenValue.XXSmall]: '8px',\n [SizeTokenValue.XSmall]: '8px',\n [SizeTokenValue.Small]: '8px',\n [SizeTokenValue.Medium]: '12px',\n [SizeTokenValue.Large]: '14px 12px 14px 14px',\n [SizeTokenValue.XLarge]: '14px 12px 14px 14px',\n};\n\nexport const SwitchCell: TSwitchCell = forwardRef((props, ref) => {\n const {inputProps, padding = sizePadding[props.size ?? SizeTokenValue.Medium], ...rest} = props;\n\n return (\n <TableCell ref={ref} padding={padding} {...rest}>\n <Switch data-action tabIndex={-1} disabled={props.isDisabled} size={SizeTokenValue.Small} {...inputProps} />\n </TableCell>\n );\n});\n\nexport type DataGridSwitchCellProps<T = DefaultAny, V = DefaultAny> = SwitchProps & DataGridTableCellProps<T, V>;\n\nexport const DataGridSwitchCell: FRC<HTMLTableCellElement, DataGridSwitchCellProps> = forwardRef((props, ref) => {\n const {cell, ...rest} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n const inputProps = rest as SwitchProps;\n\n return <SwitchCell ref={ref} {...cellProps} inputProps={inputProps} />;\n});\n"],"names":["inputProps","rest","cell"],"mappings":";;;;;;AAuBA;AAAsE;AAC1C;AACD;AACD;AACC;AACD;AAE1B;AAGQ;AAAA;AAACA;AAAqE;AAAMC;AAGhF;AAIJ;AAKQ;AAAA;AAACC;AAASD;AAMhB;AACF;;;;;"}
@@ -0,0 +1,22 @@
1
+ import { FocusEvent, InputHTMLAttributes } from 'react';
2
+ import { Cell as ReactTableCell } from '@tanstack/react-table';
3
+ import { FRC, PropsWithChildren } from '@join-x5/react-theme';
4
+ import { DataGridTableCellProps, TableCellProps } from '../TableCell';
5
+ import { ColumnDefTemplate } from './types';
6
+ type DefaultAny = any;
7
+ export type TextInputProps = {
8
+ value: string;
9
+ onChange: (newValue: string, e: FocusEvent<HTMLInputElement>) => void;
10
+ } & Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'onChange'>;
11
+ type TTextInputCell = FRC<HTMLTableCellElement, {
12
+ inputProps: TextInputProps;
13
+ } & Omit<TableCellProps, 'value' | 'onChange'>>;
14
+ export declare const TextInputCell: TTextInputCell;
15
+ export type DataGridTextInputCellProps<T = DefaultAny, V = DefaultAny> = {
16
+ getValue: (cell: ReactTableCell<T, V>) => string;
17
+ onChange: (cell: ReactTableCell<T, V>, newValue: string, e: FocusEvent<HTMLInputElement>) => void;
18
+ } & Omit<TextInputProps, 'value' | 'onChange'> & DataGridTableCellProps<T, V> & PropsWithChildren;
19
+ export declare const DataGridTextInputCell: FRC<HTMLTableCellElement, DataGridTextInputCellProps>;
20
+ export type GetDataGridTextInputCellArgs<T = DefaultAny, V = DefaultAny> = Omit<DataGridTextInputCellProps<T, V>, 'cell' | 'children'>;
21
+ export declare const getDataGridTextInputCell: <T, V>(args: GetDataGridTextInputCellArgs<T, V>) => ColumnDefTemplate<T, V>;
22
+ export {};
@@ -0,0 +1,91 @@
1
+ "use client";
2
+ import { jsx as g, jsxs as e } from "@emotion/react/jsx-runtime";
3
+ import m from "@emotion/styled/base";
4
+ import { useState as h, useEffect as A } from "react";
5
+ import { forwardRef as t } from "@join-x5/react-theme";
6
+ import { TableCell as a, TableCellContent as F } from "../TableCell/index.es.js";
7
+ import { useTableCellTextInput as J, useDataGridInputCell as Y } from "./hook.es.js";
8
+ function X() {
9
+ return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).";
10
+ }
11
+ const U = /* @__PURE__ */ m("div", process.env.NODE_ENV === "production" ? {
12
+ target: "ewl8o3j1"
13
+ } : {
14
+ target: "ewl8o3j1",
15
+ label: "ChildContent"
16
+ })(process.env.NODE_ENV === "production" ? {
17
+ name: "1juk05q",
18
+ styles: "&[data-hidden]{visibility:hidden;pointer-events:none;}"
19
+ } : {
20
+ name: "1juk05q",
21
+ styles: "&[data-hidden]{visibility:hidden;pointer-events:none;}/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3NhZHlrb3ZzZC9qb2luLXg1L3BhY2thZ2VzL2RhdGEtZ3JpZC9zcmMvVGFibGVJbnB1dENlbGwvdGV4dC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd0IrQiIsImZpbGUiOiIvaG9tZS9zYWR5a292c2Qvam9pbi14NS9wYWNrYWdlcy9kYXRhLWdyaWQvc3JjL1RhYmxlSW5wdXRDZWxsL3RleHQudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5cbmltcG9ydCB7dXNlRWZmZWN0LCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtmb3J3YXJkUmVmfSBmcm9tICdAam9pbi14NS9yZWFjdC10aGVtZSc7XG5cbmltcG9ydCB7VGFibGVDZWxsLCBUYWJsZUNlbGxDb250ZW50fSBmcm9tICcuLi9UYWJsZUNlbGwnO1xuXG5pbXBvcnQge3VzZURhdGFHcmlkSW5wdXRDZWxsLCB1c2VUYWJsZUNlbGxUZXh0SW5wdXR9IGZyb20gJy4vaG9vayc7XG5cbmltcG9ydCB0eXBlIHtcbiAgQ2hhbmdlRXZlbnRIYW5kbGVyLFxuICBGb2N1c0V2ZW50LFxuICBGb2N1c0V2ZW50SGFuZGxlcixcbiAgSW5wdXRIVE1MQXR0cmlidXRlcyxcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIFJlYWN0Tm9kZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUge0NlbGwgYXMgUmVhY3RUYWJsZUNlbGx9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC10YWJsZSc7XG5pbXBvcnQgdHlwZSB7RlJDLCBQcm9wc1dpdGhDaGlsZHJlbn0gZnJvbSAnQGpvaW4teDUvcmVhY3QtdGhlbWUnO1xuaW1wb3J0IHR5cGUge0RhdGFHcmlkVGFibGVDZWxsUHJvcHMsIFRhYmxlQ2VsbFByb3BzfSBmcm9tICcuLi9UYWJsZUNlbGwnO1xuaW1wb3J0IHR5cGUge0NvbHVtbkRlZlRlbXBsYXRlfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgQ2hpbGRDb250ZW50ID0gc3R5bGVkLmRpdmBcbiAgJltkYXRhLWhpZGRlbl0ge1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgfVxuYDtcblxuY29uc3QgSW5wdXQgPSBzdHlsZWQuaW5wdXRgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgbWluLXdpZHRoOiAxMHB4O1xuICBwYWRkaW5nOiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xuICBmb250LXdlaWdodDogaW5oZXJpdDtcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG5cbiAgJltkYXRhLWhpZGRlbl0ge1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgfVxuYDtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbnR5cGUgRGVmYXVsdEFueSA9IGFueTtcblxuZXhwb3J0IHR5cGUgVGV4dElucHV0UHJvcHMgPSB7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIG9uQ2hhbmdlOiAobmV3VmFsdWU6IHN0cmluZywgZTogRm9jdXNFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4gdm9pZDtcbn0gJiBPbWl0PElucHV0SFRNTEF0dHJpYnV0ZXM8SFRNTElucHV0RWxlbWVudD4sICd2YWx1ZScgfCAnb25DaGFuZ2UnPjtcblxudHlwZSBUVGV4dElucHV0Q2VsbCA9IEZSQzxcbiAgSFRNTFRhYmxlQ2VsbEVsZW1lbnQsXG4gIHtcbiAgICBpbnB1dFByb3BzOiBUZXh0SW5wdXRQcm9wcztcbiAgfSAmIE9taXQ8VGFibGVDZWxsUHJvcHMsICd2YWx1ZScgfCAnb25DaGFuZ2UnPlxuPjtcblxuZXhwb3J0IGNvbnN0IFRleHRJbnB1dENlbGw6IFRUZXh0SW5wdXRDZWxsID0gZm9yd2FyZFJlZigoe2lucHV0UHJvcHMsIC4uLnByb3BzfSwgYmFzZVJlZikgPT4ge1xuICBjb25zdCB7Y2VsbFByb3BzLCByZWYsIGlucHV0UmVmfSA9IHVzZVRhYmxlQ2VsbFRleHRJbnB1dDxIVE1MSW5wdXRFbGVtZW50Pihwcm9wcywgYmFzZVJlZik7XG5cbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZShpbnB1dFByb3BzLnZhbHVlID8/ICcnKTtcblxuICBjb25zdCBvbkNoYW5nZTogQ2hhbmdlRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+ID0gZSA9PiB7XG4gICAgc2V0VmFsdWUoZS50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIGNvbnN0IG9uS2V5RG93bjogS2V5Ym9hcmRFdmVudEhhbmRsZXI8SFRNTElucHV0RWxlbWVudD4gPSBlID0+IHtcbiAgICBjb25zdCBpc0VudGVyQ29kZSA9IGUuY29kZSA9PT0gJ0VudGVyJyB8fCBlLmNvZGUgPT09ICdOdW1wYWRFbnRlcic7XG5cbiAgICBpZiAoZS5jb2RlID09PSAnRXNjYXBlJyB8fCBpc0VudGVyQ29kZSkge1xuICAgICAgcHJvcHMuc2V0SXNBY3RpdmU/LihmYWxzZSk7XG4gICAgICBlLmN1cnJlbnRUYXJnZXQuYmx1cigpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBvbkJsdXI6IEZvY3VzRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+ID0gZSA9PiB7XG4gICAgcHJvcHMuc2V0SXNBY3RpdmU/LihmYWxzZSk7XG5cbiAgICBpbnB1dFByb3BzLm9uQ2hhbmdlKHZhbHVlLCBlKTtcbiAgICBpbnB1dFByb3BzLm9uQmx1cj8uKGUpO1xuICAgIHJlZi5jdXJyZW50Py5ibHVyKCk7XG4gIH07XG5cbiAgY29uc3QgaXNDaGlsZEhpZGRlbiA9IHByb3BzLmlzQWN0aXZlID8gdHJ1ZSA6IHVuZGVmaW5lZDtcblxuICBjb25zdCByZXN1bHRQcm9wcyA9IHtcbiAgICAuLi5pbnB1dFByb3BzLFxuXG4gICAgdmFsdWUsXG4gICAgb25DaGFuZ2UsXG4gICAgb25LZXlEb3duLFxuICAgIG9uQmx1cixcblxuICAgIHNpemU6IDAsXG4gICAgJ2RhdGEtaGlkZGVuJzogcHJvcHMuaXNBY3RpdmUgPyB1bmRlZmluZWQgOiB0cnVlLFxuICB9O1xuXG4gIGNvbnN0IGNvbnRlbnRQcm9wcyA9IHtcbiAgICBpc011bHRpbGluZTogY2VsbFByb3BzLmlzTXVsdGlsaW5lLFxuICAgIHdoaXRlU3BhY2U6IGNlbGxQcm9wcy53aGl0ZVNwYWNlLFxuICAgIHdvcmRCcmVhazogY2VsbFByb3BzLndvcmRCcmVhayxcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldFZhbHVlKGlucHV0UHJvcHMudmFsdWUpO1xuICB9LCBbaW5wdXRQcm9wcy52YWx1ZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPFRhYmxlQ2VsbCB7Li4uY2VsbFByb3BzfT5cbiAgICAgIDxUYWJsZUNlbGxDb250ZW50IHsuLi5jb250ZW50UHJvcHN9PlxuICAgICAgICA8Q2hpbGRDb250ZW50IGRhdGEtaGlkZGVuPXtpc0NoaWxkSGlkZGVufT57cHJvcHMuY2hpbGRyZW59PC9DaGlsZENvbnRlbnQ+XG4gICAgICAgIDxJbnB1dCByZWY9e2lucHV0UmVmfSB7Li4ucmVzdWx0UHJvcHN9IC8+XG4gICAgICA8L1RhYmxlQ2VsbENvbnRlbnQ+XG4gICAgPC9UYWJsZUNlbGw+XG4gICk7XG59KTtcblxuZXhwb3J0IHR5cGUgRGF0YUdyaWRUZXh0SW5wdXRDZWxsUHJvcHM8VCA9IERlZmF1bHRBbnksIFYgPSBEZWZhdWx0QW55PiA9IHtcbiAgZ2V0VmFsdWU6IChjZWxsOiBSZWFjdFRhYmxlQ2VsbDxULCBWPikgPT4gc3RyaW5nO1xuICBvbkNoYW5nZTogKGNlbGw6IFJlYWN0VGFibGVDZWxsPFQsIFY+LCBuZXdWYWx1ZTogc3RyaW5nLCBlOiBGb2N1c0V2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB2b2lkO1xufSAmIE9taXQ8VGV4dElucHV0UHJvcHMsICd2YWx1ZScgfCAnb25DaGFuZ2UnPiAmXG4gIERhdGFHcmlkVGFibGVDZWxsUHJvcHM8VCwgVj4gJlxuICBQcm9wc1dpdGhDaGlsZHJlbjtcblxuZXhwb3J0IGNvbnN0IERhdGFHcmlkVGV4dElucHV0Q2VsbDogRlJDPEhUTUxUYWJsZUNlbGxFbGVtZW50LCBEYXRhR3JpZFRleHRJbnB1dENlbGxQcm9wcz4gPSBmb3J3YXJkUmVmKChwcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHtjZWxsLCBnZXRWYWx1ZSwgb25DaGFuZ2UsIGNoaWxkcmVuLCAuLi5yZXN0fSA9IHByb3BzO1xuXG4gIGNvbnN0IGNlbGxQcm9wcyA9IHVzZURhdGFHcmlkSW5wdXRDZWxsKGNlbGwpO1xuXG4gIGNvbnN0IGlucHV0UHJvcHMgPSByZXN0IGFzIFRleHRJbnB1dFByb3BzO1xuICBpbnB1dFByb3BzLnZhbHVlID0gZ2V0VmFsdWUoY2VsbCk7XG4gIGlucHV0UHJvcHMub25DaGFuZ2UgPSAobmV3VmFsdWUsIGUpID0+IG9uQ2hhbmdlKGNlbGwsIG5ld1ZhbHVlLCBlKTtcblxuICByZXR1cm4gKFxuICAgIDxUZXh0SW5wdXRDZWxsIHJlZj17cmVmfSB7Li4uY2VsbFByb3BzfSBpbnB1dFByb3BzPXtpbnB1dFByb3BzfT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L1RleHRJbnB1dENlbGw+XG4gICk7XG59KTtcblxuZXhwb3J0IHR5cGUgR2V0RGF0YUdyaWRUZXh0SW5wdXRDZWxsQXJnczxUID0gRGVmYXVsdEFueSwgViA9IERlZmF1bHRBbnk+ID0gT21pdDxcbiAgRGF0YUdyaWRUZXh0SW5wdXRDZWxsUHJvcHM8VCwgVj4sXG4gICdjZWxsJyB8ICdjaGlsZHJlbidcbj47XG5cbmV4cG9ydCBjb25zdCBnZXREYXRhR3JpZFRleHRJbnB1dENlbGwgPSA8VCwgVj4oYXJnczogR2V0RGF0YUdyaWRUZXh0SW5wdXRDZWxsQXJnczxULCBWPik6IENvbHVtbkRlZlRlbXBsYXRlPFQsIFY+ID0+IHtcbiAgcmV0dXJuICh7Y2VsbH0pID0+IHtcbiAgICBjb25zdCBjb250ZW50ID0gKGNlbGwuZ2V0VmFsdWUoKSA/PyBudWxsKSBhcyBSZWFjdE5vZGU7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPERhdGFHcmlkVGV4dElucHV0Q2VsbCBrZXk9e2NlbGwuaWR9IGNlbGw9e2NlbGx9IHsuLi5hcmdzfT5cbiAgICAgICAge2NvbnRlbnR9XG4gICAgICA8L0RhdGFHcmlkVGV4dElucHV0Q2VsbD5cbiAgICApO1xuICB9O1xufTtcbiJdfQ== */",
22
+ toString: X
23
+ }), N = /* @__PURE__ */ m("input", process.env.NODE_ENV === "production" ? {
24
+ target: "ewl8o3j0"
25
+ } : {
26
+ target: "ewl8o3j0",
27
+ label: "Input"
28
+ })(process.env.NODE_ENV === "production" ? {
29
+ name: "kvz3z7",
30
+ styles: "position:absolute;top:0;left:0;width:100%;min-width:10px;padding:0;background-color:transparent;border:none;outline:none;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;&[data-hidden]{visibility:hidden;pointer-events:none;}"
31
+ } : {
32
+ name: "kvz3z7",
33
+ styles: "position:absolute;top:0;left:0;width:100%;min-width:10px;padding:0;background-color:transparent;border:none;outline:none;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;&[data-hidden]{visibility:hidden;pointer-events:none;}/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3NhZHlrb3ZzZC9qb2luLXg1L3BhY2thZ2VzL2RhdGEtZ3JpZC9zcmMvVGFibGVJbnB1dENlbGwvdGV4dC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBK0IwQiIsImZpbGUiOiIvaG9tZS9zYWR5a292c2Qvam9pbi14NS9wYWNrYWdlcy9kYXRhLWdyaWQvc3JjL1RhYmxlSW5wdXRDZWxsL3RleHQudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5cbmltcG9ydCB7dXNlRWZmZWN0LCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtmb3J3YXJkUmVmfSBmcm9tICdAam9pbi14NS9yZWFjdC10aGVtZSc7XG5cbmltcG9ydCB7VGFibGVDZWxsLCBUYWJsZUNlbGxDb250ZW50fSBmcm9tICcuLi9UYWJsZUNlbGwnO1xuXG5pbXBvcnQge3VzZURhdGFHcmlkSW5wdXRDZWxsLCB1c2VUYWJsZUNlbGxUZXh0SW5wdXR9IGZyb20gJy4vaG9vayc7XG5cbmltcG9ydCB0eXBlIHtcbiAgQ2hhbmdlRXZlbnRIYW5kbGVyLFxuICBGb2N1c0V2ZW50LFxuICBGb2N1c0V2ZW50SGFuZGxlcixcbiAgSW5wdXRIVE1MQXR0cmlidXRlcyxcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIFJlYWN0Tm9kZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUge0NlbGwgYXMgUmVhY3RUYWJsZUNlbGx9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC10YWJsZSc7XG5pbXBvcnQgdHlwZSB7RlJDLCBQcm9wc1dpdGhDaGlsZHJlbn0gZnJvbSAnQGpvaW4teDUvcmVhY3QtdGhlbWUnO1xuaW1wb3J0IHR5cGUge0RhdGFHcmlkVGFibGVDZWxsUHJvcHMsIFRhYmxlQ2VsbFByb3BzfSBmcm9tICcuLi9UYWJsZUNlbGwnO1xuaW1wb3J0IHR5cGUge0NvbHVtbkRlZlRlbXBsYXRlfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgQ2hpbGRDb250ZW50ID0gc3R5bGVkLmRpdmBcbiAgJltkYXRhLWhpZGRlbl0ge1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgfVxuYDtcblxuY29uc3QgSW5wdXQgPSBzdHlsZWQuaW5wdXRgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgbWluLXdpZHRoOiAxMHB4O1xuICBwYWRkaW5nOiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xuICBmb250LXdlaWdodDogaW5oZXJpdDtcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG5cbiAgJltkYXRhLWhpZGRlbl0ge1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgfVxuYDtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbnR5cGUgRGVmYXVsdEFueSA9IGFueTtcblxuZXhwb3J0IHR5cGUgVGV4dElucHV0UHJvcHMgPSB7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIG9uQ2hhbmdlOiAobmV3VmFsdWU6IHN0cmluZywgZTogRm9jdXNFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4gdm9pZDtcbn0gJiBPbWl0PElucHV0SFRNTEF0dHJpYnV0ZXM8SFRNTElucHV0RWxlbWVudD4sICd2YWx1ZScgfCAnb25DaGFuZ2UnPjtcblxudHlwZSBUVGV4dElucHV0Q2VsbCA9IEZSQzxcbiAgSFRNTFRhYmxlQ2VsbEVsZW1lbnQsXG4gIHtcbiAgICBpbnB1dFByb3BzOiBUZXh0SW5wdXRQcm9wcztcbiAgfSAmIE9taXQ8VGFibGVDZWxsUHJvcHMsICd2YWx1ZScgfCAnb25DaGFuZ2UnPlxuPjtcblxuZXhwb3J0IGNvbnN0IFRleHRJbnB1dENlbGw6IFRUZXh0SW5wdXRDZWxsID0gZm9yd2FyZFJlZigoe2lucHV0UHJvcHMsIC4uLnByb3BzfSwgYmFzZVJlZikgPT4ge1xuICBjb25zdCB7Y2VsbFByb3BzLCByZWYsIGlucHV0UmVmfSA9IHVzZVRhYmxlQ2VsbFRleHRJbnB1dDxIVE1MSW5wdXRFbGVtZW50Pihwcm9wcywgYmFzZVJlZik7XG5cbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZShpbnB1dFByb3BzLnZhbHVlID8/ICcnKTtcblxuICBjb25zdCBvbkNoYW5nZTogQ2hhbmdlRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+ID0gZSA9PiB7XG4gICAgc2V0VmFsdWUoZS50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIGNvbnN0IG9uS2V5RG93bjogS2V5Ym9hcmRFdmVudEhhbmRsZXI8SFRNTElucHV0RWxlbWVudD4gPSBlID0+IHtcbiAgICBjb25zdCBpc0VudGVyQ29kZSA9IGUuY29kZSA9PT0gJ0VudGVyJyB8fCBlLmNvZGUgPT09ICdOdW1wYWRFbnRlcic7XG5cbiAgICBpZiAoZS5jb2RlID09PSAnRXNjYXBlJyB8fCBpc0VudGVyQ29kZSkge1xuICAgICAgcHJvcHMuc2V0SXNBY3RpdmU/LihmYWxzZSk7XG4gICAgICBlLmN1cnJlbnRUYXJnZXQuYmx1cigpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBvbkJsdXI6IEZvY3VzRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+ID0gZSA9PiB7XG4gICAgcHJvcHMuc2V0SXNBY3RpdmU/LihmYWxzZSk7XG5cbiAgICBpbnB1dFByb3BzLm9uQ2hhbmdlKHZhbHVlLCBlKTtcbiAgICBpbnB1dFByb3BzLm9uQmx1cj8uKGUpO1xuICAgIHJlZi5jdXJyZW50Py5ibHVyKCk7XG4gIH07XG5cbiAgY29uc3QgaXNDaGlsZEhpZGRlbiA9IHByb3BzLmlzQWN0aXZlID8gdHJ1ZSA6IHVuZGVmaW5lZDtcblxuICBjb25zdCByZXN1bHRQcm9wcyA9IHtcbiAgICAuLi5pbnB1dFByb3BzLFxuXG4gICAgdmFsdWUsXG4gICAgb25DaGFuZ2UsXG4gICAgb25LZXlEb3duLFxuICAgIG9uQmx1cixcblxuICAgIHNpemU6IDAsXG4gICAgJ2RhdGEtaGlkZGVuJzogcHJvcHMuaXNBY3RpdmUgPyB1bmRlZmluZWQgOiB0cnVlLFxuICB9O1xuXG4gIGNvbnN0IGNvbnRlbnRQcm9wcyA9IHtcbiAgICBpc011bHRpbGluZTogY2VsbFByb3BzLmlzTXVsdGlsaW5lLFxuICAgIHdoaXRlU3BhY2U6IGNlbGxQcm9wcy53aGl0ZVNwYWNlLFxuICAgIHdvcmRCcmVhazogY2VsbFByb3BzLndvcmRCcmVhayxcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldFZhbHVlKGlucHV0UHJvcHMudmFsdWUpO1xuICB9LCBbaW5wdXRQcm9wcy52YWx1ZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPFRhYmxlQ2VsbCB7Li4uY2VsbFByb3BzfT5cbiAgICAgIDxUYWJsZUNlbGxDb250ZW50IHsuLi5jb250ZW50UHJvcHN9PlxuICAgICAgICA8Q2hpbGRDb250ZW50IGRhdGEtaGlkZGVuPXtpc0NoaWxkSGlkZGVufT57cHJvcHMuY2hpbGRyZW59PC9DaGlsZENvbnRlbnQ+XG4gICAgICAgIDxJbnB1dCByZWY9e2lucHV0UmVmfSB7Li4ucmVzdWx0UHJvcHN9IC8+XG4gICAgICA8L1RhYmxlQ2VsbENvbnRlbnQ+XG4gICAgPC9UYWJsZUNlbGw+XG4gICk7XG59KTtcblxuZXhwb3J0IHR5cGUgRGF0YUdyaWRUZXh0SW5wdXRDZWxsUHJvcHM8VCA9IERlZmF1bHRBbnksIFYgPSBEZWZhdWx0QW55PiA9IHtcbiAgZ2V0VmFsdWU6IChjZWxsOiBSZWFjdFRhYmxlQ2VsbDxULCBWPikgPT4gc3RyaW5nO1xuICBvbkNoYW5nZTogKGNlbGw6IFJlYWN0VGFibGVDZWxsPFQsIFY+LCBuZXdWYWx1ZTogc3RyaW5nLCBlOiBGb2N1c0V2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB2b2lkO1xufSAmIE9taXQ8VGV4dElucHV0UHJvcHMsICd2YWx1ZScgfCAnb25DaGFuZ2UnPiAmXG4gIERhdGFHcmlkVGFibGVDZWxsUHJvcHM8VCwgVj4gJlxuICBQcm9wc1dpdGhDaGlsZHJlbjtcblxuZXhwb3J0IGNvbnN0IERhdGFHcmlkVGV4dElucHV0Q2VsbDogRlJDPEhUTUxUYWJsZUNlbGxFbGVtZW50LCBEYXRhR3JpZFRleHRJbnB1dENlbGxQcm9wcz4gPSBmb3J3YXJkUmVmKChwcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHtjZWxsLCBnZXRWYWx1ZSwgb25DaGFuZ2UsIGNoaWxkcmVuLCAuLi5yZXN0fSA9IHByb3BzO1xuXG4gIGNvbnN0IGNlbGxQcm9wcyA9IHVzZURhdGFHcmlkSW5wdXRDZWxsKGNlbGwpO1xuXG4gIGNvbnN0IGlucHV0UHJvcHMgPSByZXN0IGFzIFRleHRJbnB1dFByb3BzO1xuICBpbnB1dFByb3BzLnZhbHVlID0gZ2V0VmFsdWUoY2VsbCk7XG4gIGlucHV0UHJvcHMub25DaGFuZ2UgPSAobmV3VmFsdWUsIGUpID0+IG9uQ2hhbmdlKGNlbGwsIG5ld1ZhbHVlLCBlKTtcblxuICByZXR1cm4gKFxuICAgIDxUZXh0SW5wdXRDZWxsIHJlZj17cmVmfSB7Li4uY2VsbFByb3BzfSBpbnB1dFByb3BzPXtpbnB1dFByb3BzfT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L1RleHRJbnB1dENlbGw+XG4gICk7XG59KTtcblxuZXhwb3J0IHR5cGUgR2V0RGF0YUdyaWRUZXh0SW5wdXRDZWxsQXJnczxUID0gRGVmYXVsdEFueSwgViA9IERlZmF1bHRBbnk+ID0gT21pdDxcbiAgRGF0YUdyaWRUZXh0SW5wdXRDZWxsUHJvcHM8VCwgVj4sXG4gICdjZWxsJyB8ICdjaGlsZHJlbidcbj47XG5cbmV4cG9ydCBjb25zdCBnZXREYXRhR3JpZFRleHRJbnB1dENlbGwgPSA8VCwgVj4oYXJnczogR2V0RGF0YUdyaWRUZXh0SW5wdXRDZWxsQXJnczxULCBWPik6IENvbHVtbkRlZlRlbXBsYXRlPFQsIFY+ID0+IHtcbiAgcmV0dXJuICh7Y2VsbH0pID0+IHtcbiAgICBjb25zdCBjb250ZW50ID0gKGNlbGwuZ2V0VmFsdWUoKSA/PyBudWxsKSBhcyBSZWFjdE5vZGU7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPERhdGFHcmlkVGV4dElucHV0Q2VsbCBrZXk9e2NlbGwuaWR9IGNlbGw9e2NlbGx9IHsuLi5hcmdzfT5cbiAgICAgICAge2NvbnRlbnR9XG4gICAgICA8L0RhdGFHcmlkVGV4dElucHV0Q2VsbD5cbiAgICApO1xuICB9O1xufTtcbiJdfQ== */",
34
+ toString: X
35
+ }), y = t(({
36
+ inputProps: c,
37
+ ...b
38
+ }, G) => {
39
+ const {
40
+ cellProps: I,
41
+ ref: n,
42
+ inputRef: i
43
+ } = J(b, G), [u, V] = h(c.value ?? ""), d = (l) => {
44
+ V(l.target.value);
45
+ }, W = (l) => {
46
+ var Z;
47
+ const B = l.code === "Enter" || l.code === "NumpadEnter";
48
+ (l.code === "Escape" || B) && ((Z = b.setIsActive) == null || Z.call(b, !1), l.currentTarget.blur());
49
+ }, C = (l) => {
50
+ var B, Z, R;
51
+ (B = b.setIsActive) == null || B.call(b, !1), c.onChange(u, l), (Z = c.onBlur) == null || Z.call(c, l), (R = n.current) == null || R.blur();
52
+ }, x = b.isActive ? !0 : void 0, s = {
53
+ ...c,
54
+ value: u,
55
+ onChange: d,
56
+ onKeyDown: W,
57
+ onBlur: C,
58
+ size: 0,
59
+ "data-hidden": b.isActive ? void 0 : !0
60
+ }, H = {
61
+ isMultiline: I.isMultiline,
62
+ whiteSpace: I.whiteSpace,
63
+ wordBreak: I.wordBreak
64
+ };
65
+ return A(() => {
66
+ V(c.value);
67
+ }, [c.value]), /* @__PURE__ */ g(a, { ...I, children: /* @__PURE__ */ e(F, { ...H, children: [
68
+ /* @__PURE__ */ g(U, { "data-hidden": x, children: b.children }),
69
+ /* @__PURE__ */ g(N, { ref: i, ...s })
70
+ ] }) });
71
+ }), o = t((c, b) => {
72
+ const {
73
+ cell: G,
74
+ getValue: I,
75
+ onChange: n,
76
+ children: i,
77
+ ...u
78
+ } = c, V = Y(G), d = u;
79
+ return d.value = I(G), d.onChange = (W, C) => n(G, W, C), /* @__PURE__ */ g(y, { ref: b, ...V, inputProps: d, children: i });
80
+ }), D = (c) => ({
81
+ cell: b
82
+ }) => {
83
+ const G = b.getValue() ?? null;
84
+ return /* @__PURE__ */ g(o, { cell: b, ...c, children: G }, b.id);
85
+ };
86
+ export {
87
+ o as DataGridTextInputCell,
88
+ y as TextInputCell,
89
+ D as getDataGridTextInputCell
90
+ };
91
+ //# sourceMappingURL=text.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.es.js","sources":["../../src/TableInputCell/text.tsx"],"sourcesContent":["'use client';\n\nimport styled from '@emotion/styled';\n\nimport {useEffect, useState} from 'react';\nimport {forwardRef} from '@join-x5/react-theme';\n\nimport {TableCell, TableCellContent} from '../TableCell';\n\nimport {useDataGridInputCell, useTableCellTextInput} from './hook';\n\nimport type {\n ChangeEventHandler,\n FocusEvent,\n FocusEventHandler,\n InputHTMLAttributes,\n KeyboardEventHandler,\n ReactNode,\n} from 'react';\nimport type {Cell as ReactTableCell} from '@tanstack/react-table';\nimport type {FRC, PropsWithChildren} from '@join-x5/react-theme';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\nimport type {ColumnDefTemplate} from './types';\n\nconst ChildContent = styled.div`\n &[data-hidden] {\n visibility: hidden;\n pointer-events: none;\n }\n`;\n\nconst Input = styled.input`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n min-width: 10px;\n padding: 0;\n background-color: transparent;\n border: none;\n outline: none;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n\n &[data-hidden] {\n visibility: hidden;\n pointer-events: none;\n }\n`;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\nexport type TextInputProps = {\n value: string;\n onChange: (newValue: string, e: FocusEvent<HTMLInputElement>) => void;\n} & Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'onChange'>;\n\ntype TTextInputCell = FRC<\n HTMLTableCellElement,\n {\n inputProps: TextInputProps;\n } & Omit<TableCellProps, 'value' | 'onChange'>\n>;\n\nexport const TextInputCell: TTextInputCell = forwardRef(({inputProps, ...props}, baseRef) => {\n const {cellProps, ref, inputRef} = useTableCellTextInput<HTMLInputElement>(props, baseRef);\n\n const [value, setValue] = useState(inputProps.value ?? '');\n\n const onChange: ChangeEventHandler<HTMLInputElement> = e => {\n setValue(e.target.value);\n };\n\n const onKeyDown: KeyboardEventHandler<HTMLInputElement> = e => {\n const isEnterCode = e.code === 'Enter' || e.code === 'NumpadEnter';\n\n if (e.code === 'Escape' || isEnterCode) {\n props.setIsActive?.(false);\n e.currentTarget.blur();\n }\n };\n\n const onBlur: FocusEventHandler<HTMLInputElement> = e => {\n props.setIsActive?.(false);\n\n inputProps.onChange(value, e);\n inputProps.onBlur?.(e);\n ref.current?.blur();\n };\n\n const isChildHidden = props.isActive ? true : undefined;\n\n const resultProps = {\n ...inputProps,\n\n value,\n onChange,\n onKeyDown,\n onBlur,\n\n size: 0,\n 'data-hidden': props.isActive ? undefined : true,\n };\n\n const contentProps = {\n isMultiline: cellProps.isMultiline,\n whiteSpace: cellProps.whiteSpace,\n wordBreak: cellProps.wordBreak,\n };\n\n useEffect(() => {\n setValue(inputProps.value);\n }, [inputProps.value]);\n\n return (\n <TableCell {...cellProps}>\n <TableCellContent {...contentProps}>\n <ChildContent data-hidden={isChildHidden}>{props.children}</ChildContent>\n <Input ref={inputRef} {...resultProps} />\n </TableCellContent>\n </TableCell>\n );\n});\n\nexport type DataGridTextInputCellProps<T = DefaultAny, V = DefaultAny> = {\n getValue: (cell: ReactTableCell<T, V>) => string;\n onChange: (cell: ReactTableCell<T, V>, newValue: string, e: FocusEvent<HTMLInputElement>) => void;\n} & Omit<TextInputProps, 'value' | 'onChange'> &\n DataGridTableCellProps<T, V> &\n PropsWithChildren;\n\nexport const DataGridTextInputCell: FRC<HTMLTableCellElement, DataGridTextInputCellProps> = forwardRef((props, ref) => {\n const {cell, getValue, onChange, children, ...rest} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n const inputProps = rest as TextInputProps;\n inputProps.value = getValue(cell);\n inputProps.onChange = (newValue, e) => onChange(cell, newValue, e);\n\n return (\n <TextInputCell ref={ref} {...cellProps} inputProps={inputProps}>\n {children}\n </TextInputCell>\n );\n});\n\nexport type GetDataGridTextInputCellArgs<T = DefaultAny, V = DefaultAny> = Omit<\n DataGridTextInputCellProps<T, V>,\n 'cell' | 'children'\n>;\n\nexport const getDataGridTextInputCell = <T, V>(args: GetDataGridTextInputCellArgs<T, V>): ColumnDefTemplate<T, V> => {\n return ({cell}) => {\n const content = (cell.getValue() ?? null) as ReactNode;\n\n return (\n <DataGridTextInputCell key={cell.id} cell={cell} {...args}>\n {content}\n </DataGridTextInputCell>\n );\n };\n};\n"],"names":["inputProps","cellProps","ref","inputRef","e","props","blur","value","onChange","onKeyDown","onBlur","isMultiline","whiteSpace","wordBreak","useEffect","setValue","cell","getValue","children","rest","content"],"mappings":";;;;;;;AAAa;AAAA;AAAA;AAwBb;AAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoC8C;AAACA;AAAoB;AACtE;AAAA;AAACC;AAAWC;AAAKC;AAKZC;AAAc;;AAIvB;AAEIA;AAEmB;;AAKvBC;AAIaC;AAKK;AACfN;AAEHO;AACAC;AACAC;AACAC;AAEM;AACsC;AAGzB;AACIC;AACDC;AACDC;AAGvBC;AACEC;AAAyB;AAMrB;AAA0D;AACpB;AAI9C;AAUQ;AAAA;AAACC;AAAMC;AAAUT;AAAUU;AAAaC;AAKnCZ;AAQb;AAQU;AAACS;AACDI;AAEN;AAKF;;;;;;"}
@@ -0,0 +1,23 @@
1
+ import { FocusEvent, InputHTMLAttributes } from 'react';
2
+ import { Cell as ReactTableCell } from '@tanstack/react-table';
3
+ import { FRC, PropsWithChildren } from '@join-x5/react-theme';
4
+ import { DataGridTableCellProps, TableCellProps } from '../TableCell';
5
+ import { ColumnDefTemplate } from './types';
6
+ type DefaultAny = any;
7
+ export type TextAreaInputProps = {
8
+ value: string;
9
+ onChange: (newValue: string, e: FocusEvent<HTMLTextAreaElement>) => void;
10
+ } & Omit<InputHTMLAttributes<HTMLTextAreaElement>, 'value' | 'onChange'>;
11
+ type TTextAreaInputCell = FRC<HTMLTableCellElement, {
12
+ inputProps: TextAreaInputProps;
13
+ } & Omit<TableCellProps, 'value' | 'onChange'>>;
14
+ export declare const TextAreaInputCell: TTextAreaInputCell;
15
+ export type DataGridTextAreaInputCellProps<T = DefaultAny, V = DefaultAny> = {
16
+ getValue: (cell: ReactTableCell<T, V>) => string;
17
+ onChange: (cell: ReactTableCell<T, V>, newValue: string, e: FocusEvent<HTMLTextAreaElement>) => void;
18
+ } & Omit<TextAreaInputProps, 'value' | 'onChange'> & DataGridTableCellProps<T, V> & PropsWithChildren;
19
+ type TDataGridTextAreaInputCell = FRC<HTMLTableCellElement, DataGridTextAreaInputCellProps>;
20
+ export declare const DataGridTextAreaInputCell: TDataGridTextAreaInputCell;
21
+ export type GetDataGridTextAreaInputCellArgs<T = DefaultAny, V = DefaultAny> = Omit<DataGridTextAreaInputCellProps<T, V>, 'cell' | 'children'>;
22
+ export declare const getDataGridTextAreaInputCell: <T, V>(args: GetDataGridTextAreaInputCellArgs<T, V>) => ColumnDefTemplate<T, V>;
23
+ export {};
@@ -0,0 +1,83 @@
1
+ "use client";
2
+ import { jsx as V, jsxs as s } from "@emotion/react/jsx-runtime";
3
+ import m from "@emotion/styled/base";
4
+ import { useState as F, useEffect as h } from "react";
5
+ import J, { forwardRef as i } from "@join-x5/react-theme";
6
+ import { TableCell as A, TableCellContent as Y } from "../TableCell/index.es.js";
7
+ import { useTableCellTextInput as U, useDataGridInputCell as a } from "./hook.es.js";
8
+ function N() {
9
+ return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).";
10
+ }
11
+ const y = /* @__PURE__ */ m("div", process.env.NODE_ENV === "production" ? {
12
+ target: "e1dalyc21"
13
+ } : {
14
+ target: "e1dalyc21",
15
+ label: "ChildContent"
16
+ })(process.env.NODE_ENV === "production" ? {
17
+ name: "1akleb8",
18
+ styles: "min-height:100%;&[data-hidden]{visibility:hidden;pointer-events:none;}"
19
+ } : {
20
+ name: "1akleb8",
21
+ styles: "min-height:100%;&[data-hidden]{visibility:hidden;pointer-events:none;}/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3NhZHlrb3ZzZC9qb2luLXg1L3BhY2thZ2VzL2RhdGEtZ3JpZC9zcmMvVGFibGVJbnB1dENlbGwvdGV4dGFyZWEudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXdCK0IiLCJmaWxlIjoiL2hvbWUvc2FkeWtvdnNkL2pvaW4teDUvcGFja2FnZXMvZGF0YS1ncmlkL3NyYy9UYWJsZUlucHV0Q2VsbC90ZXh0YXJlYS50c3giLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcblxuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgYmFzZVRoZW1lLCB7Zm9yd2FyZFJlZn0gZnJvbSAnQGpvaW4teDUvcmVhY3QtdGhlbWUnO1xuXG5pbXBvcnQge1RhYmxlQ2VsbCwgVGFibGVDZWxsQ29udGVudH0gZnJvbSAnLi4vVGFibGVDZWxsJztcblxuaW1wb3J0IHt1c2VEYXRhR3JpZElucHV0Q2VsbCwgdXNlVGFibGVDZWxsVGV4dElucHV0fSBmcm9tICcuL2hvb2snO1xuXG5pbXBvcnQgdHlwZSB7XG4gIENoYW5nZUV2ZW50SGFuZGxlcixcbiAgRm9jdXNFdmVudCxcbiAgRm9jdXNFdmVudEhhbmRsZXIsXG4gIElucHV0SFRNTEF0dHJpYnV0ZXMsXG4gIEtleWJvYXJkRXZlbnRIYW5kbGVyLFxuICBSZWFjdE5vZGUsXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHtDZWxsIGFzIFJlYWN0VGFibGVDZWxsfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtdGFibGUnO1xuaW1wb3J0IHR5cGUge0ZSQywgUHJvcHNXaXRoQ2hpbGRyZW59IGZyb20gJ0Bqb2luLXg1L3JlYWN0LXRoZW1lJztcbmltcG9ydCB0eXBlIHtEYXRhR3JpZFRhYmxlQ2VsbFByb3BzLCBUYWJsZUNlbGxQcm9wc30gZnJvbSAnLi4vVGFibGVDZWxsJztcbmltcG9ydCB0eXBlIHtDb2x1bW5EZWZUZW1wbGF0ZX0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IENoaWxkQ29udGVudCA9IHN0eWxlZC5kaXZgXG4gIG1pbi1oZWlnaHQ6IDEwMCU7XG4gICZbZGF0YS1oaWRkZW5dIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIH1cbmA7XG5cbmNvbnN0IFRleHRBcmVhID0gc3R5bGVkLnRleHRhcmVhYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgbWluLXdpZHRoOiAxMHB4O1xuICBwYWRkaW5nOiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xuICBmb250LXdlaWdodDogaW5oZXJpdDtcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gIHJlc2l6ZTogbm9uZTtcblxuICAke2Jhc2VUaGVtZS5zY3JvbGx9XG5cbiAgJltkYXRhLWhpZGRlbl0ge1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgfVxuYDtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbnR5cGUgRGVmYXVsdEFueSA9IGFueTtcblxuZXhwb3J0IHR5cGUgVGV4dEFyZWFJbnB1dFByb3BzID0ge1xuICB2YWx1ZTogc3RyaW5nO1xuICBvbkNoYW5nZTogKG5ld1ZhbHVlOiBzdHJpbmcsIGU6IEZvY3VzRXZlbnQ8SFRNTFRleHRBcmVhRWxlbWVudD4pID0+IHZvaWQ7XG59ICYgT21pdDxJbnB1dEhUTUxBdHRyaWJ1dGVzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+LCAndmFsdWUnIHwgJ29uQ2hhbmdlJz47XG5cbnR5cGUgVFRleHRBcmVhSW5wdXRDZWxsID0gRlJDPFxuICBIVE1MVGFibGVDZWxsRWxlbWVudCxcbiAge1xuICAgIGlucHV0UHJvcHM6IFRleHRBcmVhSW5wdXRQcm9wcztcbiAgfSAmIE9taXQ8VGFibGVDZWxsUHJvcHMsICd2YWx1ZScgfCAnb25DaGFuZ2UnPlxuPjtcblxuZXhwb3J0IGNvbnN0IFRleHRBcmVhSW5wdXRDZWxsOiBUVGV4dEFyZWFJbnB1dENlbGwgPSBmb3J3YXJkUmVmKCh7aW5wdXRQcm9wcywgLi4ucHJvcHN9LCBiYXNlUmVmKSA9PiB7XG4gIGNvbnN0IHtjZWxsUHJvcHMsIHJlZiwgaW5wdXRSZWZ9ID0gdXNlVGFibGVDZWxsVGV4dElucHV0PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KHByb3BzLCBiYXNlUmVmKTtcblxuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKGlucHV0UHJvcHMudmFsdWUgPz8gJycpO1xuXG4gIGNvbnN0IG9uQ2hhbmdlOiBDaGFuZ2VFdmVudEhhbmRsZXI8SFRNTFRleHRBcmVhRWxlbWVudD4gPSBlID0+IHtcbiAgICBzZXRWYWx1ZShlLnRhcmdldC52YWx1ZSk7XG4gIH07XG5cbiAgY29uc3Qgb25LZXlEb3duOiBLZXlib2FyZEV2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PiA9IGUgPT4ge1xuICAgIGNvbnN0IGlzRW50ZXJDb2RlID0gZS5jb2RlID09PSAnRW50ZXInIHx8IGUuY29kZSA9PT0gJ051bXBhZEVudGVyJztcblxuICAgIGlmIChlLmNvZGUgPT09ICdFc2NhcGUnIHx8IChpc0VudGVyQ29kZSAmJiBlLmN0cmxLZXkpKSB7XG4gICAgICBwcm9wcy5zZXRJc0FjdGl2ZT8uKGZhbHNlKTtcbiAgICAgIGUuY3VycmVudFRhcmdldC5ibHVyKCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IG9uQmx1cjogRm9jdXNFdmVudEhhbmRsZXI8SFRNTFRleHRBcmVhRWxlbWVudD4gPSBlID0+IHtcbiAgICBwcm9wcy5zZXRJc0FjdGl2ZT8uKGZhbHNlKTtcblxuICAgIGlucHV0UHJvcHMub25DaGFuZ2UodmFsdWUsIGUpO1xuICAgIGlucHV0UHJvcHMub25CbHVyPy4oZSk7XG4gICAgcmVmLmN1cnJlbnQ/LmJsdXIoKTtcbiAgfTtcblxuICBjb25zdCBpc0NoaWxkSGlkZGVuID0gcHJvcHMuaXNBY3RpdmUgPyB0cnVlIDogdW5kZWZpbmVkO1xuXG4gIGNvbnN0IHJlc3VsdFByb3BzID0ge1xuICAgIC4uLmlucHV0UHJvcHMsXG5cbiAgICB2YWx1ZSxcbiAgICBvbkNoYW5nZSxcbiAgICBvbktleURvd24sXG4gICAgb25CbHVyLFxuXG4gICAgc2l6ZTogMCxcbiAgICAnZGF0YS1oaWRkZW4nOiBwcm9wcy5pc0FjdGl2ZSA/IHVuZGVmaW5lZCA6IHRydWUsXG4gIH07XG5cbiAgY29uc3QgY29udGVudCA9IHByb3BzLmlzQWN0aXZlID8gdmFsdWUgOiBwcm9wcy5jaGlsZHJlbjtcblxuICBjb25zdCBjb250ZW50UHJvcHMgPSB7XG4gICAgaXNNdWx0aWxpbmU6IGNlbGxQcm9wcy5pc011bHRpbGluZSxcbiAgICB3aGl0ZVNwYWNlOiBjZWxsUHJvcHMud2hpdGVTcGFjZSxcbiAgICB3b3JkQnJlYWs6IGNlbGxQcm9wcy53b3JkQnJlYWssXG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRWYWx1ZShpbnB1dFByb3BzLnZhbHVlKTtcbiAgfSwgW2lucHV0UHJvcHMudmFsdWVdKTtcblxuICByZXR1cm4gKFxuICAgIDxUYWJsZUNlbGwgey4uLmNlbGxQcm9wc30+XG4gICAgICA8VGFibGVDZWxsQ29udGVudCB7Li4uY29udGVudFByb3BzfT5cbiAgICAgICAgPENoaWxkQ29udGVudCBkYXRhLWhpZGRlbj17aXNDaGlsZEhpZGRlbn0+e2NvbnRlbnR9PC9DaGlsZENvbnRlbnQ+XG4gICAgICAgIDxUZXh0QXJlYSByZWY9e2lucHV0UmVmfSB7Li4ucmVzdWx0UHJvcHN9IC8+XG4gICAgICA8L1RhYmxlQ2VsbENvbnRlbnQ+XG4gICAgPC9UYWJsZUNlbGw+XG4gICk7XG59KTtcblxuZXhwb3J0IHR5cGUgRGF0YUdyaWRUZXh0QXJlYUlucHV0Q2VsbFByb3BzPFQgPSBEZWZhdWx0QW55LCBWID0gRGVmYXVsdEFueT4gPSB7XG4gIGdldFZhbHVlOiAoY2VsbDogUmVhY3RUYWJsZUNlbGw8VCwgVj4pID0+IHN0cmluZztcbiAgb25DaGFuZ2U6IChjZWxsOiBSZWFjdFRhYmxlQ2VsbDxULCBWPiwgbmV3VmFsdWU6IHN0cmluZywgZTogRm9jdXNFdmVudDxIVE1MVGV4dEFyZWFFbGVtZW50PikgPT4gdm9pZDtcbn0gJiBPbWl0PFRleHRBcmVhSW5wdXRQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+ICZcbiAgRGF0YUdyaWRUYWJsZUNlbGxQcm9wczxULCBWPiAmXG4gIFByb3BzV2l0aENoaWxkcmVuO1xuXG50eXBlIFREYXRhR3JpZFRleHRBcmVhSW5wdXRDZWxsID0gRlJDPEhUTUxUYWJsZUNlbGxFbGVtZW50LCBEYXRhR3JpZFRleHRBcmVhSW5wdXRDZWxsUHJvcHM+O1xuXG5leHBvcnQgY29uc3QgRGF0YUdyaWRUZXh0QXJlYUlucHV0Q2VsbDogVERhdGFHcmlkVGV4dEFyZWFJbnB1dENlbGwgPSBmb3J3YXJkUmVmKChwcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHtjZWxsLCBnZXRWYWx1ZSwgb25DaGFuZ2UsIC4uLnJlc3R9ID0gcHJvcHM7XG5cbiAgY29uc3QgY2VsbFByb3BzID0gdXNlRGF0YUdyaWRJbnB1dENlbGwoY2VsbCk7XG5cbiAgY29uc3QgY29udGVudCA9IChjZWxsLmdldFZhbHVlKCkgPz8gbnVsbCkgYXMgUmVhY3ROb2RlO1xuXG4gIGNvbnN0IGlucHV0UHJvcHMgPSByZXN0IGFzIFRleHRBcmVhSW5wdXRQcm9wcztcbiAgaW5wdXRQcm9wcy52YWx1ZSA9IGdldFZhbHVlKGNlbGwpO1xuICBpbnB1dFByb3BzLm9uQ2hhbmdlID0gKG5ld1ZhbHVlLCBlKSA9PiBvbkNoYW5nZShjZWxsLCBuZXdWYWx1ZSwgZSk7XG5cbiAgcmV0dXJuIChcbiAgICA8VGV4dEFyZWFJbnB1dENlbGwgcmVmPXtyZWZ9IHsuLi5jZWxsUHJvcHN9IGlucHV0UHJvcHM9e2lucHV0UHJvcHN9PlxuICAgICAge2NvbnRlbnR9XG4gICAgPC9UZXh0QXJlYUlucHV0Q2VsbD5cbiAgKTtcbn0pO1xuXG5leHBvcnQgdHlwZSBHZXREYXRhR3JpZFRleHRBcmVhSW5wdXRDZWxsQXJnczxUID0gRGVmYXVsdEFueSwgViA9IERlZmF1bHRBbnk+ID0gT21pdDxcbiAgRGF0YUdyaWRUZXh0QXJlYUlucHV0Q2VsbFByb3BzPFQsIFY+LFxuICAnY2VsbCcgfCAnY2hpbGRyZW4nXG4+O1xuXG5leHBvcnQgY29uc3QgZ2V0RGF0YUdyaWRUZXh0QXJlYUlucHV0Q2VsbCA9IDxULCBWPihcbiAgYXJnczogR2V0RGF0YUdyaWRUZXh0QXJlYUlucHV0Q2VsbEFyZ3M8VCwgVj5cbik6IENvbHVtbkRlZlRlbXBsYXRlPFQsIFY+ID0+IHtcbiAgcmV0dXJuICh7Y2VsbH0pID0+IHtcbiAgICBjb25zdCBjb250ZW50ID0gKGNlbGwuZ2V0VmFsdWUoKSA/PyBudWxsKSBhcyBSZWFjdE5vZGU7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPERhdGFHcmlkVGV4dEFyZWFJbnB1dENlbGwga2V5PXtjZWxsLmlkfSBjZWxsPXtjZWxsfSB7Li4uYXJnc30+XG4gICAgICAgIHtjb250ZW50fVxuICAgICAgPC9EYXRhR3JpZFRleHRBcmVhSW5wdXRDZWxsPlxuICAgICk7XG4gIH07XG59O1xuIl19 */",
22
+ toString: N
23
+ }), o = /* @__PURE__ */ m("textarea", process.env.NODE_ENV === "production" ? {
24
+ target: "e1dalyc20"
25
+ } : {
26
+ target: "e1dalyc20",
27
+ label: "TextArea"
28
+ })("position:absolute;top:0;left:0;width:100%;height:100%;min-width:10px;padding:0;background-color:transparent;border:none;outline:none;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;resize:none;", J.scroll, " &[data-hidden]{visibility:hidden;pointer-events:none;}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3NhZHlrb3ZzZC9qb2luLXg1L3BhY2thZ2VzL2RhdGEtZ3JpZC9zcmMvVGFibGVJbnB1dENlbGwvdGV4dGFyZWEudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdDZ0MiLCJmaWxlIjoiL2hvbWUvc2FkeWtvdnNkL2pvaW4teDUvcGFja2FnZXMvZGF0YS1ncmlkL3NyYy9UYWJsZUlucHV0Q2VsbC90ZXh0YXJlYS50c3giLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcblxuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgYmFzZVRoZW1lLCB7Zm9yd2FyZFJlZn0gZnJvbSAnQGpvaW4teDUvcmVhY3QtdGhlbWUnO1xuXG5pbXBvcnQge1RhYmxlQ2VsbCwgVGFibGVDZWxsQ29udGVudH0gZnJvbSAnLi4vVGFibGVDZWxsJztcblxuaW1wb3J0IHt1c2VEYXRhR3JpZElucHV0Q2VsbCwgdXNlVGFibGVDZWxsVGV4dElucHV0fSBmcm9tICcuL2hvb2snO1xuXG5pbXBvcnQgdHlwZSB7XG4gIENoYW5nZUV2ZW50SGFuZGxlcixcbiAgRm9jdXNFdmVudCxcbiAgRm9jdXNFdmVudEhhbmRsZXIsXG4gIElucHV0SFRNTEF0dHJpYnV0ZXMsXG4gIEtleWJvYXJkRXZlbnRIYW5kbGVyLFxuICBSZWFjdE5vZGUsXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHtDZWxsIGFzIFJlYWN0VGFibGVDZWxsfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtdGFibGUnO1xuaW1wb3J0IHR5cGUge0ZSQywgUHJvcHNXaXRoQ2hpbGRyZW59IGZyb20gJ0Bqb2luLXg1L3JlYWN0LXRoZW1lJztcbmltcG9ydCB0eXBlIHtEYXRhR3JpZFRhYmxlQ2VsbFByb3BzLCBUYWJsZUNlbGxQcm9wc30gZnJvbSAnLi4vVGFibGVDZWxsJztcbmltcG9ydCB0eXBlIHtDb2x1bW5EZWZUZW1wbGF0ZX0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IENoaWxkQ29udGVudCA9IHN0eWxlZC5kaXZgXG4gIG1pbi1oZWlnaHQ6IDEwMCU7XG4gICZbZGF0YS1oaWRkZW5dIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIH1cbmA7XG5cbmNvbnN0IFRleHRBcmVhID0gc3R5bGVkLnRleHRhcmVhYFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgbWluLXdpZHRoOiAxMHB4O1xuICBwYWRkaW5nOiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xuICBmb250LXdlaWdodDogaW5oZXJpdDtcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gIHJlc2l6ZTogbm9uZTtcblxuICAke2Jhc2VUaGVtZS5zY3JvbGx9XG5cbiAgJltkYXRhLWhpZGRlbl0ge1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgfVxuYDtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbnR5cGUgRGVmYXVsdEFueSA9IGFueTtcblxuZXhwb3J0IHR5cGUgVGV4dEFyZWFJbnB1dFByb3BzID0ge1xuICB2YWx1ZTogc3RyaW5nO1xuICBvbkNoYW5nZTogKG5ld1ZhbHVlOiBzdHJpbmcsIGU6IEZvY3VzRXZlbnQ8SFRNTFRleHRBcmVhRWxlbWVudD4pID0+IHZvaWQ7XG59ICYgT21pdDxJbnB1dEhUTUxBdHRyaWJ1dGVzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+LCAndmFsdWUnIHwgJ29uQ2hhbmdlJz47XG5cbnR5cGUgVFRleHRBcmVhSW5wdXRDZWxsID0gRlJDPFxuICBIVE1MVGFibGVDZWxsRWxlbWVudCxcbiAge1xuICAgIGlucHV0UHJvcHM6IFRleHRBcmVhSW5wdXRQcm9wcztcbiAgfSAmIE9taXQ8VGFibGVDZWxsUHJvcHMsICd2YWx1ZScgfCAnb25DaGFuZ2UnPlxuPjtcblxuZXhwb3J0IGNvbnN0IFRleHRBcmVhSW5wdXRDZWxsOiBUVGV4dEFyZWFJbnB1dENlbGwgPSBmb3J3YXJkUmVmKCh7aW5wdXRQcm9wcywgLi4ucHJvcHN9LCBiYXNlUmVmKSA9PiB7XG4gIGNvbnN0IHtjZWxsUHJvcHMsIHJlZiwgaW5wdXRSZWZ9ID0gdXNlVGFibGVDZWxsVGV4dElucHV0PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KHByb3BzLCBiYXNlUmVmKTtcblxuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKGlucHV0UHJvcHMudmFsdWUgPz8gJycpO1xuXG4gIGNvbnN0IG9uQ2hhbmdlOiBDaGFuZ2VFdmVudEhhbmRsZXI8SFRNTFRleHRBcmVhRWxlbWVudD4gPSBlID0+IHtcbiAgICBzZXRWYWx1ZShlLnRhcmdldC52YWx1ZSk7XG4gIH07XG5cbiAgY29uc3Qgb25LZXlEb3duOiBLZXlib2FyZEV2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PiA9IGUgPT4ge1xuICAgIGNvbnN0IGlzRW50ZXJDb2RlID0gZS5jb2RlID09PSAnRW50ZXInIHx8IGUuY29kZSA9PT0gJ051bXBhZEVudGVyJztcblxuICAgIGlmIChlLmNvZGUgPT09ICdFc2NhcGUnIHx8IChpc0VudGVyQ29kZSAmJiBlLmN0cmxLZXkpKSB7XG4gICAgICBwcm9wcy5zZXRJc0FjdGl2ZT8uKGZhbHNlKTtcbiAgICAgIGUuY3VycmVudFRhcmdldC5ibHVyKCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IG9uQmx1cjogRm9jdXNFdmVudEhhbmRsZXI8SFRNTFRleHRBcmVhRWxlbWVudD4gPSBlID0+IHtcbiAgICBwcm9wcy5zZXRJc0FjdGl2ZT8uKGZhbHNlKTtcblxuICAgIGlucHV0UHJvcHMub25DaGFuZ2UodmFsdWUsIGUpO1xuICAgIGlucHV0UHJvcHMub25CbHVyPy4oZSk7XG4gICAgcmVmLmN1cnJlbnQ/LmJsdXIoKTtcbiAgfTtcblxuICBjb25zdCBpc0NoaWxkSGlkZGVuID0gcHJvcHMuaXNBY3RpdmUgPyB0cnVlIDogdW5kZWZpbmVkO1xuXG4gIGNvbnN0IHJlc3VsdFByb3BzID0ge1xuICAgIC4uLmlucHV0UHJvcHMsXG5cbiAgICB2YWx1ZSxcbiAgICBvbkNoYW5nZSxcbiAgICBvbktleURvd24sXG4gICAgb25CbHVyLFxuXG4gICAgc2l6ZTogMCxcbiAgICAnZGF0YS1oaWRkZW4nOiBwcm9wcy5pc0FjdGl2ZSA/IHVuZGVmaW5lZCA6IHRydWUsXG4gIH07XG5cbiAgY29uc3QgY29udGVudCA9IHByb3BzLmlzQWN0aXZlID8gdmFsdWUgOiBwcm9wcy5jaGlsZHJlbjtcblxuICBjb25zdCBjb250ZW50UHJvcHMgPSB7XG4gICAgaXNNdWx0aWxpbmU6IGNlbGxQcm9wcy5pc011bHRpbGluZSxcbiAgICB3aGl0ZVNwYWNlOiBjZWxsUHJvcHMud2hpdGVTcGFjZSxcbiAgICB3b3JkQnJlYWs6IGNlbGxQcm9wcy53b3JkQnJlYWssXG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRWYWx1ZShpbnB1dFByb3BzLnZhbHVlKTtcbiAgfSwgW2lucHV0UHJvcHMudmFsdWVdKTtcblxuICByZXR1cm4gKFxuICAgIDxUYWJsZUNlbGwgey4uLmNlbGxQcm9wc30+XG4gICAgICA8VGFibGVDZWxsQ29udGVudCB7Li4uY29udGVudFByb3BzfT5cbiAgICAgICAgPENoaWxkQ29udGVudCBkYXRhLWhpZGRlbj17aXNDaGlsZEhpZGRlbn0+e2NvbnRlbnR9PC9DaGlsZENvbnRlbnQ+XG4gICAgICAgIDxUZXh0QXJlYSByZWY9e2lucHV0UmVmfSB7Li4ucmVzdWx0UHJvcHN9IC8+XG4gICAgICA8L1RhYmxlQ2VsbENvbnRlbnQ+XG4gICAgPC9UYWJsZUNlbGw+XG4gICk7XG59KTtcblxuZXhwb3J0IHR5cGUgRGF0YUdyaWRUZXh0QXJlYUlucHV0Q2VsbFByb3BzPFQgPSBEZWZhdWx0QW55LCBWID0gRGVmYXVsdEFueT4gPSB7XG4gIGdldFZhbHVlOiAoY2VsbDogUmVhY3RUYWJsZUNlbGw8VCwgVj4pID0+IHN0cmluZztcbiAgb25DaGFuZ2U6IChjZWxsOiBSZWFjdFRhYmxlQ2VsbDxULCBWPiwgbmV3VmFsdWU6IHN0cmluZywgZTogRm9jdXNFdmVudDxIVE1MVGV4dEFyZWFFbGVtZW50PikgPT4gdm9pZDtcbn0gJiBPbWl0PFRleHRBcmVhSW5wdXRQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+ICZcbiAgRGF0YUdyaWRUYWJsZUNlbGxQcm9wczxULCBWPiAmXG4gIFByb3BzV2l0aENoaWxkcmVuO1xuXG50eXBlIFREYXRhR3JpZFRleHRBcmVhSW5wdXRDZWxsID0gRlJDPEhUTUxUYWJsZUNlbGxFbGVtZW50LCBEYXRhR3JpZFRleHRBcmVhSW5wdXRDZWxsUHJvcHM+O1xuXG5leHBvcnQgY29uc3QgRGF0YUdyaWRUZXh0QXJlYUlucHV0Q2VsbDogVERhdGFHcmlkVGV4dEFyZWFJbnB1dENlbGwgPSBmb3J3YXJkUmVmKChwcm9wcywgcmVmKSA9PiB7XG4gIGNvbnN0IHtjZWxsLCBnZXRWYWx1ZSwgb25DaGFuZ2UsIC4uLnJlc3R9ID0gcHJvcHM7XG5cbiAgY29uc3QgY2VsbFByb3BzID0gdXNlRGF0YUdyaWRJbnB1dENlbGwoY2VsbCk7XG5cbiAgY29uc3QgY29udGVudCA9IChjZWxsLmdldFZhbHVlKCkgPz8gbnVsbCkgYXMgUmVhY3ROb2RlO1xuXG4gIGNvbnN0IGlucHV0UHJvcHMgPSByZXN0IGFzIFRleHRBcmVhSW5wdXRQcm9wcztcbiAgaW5wdXRQcm9wcy52YWx1ZSA9IGdldFZhbHVlKGNlbGwpO1xuICBpbnB1dFByb3BzLm9uQ2hhbmdlID0gKG5ld1ZhbHVlLCBlKSA9PiBvbkNoYW5nZShjZWxsLCBuZXdWYWx1ZSwgZSk7XG5cbiAgcmV0dXJuIChcbiAgICA8VGV4dEFyZWFJbnB1dENlbGwgcmVmPXtyZWZ9IHsuLi5jZWxsUHJvcHN9IGlucHV0UHJvcHM9e2lucHV0UHJvcHN9PlxuICAgICAge2NvbnRlbnR9XG4gICAgPC9UZXh0QXJlYUlucHV0Q2VsbD5cbiAgKTtcbn0pO1xuXG5leHBvcnQgdHlwZSBHZXREYXRhR3JpZFRleHRBcmVhSW5wdXRDZWxsQXJnczxUID0gRGVmYXVsdEFueSwgViA9IERlZmF1bHRBbnk+ID0gT21pdDxcbiAgRGF0YUdyaWRUZXh0QXJlYUlucHV0Q2VsbFByb3BzPFQsIFY+LFxuICAnY2VsbCcgfCAnY2hpbGRyZW4nXG4+O1xuXG5leHBvcnQgY29uc3QgZ2V0RGF0YUdyaWRUZXh0QXJlYUlucHV0Q2VsbCA9IDxULCBWPihcbiAgYXJnczogR2V0RGF0YUdyaWRUZXh0QXJlYUlucHV0Q2VsbEFyZ3M8VCwgVj5cbik6IENvbHVtbkRlZlRlbXBsYXRlPFQsIFY+ID0+IHtcbiAgcmV0dXJuICh7Y2VsbH0pID0+IHtcbiAgICBjb25zdCBjb250ZW50ID0gKGNlbGwuZ2V0VmFsdWUoKSA/PyBudWxsKSBhcyBSZWFjdE5vZGU7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPERhdGFHcmlkVGV4dEFyZWFJbnB1dENlbGwga2V5PXtjZWxsLmlkfSBjZWxsPXtjZWxsfSB7Li4uYXJnc30+XG4gICAgICAgIHtjb250ZW50fVxuICAgICAgPC9EYXRhR3JpZFRleHRBcmVhSW5wdXRDZWxsPlxuICAgICk7XG4gIH07XG59O1xuIl19 */")), v = i(({
29
+ inputProps: c,
30
+ ...b
31
+ }, G) => {
32
+ const {
33
+ cellProps: Z,
34
+ ref: X,
35
+ inputRef: n
36
+ } = U(b, G), [I, W] = F(c.value ?? ""), g = (l) => {
37
+ W(l.target.value);
38
+ }, R = (l) => {
39
+ var d;
40
+ const u = l.code === "Enter" || l.code === "NumpadEnter";
41
+ (l.code === "Escape" || u && l.ctrlKey) && ((d = b.setIsActive) == null || d.call(b, !1), l.currentTarget.blur());
42
+ }, C = (l) => {
43
+ var u, d, B;
44
+ (u = b.setIsActive) == null || u.call(b, !1), c.onChange(I, l), (d = c.onBlur) == null || d.call(c, l), (B = X.current) == null || B.blur();
45
+ }, H = b.isActive ? !0 : void 0, t = {
46
+ ...c,
47
+ value: I,
48
+ onChange: g,
49
+ onKeyDown: R,
50
+ onBlur: C,
51
+ size: 0,
52
+ "data-hidden": b.isActive ? void 0 : !0
53
+ }, e = b.isActive ? I : b.children, x = {
54
+ isMultiline: Z.isMultiline,
55
+ whiteSpace: Z.whiteSpace,
56
+ wordBreak: Z.wordBreak
57
+ };
58
+ return h(() => {
59
+ W(c.value);
60
+ }, [c.value]), /* @__PURE__ */ V(A, { ...Z, children: /* @__PURE__ */ s(Y, { ...x, children: [
61
+ /* @__PURE__ */ V(y, { "data-hidden": H, children: e }),
62
+ /* @__PURE__ */ V(o, { ref: n, ...t })
63
+ ] }) });
64
+ }), D = i((c, b) => {
65
+ const {
66
+ cell: G,
67
+ getValue: Z,
68
+ onChange: X,
69
+ ...n
70
+ } = c, I = a(G), W = G.getValue() ?? null, g = n;
71
+ return g.value = Z(G), g.onChange = (R, C) => X(G, R, C), /* @__PURE__ */ V(v, { ref: b, ...I, inputProps: g, children: W });
72
+ }), p = (c) => ({
73
+ cell: b
74
+ }) => {
75
+ const G = b.getValue() ?? null;
76
+ return /* @__PURE__ */ V(D, { cell: b, ...c, children: G }, b.id);
77
+ };
78
+ export {
79
+ D as DataGridTextAreaInputCell,
80
+ v as TextAreaInputCell,
81
+ p as getDataGridTextAreaInputCell
82
+ };
83
+ //# sourceMappingURL=textarea.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textarea.es.js","sources":["../../src/TableInputCell/textarea.tsx"],"sourcesContent":["'use client';\n\nimport styled from '@emotion/styled';\n\nimport {useEffect, useState} from 'react';\nimport baseTheme, {forwardRef} from '@join-x5/react-theme';\n\nimport {TableCell, TableCellContent} from '../TableCell';\n\nimport {useDataGridInputCell, useTableCellTextInput} from './hook';\n\nimport type {\n ChangeEventHandler,\n FocusEvent,\n FocusEventHandler,\n InputHTMLAttributes,\n KeyboardEventHandler,\n ReactNode,\n} from 'react';\nimport type {Cell as ReactTableCell} from '@tanstack/react-table';\nimport type {FRC, PropsWithChildren} from '@join-x5/react-theme';\nimport type {DataGridTableCellProps, TableCellProps} from '../TableCell';\nimport type {ColumnDefTemplate} from './types';\n\nconst ChildContent = styled.div`\n min-height: 100%;\n &[data-hidden] {\n visibility: hidden;\n pointer-events: none;\n }\n`;\n\nconst TextArea = styled.textarea`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n min-width: 10px;\n padding: 0;\n background-color: transparent;\n border: none;\n outline: none;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n resize: none;\n\n ${baseTheme.scroll}\n\n &[data-hidden] {\n visibility: hidden;\n pointer-events: none;\n }\n`;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype DefaultAny = any;\n\nexport type TextAreaInputProps = {\n value: string;\n onChange: (newValue: string, e: FocusEvent<HTMLTextAreaElement>) => void;\n} & Omit<InputHTMLAttributes<HTMLTextAreaElement>, 'value' | 'onChange'>;\n\ntype TTextAreaInputCell = FRC<\n HTMLTableCellElement,\n {\n inputProps: TextAreaInputProps;\n } & Omit<TableCellProps, 'value' | 'onChange'>\n>;\n\nexport const TextAreaInputCell: TTextAreaInputCell = forwardRef(({inputProps, ...props}, baseRef) => {\n const {cellProps, ref, inputRef} = useTableCellTextInput<HTMLTextAreaElement>(props, baseRef);\n\n const [value, setValue] = useState(inputProps.value ?? '');\n\n const onChange: ChangeEventHandler<HTMLTextAreaElement> = e => {\n setValue(e.target.value);\n };\n\n const onKeyDown: KeyboardEventHandler<HTMLTextAreaElement> = e => {\n const isEnterCode = e.code === 'Enter' || e.code === 'NumpadEnter';\n\n if (e.code === 'Escape' || (isEnterCode && e.ctrlKey)) {\n props.setIsActive?.(false);\n e.currentTarget.blur();\n }\n };\n\n const onBlur: FocusEventHandler<HTMLTextAreaElement> = e => {\n props.setIsActive?.(false);\n\n inputProps.onChange(value, e);\n inputProps.onBlur?.(e);\n ref.current?.blur();\n };\n\n const isChildHidden = props.isActive ? true : undefined;\n\n const resultProps = {\n ...inputProps,\n\n value,\n onChange,\n onKeyDown,\n onBlur,\n\n size: 0,\n 'data-hidden': props.isActive ? undefined : true,\n };\n\n const content = props.isActive ? value : props.children;\n\n const contentProps = {\n isMultiline: cellProps.isMultiline,\n whiteSpace: cellProps.whiteSpace,\n wordBreak: cellProps.wordBreak,\n };\n\n useEffect(() => {\n setValue(inputProps.value);\n }, [inputProps.value]);\n\n return (\n <TableCell {...cellProps}>\n <TableCellContent {...contentProps}>\n <ChildContent data-hidden={isChildHidden}>{content}</ChildContent>\n <TextArea ref={inputRef} {...resultProps} />\n </TableCellContent>\n </TableCell>\n );\n});\n\nexport type DataGridTextAreaInputCellProps<T = DefaultAny, V = DefaultAny> = {\n getValue: (cell: ReactTableCell<T, V>) => string;\n onChange: (cell: ReactTableCell<T, V>, newValue: string, e: FocusEvent<HTMLTextAreaElement>) => void;\n} & Omit<TextAreaInputProps, 'value' | 'onChange'> &\n DataGridTableCellProps<T, V> &\n PropsWithChildren;\n\ntype TDataGridTextAreaInputCell = FRC<HTMLTableCellElement, DataGridTextAreaInputCellProps>;\n\nexport const DataGridTextAreaInputCell: TDataGridTextAreaInputCell = forwardRef((props, ref) => {\n const {cell, getValue, onChange, ...rest} = props;\n\n const cellProps = useDataGridInputCell(cell);\n\n const content = (cell.getValue() ?? null) as ReactNode;\n\n const inputProps = rest as TextAreaInputProps;\n inputProps.value = getValue(cell);\n inputProps.onChange = (newValue, e) => onChange(cell, newValue, e);\n\n return (\n <TextAreaInputCell ref={ref} {...cellProps} inputProps={inputProps}>\n {content}\n </TextAreaInputCell>\n );\n});\n\nexport type GetDataGridTextAreaInputCellArgs<T = DefaultAny, V = DefaultAny> = Omit<\n DataGridTextAreaInputCellProps<T, V>,\n 'cell' | 'children'\n>;\n\nexport const getDataGridTextAreaInputCell = <T, V>(\n args: GetDataGridTextAreaInputCellArgs<T, V>\n): ColumnDefTemplate<T, V> => {\n return ({cell}) => {\n const content = (cell.getValue() ?? null) as ReactNode;\n\n return (\n <DataGridTextAreaInputCell key={cell.id} cell={cell} {...args}>\n {content}\n </DataGridTextAreaInputCell>\n );\n };\n};\n"],"names":["inputProps","cellProps","ref","inputRef","e","props","blur","value","onChange","onKeyDown","onBlur","isMultiline","whiteSpace","wordBreak","useEffect","setValue","cell","getValue","rest","content"],"mappings":";;;;;;;AAAa;AAAA;AAAA;AAwBb;AAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQJ;AAAA;AAAA;AAAA;AAAA;AAwCmD;AAACA;AAAoB;AAC9E;AAAA;AAACC;AAAWC;AAAKC;AAKZC;AAAc;;AAIvB;AAEA;AAEuB;;AAKvBC;AAIaC;AAKK;AACfN;AAEHO;AACAC;AACAC;AACAC;AAEM;AACsC;AAKzB;AACIC;AACDC;AACDC;AAGvBC;AACEC;AAAyB;AAMrB;AAAmD;AACV;AAIjD;AAYQ;AAAA;AAACC;AAAMC;AAAUT;AAAaU;AAOzBX;AAQb;AAUU;AAACS;AACDG;AAEN;AAKF;;;;;;"}
@@ -0,0 +1,4 @@
1
+ import { CellContext, ColumnDefTemplate as ReactTableColumnDefTemplate } from '@tanstack/react-table';
2
+ type DefaultAny = any;
3
+ export type ColumnDefTemplate<T = DefaultAny, V = DefaultAny> = ReactTableColumnDefTemplate<CellContext<T, V>>;
4
+ export {};
@@ -0,0 +1,5 @@
1
+ import { FRC } from '@join-x5/react-theme';
2
+ import { GetDataGridTableRow } from '../types';
3
+ import { TableRowProps } from './types';
4
+ export declare const TableRow: FRC<HTMLTableRowElement, TableRowProps>;
5
+ export declare const getDataGridTableRow: GetDataGridTableRow;
@@ -0,0 +1,25 @@
1
+ "use client";
2
+ import { jsx as t } from "@emotion/react/jsx-runtime";
3
+ import G from "@emotion/styled/base";
4
+ import { forwardRef as d } from "@join-x5/react-theme";
5
+ import { getDataGridTableCell as i } from "../TableCell/index.es.js";
6
+ const I = /* @__PURE__ */ G("tr", process.env.NODE_ENV === "production" ? {
7
+ target: "ewtrhmz0"
8
+ } : {
9
+ target: "ewtrhmz0",
10
+ label: "Container"
11
+ })(":hover [data-cell]{:not([data-focused], [data-active], [data-disabled]) [data-edit-icon]{visibility:visible;}:not([data-focused], [data-active]):not(:focus){", (c) => ({
12
+ "--background-color": c.theme.colors.grey[10],
13
+ "--border-color": c.theme.colors.grey[20]
14
+ }), ";}}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3NhZHlrb3ZzZC9qb2luLXg1L3BhY2thZ2VzL2RhdGEtZ3JpZC9zcmMvVGFibGVSb3cvaW5kZXgudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWEyQiIsImZpbGUiOiIvaG9tZS9zYWR5a292c2Qvam9pbi14NS9wYWNrYWdlcy9kYXRhLWdyaWQvc3JjL1RhYmxlUm93L2luZGV4LnRzeCIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50JztcblxuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuXG5pbXBvcnQge2ZvcndhcmRSZWZ9IGZyb20gJ0Bqb2luLXg1L3JlYWN0LXRoZW1lJztcblxuaW1wb3J0IHtnZXREYXRhR3JpZFRhYmxlQ2VsbH0gZnJvbSAnVGFibGVDZWxsJztcblxuaW1wb3J0IHR5cGUge0ZSQ30gZnJvbSAnQGpvaW4teDUvcmVhY3QtdGhlbWUnO1xuaW1wb3J0IHR5cGUge1Jvd30gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXRhYmxlJztcbmltcG9ydCB0eXBlIHtHZXREYXRhR3JpZFRhYmxlUm93fSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgdHlwZSB7VGFibGVSb3dQcm9wc30gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IENvbnRhaW5lciA9IHN0eWxlZC50cmBcbiAgOmhvdmVyIFtkYXRhLWNlbGxdIHtcbiAgICA6bm90KFtkYXRhLWZvY3VzZWRdLCBbZGF0YS1hY3RpdmVdLCBbZGF0YS1kaXNhYmxlZF0pIFtkYXRhLWVkaXQtaWNvbl0ge1xuICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB9XG5cbiAgICA6bm90KFtkYXRhLWZvY3VzZWRdLCBbZGF0YS1hY3RpdmVdKTpub3QoOmZvY3VzKSB7XG4gICAgICAke3Byb3BzID0+ICh7XG4gICAgICAgICctLWJhY2tncm91bmQtY29sb3InOiBwcm9wcy50aGVtZS5jb2xvcnMuZ3JleVsxMF0sXG4gICAgICAgICctLWJvcmRlci1jb2xvcic6IHByb3BzLnRoZW1lLmNvbG9ycy5ncmV5WzIwXSxcbiAgICAgIH0pfVxuICAgIH1cbiAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IFRhYmxlUm93OiBGUkM8SFRNTFRhYmxlUm93RWxlbWVudCwgVGFibGVSb3dQcm9wcz4gPSBmb3J3YXJkUmVmKChwcm9wcywgcmVmKSA9PiB7XG4gIHJldHVybiA8Q29udGFpbmVyIHJlZj17cmVmfSB7Li4ucHJvcHN9IC8+O1xufSk7XG5cbnR5cGUgRGF0YUdyaWRUYWJsZVJvd1Byb3BzID0ge3JvdzogUm93PHVua25vd24+fSAmIFRhYmxlUm93UHJvcHM7XG5cbmNvbnN0IERhdGFHcmlkVGFibGVSb3c6IFJlYWN0LkZDPERhdGFHcmlkVGFibGVSb3dQcm9wcz4gPSBwcm9wcyA9PiB7XG4gIGNvbnN0IHtyb3csIC4uLnJlc3R9ID0gcHJvcHM7XG5cbiAgY29uc3QgY29udGVudCA9IHJvdy5nZXRWaXNpYmxlQ2VsbHMoKS5tYXAoZ2V0RGF0YUdyaWRUYWJsZUNlbGwpO1xuXG4gIHJldHVybiA8VGFibGVSb3cgey4uLnJlc3R9Pntjb250ZW50fTwvVGFibGVSb3c+O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERhdGFHcmlkVGFibGVSb3c6IEdldERhdGFHcmlkVGFibGVSb3cgPSByb3cgPT4ge1xuICByZXR1cm4gPERhdGFHcmlkVGFibGVSb3cga2V5PXtyb3cuaWR9IHJvdz17cm93fSAvPjtcbn07XG4iXX0= */")), e = d((c, b) => /* @__PURE__ */ t(I, { ref: b, ...c })), a = (c) => {
15
+ const {
16
+ row: b,
17
+ ...l
18
+ } = c, m = b.getVisibleCells().map(i);
19
+ return /* @__PURE__ */ t(e, { ...l, children: m });
20
+ }, V = (c) => /* @__PURE__ */ t(a, { row: c }, c.id);
21
+ export {
22
+ e as TableRow,
23
+ V as getDataGridTableRow
24
+ };
25
+ //# sourceMappingURL=index.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":["../../src/TableRow/index.tsx"],"sourcesContent":["'use client';\n\nimport styled from '@emotion/styled';\n\nimport {forwardRef} from '@join-x5/react-theme';\n\nimport {getDataGridTableCell} from 'TableCell';\n\nimport type {FRC} from '@join-x5/react-theme';\nimport type {Row} from '@tanstack/react-table';\nimport type {GetDataGridTableRow} from '../types';\nimport type {TableRowProps} from './types';\n\nconst Container = styled.tr`\n :hover [data-cell] {\n :not([data-focused], [data-active], [data-disabled]) [data-edit-icon] {\n visibility: visible;\n }\n\n :not([data-focused], [data-active]):not(:focus) {\n ${props => ({\n '--background-color': props.theme.colors.grey[10],\n '--border-color': props.theme.colors.grey[20],\n })}\n }\n }\n`;\n\nexport const TableRow: FRC<HTMLTableRowElement, TableRowProps> = forwardRef((props, ref) => {\n return <Container ref={ref} {...props} />;\n});\n\ntype DataGridTableRowProps = {row: Row<unknown>} & TableRowProps;\n\nconst DataGridTableRow: React.FC<DataGridTableRowProps> = props => {\n const {row, ...rest} = props;\n\n const content = row.getVisibleCells().map(getDataGridTableCell);\n\n return <TableRow {...rest}>{content}</TableRow>;\n};\n\nexport const getDataGridTableRow: GetDataGridTableRow = row => {\n return <DataGridTableRow key={row.id} row={row} />;\n};\n"],"names":["row","rest"],"mappings":";;;;;AAaA;AAAe;AAAA;AAAA;AAAA;AAAA;AAOG;AACsC;AAElD;AAYE;AAAA;AAACA;AAAQC;AAIf;AACF;;;;;"}
@@ -0,0 +1,2 @@
1
+ import { HTMLAttributes } from 'react';
2
+ export type TableRowProps = HTMLAttributes<HTMLTableRowElement>;
package/dist/hook.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import { TableState } from '@tanstack/react-table';
2
+ import { DataGridProps } from 'types';
3
+ export declare const useDataGridColumnSettings: (settings?: DataGridProps["columnSettings"], tableProps?: DataGridProps["tableProps"]) => Partial<TableState>;
@@ -0,0 +1,23 @@
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(() => ({
10
+ 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;
19
+ };
20
+ export {
21
+ w as useDataGridColumnSettings
22
+ };
23
+ //# sourceMappingURL=hook.es.js.map
@@ -0,0 +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":["item","columnVisibility","columnOrder","columnPinning","externalState","useUpdateEffect","newVisibility","oldState"],"mappings":";;;;AAWA;;AAyBQA;AASN;AAOA;AAOS;AAACC;AAAkBC;AAAaC;AAAkBC;AAG3DC;AACQC;AAImBC;AAQzB;AAIJ;;;;"}