@alphakits/ui 2.0.10 → 2.0.11
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/filter-tag/index.module.css +1 -1
- package/dist/header-search/component.d.ts +1 -0
- package/dist/header-search/component.js +20 -18
- package/dist/header-search/component.js.map +1 -1
- package/dist/header-search/index.module.css +1 -1
- package/dist/header-search/index.module.css.js +6 -4
- package/dist/header-search/index.module.css.js.map +1 -1
- package/dist/status/index.module.css +1 -1
- package/dist/table/columns.js +1 -1
- package/dist/table/columns.js.map +1 -1
- package/dist/table/components/cell/component.d.ts +1 -0
- package/dist/table/components/cell/component.js +22 -21
- package/dist/table/components/cell/component.js.map +1 -1
- package/dist/table/components/cell/index.module.css +1 -1
- package/dist/table/components/cell/index.module.css.js +14 -12
- package/dist/table/components/cell/index.module.css.js.map +1 -1
- package/dist/table/components/cells/index.d.ts +2 -1
- package/dist/table/components/cells/index.js +19 -18
- package/dist/table/components/cells/index.js.map +1 -1
- package/dist/table/components/cells/index.module.css +1 -1
- package/dist/table/components/cells/index.module.css.js +14 -12
- package/dist/table/components/cells/index.module.css.js.map +1 -1
- package/dist/table/components/pagination/index.d.ts +1 -0
- package/dist/table/components/pagination/index.js +94 -75
- package/dist/table/components/pagination/index.js.map +1 -1
- package/dist/table/components/pagination/index.module.css +1 -1
- package/dist/table/components/pagination/index.module.css.js +24 -18
- package/dist/table/components/pagination/index.module.css.js.map +1 -1
- package/dist/table/components/table-header/index.d.ts +1 -0
- package/dist/table/components/table-header/index.js +45 -43
- package/dist/table/components/table-header/index.js.map +1 -1
- package/dist/table/components/table-header/index.module.css +1 -1
- package/dist/table/components/table-header/index.module.css.js +2 -4
- package/dist/table/components/table-header/index.module.css.js.map +1 -1
- package/dist/table/index.module.css +1 -1
- package/dist/table/index.module.css.js +9 -7
- package/dist/table/index.module.css.js.map +1 -1
- package/dist/table/table.d.ts +3 -1
- package/dist/table/table.js +114 -109
- package/dist/table/table.js.map +1 -1
- package/dist/table/utils/prepare-rows.d.ts +2 -1
- package/dist/table/utils/prepare-rows.js +8 -6
- package/dist/table/utils/prepare-rows.js.map +1 -1
- package/package.json +1 -1
package/dist/table/table.js
CHANGED
|
@@ -1,145 +1,150 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import { Cells as
|
|
5
|
-
import { EmptyList as
|
|
6
|
-
import { Error as
|
|
7
|
-
import { Loading as
|
|
8
|
-
import { Pagination as
|
|
1
|
+
import { jsxs as h, jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import $, { useMemo as j, useCallback as v } from "react";
|
|
3
|
+
import C from "classnames";
|
|
4
|
+
import { Cells as A } from "./components/cells/index.js";
|
|
5
|
+
import { EmptyList as R } from "./components/empty-list/index.js";
|
|
6
|
+
import { Error as w } from "./components/error/index.js";
|
|
7
|
+
import { Loading as tt } from "./components/loading/index.js";
|
|
8
|
+
import { Pagination as at } from "./components/pagination/index.js";
|
|
9
9
|
import { TableHeader as rt } from "./components/table-header/index.js";
|
|
10
|
-
import { useTableData as
|
|
11
|
-
import { getTags as
|
|
12
|
-
import { prepareRows as
|
|
13
|
-
import
|
|
14
|
-
function
|
|
15
|
-
columns:
|
|
16
|
-
searchPlaceholder:
|
|
17
|
-
records:
|
|
18
|
-
hideSearch:
|
|
19
|
-
rightHeaderAddons:
|
|
20
|
-
leftHeaderAddons:
|
|
21
|
-
filtersButtonLabel:
|
|
22
|
-
createButtonLabel:
|
|
23
|
-
loading:
|
|
24
|
-
height:
|
|
25
|
-
view:
|
|
26
|
-
tagsBuilder:
|
|
27
|
-
promise:
|
|
28
|
-
onRowClick:
|
|
29
|
-
onCreateClick:
|
|
30
|
-
onFiltersClick:
|
|
31
|
-
refetch:
|
|
32
|
-
language:
|
|
33
|
-
fromPath:
|
|
10
|
+
import { useTableData as et } from "./hooks/use-table-data.js";
|
|
11
|
+
import { getTags as ot } from "./utils/get-tags.js";
|
|
12
|
+
import { prepareRows as lt } from "./utils/prepare-rows.js";
|
|
13
|
+
import o from "./index.module.css.js";
|
|
14
|
+
function yt({
|
|
15
|
+
columns: m,
|
|
16
|
+
searchPlaceholder: H = "Поиск по таблице",
|
|
17
|
+
records: S,
|
|
18
|
+
hideSearch: b,
|
|
19
|
+
rightHeaderAddons: g,
|
|
20
|
+
leftHeaderAddons: u,
|
|
21
|
+
filtersButtonLabel: k,
|
|
22
|
+
createButtonLabel: B,
|
|
23
|
+
loading: M,
|
|
24
|
+
height: V = "fill",
|
|
25
|
+
view: l = "default",
|
|
26
|
+
tagsBuilder: _,
|
|
27
|
+
promise: y,
|
|
28
|
+
onRowClick: i,
|
|
29
|
+
onCreateClick: n,
|
|
30
|
+
onFiltersClick: c,
|
|
31
|
+
refetch: q,
|
|
32
|
+
language: d,
|
|
33
|
+
fromPath: z = !0,
|
|
34
|
+
v2: e = !1
|
|
34
35
|
}) {
|
|
35
36
|
const {
|
|
36
|
-
loading:
|
|
37
|
-
error:
|
|
38
|
-
data:
|
|
39
|
-
total:
|
|
37
|
+
loading: F,
|
|
38
|
+
error: T,
|
|
39
|
+
data: x,
|
|
40
|
+
total: G,
|
|
40
41
|
params: t,
|
|
41
|
-
pagesCount:
|
|
42
|
-
updateData:
|
|
43
|
-
addParam:
|
|
44
|
-
removeParam:
|
|
45
|
-
resetParams:
|
|
46
|
-
} =
|
|
47
|
-
promise:
|
|
48
|
-
records:
|
|
49
|
-
fromPath:
|
|
50
|
-
}),
|
|
51
|
-
() => [...
|
|
52
|
-
(
|
|
42
|
+
pagesCount: I,
|
|
43
|
+
updateData: p,
|
|
44
|
+
addParam: J,
|
|
45
|
+
removeParam: K,
|
|
46
|
+
resetParams: L
|
|
47
|
+
} = et({
|
|
48
|
+
promise: y,
|
|
49
|
+
records: S,
|
|
50
|
+
fromPath: z
|
|
51
|
+
}), D = j(
|
|
52
|
+
() => [...x || []].sort(
|
|
53
|
+
(a, s) => (a.sortPosition || 0) - (s.sortPosition || 0)
|
|
53
54
|
),
|
|
54
|
-
[T]
|
|
55
|
-
), J = (r) => m == null ? void 0 : m(r, n), K = d ? () => d(n) : void 0, O = Z(
|
|
56
|
-
(r) => {
|
|
57
|
-
x(r);
|
|
58
|
-
},
|
|
59
55
|
[x]
|
|
60
|
-
),
|
|
61
|
-
|
|
56
|
+
), O = (a) => i == null ? void 0 : i(a, p), Q = n ? () => n(p) : void 0, U = v(
|
|
57
|
+
(a) => {
|
|
58
|
+
L(a);
|
|
59
|
+
},
|
|
60
|
+
[L]
|
|
61
|
+
), E = () => c ? c({
|
|
62
|
+
submitCallback: (a) => U(a),
|
|
62
63
|
initialValues: t
|
|
63
|
-
}) : null,
|
|
64
|
-
|
|
65
|
-
},
|
|
66
|
-
|
|
67
|
-
},
|
|
64
|
+
}) : null, f = (a) => {
|
|
65
|
+
J(a);
|
|
66
|
+
}, W = (a, s) => {
|
|
67
|
+
K(a, s);
|
|
68
|
+
}, X = ot({
|
|
68
69
|
params: (t == null ? void 0 : t.where) || {},
|
|
69
|
-
onDelete:
|
|
70
|
-
tagsBuilder:
|
|
71
|
-
onClick:
|
|
72
|
-
}),
|
|
73
|
-
() =>
|
|
74
|
-
columns:
|
|
75
|
-
view:
|
|
76
|
-
|
|
77
|
-
|
|
70
|
+
onDelete: W,
|
|
71
|
+
tagsBuilder: _,
|
|
72
|
+
onClick: E
|
|
73
|
+
}), N = j(
|
|
74
|
+
() => lt({
|
|
75
|
+
columns: m,
|
|
76
|
+
view: l,
|
|
77
|
+
v2: e,
|
|
78
|
+
data: D,
|
|
79
|
+
refetch: q || p
|
|
78
80
|
}),
|
|
79
81
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
80
|
-
[
|
|
81
|
-
),
|
|
82
|
-
return /* @__PURE__ */
|
|
83
|
-
(!
|
|
82
|
+
[D, m, l, e]
|
|
83
|
+
), P = F || M;
|
|
84
|
+
return /* @__PURE__ */ h("div", { className: C(o.table_wrapper, o[V], o[l], { [o.v2]: e }), children: [
|
|
85
|
+
(!b || g || u || n || c) && /* @__PURE__ */ r(
|
|
84
86
|
rt,
|
|
85
87
|
{
|
|
86
|
-
language:
|
|
87
|
-
hideSearch:
|
|
88
|
-
rightHeaderAddons:
|
|
89
|
-
leftHeaderAddons:
|
|
88
|
+
language: d,
|
|
89
|
+
hideSearch: b,
|
|
90
|
+
rightHeaderAddons: g,
|
|
91
|
+
leftHeaderAddons: u,
|
|
90
92
|
searchText: (t == null ? void 0 : t.searchText) || "",
|
|
91
|
-
addParam:
|
|
92
|
-
searchPlaceholder:
|
|
93
|
-
filtersButtonLabel:
|
|
94
|
-
tags:
|
|
95
|
-
onCreateClick:
|
|
96
|
-
createButtonLabel:
|
|
97
|
-
onFiltersClick:
|
|
98
|
-
showFiltersButton: !!
|
|
99
|
-
compact:
|
|
93
|
+
addParam: f,
|
|
94
|
+
searchPlaceholder: H,
|
|
95
|
+
filtersButtonLabel: k,
|
|
96
|
+
tags: X,
|
|
97
|
+
onCreateClick: Q,
|
|
98
|
+
createButtonLabel: B,
|
|
99
|
+
onFiltersClick: E,
|
|
100
|
+
showFiltersButton: !!c,
|
|
101
|
+
compact: l === "compact",
|
|
102
|
+
v2: e
|
|
100
103
|
}
|
|
101
104
|
),
|
|
102
|
-
/* @__PURE__ */
|
|
103
|
-
/* @__PURE__ */
|
|
104
|
-
|
|
105
|
+
/* @__PURE__ */ r("div", { className: o.table, children: /* @__PURE__ */ h("table", { cellSpacing: "0", cellPadding: "0", children: [
|
|
106
|
+
/* @__PURE__ */ r(
|
|
107
|
+
A,
|
|
105
108
|
{
|
|
106
109
|
sort: t == null ? void 0 : t.sort,
|
|
107
110
|
order: t == null ? void 0 : t.order,
|
|
108
|
-
addParam:
|
|
109
|
-
columns:
|
|
110
|
-
compact:
|
|
111
|
+
addParam: f,
|
|
112
|
+
columns: m,
|
|
113
|
+
compact: l === "compact",
|
|
114
|
+
v2: e
|
|
111
115
|
}
|
|
112
116
|
),
|
|
113
|
-
/* @__PURE__ */
|
|
114
|
-
|
|
115
|
-
!
|
|
116
|
-
|
|
117
|
-
|
|
117
|
+
/* @__PURE__ */ h("tbody", { children: [
|
|
118
|
+
T && /* @__PURE__ */ r(w, { language: d }),
|
|
119
|
+
!N.length && !P && !T && /* @__PURE__ */ r(R, { language: d }),
|
|
120
|
+
P && /* @__PURE__ */ r(tt, { columnsLength: m.length }),
|
|
121
|
+
N.map(({ row: a, cells: s }) => /* @__PURE__ */ r(
|
|
118
122
|
"tr",
|
|
119
123
|
{
|
|
120
|
-
onClick: () =>
|
|
121
|
-
className:
|
|
122
|
-
style: { visibility:
|
|
123
|
-
children:
|
|
124
|
+
onClick: () => O(a),
|
|
125
|
+
className: C({ [o.clickable]: !!i }),
|
|
126
|
+
style: { visibility: P ? "collapse" : "visible" },
|
|
127
|
+
children: s.map((Y, Z) => $.cloneElement(Y, { key: Z }))
|
|
124
128
|
},
|
|
125
|
-
String(
|
|
129
|
+
String(a.id)
|
|
126
130
|
))
|
|
127
131
|
] })
|
|
128
132
|
] }) }),
|
|
129
|
-
!!
|
|
130
|
-
|
|
133
|
+
!!y && /* @__PURE__ */ r(
|
|
134
|
+
at,
|
|
131
135
|
{
|
|
132
|
-
language:
|
|
136
|
+
language: d,
|
|
133
137
|
currentPage: t ? +t.page : 1,
|
|
134
138
|
recordsPerPage: t ? +t.limit : 10,
|
|
135
|
-
pagesCount: +
|
|
136
|
-
addParam:
|
|
137
|
-
total: +
|
|
139
|
+
pagesCount: +I,
|
|
140
|
+
addParam: f,
|
|
141
|
+
total: +G,
|
|
142
|
+
v2: e
|
|
138
143
|
}
|
|
139
144
|
)
|
|
140
145
|
] });
|
|
141
146
|
}
|
|
142
147
|
export {
|
|
143
|
-
|
|
148
|
+
yt as Table
|
|
144
149
|
};
|
|
145
150
|
//# sourceMappingURL=table.js.map
|
package/dist/table/table.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.js","sources":["../../src/table/table.tsx"],"sourcesContent":["/* eslint-disable import/no-extraneous-dependencies */\n/* eslint-disable react/no-array-index-key */\n/* eslint-disable @typescript-eslint/ban-types */\nimport React, {\n useCallback, useMemo,\n} from 'react';\nimport cn from 'classnames';\n\nimport { ApiMethodDeclaration, MakeServiceFromServiceDeclaration } from '../typings/api';\n\nimport { Cells } from './components/cells';\nimport { EmptyList } from './components/empty-list';\nimport { Error } from './components/error';\nimport { Loading } from './components/loading';\nimport { Pagination } from './components/pagination';\nimport { TableHeader } from './components/table-header';\nimport { useTableData } from './hooks/use-table-data';\nimport { getTags } from './utils/get-tags';\nimport { prepareRows } from './utils/prepare-rows';\nimport {\n FiltersMapper, OnFiltersClickProps, Query, TableColumns,\n} from './types';\n\nimport styles from './index.module.css';\n\ntype Records<T> =\n | {\n records: T[];\n promise?: never;\n }\n | {\n records?: never;\n promise: MakeServiceFromServiceDeclaration<\n ApiMethodDeclaration<any, { items: T[]; meta: any }>\n >;\n };\n\ntype FiltersButton =\n | {\n onFiltersClick: (props: OnFiltersClickProps) => void;\n filtersButtonLabel: string;\n }\n | {\n onFiltersClick?: never;\n filtersButtonLabel?: never;\n };\n\nexport type TableProps<T extends object> = Records<T> & {\n columns: TableColumns<T>;\n view?: 'default' | 'compact';\n searchPlaceholder?: string;\n rightHeaderAddons?: React.ReactNode;\n leftHeaderAddons?: React.ReactNode;\n createButtonLabel?: string;\n hideSearch?: boolean;\n loading?: boolean;\n height?: 'fill' | 'default';\n tagsBuilder?: (props: FiltersMapper) => JSX.Element | null;\n onCreateClick?: (refech: () => void) => void;\n refetch?: () => void;\n onRowClick?: (params: T, refech: () => void) => void;\n language: 'de' | 'ru' | 'en';\n\n /** true — параметры из URL; false — только локальное состояние. */\n fromPath?: boolean;\n} & FiltersButton;\n\nexport function Table<T extends object>({\n columns,\n searchPlaceholder = 'Поиск по таблице',\n records,\n hideSearch,\n rightHeaderAddons,\n leftHeaderAddons,\n filtersButtonLabel,\n createButtonLabel,\n loading,\n height = 'fill',\n view = 'default',\n tagsBuilder,\n promise,\n onRowClick,\n onCreateClick,\n onFiltersClick,\n refetch,\n language,\n fromPath = true,\n}: TableProps<T>) {\n const {\n loading: dataLoading,\n error,\n data,\n total,\n params,\n pagesCount,\n updateData,\n\n addParam,\n removeParam,\n resetParams,\n } = useTableData({\n promise,\n records,\n fromPath,\n });\n\n const dataSorted = useMemo(\n () => [...(data || [])].sort(\n (a: any, b: any) => (a.sortPosition || 0) - (b.sortPosition || 0),\n ),\n [data],\n );\n\n const handleRowClick = (p: T) => onRowClick?.(p, updateData);\n const handleCreateClick = onCreateClick ? () => onCreateClick(updateData) : undefined;\n\n const resetParamsHandler = useCallback(\n (param: Query) => {\n resetParams(param);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n },\n [resetParams],\n );\n\n const handleFiltesClick = () =>\n (onFiltersClick\n ? onFiltersClick({\n submitCallback: (values) => resetParamsHandler(values),\n initialValues: params,\n })\n : null);\n\n const addParamHandler = (param: Query) => {\n addParam(param);\n };\n\n const removeParamHandler = (paramName: string, id?: string) => {\n removeParam(paramName, id);\n };\n\n const tags = getTags({\n params: params?.where || {},\n onDelete: removeParamHandler,\n tagsBuilder,\n onClick: handleFiltesClick,\n });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const rows = useMemo(\n () => prepareRows({\n columns,\n view,\n data: dataSorted,\n refetch: refetch || updateData,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [dataSorted, columns, view],\n );\n\n const showLoader = dataLoading || loading;\n\n return (\n <div className={ cn(styles.table_wrapper, styles[height], styles[view]) }>\n { (!hideSearch ||\n rightHeaderAddons ||\n leftHeaderAddons ||\n onCreateClick ||\n onFiltersClick) && (\n <TableHeader\n language={ language }\n hideSearch={ hideSearch }\n rightHeaderAddons={ rightHeaderAddons }\n leftHeaderAddons={ leftHeaderAddons }\n searchText={ params?.searchText || '' }\n addParam={ addParamHandler }\n searchPlaceholder={ searchPlaceholder }\n filtersButtonLabel={ filtersButtonLabel }\n tags={ tags }\n onCreateClick={ handleCreateClick }\n createButtonLabel={ createButtonLabel }\n onFiltersClick={ handleFiltesClick }\n showFiltersButton={ !!onFiltersClick }\n compact={ view === 'compact' }\n />\n ) }\n\n <div className={ styles.table }>\n <table cellSpacing=\"0\" cellPadding=\"0\">\n <Cells\n sort={ params?.sort }\n order={ params?.order }\n addParam={ addParamHandler }\n columns={ columns }\n compact={ view === 'compact' }\n />\n\n <tbody>\n { error && <Error language={ language } /> }\n\n { !rows.length && !showLoader && !error && (\n <EmptyList language={ language } />\n ) }\n\n { showLoader && <Loading columnsLength={ columns.length } /> }\n\n { rows.map(({ row, cells }) => (\n <tr\n key={ String((row as any).id) }\n onClick={ () => handleRowClick(row as T) }\n className={ cn({ [styles.clickable]: !!onRowClick }) }\n style={ { visibility: showLoader ? 'collapse' : 'visible' } }\n >\n { cells.map((cell, i) =>\n React.cloneElement(cell as any, { key: i })) }\n </tr>\n )) }\n </tbody>\n </table>\n </div>\n\n { !!promise && (\n <Pagination\n language={ language }\n currentPage={ params ? +params.page : 1 }\n recordsPerPage={ params ? +params.limit : 10 }\n pagesCount={ +pagesCount }\n addParam={ addParamHandler }\n total={ +total }\n />\n ) }\n </div>\n );\n}\n"],"names":["Table","columns","searchPlaceholder","records","hideSearch","rightHeaderAddons","leftHeaderAddons","filtersButtonLabel","createButtonLabel","loading","height","view","tagsBuilder","promise","onRowClick","onCreateClick","onFiltersClick","refetch","language","fromPath","dataLoading","error","data","total","params","pagesCount","updateData","addParam","removeParam","resetParams","useTableData","dataSorted","useMemo","a","b","handleRowClick","p","handleCreateClick","resetParamsHandler","useCallback","param","handleFiltesClick","values","addParamHandler","removeParamHandler","paramName","id","tags","getTags","rows","prepareRows","showLoader","jsxs","cn","styles","jsx","TableHeader","Cells","Error","EmptyList","Loading","row","cells","cell","i","React","Pagination"],"mappings":";;;;;;;;;;;;;AAmEO,SAASA,GAAwB;AAAA,EACpC,SAAAC;AAAA,EACA,mBAAAC,IAAoB;AAAA,EACpB,SAAAC;AAAA,EACA,YAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,SAAAC;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,MAAAC,IAAO;AAAA,EACP,aAAAC;AAAA,EACA,SAAAC;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC,IAAW;AACf,GAAkB;AACd,QAAM;AAAA,IACF,SAASC;AAAA,IACT,OAAAC;AAAA,IACA,MAAAC;AAAA,IACA,OAAAC;AAAA,IACA,QAAAC;AAAA,IACA,YAAAC;AAAA,IACA,YAAAC;AAAA,IAEA,UAAAC;AAAA,IACA,aAAAC;AAAA,IACA,aAAAC;AAAA,EAAA,IACAC,GAAa;AAAA,IACb,SAAAjB;AAAA,IACA,SAAAV;AAAA,IACA,UAAAgB;AAAA,EAAA,CACH,GAEKY,IAAaC;AAAA,IACf,MAAM,CAAC,GAAIV,KAAQ,CAAA,CAAG,EAAE;AAAA,MACpB,CAACW,GAAQC,OAAYD,EAAE,gBAAgB,MAAMC,EAAE,gBAAgB;AAAA,IAAA;AAAA,IAEnE,CAACZ,CAAI;AAAA,EAAA,GAGHa,IAAiB,CAACC,MAAStB,KAAA,gBAAAA,EAAasB,GAAGV,IAC3CW,IAAoBtB,IAAgB,MAAMA,EAAcW,CAAU,IAAI,QAEtEY,IAAqBC;AAAA,IACvB,CAACC,MAAiB;AACd,MAAAX,EAAYW,CAAK;AAAA,IAErB;AAAA,IACA,CAACX,CAAW;AAAA,EAAA,GAGVY,IAAoB,MACrBzB,IACKA,EAAe;AAAA,IACb,gBAAgB,CAAC0B,MAAWJ,EAAmBI,CAAM;AAAA,IACrD,eAAelB;AAAA,EAAA,CAClB,IACC,MAEJmB,IAAkB,CAACH,MAAiB;AACtC,IAAAb,EAASa,CAAK;AAAA,EAClB,GAEMI,IAAqB,CAACC,GAAmBC,MAAgB;AAC3D,IAAAlB,EAAYiB,GAAWC,CAAE;AAAA,EAC7B,GAEMC,IAAOC,GAAQ;AAAA,IACjB,SAAQxB,KAAA,gBAAAA,EAAQ,UAAS,CAAA;AAAA,IACzB,UAAUoB;AAAA,IACV,aAAAhC;AAAA,IACA,SAAS6B;AAAA,EAAA,CACZ,GAGKQ,IAAOjB;AAAA,IACT,MAAMkB,GAAY;AAAA,MACd,SAAAjD;AAAA,MACA,MAAAU;AAAA,MACA,MAAMoB;AAAA,MACN,SAASd,KAAWS;AAAA,IAAA,CACvB;AAAA;AAAA,IAED,CAACK,GAAY9B,GAASU,CAAI;AAAA,EAAA,GAGxBwC,IAAa/B,KAAeX;AAElC,SACI,gBAAA2C,EAAC,OAAA,EAAI,WAAYC,EAAGC,EAAO,eAAeA,EAAO5C,CAAM,GAAG4C,EAAO3C,CAAI,CAAC,GAC/D,UAAA;AAAA,KAAA,CAACP,KACAC,KACAC,KACAS,KACAC,MACA,gBAAAuC;AAAA,MAACC;AAAA,MAAA;AAAA,QACG,UAAAtC;AAAA,QACA,YAAAd;AAAA,QACA,mBAAAC;AAAA,QACA,kBAAAC;AAAA,QACA,aAAakB,KAAA,gBAAAA,EAAQ,eAAc;AAAA,QACnC,UAAWmB;AAAA,QACX,mBAAAzC;AAAA,QACA,oBAAAK;AAAA,QACA,MAAAwC;AAAA,QACA,eAAgBV;AAAA,QAChB,mBAAA7B;AAAA,QACA,gBAAiBiC;AAAA,QACjB,mBAAoB,CAAC,CAACzB;AAAA,QACtB,SAAUL,MAAS;AAAA,MAAA;AAAA,IAAA;AAAA,IAI3B,gBAAA4C,EAAC,OAAA,EAAI,WAAYD,EAAO,OACpB,4BAAC,SAAA,EAAM,aAAY,KAAI,aAAY,KAC/B,UAAA;AAAA,MAAA,gBAAAC;AAAA,QAACE;AAAA,QAAA;AAAA,UACG,MAAOjC,KAAA,gBAAAA,EAAQ;AAAA,UACf,OAAQA,KAAA,gBAAAA,EAAQ;AAAA,UAChB,UAAWmB;AAAA,UACX,SAAA1C;AAAA,UACA,SAAUU,MAAS;AAAA,QAAA;AAAA,MAAA;AAAA,wBAGtB,SAAA,EACK,UAAA;AAAA,QAAAU,KAAS,gBAAAkC,EAACG,KAAM,UAAAxC,EAAA,CAAsB;AAAA,QAEtC,CAAC+B,EAAK,UAAU,CAACE,KAAc,CAAC9B,KAC9B,gBAAAkC,EAACI,GAAA,EAAU,UAAAzC,GAAsB;AAAA,QAGnCiC,KAAc,gBAAAI,EAACK,GAAA,EAAQ,eAAgB3D,EAAQ,QAAS;AAAA,QAExDgD,EAAK,IAAI,CAAC,EAAE,KAAAY,GAAK,OAAAC,QACf,gBAAAP;AAAA,UAAC;AAAA,UAAA;AAAA,YAEG,SAAU,MAAMpB,EAAe0B,CAAQ;AAAA,YACvC,WAAYR,EAAG,EAAE,CAACC,EAAO,SAAS,GAAG,CAAC,CAACxC,GAAY;AAAA,YACnD,OAAQ,EAAE,YAAYqC,IAAa,aAAa,UAAA;AAAA,YAE9C,UAAAW,EAAM,IAAI,CAACC,GAAMC,MACfC,EAAM,aAAaF,GAAa,EAAE,KAAKC,EAAA,CAAG,CAAC;AAAA,UAAA;AAAA,UANzC,OAAQH,EAAY,EAAE;AAAA,QAAA,CAQnC;AAAA,MAAA,EAAA,CACL;AAAA,IAAA,EAAA,CACJ,EAAA,CACJ;AAAA,IAEE,CAAC,CAAChD,KACA,gBAAA0C;AAAA,MAACW;AAAA,MAAA;AAAA,QACG,UAAAhD;AAAA,QACA,aAAcM,IAAS,CAACA,EAAO,OAAO;AAAA,QACtC,gBAAiBA,IAAS,CAACA,EAAO,QAAQ;AAAA,QAC1C,YAAa,CAACC;AAAA,QACd,UAAWkB;AAAA,QACX,OAAQ,CAACpB;AAAA,MAAA;AAAA,IAAA;AAAA,EACb,GAER;AAER;"}
|
|
1
|
+
{"version":3,"file":"table.js","sources":["../../src/table/table.tsx"],"sourcesContent":["/* eslint-disable import/no-extraneous-dependencies */\n/* eslint-disable react/no-array-index-key */\n/* eslint-disable @typescript-eslint/ban-types */\nimport React, {\n useCallback, useMemo,\n} from 'react';\nimport cn from 'classnames';\n\nimport { ApiMethodDeclaration, MakeServiceFromServiceDeclaration } from '../typings/api';\n\nimport { Cells } from './components/cells';\nimport { EmptyList } from './components/empty-list';\nimport { Error } from './components/error';\nimport { Loading } from './components/loading';\nimport { Pagination } from './components/pagination';\nimport { TableHeader } from './components/table-header';\nimport { useTableData } from './hooks/use-table-data';\nimport { getTags } from './utils/get-tags';\nimport { prepareRows } from './utils/prepare-rows';\nimport {\n FiltersMapper, OnFiltersClickProps, Query, TableColumns,\n} from './types';\n\nimport styles from './index.module.css';\n\ntype Records<T> =\n | {\n records: T[];\n promise?: never;\n }\n | {\n records?: never;\n promise: MakeServiceFromServiceDeclaration<\n ApiMethodDeclaration<any, { items: T[]; meta: any }>\n >;\n };\n\ntype FiltersButton =\n | {\n onFiltersClick: (props: OnFiltersClickProps) => void;\n filtersButtonLabel: string;\n }\n | {\n onFiltersClick?: never;\n filtersButtonLabel?: never;\n };\n\nexport type TableProps<T extends object> = Records<T> & {\n columns: TableColumns<T>;\n view?: 'default' | 'compact';\n searchPlaceholder?: string;\n rightHeaderAddons?: React.ReactNode;\n leftHeaderAddons?: React.ReactNode;\n createButtonLabel?: string;\n hideSearch?: boolean;\n loading?: boolean;\n height?: 'fill' | 'default';\n tagsBuilder?: (props: FiltersMapper) => JSX.Element | null;\n onCreateClick?: (refech: () => void) => void;\n refetch?: () => void;\n onRowClick?: (params: T, refech: () => void) => void;\n language: 'de' | 'ru' | 'en';\n\n /** true — параметры из URL; false — только локальное состояние. */\n fromPath?: boolean;\n\n /** Новый визуал таблицы (поиск в обводке, контейнер таблицы с тенью, обновлённый футер). */\n v2?: boolean;\n} & FiltersButton;\n\nexport function Table<T extends object>({\n columns,\n searchPlaceholder = 'Поиск по таблице',\n records,\n hideSearch,\n rightHeaderAddons,\n leftHeaderAddons,\n filtersButtonLabel,\n createButtonLabel,\n loading,\n height = 'fill',\n view = 'default',\n tagsBuilder,\n promise,\n onRowClick,\n onCreateClick,\n onFiltersClick,\n refetch,\n language,\n fromPath = true,\n v2 = false,\n}: TableProps<T>) {\n const {\n loading: dataLoading,\n error,\n data,\n total,\n params,\n pagesCount,\n updateData,\n\n addParam,\n removeParam,\n resetParams,\n } = useTableData({\n promise,\n records,\n fromPath,\n });\n\n const dataSorted = useMemo(\n () => [...(data || [])].sort(\n (a: any, b: any) => (a.sortPosition || 0) - (b.sortPosition || 0),\n ),\n [data],\n );\n\n const handleRowClick = (p: T) => onRowClick?.(p, updateData);\n const handleCreateClick = onCreateClick ? () => onCreateClick(updateData) : undefined;\n\n const resetParamsHandler = useCallback(\n (param: Query) => {\n resetParams(param);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n },\n [resetParams],\n );\n\n const handleFiltesClick = () =>\n (onFiltersClick\n ? onFiltersClick({\n submitCallback: (values) => resetParamsHandler(values),\n initialValues: params,\n })\n : null);\n\n const addParamHandler = (param: Query) => {\n addParam(param);\n };\n\n const removeParamHandler = (paramName: string, id?: string) => {\n removeParam(paramName, id);\n };\n\n const tags = getTags({\n params: params?.where || {},\n onDelete: removeParamHandler,\n tagsBuilder,\n onClick: handleFiltesClick,\n });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const rows = useMemo(\n () => prepareRows({\n columns,\n view,\n v2,\n data: dataSorted,\n refetch: refetch || updateData,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [dataSorted, columns, view, v2],\n );\n\n const showLoader = dataLoading || loading;\n\n return (\n <div className={ cn(styles.table_wrapper, styles[height], styles[view], { [styles.v2]: v2 }) }>\n { (!hideSearch ||\n rightHeaderAddons ||\n leftHeaderAddons ||\n onCreateClick ||\n onFiltersClick) && (\n <TableHeader\n language={ language }\n hideSearch={ hideSearch }\n rightHeaderAddons={ rightHeaderAddons }\n leftHeaderAddons={ leftHeaderAddons }\n searchText={ params?.searchText || '' }\n addParam={ addParamHandler }\n searchPlaceholder={ searchPlaceholder }\n filtersButtonLabel={ filtersButtonLabel }\n tags={ tags }\n onCreateClick={ handleCreateClick }\n createButtonLabel={ createButtonLabel }\n onFiltersClick={ handleFiltesClick }\n showFiltersButton={ !!onFiltersClick }\n compact={ view === 'compact' }\n v2={ v2 }\n />\n ) }\n\n <div className={ styles.table }>\n <table cellSpacing=\"0\" cellPadding=\"0\">\n <Cells\n sort={ params?.sort }\n order={ params?.order }\n addParam={ addParamHandler }\n columns={ columns }\n compact={ view === 'compact' }\n v2={ v2 }\n />\n\n <tbody>\n { error && <Error language={ language } /> }\n\n { !rows.length && !showLoader && !error && (\n <EmptyList language={ language } />\n ) }\n\n { showLoader && <Loading columnsLength={ columns.length } /> }\n\n { rows.map(({ row, cells }) => (\n <tr\n key={ String((row as any).id) }\n onClick={ () => handleRowClick(row as T) }\n className={ cn({ [styles.clickable]: !!onRowClick }) }\n style={ { visibility: showLoader ? 'collapse' : 'visible' } }\n >\n { cells.map((cell, i) =>\n React.cloneElement(cell as any, { key: i })) }\n </tr>\n )) }\n </tbody>\n </table>\n </div>\n\n { !!promise && (\n <Pagination\n language={ language }\n currentPage={ params ? +params.page : 1 }\n recordsPerPage={ params ? +params.limit : 10 }\n pagesCount={ +pagesCount }\n addParam={ addParamHandler }\n total={ +total }\n v2={ v2 }\n />\n ) }\n </div>\n );\n}\n"],"names":["Table","columns","searchPlaceholder","records","hideSearch","rightHeaderAddons","leftHeaderAddons","filtersButtonLabel","createButtonLabel","loading","height","view","tagsBuilder","promise","onRowClick","onCreateClick","onFiltersClick","refetch","language","fromPath","v2","dataLoading","error","data","total","params","pagesCount","updateData","addParam","removeParam","resetParams","useTableData","dataSorted","useMemo","b","handleRowClick","p","handleCreateClick","resetParamsHandler","useCallback","param","handleFiltesClick","values","addParamHandler","removeParamHandler","paramName","id","tags","getTags","rows","prepareRows","showLoader","cn","styles","jsx","TableHeader","Cells","Error","EmptyList","Loading","row","cells","cell","i","React","Pagination"],"mappings":"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"}
|
|
@@ -2,10 +2,11 @@ import { TableProps } from '../table';
|
|
|
2
2
|
type Props<T extends object> = {
|
|
3
3
|
columns: TableProps<T>['columns'];
|
|
4
4
|
view: TableProps<T>['view'];
|
|
5
|
+
v2?: boolean;
|
|
5
6
|
data: T[];
|
|
6
7
|
refetch: () => void;
|
|
7
8
|
};
|
|
8
|
-
export declare function prepareRows<T extends object>({ columns, view, data, refetch, }: Props<T>): {
|
|
9
|
+
export declare function prepareRows<T extends object>({ columns, view, v2, data, refetch, }: Props<T>): {
|
|
9
10
|
row: T;
|
|
10
11
|
cells: JSX.Element[];
|
|
11
12
|
}[];
|
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
import { jsx as r } from "react/jsx-runtime";
|
|
2
2
|
import S from "@alphakits/icons/dist/PhotoM";
|
|
3
3
|
import { Image as f } from "../../image/component.js";
|
|
4
|
-
import { TableCell as
|
|
4
|
+
import { TableCell as N } from "../components/cell/component.js";
|
|
5
5
|
function p(t, i, s) {
|
|
6
6
|
return t ? typeof t == "string" ? i[t] : typeof t == "function" ? t({ row: i, refetch: s }) : null : null;
|
|
7
7
|
}
|
|
8
8
|
function z(t, i, s) {
|
|
9
9
|
return t ? typeof t == "string" ? i[t] : typeof t == "function" ? t({ row: i, refetch: s }) : null : null;
|
|
10
10
|
}
|
|
11
|
-
function
|
|
11
|
+
function T({
|
|
12
12
|
columns: t,
|
|
13
13
|
view: i = "default",
|
|
14
|
-
|
|
14
|
+
v2: s,
|
|
15
|
+
data: A,
|
|
15
16
|
refetch: u
|
|
16
17
|
}) {
|
|
17
18
|
const m = i === "compact";
|
|
18
|
-
return
|
|
19
|
+
return A.map((o) => ({
|
|
19
20
|
row: o,
|
|
20
21
|
cells: t.map((n) => {
|
|
21
22
|
var g, c, d, x, b, y, C, v, w;
|
|
@@ -55,11 +56,12 @@ function R({
|
|
|
55
56
|
);
|
|
56
57
|
} else (y = n.row) != null && y.customAddon && (l = p((C = n.row) == null ? void 0 : C.customAddon, o, u));
|
|
57
58
|
return /* @__PURE__ */ r(
|
|
58
|
-
|
|
59
|
+
N,
|
|
59
60
|
{
|
|
60
61
|
title: e,
|
|
61
62
|
align: n.align,
|
|
62
63
|
compact: m,
|
|
64
|
+
v2: s,
|
|
63
65
|
subtitle: m ? void 0 : ((v = n.row) == null ? void 0 : v.subtitle) && z((w = n.row) == null ? void 0 : w.subtitle, o, u),
|
|
64
66
|
addon: l
|
|
65
67
|
}
|
|
@@ -68,6 +70,6 @@ function R({
|
|
|
68
70
|
}));
|
|
69
71
|
}
|
|
70
72
|
export {
|
|
71
|
-
|
|
73
|
+
T as prepareRows
|
|
72
74
|
};
|
|
73
75
|
//# sourceMappingURL=prepare-rows.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepare-rows.js","sources":["../../../src/table/utils/prepare-rows.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-types */\nimport React, { ReactNode } from 'react';\nimport PhotoM from '@alphakits/icons/dist/PhotoM';\n\nimport { Image } from '../../image';\nimport { TableCell } from '../components/cell';\nimport { TableProps } from '../table';\n\ntype Props<T extends object> = {\n columns: TableProps<T>['columns'];\n view: TableProps<T>['view'];\n data: T[];\n refetch: () => void;\n};\n\nfunction getCellNode<T extends object>(row: unknown, record: T, refetch: () => void) {\n if (!row) return null;\n\n if (typeof row === 'string') return record[row as keyof T];\n\n if (typeof row === 'function') return row({ row: record, refetch });\n\n return null;\n}\n\nfunction getCellValue<T extends object>(\n row: unknown,\n record: T,\n refetch: () => void,\n): string | ReactNode {\n if (!row) return null;\n\n if (typeof row === 'string') return record[row as keyof T];\n\n if (typeof row === 'function') return row({ row: record, refetch });\n\n return null;\n}\n\nexport function prepareRows<T extends object>({\n columns,\n view = 'default',\n data,\n refetch,\n}: Props<T>) {\n const isCompact = view === 'compact';\n const rows = data.map((row) => ({\n row,\n cells: columns.map((col) => {\n const title = getCellValue(col.row?.title || col.accessor, row, refetch);\n\n let addon;\n\n if (col.row?.image) {\n const imageSrc = getCellNode(col.row?.image, row, refetch);\n\n addon = imageSrc ? (\n <Image\n bgColor=\"secondary\"\n src={ imageSrc }\n text={ title?.toString() }\n view=\"ellipse\"\n size={ isCompact ? 'xs' : 'm' }\n />\n ) : (\n <Image\n bgColor=\"secondary\"\n icon={ <PhotoM /> }\n text={ title?.toString() }\n view=\"ellipse\"\n size={ isCompact ? 'xs' : 'm' }\n />\n );\n } else if (col.row?.icon) {\n const iconNode = getCellNode(col.row?.icon, row, refetch);\n\n addon = (\n <Image\n icon={ iconNode || <PhotoM /> }\n text={ title?.toString() }\n view=\"ellipse\"\n size={ isCompact ? 'xs' : 'm' }\n />\n );\n } else if (col.row?.customAddon) {\n addon = getCellNode(col.row?.customAddon, row, refetch);\n }\n\n return (\n <TableCell\n title={ title }\n align={ col.align }\n compact={ isCompact }\n subtitle={\n isCompact\n ? undefined\n : (col.row?.subtitle && getCellValue(col.row?.subtitle, row, refetch))\n }\n addon={ addon }\n />\n );\n }),\n }));\n\n return rows;\n}\n"],"names":["getCellNode","row","record","refetch","getCellValue","prepareRows","columns","view","data","isCompact","col","title","_a","addon","_b","imageSrc","_c","jsx","Image","PhotoM","_d","iconNode","_e","_f","_g","TableCell","_h","_i"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"prepare-rows.js","sources":["../../../src/table/utils/prepare-rows.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-types */\nimport React, { ReactNode } from 'react';\nimport PhotoM from '@alphakits/icons/dist/PhotoM';\n\nimport { Image } from '../../image';\nimport { TableCell } from '../components/cell';\nimport { TableProps } from '../table';\n\ntype Props<T extends object> = {\n columns: TableProps<T>['columns'];\n view: TableProps<T>['view'];\n v2?: boolean;\n data: T[];\n refetch: () => void;\n};\n\nfunction getCellNode<T extends object>(row: unknown, record: T, refetch: () => void) {\n if (!row) return null;\n\n if (typeof row === 'string') return record[row as keyof T];\n\n if (typeof row === 'function') return row({ row: record, refetch });\n\n return null;\n}\n\nfunction getCellValue<T extends object>(\n row: unknown,\n record: T,\n refetch: () => void,\n): string | ReactNode {\n if (!row) return null;\n\n if (typeof row === 'string') return record[row as keyof T];\n\n if (typeof row === 'function') return row({ row: record, refetch });\n\n return null;\n}\n\nexport function prepareRows<T extends object>({\n columns,\n view = 'default',\n v2,\n data,\n refetch,\n}: Props<T>) {\n const isCompact = view === 'compact';\n const rows = data.map((row) => ({\n row,\n cells: columns.map((col) => {\n const title = getCellValue(col.row?.title || col.accessor, row, refetch);\n\n let addon;\n\n if (col.row?.image) {\n const imageSrc = getCellNode(col.row?.image, row, refetch);\n\n addon = imageSrc ? (\n <Image\n bgColor=\"secondary\"\n src={ imageSrc }\n text={ title?.toString() }\n view=\"ellipse\"\n size={ isCompact ? 'xs' : 'm' }\n />\n ) : (\n <Image\n bgColor=\"secondary\"\n icon={ <PhotoM /> }\n text={ title?.toString() }\n view=\"ellipse\"\n size={ isCompact ? 'xs' : 'm' }\n />\n );\n } else if (col.row?.icon) {\n const iconNode = getCellNode(col.row?.icon, row, refetch);\n\n addon = (\n <Image\n icon={ iconNode || <PhotoM /> }\n text={ title?.toString() }\n view=\"ellipse\"\n size={ isCompact ? 'xs' : 'm' }\n />\n );\n } else if (col.row?.customAddon) {\n addon = getCellNode(col.row?.customAddon, row, refetch);\n }\n\n return (\n <TableCell\n title={ title }\n align={ col.align }\n compact={ isCompact }\n v2={ v2 }\n subtitle={\n isCompact\n ? undefined\n : (col.row?.subtitle && getCellValue(col.row?.subtitle, row, refetch))\n }\n addon={ addon }\n />\n );\n }),\n }));\n\n return rows;\n}\n"],"names":["getCellNode","row","record","refetch","getCellValue","prepareRows","columns","view","v2","data","isCompact","col","title","_a","addon","_b","imageSrc","_c","jsx","Image","PhotoM","_d","iconNode","_e","_f","_g","TableCell","_h","_i"],"mappings":";;;;AAgBA,SAASA,EAA8BC,GAAcC,GAAWC,GAAqB;AACjF,SAAKF,IAED,OAAOA,KAAQ,WAAiBC,EAAOD,CAAc,IAErD,OAAOA,KAAQ,aAAmBA,EAAI,EAAE,KAAKC,GAAQ,SAAAC,GAAS,IAE3D,OANU;AAOrB;AAEA,SAASC,EACLH,GACAC,GACAC,GACkB;AAClB,SAAKF,IAED,OAAOA,KAAQ,WAAiBC,EAAOD,CAAc,IAErD,OAAOA,KAAQ,aAAmBA,EAAI,EAAE,KAAKC,GAAQ,SAAAC,GAAS,IAE3D,OANU;AAOrB;AAEO,SAASE,EAA8B;AAAA,EAC1C,SAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,IAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAN;AACJ,GAAa;AACT,QAAMO,IAAYH,MAAS;AA4D3B,SA3DaE,EAAK,IAAI,CAACR,OAAS;AAAA,IAC5B,KAAAA;AAAA,IACA,OAAOK,EAAQ,IAAI,CAACK,MAAQ;;AACxB,YAAMC,IAAQR,IAAaS,IAAAF,EAAI,QAAJ,gBAAAE,EAAS,UAASF,EAAI,UAAUV,GAAKE,CAAO;AAEvE,UAAIW;AAEJ,WAAIC,IAAAJ,EAAI,QAAJ,QAAAI,EAAS,OAAO;AAChB,cAAMC,IAAWhB,GAAYiB,IAAAN,EAAI,QAAJ,gBAAAM,EAAS,OAAOhB,GAAKE,CAAO;AAEzD,QAAAW,IAAQE,IACJ,gBAAAE;AAAA,UAACC;AAAA,UAAA;AAAA,YACG,SAAQ;AAAA,YACR,KAAMH;AAAA,YACN,MAAOJ,KAAA,gBAAAA,EAAO;AAAA,YACd,MAAK;AAAA,YACL,MAAOF,IAAY,OAAO;AAAA,UAAA;AAAA,QAAA,IAG9B,gBAAAQ;AAAA,UAACC;AAAA,UAAA;AAAA,YACG,SAAQ;AAAA,YACR,wBAAQC,GAAA,EAAO;AAAA,YACf,MAAOR,KAAA,gBAAAA,EAAO;AAAA,YACd,MAAK;AAAA,YACL,MAAOF,IAAY,OAAO;AAAA,UAAA;AAAA,QAAA;AAAA,MAGtC,YAAWW,IAAAV,EAAI,QAAJ,QAAAU,EAAS,MAAM;AACtB,cAAMC,IAAWtB,GAAYuB,IAAAZ,EAAI,QAAJ,gBAAAY,EAAS,MAAMtB,GAAKE,CAAO;AAExD,QAAAW,IACI,gBAAAI;AAAA,UAACC;AAAA,UAAA;AAAA,YACG,MAAOG,KAAY,gBAAAJ,EAACE,GAAA,CAAA,CAAO;AAAA,YAC3B,MAAOR,KAAA,gBAAAA,EAAO;AAAA,YACd,MAAK;AAAA,YACL,MAAOF,IAAY,OAAO;AAAA,UAAA;AAAA,QAAA;AAAA,MAGtC,MAAA,EAAWc,IAAAb,EAAI,QAAJ,QAAAa,EAAS,gBAChBV,IAAQd,GAAYyB,IAAAd,EAAI,QAAJ,gBAAAc,EAAS,aAAaxB,GAAKE,CAAO;AAG1D,aACI,gBAAAe;AAAA,QAACQ;AAAA,QAAA;AAAA,UACG,OAAAd;AAAA,UACA,OAAQD,EAAI;AAAA,UACZ,SAAUD;AAAA,UACV,IAAAF;AAAA,UACA,UACIE,IACM,WACCiB,IAAAhB,EAAI,QAAJ,gBAAAgB,EAAS,aAAYvB,GAAawB,IAAAjB,EAAI,QAAJ,gBAAAiB,EAAS,UAAU3B,GAAKE,CAAO;AAAA,UAE5E,OAAAW;AAAA,QAAA;AAAA,MAAA;AAAA,IAGZ,CAAC;AAAA,EAAA,EACH;AAGN;"}
|