phx-react 1.3.1797 → 1.3.1799
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/cjs/components/MainWrapV4/components/fixed-action.js +1 -1
- package/dist/cjs/components/MainWrapV4/components/fixed-action.js.map +1 -1
- package/dist/cjs/components/MainWrapV4/components/main-content.js +1 -1
- package/dist/cjs/components/MainWrapV4/components/main-content.js.map +1 -1
- package/dist/cjs/components/MainWrapV4/components/search/index.js +1 -1
- package/dist/cjs/components/MainWrapV4/components/search/index.js.map +1 -1
- package/dist/cjs/components/TableReport/TableReport.d.ts +2 -2
- package/dist/cjs/components/TableReport/TableReport.js +51 -21
- package/dist/cjs/components/TableReport/TableReport.js.map +1 -1
- package/dist/cjs/components/TableReport/component/ExpandedRows.d.ts +23 -0
- package/dist/cjs/components/TableReport/component/ExpandedRows.js +163 -0
- package/dist/cjs/components/TableReport/component/ExpandedRows.js.map +1 -0
- package/dist/cjs/components/TableReport/component/PaginaitonSelected.js +4 -1
- package/dist/cjs/components/TableReport/component/PaginaitonSelected.js.map +1 -1
- package/dist/cjs/components/TableReport/component/Pagination.js +4 -1
- package/dist/cjs/components/TableReport/component/Pagination.js.map +1 -1
- package/dist/cjs/components/TableReport/component/Row.d.ts +6 -1
- package/dist/cjs/components/TableReport/component/Row.js +10 -2
- package/dist/cjs/components/TableReport/component/Row.js.map +1 -1
- package/dist/cjs/components/TableReport/component/Search.js +7 -3
- package/dist/cjs/components/TableReport/component/Search.js.map +1 -1
- package/dist/cjs/components/TableReport/component/TableBodyRows.d.ts +33 -0
- package/dist/cjs/components/TableReport/component/TableBodyRows.js +68 -0
- package/dist/cjs/components/TableReport/component/TableBodyRows.js.map +1 -0
- package/dist/cjs/components/TableReport/component/TruncatedTooltip.d.ts +16 -0
- package/dist/cjs/components/TableReport/component/TruncatedTooltip.js +46 -0
- package/dist/cjs/components/TableReport/component/TruncatedTooltip.js.map +1 -0
- package/dist/cjs/components/TableReport/types.d.ts +6 -4
- package/dist/cjs/components/TableReport/utils.d.ts +4 -4
- package/dist/cjs/components/TableReport/utils.js +11 -9
- package/dist/cjs/components/TableReport/utils.js.map +1 -1
- package/dist/cjs/components/TextEditorV2/plugins/SanitizePastePlugin/index.d.ts +4 -0
- package/dist/cjs/components/TextEditorV2/plugins/SanitizePastePlugin/index.js +39 -0
- package/dist/cjs/components/TextEditorV2/plugins/SanitizePastePlugin/index.js.map +1 -1
- package/dist/esm/components/MainWrapV4/components/fixed-action.js +1 -1
- package/dist/esm/components/MainWrapV4/components/fixed-action.js.map +1 -1
- package/dist/esm/components/MainWrapV4/components/main-content.js +1 -1
- package/dist/esm/components/MainWrapV4/components/main-content.js.map +1 -1
- package/dist/esm/components/MainWrapV4/components/search/index.js +1 -1
- package/dist/esm/components/MainWrapV4/components/search/index.js.map +1 -1
- package/dist/esm/components/TableReport/TableReport.d.ts +2 -2
- package/dist/esm/components/TableReport/TableReport.js +52 -22
- package/dist/esm/components/TableReport/TableReport.js.map +1 -1
- package/dist/esm/components/TableReport/component/ExpandedRows.d.ts +23 -0
- package/dist/esm/components/TableReport/component/ExpandedRows.js +160 -0
- package/dist/esm/components/TableReport/component/ExpandedRows.js.map +1 -0
- package/dist/esm/components/TableReport/component/PaginaitonSelected.js +4 -1
- package/dist/esm/components/TableReport/component/PaginaitonSelected.js.map +1 -1
- package/dist/esm/components/TableReport/component/Pagination.js +4 -1
- package/dist/esm/components/TableReport/component/Pagination.js.map +1 -1
- package/dist/esm/components/TableReport/component/Row.d.ts +6 -1
- package/dist/esm/components/TableReport/component/Row.js +10 -2
- package/dist/esm/components/TableReport/component/Row.js.map +1 -1
- package/dist/esm/components/TableReport/component/Search.js +7 -3
- package/dist/esm/components/TableReport/component/Search.js.map +1 -1
- package/dist/esm/components/TableReport/component/TableBodyRows.d.ts +33 -0
- package/dist/esm/components/TableReport/component/TableBodyRows.js +65 -0
- package/dist/esm/components/TableReport/component/TableBodyRows.js.map +1 -0
- package/dist/esm/components/TableReport/component/TruncatedTooltip.d.ts +16 -0
- package/dist/esm/components/TableReport/component/TruncatedTooltip.js +43 -0
- package/dist/esm/components/TableReport/component/TruncatedTooltip.js.map +1 -0
- package/dist/esm/components/TableReport/types.d.ts +6 -4
- package/dist/esm/components/TableReport/utils.d.ts +4 -4
- package/dist/esm/components/TableReport/utils.js +11 -9
- package/dist/esm/components/TableReport/utils.js.map +1 -1
- package/dist/esm/components/TextEditorV2/plugins/SanitizePastePlugin/index.d.ts +4 -0
- package/dist/esm/components/TextEditorV2/plugins/SanitizePastePlugin/index.js +40 -1
- package/dist/esm/components/TextEditorV2/plugins/SanitizePastePlugin/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { RowChildrenConfig } from './ExpandedRows';
|
|
3
|
+
import { TBodyComponent, TMergeConfig, TSelectedAllPeople, TTableData } from '../types';
|
|
4
|
+
interface TableBodyRowsProps {
|
|
5
|
+
border: boolean;
|
|
6
|
+
brSetSelectedPeople(value: TTableData): void;
|
|
7
|
+
expandedRowKeys: Array<string>;
|
|
8
|
+
getRowChildren(data: TTableData): RowChildrenConfig | null;
|
|
9
|
+
getRowKey(data: TTableData, dataIdx: number): string;
|
|
10
|
+
handleClick(data: TTableData, isHighlightRow: boolean): void;
|
|
11
|
+
isHighLight(data: TTableData): boolean;
|
|
12
|
+
mergeConfig: TMergeConfig;
|
|
13
|
+
readonly: boolean;
|
|
14
|
+
rowClassName(keyIdx: number, dataIdx: number): string;
|
|
15
|
+
rowHighlightReadonly: boolean;
|
|
16
|
+
rows: Array<TTableData>;
|
|
17
|
+
selectedAllPeople?: TSelectedAllPeople;
|
|
18
|
+
selectedPeople: Array<TTableData>;
|
|
19
|
+
spacing: boolean;
|
|
20
|
+
tableKey: string;
|
|
21
|
+
textCenter: boolean;
|
|
22
|
+
thBody: Array<string>;
|
|
23
|
+
thBodyComponent?: TBodyComponent;
|
|
24
|
+
toggleRowExpanded(rowKey: string): void;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Renders table report body rows and their optional expanded child rows.
|
|
28
|
+
*
|
|
29
|
+
* @param props - Body row data, table configuration, and row interaction handlers.
|
|
30
|
+
* @returns Table body row elements.
|
|
31
|
+
*/
|
|
32
|
+
declare function TableBodyRows({ rows, ...config }: TableBodyRowsProps): React.JSX.Element;
|
|
33
|
+
export default TableBodyRows;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { classNames } from '../../types';
|
|
3
|
+
import ExpandedRows from './ExpandedRows';
|
|
4
|
+
import Row from './Row';
|
|
5
|
+
import RowMerge from './RowMerge';
|
|
6
|
+
/**
|
|
7
|
+
* Renders one body cell using either merge-row or normal-row behavior.
|
|
8
|
+
*
|
|
9
|
+
* @param props - Cell data, table configuration, and expansion state.
|
|
10
|
+
* @returns A table body cell component.
|
|
11
|
+
*/
|
|
12
|
+
function TableBodyCell({ bodyKey, border, brSetSelectedPeople, data, dataIdx, isExpanded, isHighlight, keyIdx, mergeConfig, readonly, rowChildren, rowClassName, rowHighlightReadonly, rowKey, selectedAllPeople, selectedPeople, tableKey, thBodyComponent, toggleRowExpanded, }) {
|
|
13
|
+
const commonProps = {
|
|
14
|
+
border,
|
|
15
|
+
bodyKey,
|
|
16
|
+
brSetSelectedPeople,
|
|
17
|
+
className: rowClassName(keyIdx, dataIdx),
|
|
18
|
+
data,
|
|
19
|
+
dataIdx,
|
|
20
|
+
highlightReadonly: rowHighlightReadonly,
|
|
21
|
+
selectedAllPeople,
|
|
22
|
+
isHighlight,
|
|
23
|
+
selectedPeople,
|
|
24
|
+
keyIdx,
|
|
25
|
+
thBodyComponent,
|
|
26
|
+
readonly,
|
|
27
|
+
tableKey,
|
|
28
|
+
};
|
|
29
|
+
if (mergeConfig.isMergeRowData) {
|
|
30
|
+
return React.createElement(RowMerge, { ...commonProps, mergeConfig: mergeConfig });
|
|
31
|
+
}
|
|
32
|
+
return (React.createElement(Row, { ...commonProps, expandable: rowChildren && keyIdx === rowChildren.columnIndex
|
|
33
|
+
? {
|
|
34
|
+
enable: true,
|
|
35
|
+
isExpanded,
|
|
36
|
+
onToggle: () => toggleRowExpanded(rowKey),
|
|
37
|
+
}
|
|
38
|
+
: undefined }));
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Renders one parent table row and its expanded children.
|
|
42
|
+
*
|
|
43
|
+
* @param props - Row data, table configuration, and expansion handlers.
|
|
44
|
+
* @returns One parent row with optional expanded rows.
|
|
45
|
+
*/
|
|
46
|
+
function TableBodyRow({ data, dataIdx, expandedRowKeys, getRowChildren, getRowKey, handleClick, isHighLight, mergeConfig, thBody, ...restProps }) {
|
|
47
|
+
const rowChildren = getRowChildren(data);
|
|
48
|
+
const rowKey = getRowKey(data, dataIdx);
|
|
49
|
+
const isExpanded = expandedRowKeys.includes(rowKey);
|
|
50
|
+
const isHighlight = isHighLight(data);
|
|
51
|
+
return (React.createElement(React.Fragment, { key: rowKey },
|
|
52
|
+
React.createElement("tr", { className: classNames('group', isHighlight && 'bg-gray-100 font-semibold'), onClick: () => handleClick(data, isHighlight) }, thBody.map((bodyKey, keyIdx) => (React.createElement(TableBodyCell, { key: keyIdx, ...restProps, bodyKey: bodyKey, data: data, dataIdx: dataIdx, isExpanded: isExpanded, isHighlight: isHighlight, keyIdx: keyIdx, mergeConfig: mergeConfig, rowChildren: rowChildren, rowKey: rowKey })))),
|
|
53
|
+
!mergeConfig.isMergeRowData && rowChildren && isExpanded && (React.createElement(ExpandedRows, { border: restProps.border, dataIdx: dataIdx, rowChildren: rowChildren, selectedAllPeople: restProps.selectedAllPeople, spacing: restProps.spacing, textCenter: restProps.textCenter, thBody: thBody }))));
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Renders table report body rows and their optional expanded child rows.
|
|
57
|
+
*
|
|
58
|
+
* @param props - Body row data, table configuration, and row interaction handlers.
|
|
59
|
+
* @returns Table body row elements.
|
|
60
|
+
*/
|
|
61
|
+
function TableBodyRows({ rows, ...config }) {
|
|
62
|
+
return (React.createElement(React.Fragment, null, rows.map((data, dataIdx) => (React.createElement(TableBodyRow, { key: config.getRowKey(data, dataIdx), ...config, data: data, dataIdx: dataIdx })))));
|
|
63
|
+
}
|
|
64
|
+
export default TableBodyRows;
|
|
65
|
+
//# sourceMappingURL=TableBodyRows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableBodyRows.js","sourceRoot":"","sources":["../../../../../src/components/TableReport/component/TableBodyRows.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React, { ReactNode } from 'react';
|
|
2
|
+
interface TruncatedTooltipProps {
|
|
3
|
+
children: ReactNode;
|
|
4
|
+
className?: string;
|
|
5
|
+
content?: ReactNode;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Renders plain truncated text, and wraps it with PHXTooltip only when the text overflows.
|
|
9
|
+
*
|
|
10
|
+
* @param children - Text content to render and measure.
|
|
11
|
+
* @param className - Optional class names for the measured text element.
|
|
12
|
+
* @param content - Optional custom tooltip content.
|
|
13
|
+
* @returns Text content with tooltip behavior only when truncated.
|
|
14
|
+
*/
|
|
15
|
+
declare function TruncatedTooltip({ children, className, content }: TruncatedTooltipProps): React.JSX.Element;
|
|
16
|
+
export default TruncatedTooltip;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import React, { useEffect, useRef, useState } from 'react';
|
|
2
|
+
import PHXTooltip from '../../ToolTip/ToolTip';
|
|
3
|
+
import { classNames } from '../../types';
|
|
4
|
+
/**
|
|
5
|
+
* Renders plain truncated text, and wraps it with PHXTooltip only when the text overflows.
|
|
6
|
+
*
|
|
7
|
+
* @param children - Text content to render and measure.
|
|
8
|
+
* @param className - Optional class names for the measured text element.
|
|
9
|
+
* @param content - Optional custom tooltip content.
|
|
10
|
+
* @returns Text content with tooltip behavior only when truncated.
|
|
11
|
+
*/
|
|
12
|
+
function TruncatedTooltip({ children, className, content }) {
|
|
13
|
+
const contentRef = useRef(null);
|
|
14
|
+
const [isTruncated, setIsTruncated] = useState(false);
|
|
15
|
+
const tooltipContent = content !== null && content !== void 0 ? content : (typeof children === 'string' || typeof children === 'number' ? String(children) : null);
|
|
16
|
+
/**
|
|
17
|
+
* Updates whether the rendered text is visually truncated.
|
|
18
|
+
*
|
|
19
|
+
* @returns void.
|
|
20
|
+
*/
|
|
21
|
+
const updateTruncatedState = () => {
|
|
22
|
+
const element = contentRef.current;
|
|
23
|
+
if (!element)
|
|
24
|
+
return;
|
|
25
|
+
setIsTruncated(element.scrollWidth > element.clientWidth);
|
|
26
|
+
};
|
|
27
|
+
useEffect(() => {
|
|
28
|
+
updateTruncatedState();
|
|
29
|
+
const element = contentRef.current;
|
|
30
|
+
if (!element || typeof ResizeObserver === 'undefined')
|
|
31
|
+
return;
|
|
32
|
+
const resizeObserver = new ResizeObserver(updateTruncatedState);
|
|
33
|
+
resizeObserver.observe(element);
|
|
34
|
+
return () => resizeObserver.disconnect();
|
|
35
|
+
}, [children]);
|
|
36
|
+
const textElement = (React.createElement("span", { ref: contentRef, className: classNames('block min-w-0 overflow-hidden text-ellipsis', className) }, children));
|
|
37
|
+
if (!tooltipContent || !isTruncated) {
|
|
38
|
+
return textElement;
|
|
39
|
+
}
|
|
40
|
+
return (React.createElement(PHXTooltip, { className: 'block w-full min-w-0 text-gray-900', content: tooltipContent }, textElement));
|
|
41
|
+
}
|
|
42
|
+
export default TruncatedTooltip;
|
|
43
|
+
//# sourceMappingURL=TruncatedTooltip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TruncatedTooltip.js","sourceRoot":"","sources":["../../../../../src/components/TableReport/component/TruncatedTooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAa,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACrE,OAAO,UAAU,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAQxC;;;;;;;GAOG;AACH,SAAS,gBAAgB,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAyB;IAC/E,MAAM,UAAU,GAAG,MAAM,CAAkB,IAAI,CAAC,CAAA;IAChD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAErD,MAAM,cAAc,GAClB,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,CAAC,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IAErG;;;;OAIG;IACH,MAAM,oBAAoB,GAAG,GAAG,EAAE;QAChC,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAA;QAClC,IAAI,CAAC,OAAO;YAAE,OAAM;QACpB,cAAc,CAAC,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;IAC3D,CAAC,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,oBAAoB,EAAE,CAAA;QACtB,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAA;QAClC,IAAI,CAAC,OAAO,IAAI,OAAO,cAAc,KAAK,WAAW;YAAE,OAAM;QAE7D,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,oBAAoB,CAAC,CAAA;QAC/D,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAE/B,OAAO,GAAG,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,CAAA;IAC1C,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEd,MAAM,WAAW,GAAG,CAClB,8BAAM,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,6CAA6C,EAAE,SAAS,CAAC,IACnG,QAAQ,CACJ,CACR,CAAA;IAED,IAAI,CAAC,cAAc,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,OAAO,CACL,oBAAC,UAAU,IAAC,SAAS,EAAC,oCAAoC,EAAC,OAAO,EAAE,cAAc,IAC/E,WAAW,CACD,CACd,CAAA;AACH,CAAC;AAED,eAAe,gBAAgB,CAAA"}
|
|
@@ -10,10 +10,16 @@ export interface THeader {
|
|
|
10
10
|
children?: Array<THeader>;
|
|
11
11
|
}
|
|
12
12
|
export type TTableData = Record<string, any>;
|
|
13
|
+
export interface RowChildrenData {
|
|
14
|
+
headers: Array<string>;
|
|
15
|
+
body: Array<string>;
|
|
16
|
+
data: Array<Record<string, any>>;
|
|
17
|
+
}
|
|
13
18
|
export interface TBodyComponent {
|
|
14
19
|
[key: string]: (value: any, itemBody: any) => {
|
|
15
20
|
value: any;
|
|
16
21
|
row?: number;
|
|
22
|
+
children?: RowChildrenData;
|
|
17
23
|
};
|
|
18
24
|
}
|
|
19
25
|
export interface TMergeConfig {
|
|
@@ -48,10 +54,6 @@ export interface TSelectedAllPeople {
|
|
|
48
54
|
hideSelectedAction?: boolean;
|
|
49
55
|
}
|
|
50
56
|
export interface NavigationUrlApply {
|
|
51
|
-
router: AppRouterInstance;
|
|
52
|
-
searchParams: ReadonlyURLSearchParams;
|
|
53
|
-
}
|
|
54
|
-
export interface NavigationUrlApplyTableReport {
|
|
55
57
|
router?: AppRouterInstance;
|
|
56
58
|
searchParams: ReadonlyURLSearchParams;
|
|
57
59
|
}
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
import { ReadonlyURLSearchParams } from 'next/navigation';
|
|
2
2
|
import { TBodyComponent, THeader, TMergeConfig, TTableData } from './types';
|
|
3
|
-
import { AppRouterInstance } from 'next/dist/shared/lib/app-router-context.shared-runtime';
|
|
4
3
|
export declare const getMaxDepth: (headers: Array<THeader>) => number;
|
|
5
4
|
export declare const buildHeaderRows: (headers: Array<THeader>, level?: number, rows?: any[], maxDepth?: number, startIndex?: number) => any[];
|
|
6
5
|
export declare const countLeaf: (header: THeader) => number;
|
|
7
6
|
export declare const renderCell: (data: TTableData, columnKey: string, thComponent?: TBodyComponent) => {
|
|
8
7
|
value: any;
|
|
9
8
|
row: number;
|
|
9
|
+
children: import("./types").RowChildrenData | null;
|
|
10
10
|
};
|
|
11
11
|
export declare const findColumnKeyMerge: (mergeConfig: TMergeConfig, columnIndex: number) => string;
|
|
12
12
|
export declare function buildRowSpan(tableData: Array<TTableData>, mergeConfig: TMergeConfig): TTableData[];
|
|
13
13
|
export declare const applyUrlQuery: {
|
|
14
14
|
get: (searchParams: ReadonlyURLSearchParams, key: string) => string | null;
|
|
15
|
-
set: (
|
|
15
|
+
set: (routerPush: (href: string) => void, searchParams: ReadonlyURLSearchParams, data: Array<{
|
|
16
16
|
key: string;
|
|
17
17
|
value: string;
|
|
18
18
|
}>) => void;
|
|
19
|
-
delete: (
|
|
20
|
-
multipleMethod: (
|
|
19
|
+
delete: (routerPush: (href: string) => void, searchParams: ReadonlyURLSearchParams, key: Array<string>) => void;
|
|
20
|
+
multipleMethod: (routerPush: (href: string) => void, searchParams: ReadonlyURLSearchParams, data: Array<{
|
|
21
21
|
key: string;
|
|
22
22
|
value: string;
|
|
23
23
|
method: "get" | "set" | "delete";
|
|
@@ -36,12 +36,14 @@ export const countLeaf = (header) => {
|
|
|
36
36
|
export const renderCell = (data, columnKey, thComponent) => {
|
|
37
37
|
const value = data[columnKey];
|
|
38
38
|
if (thComponent && (thComponent === null || thComponent === void 0 ? void 0 : thComponent[columnKey])) {
|
|
39
|
+
const componentCell = thComponent[columnKey](value, data);
|
|
39
40
|
return {
|
|
40
|
-
value:
|
|
41
|
-
row:
|
|
41
|
+
value: componentCell.value,
|
|
42
|
+
row: componentCell.row || 1,
|
|
43
|
+
children: (componentCell === null || componentCell === void 0 ? void 0 : componentCell.children) || null,
|
|
42
44
|
};
|
|
43
45
|
}
|
|
44
|
-
return { value: value !== null && value !== void 0 ? value : '', row: 1 };
|
|
46
|
+
return { value: value !== null && value !== void 0 ? value : '', row: 1, children: null };
|
|
45
47
|
};
|
|
46
48
|
export const findColumnKeyMerge = (mergeConfig, columnIndex) => {
|
|
47
49
|
const { columnPosition } = mergeConfig;
|
|
@@ -72,22 +74,22 @@ export const applyUrlQuery = {
|
|
|
72
74
|
const params = new URLSearchParams(searchParams.toString());
|
|
73
75
|
return params.get(key);
|
|
74
76
|
},
|
|
75
|
-
set: (
|
|
77
|
+
set: (routerPush, searchParams, data) => {
|
|
76
78
|
const params = new URLSearchParams(searchParams.toString());
|
|
77
79
|
for (const item of data) {
|
|
78
80
|
const { key, value } = item;
|
|
79
81
|
params.set(key, value);
|
|
80
82
|
}
|
|
81
|
-
|
|
83
|
+
routerPush(`?${params.toString()}`);
|
|
82
84
|
},
|
|
83
|
-
delete: (
|
|
85
|
+
delete: (routerPush, searchParams, key) => {
|
|
84
86
|
const params = new URLSearchParams(searchParams.toString());
|
|
85
87
|
for (const item of key) {
|
|
86
88
|
params.delete(item);
|
|
87
89
|
}
|
|
88
|
-
|
|
90
|
+
routerPush(`?${params.toString()}`);
|
|
89
91
|
},
|
|
90
|
-
multipleMethod: (
|
|
92
|
+
multipleMethod: (routerPush, searchParams, data) => {
|
|
91
93
|
const params = new URLSearchParams(searchParams.toString());
|
|
92
94
|
for (const item of data) {
|
|
93
95
|
const { key, value, method } = item;
|
|
@@ -98,7 +100,7 @@ export const applyUrlQuery = {
|
|
|
98
100
|
params[method](key, value);
|
|
99
101
|
}
|
|
100
102
|
}
|
|
101
|
-
|
|
103
|
+
routerPush(`?${params.toString()}`);
|
|
102
104
|
},
|
|
103
105
|
};
|
|
104
106
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/components/TableReport/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/components/TableReport/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import { $insertGeneratedNodes } from '@lexical/clipboard';
|
|
2
2
|
import { $generateNodesFromDOM } from '@lexical/html';
|
|
3
3
|
import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
|
|
4
|
-
import { $getSelection, COMMAND_PRIORITY_HIGH, PASTE_COMMAND } from 'lexical';
|
|
4
|
+
import { $createParagraphNode, $createTextNode, $getSelection, $isRangeSelection, COMMAND_PRIORITY_HIGH, PASTE_COMMAND, } from 'lexical';
|
|
5
5
|
import { useEffect } from 'react';
|
|
6
6
|
const LEXICAL_MIME_TYPE = 'application/x-lexical-editor';
|
|
7
7
|
const PRESENTATIONAL_ATTRIBUTES = ['class', 'id', 'style'];
|
|
8
8
|
const LEGACY_PRESENTATIONAL_ATTRIBUTES = ['align', 'bgcolor', 'color', 'face', 'size'];
|
|
9
9
|
const REMOVED_TAGS = ['link', 'meta', 'script', 'style'];
|
|
10
|
+
/**
|
|
11
|
+
* Removes unsafe and presentational markup from pasted HTML.
|
|
12
|
+
* @param doc Parsed clipboard HTML document.
|
|
13
|
+
*/
|
|
10
14
|
function sanitizePastedHTMLDocument(doc) {
|
|
11
15
|
REMOVED_TAGS.forEach((tagName) => {
|
|
12
16
|
doc.querySelectorAll(tagName).forEach((node) => node.remove());
|
|
@@ -22,6 +26,36 @@ function sanitizePastedHTMLDocument(doc) {
|
|
|
22
26
|
}
|
|
23
27
|
});
|
|
24
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Inserts pasted plain text as separate paragraphs when it contains line breaks.
|
|
31
|
+
* @param text Plain text clipboard content.
|
|
32
|
+
* @returns True when text was handled as multiple paragraphs.
|
|
33
|
+
*/
|
|
34
|
+
function insertMultilinePlainText(text) {
|
|
35
|
+
if (!/\r|\n/.test(text)) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
const selection = $getSelection();
|
|
39
|
+
if (!$isRangeSelection(selection)) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
const paragraphs = text
|
|
43
|
+
.replace(/\r\n?/g, '\n')
|
|
44
|
+
.split('\n')
|
|
45
|
+
.map((line) => {
|
|
46
|
+
const paragraph = $createParagraphNode();
|
|
47
|
+
if (line.length > 0) {
|
|
48
|
+
paragraph.append($createTextNode(line));
|
|
49
|
+
}
|
|
50
|
+
return paragraph;
|
|
51
|
+
});
|
|
52
|
+
selection.insertNodes(paragraphs);
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Registers paste sanitization for the rich text editor.
|
|
57
|
+
* @returns Null because the plugin only registers editor commands.
|
|
58
|
+
*/
|
|
25
59
|
export default function SanitizePastePlugin() {
|
|
26
60
|
const [editor] = useLexicalComposerContext();
|
|
27
61
|
useEffect(() => editor.registerCommand(PASTE_COMMAND, (event) => {
|
|
@@ -32,6 +66,11 @@ export default function SanitizePastePlugin() {
|
|
|
32
66
|
if (clipboardData.types.includes(LEXICAL_MIME_TYPE)) {
|
|
33
67
|
return false;
|
|
34
68
|
}
|
|
69
|
+
const text = clipboardData.getData('text/plain');
|
|
70
|
+
if (/\r|\n/.test(text)) {
|
|
71
|
+
event.preventDefault();
|
|
72
|
+
return insertMultilinePlainText(text);
|
|
73
|
+
}
|
|
35
74
|
const html = clipboardData.getData('text/html');
|
|
36
75
|
if (!html) {
|
|
37
76
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/components/TextEditorV2/plugins/SanitizePastePlugin/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAA;AACjF,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/components/TextEditorV2/plugins/SanitizePastePlugin/index.tsx"],"names":[],"mappings":"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"}
|