@apexcura/ui-components 0.0.16-Beta124 → 0.0.16-Beta1241
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/Components/ACBreadcrumb.d.ts +16 -0
- package/dist/Components/AadharComponent.d.ts +3 -0
- package/dist/Components/AbhaNumberComponent.d.ts +3 -0
- package/dist/Components/AntdButton.d.ts +4 -0
- package/dist/Components/AutoCompleteInput.d.ts +14 -0
- package/dist/Components/AvatarUpload.d.ts +3 -0
- package/dist/Components/Capcha.d.ts +3 -0
- package/dist/Components/CardElement.d.ts +3 -0
- package/dist/Components/CheckBoxTable.d.ts +12 -0
- package/dist/Components/CustomStepper.d.ts +3 -0
- package/dist/Components/DateRangeSegments.d.ts +16 -0
- package/dist/Components/DisplayTimeline.d.ts +3 -0
- package/dist/Components/Document.d.ts +3 -0
- package/dist/Components/DropdownElement.d.ts +3 -0
- package/dist/Components/FormInputLabel.d.ts +11 -0
- package/dist/Components/GoogleMapWidget.d.ts +3 -0
- package/dist/Components/GradientCard.d.ts +5 -0
- package/dist/Components/GradientCardGroup.d.ts +24 -0
- package/dist/Components/Image.d.ts +1 -1
- package/dist/Components/KanbanBoard.d.ts +2 -0
- package/dist/Components/MediaUpload.d.ts +3 -0
- package/dist/Components/NumberElement.d.ts +1 -0
- package/dist/Components/ProfileContainer.d.ts +3 -0
- package/dist/Components/QRCodeElement.d.ts +5 -0
- package/dist/Components/RadioElement.d.ts +14 -1
- package/dist/Components/SegmentedElement.d.ts +3 -0
- package/dist/Components/SelectElement.d.ts +1 -0
- package/dist/Components/Sidebar.d.ts +2 -2
- package/dist/Components/SplitButton.d.ts +3 -0
- package/dist/Components/TableCopyComponent.d.ts +4 -0
- package/dist/Components/TableElement.d.ts +2 -0
- package/dist/Components/TextEditor.d.ts +5 -0
- package/dist/Components/TextElement.d.ts +1 -1
- package/dist/Components/TextareaElement.d.ts +1 -0
- package/dist/Components/TimePicker.d.ts +3 -0
- package/dist/Components/TimeRangeComponent.d.ts +3 -0
- package/dist/Components/TimeScheduleTable.d.ts +3 -0
- package/dist/Components/Video.d.ts +3 -0
- package/dist/Types/types.d.ts +185 -16
- package/dist/constants/icons.d.ts +8 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.js +1 -1
- package/dist/index.js.LICENSE.txt +126 -1
- package/dist/index.js.map +1 -1
- package/dist/report.html +2 -2
- package/package.json +10 -9
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface ACBreadcrumbItemProps {
|
|
3
|
+
id?: string;
|
|
4
|
+
icon?: string;
|
|
5
|
+
iconClassName?: string;
|
|
6
|
+
href?: string;
|
|
7
|
+
title: string;
|
|
8
|
+
}
|
|
9
|
+
export interface ACBreadcrumbProps {
|
|
10
|
+
className?: string;
|
|
11
|
+
element?: string;
|
|
12
|
+
name: string;
|
|
13
|
+
items: ACBreadcrumbItemProps[];
|
|
14
|
+
onClick: (value: string) => void;
|
|
15
|
+
}
|
|
16
|
+
export declare const ACBreadcrumb: React.FC<ACBreadcrumbProps>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ElementType } from '../Types/types';
|
|
3
|
+
import '../styles/index.css';
|
|
4
|
+
interface autoCompleteProps {
|
|
5
|
+
value?: {
|
|
6
|
+
key?: string;
|
|
7
|
+
value?: string;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
interface customProps extends ElementType {
|
|
11
|
+
value?: autoCompleteProps;
|
|
12
|
+
}
|
|
13
|
+
export declare const AutoCompleteInput: (props: customProps) => React.JSX.Element;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ElementType } from '../Types/types';
|
|
3
|
+
interface PaginationType {
|
|
4
|
+
name?: string;
|
|
5
|
+
page?: number;
|
|
6
|
+
pageSize?: number;
|
|
7
|
+
}
|
|
8
|
+
interface TableElementProps extends ElementType {
|
|
9
|
+
value?: PaginationType | null;
|
|
10
|
+
}
|
|
11
|
+
export declare const TableElement: (props: TableElementProps) => React.JSX.Element;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ElementType } from '../Types/types';
|
|
3
|
+
interface DateRangeSegmentType {
|
|
4
|
+
values?: string[];
|
|
5
|
+
segmentedValue?: string;
|
|
6
|
+
}
|
|
7
|
+
interface DateRangeSegmentsProps extends ElementType {
|
|
8
|
+
value?: DateRangeSegmentType | null;
|
|
9
|
+
segmentedOptions?: {
|
|
10
|
+
tooltip: string;
|
|
11
|
+
label: string;
|
|
12
|
+
value: string;
|
|
13
|
+
}[];
|
|
14
|
+
}
|
|
15
|
+
export declare const DateRangeSegments: (props: DateRangeSegmentsProps) => React.JSX.Element;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface FormInputLabelProps {
|
|
3
|
+
label?: string;
|
|
4
|
+
required?: boolean;
|
|
5
|
+
color?: string;
|
|
6
|
+
element?: 'input-radio' | string;
|
|
7
|
+
variant?: 'button' | 'default';
|
|
8
|
+
labelClassName?: string;
|
|
9
|
+
}
|
|
10
|
+
declare const FormInputLabel: React.FC<FormInputLabelProps>;
|
|
11
|
+
export default FormInputLabel;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Colors } from '../Types/types';
|
|
3
|
+
export interface GradientCardGroupOptionProps {
|
|
4
|
+
active?: boolean;
|
|
5
|
+
clickable?: boolean;
|
|
6
|
+
color?: Colors;
|
|
7
|
+
id?: string;
|
|
8
|
+
name: string;
|
|
9
|
+
onClick?: () => void;
|
|
10
|
+
prefixIcon?: string;
|
|
11
|
+
prefixIconClassName?: string;
|
|
12
|
+
suffixText: string | number;
|
|
13
|
+
title: string;
|
|
14
|
+
}
|
|
15
|
+
export interface GradientCardGroupProps {
|
|
16
|
+
className?: string;
|
|
17
|
+
cols?: number;
|
|
18
|
+
element?: string;
|
|
19
|
+
name: string;
|
|
20
|
+
options: GradientCardGroupOptionProps[];
|
|
21
|
+
value: '';
|
|
22
|
+
onChange?: (value: string | number | boolean | object | object[] | undefined) => void;
|
|
23
|
+
}
|
|
24
|
+
export declare const GradientCardGroup: (props: GradientCardGroupProps) => React.JSX.Element;
|
|
@@ -1,3 +1,16 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { ElementType } from '../Types/types';
|
|
3
|
-
|
|
3
|
+
import '../styles/radio.css';
|
|
4
|
+
type radioValueProps = {
|
|
5
|
+
value: {
|
|
6
|
+
key?: string | undefined;
|
|
7
|
+
label?: string | undefined;
|
|
8
|
+
value?: string | undefined;
|
|
9
|
+
} | undefined;
|
|
10
|
+
};
|
|
11
|
+
interface RadioElementProps extends Omit<ElementType, 'variant'> {
|
|
12
|
+
value?: radioValueProps | null;
|
|
13
|
+
variant?: 'chip' | 'circled' | 'flat';
|
|
14
|
+
}
|
|
15
|
+
export declare const RadioElement: (props: RadioElementProps) => React.JSX.Element;
|
|
16
|
+
export {};
|
package/dist/Types/types.d.ts
CHANGED
|
@@ -1,11 +1,31 @@
|
|
|
1
|
-
import { UploadFile } from 'antd';
|
|
1
|
+
import { InputRef, UploadFile } from 'antd';
|
|
2
2
|
import { SizeType } from 'antd/es/config-provider/SizeContext';
|
|
3
|
+
import { RadioGroupButtonStyle } from 'antd/es/radio';
|
|
4
|
+
import { TabsPosition } from 'antd/es/tabs';
|
|
3
5
|
import { TooltipPlacement } from 'antd/es/tooltip';
|
|
4
|
-
import { CSSProperties } from 'react';
|
|
6
|
+
import React, { CSSProperties, JSXElementConstructor, LegacyRef, ReactElement, ReactNode } from 'react';
|
|
5
7
|
type PaginationType = {
|
|
8
|
+
name?: string;
|
|
6
9
|
page?: number;
|
|
7
10
|
pageSize?: number;
|
|
8
11
|
};
|
|
12
|
+
type DateRangeSegmentType = {
|
|
13
|
+
values?: string[];
|
|
14
|
+
segmentedValue?: string;
|
|
15
|
+
};
|
|
16
|
+
interface ScheduleType {
|
|
17
|
+
from: string | null;
|
|
18
|
+
to: string | null;
|
|
19
|
+
}
|
|
20
|
+
interface WeekSchedule {
|
|
21
|
+
Sunday: ScheduleType;
|
|
22
|
+
Monday: ScheduleType;
|
|
23
|
+
Tuesday: ScheduleType;
|
|
24
|
+
Wednesday: ScheduleType;
|
|
25
|
+
Thursday: ScheduleType;
|
|
26
|
+
Friday: ScheduleType;
|
|
27
|
+
Saturday: ScheduleType;
|
|
28
|
+
}
|
|
9
29
|
type dropDownValueProps = {
|
|
10
30
|
firstValue: {
|
|
11
31
|
key?: string | undefined;
|
|
@@ -18,11 +38,55 @@ type dropDownValueProps = {
|
|
|
18
38
|
value?: string | undefined;
|
|
19
39
|
} | undefined;
|
|
20
40
|
};
|
|
41
|
+
type radioValueProps = {
|
|
42
|
+
value: {
|
|
43
|
+
key?: string | undefined;
|
|
44
|
+
label?: string | undefined;
|
|
45
|
+
value?: string | undefined;
|
|
46
|
+
} | undefined;
|
|
47
|
+
};
|
|
48
|
+
type autoCompleteProps = {
|
|
49
|
+
value?: {
|
|
50
|
+
key?: string;
|
|
51
|
+
value?: string;
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
interface ChildRecordType {
|
|
55
|
+
_id?: string;
|
|
56
|
+
id?: string;
|
|
57
|
+
name?: string;
|
|
58
|
+
label?: string;
|
|
59
|
+
element?: string;
|
|
60
|
+
type?: string;
|
|
61
|
+
value?: boolean;
|
|
62
|
+
children?: ChildRecordType[];
|
|
63
|
+
}
|
|
21
64
|
export type ElementType = {
|
|
65
|
+
showToolbar?: boolean;
|
|
66
|
+
src?: string;
|
|
67
|
+
disabledColor?: string;
|
|
68
|
+
tooltip?: {
|
|
69
|
+
title: string;
|
|
70
|
+
placement: 'top' | 'bottom' | 'left' | 'right';
|
|
71
|
+
};
|
|
72
|
+
varient?: 'solid' | 'outlined' | 'light';
|
|
73
|
+
color?: string;
|
|
74
|
+
buttonStyle?: RadioGroupButtonStyle;
|
|
75
|
+
tableHeight?: string;
|
|
76
|
+
buttonVariant?: string;
|
|
77
|
+
optionRender?: (option: {
|
|
78
|
+
key?: string | number | bigint;
|
|
79
|
+
label?: string | ReactNode;
|
|
80
|
+
value?: string | number;
|
|
81
|
+
color?: string;
|
|
82
|
+
}) => React.ReactNode;
|
|
83
|
+
active?: number;
|
|
84
|
+
visitedClassName?: string;
|
|
22
85
|
accept?: string | undefined;
|
|
23
86
|
max_count?: number | undefined;
|
|
24
87
|
multiple?: boolean | undefined;
|
|
25
88
|
activeClassName?: string;
|
|
89
|
+
fileList?: UploadFile[];
|
|
26
90
|
radioGroupClassName?: string | undefined;
|
|
27
91
|
selectedStyle?: boolean;
|
|
28
92
|
style?: CSSProperties;
|
|
@@ -31,25 +95,56 @@ export type ElementType = {
|
|
|
31
95
|
className?: string | undefined;
|
|
32
96
|
placeholder?: string;
|
|
33
97
|
addonBefore?: React.ReactNode;
|
|
34
|
-
|
|
98
|
+
format?: string;
|
|
99
|
+
indexWidth?: number;
|
|
100
|
+
tabPosition?: TabsPosition;
|
|
101
|
+
defaultValue?: string | {
|
|
102
|
+
label: string;
|
|
103
|
+
value: string;
|
|
104
|
+
search?: string;
|
|
105
|
+
};
|
|
106
|
+
limit?: number;
|
|
107
|
+
ref?: LegacyRef<InputRef> | undefined;
|
|
35
108
|
disabled?: boolean;
|
|
36
109
|
prefix?: React.ReactNode;
|
|
37
110
|
type?: string;
|
|
38
|
-
|
|
111
|
+
searchable?: boolean;
|
|
112
|
+
expandIcon?: boolean;
|
|
113
|
+
size?: SizeType | number;
|
|
114
|
+
colWidth?: string;
|
|
39
115
|
errorText?: string;
|
|
40
116
|
errorClassName?: string;
|
|
41
|
-
|
|
42
|
-
|
|
117
|
+
expandIconStyles?: boolean;
|
|
118
|
+
enableRowSelection?: boolean;
|
|
119
|
+
showSelectionControls?: boolean;
|
|
120
|
+
isIconOnly?: boolean;
|
|
121
|
+
value?: string | number | boolean | null | object | undefined | string[] | UploadFile[] | PaginationType | DateRangeSegmentType | dropDownValueProps | radioValueProps | WeekSchedule | autoCompleteProps;
|
|
122
|
+
status?: string | undefined;
|
|
43
123
|
styles?: React.CSSProperties;
|
|
44
124
|
variant?: 'outlined' | 'borderless' | 'filled';
|
|
125
|
+
enable_all?: boolean;
|
|
45
126
|
label?: string;
|
|
46
127
|
name?: string;
|
|
47
128
|
suffix?: React.ReactNode;
|
|
129
|
+
rowClickExpandable?: boolean;
|
|
130
|
+
expandable?: boolean;
|
|
48
131
|
maxLength?: number;
|
|
132
|
+
sortable?: boolean;
|
|
133
|
+
indexClickable?: boolean;
|
|
134
|
+
splitButton?: {
|
|
135
|
+
value: string;
|
|
136
|
+
icon: string;
|
|
137
|
+
label: string;
|
|
138
|
+
isSVGStylesOverride: boolean;
|
|
139
|
+
tooltip: string;
|
|
140
|
+
}[];
|
|
49
141
|
options?: {
|
|
50
142
|
key?: string;
|
|
51
143
|
label?: string;
|
|
52
144
|
value?: string;
|
|
145
|
+
icon?: string;
|
|
146
|
+
tooltip?: string;
|
|
147
|
+
color?: string;
|
|
53
148
|
}[];
|
|
54
149
|
firstOptions?: {
|
|
55
150
|
key?: string;
|
|
@@ -66,43 +161,87 @@ export type ElementType = {
|
|
|
66
161
|
view?: boolean;
|
|
67
162
|
enabled_dates?: string;
|
|
68
163
|
onChange?: (value: string | number | boolean | object | object[] | undefined) => void;
|
|
69
|
-
onClick?: () => void;
|
|
164
|
+
onClick?: (value: string | number | boolean | object | object[] | undefined) => void;
|
|
70
165
|
dropDownOptions?: (number | string | boolean | object | null | undefined | (() => void))[];
|
|
71
|
-
id?: number;
|
|
166
|
+
id?: number | string;
|
|
167
|
+
fullHeight?: boolean;
|
|
72
168
|
thead?: {
|
|
73
|
-
|
|
169
|
+
width?: number;
|
|
170
|
+
_id?: string;
|
|
74
171
|
name?: string;
|
|
75
172
|
label?: string;
|
|
76
173
|
visible?: boolean;
|
|
77
174
|
required?: boolean;
|
|
78
175
|
key?: string;
|
|
79
176
|
render?: (text: string) => React.JSX.Element;
|
|
177
|
+
renderCell?: (value: number, record: string, index: number) => React.ReactNode;
|
|
80
178
|
ellipsis?: boolean;
|
|
179
|
+
sortable?: boolean;
|
|
180
|
+
filtered?: boolean;
|
|
181
|
+
filters?: {
|
|
182
|
+
text: string;
|
|
183
|
+
value: string;
|
|
184
|
+
}[];
|
|
185
|
+
fixed?: string | boolean | undefined;
|
|
186
|
+
disabled?: boolean;
|
|
187
|
+
clickable?: boolean;
|
|
81
188
|
}[];
|
|
82
|
-
|
|
83
|
-
|
|
189
|
+
childHead?: {
|
|
190
|
+
_id?: string;
|
|
84
191
|
name?: string;
|
|
85
192
|
label?: string;
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
193
|
+
visible?: boolean;
|
|
194
|
+
required?: boolean;
|
|
195
|
+
key?: string;
|
|
196
|
+
render?: (text: string) => React.JSX.Element;
|
|
197
|
+
ellipsis?: boolean;
|
|
198
|
+
sortable?: boolean;
|
|
199
|
+
filtered?: boolean;
|
|
200
|
+
filters?: {
|
|
201
|
+
text: string;
|
|
202
|
+
value: string;
|
|
203
|
+
}[];
|
|
89
204
|
}[];
|
|
205
|
+
tbody?: ChildRecordType[];
|
|
90
206
|
optionType?: string;
|
|
91
207
|
selectedClassName?: string;
|
|
92
208
|
action?: React.MouseEventHandler<HTMLElement> | string;
|
|
93
209
|
listClassName?: string;
|
|
94
210
|
listItemClassName?: string;
|
|
95
211
|
img?: string;
|
|
212
|
+
video?: string;
|
|
213
|
+
height?: number;
|
|
214
|
+
width?: number;
|
|
215
|
+
imgExpand?: string;
|
|
216
|
+
segmentedValue?: string;
|
|
217
|
+
useSegments?: string;
|
|
218
|
+
imgCollapse?: string;
|
|
96
219
|
items?: {
|
|
97
|
-
|
|
220
|
+
iconClassName?: string;
|
|
221
|
+
href?: string;
|
|
222
|
+
title?: string;
|
|
223
|
+
id?: number;
|
|
224
|
+
key?: number | string;
|
|
225
|
+
element?: string;
|
|
98
226
|
icon?: string;
|
|
99
227
|
label?: string;
|
|
100
|
-
active?:
|
|
228
|
+
active?: number;
|
|
101
229
|
text?: string;
|
|
102
230
|
time?: string;
|
|
103
231
|
name?: string;
|
|
104
232
|
y?: number;
|
|
105
233
|
color?: string;
|
|
234
|
+
isCount?: boolean;
|
|
235
|
+
count?: number;
|
|
236
|
+
isNewMenuItem?: boolean;
|
|
237
|
+
progress?: number;
|
|
238
|
+
className?: string;
|
|
239
|
+
contact?: string;
|
|
240
|
+
status?: string;
|
|
241
|
+
assignedTo?: string;
|
|
242
|
+
user?: string;
|
|
243
|
+
dot?: React.ReactNode;
|
|
244
|
+
children?: string;
|
|
106
245
|
}[];
|
|
107
246
|
primaryText?: string;
|
|
108
247
|
secondaryText?: string;
|
|
@@ -116,6 +255,7 @@ export type ElementType = {
|
|
|
116
255
|
subContainerClassName?: string;
|
|
117
256
|
element?: string;
|
|
118
257
|
secondTextClassName?: string;
|
|
258
|
+
iconClassName?: string;
|
|
119
259
|
iconsClassName?: string;
|
|
120
260
|
labelClassName?: string;
|
|
121
261
|
containerClassName?: string;
|
|
@@ -127,6 +267,7 @@ export type ElementType = {
|
|
|
127
267
|
fillText1?: string;
|
|
128
268
|
fillText2?: string;
|
|
129
269
|
pagination?: boolean;
|
|
270
|
+
antdButton?: boolean;
|
|
130
271
|
required?: boolean;
|
|
131
272
|
is_detail?: boolean;
|
|
132
273
|
checkedChildren?: string;
|
|
@@ -136,9 +277,11 @@ export type ElementType = {
|
|
|
136
277
|
minRows?: number;
|
|
137
278
|
maxRows?: number;
|
|
138
279
|
isSearch?: boolean;
|
|
280
|
+
allowText?: boolean;
|
|
139
281
|
mode?: 'multiple' | 'tags' | undefined;
|
|
140
282
|
picker?: 'date' | 'week' | 'month' | 'quarter' | 'year';
|
|
141
283
|
weekrange?: boolean;
|
|
284
|
+
rangePresets?: boolean;
|
|
142
285
|
message?: string;
|
|
143
286
|
isStatus?: boolean;
|
|
144
287
|
isDelete?: boolean;
|
|
@@ -146,5 +289,31 @@ export type ElementType = {
|
|
|
146
289
|
notificationType?: 'success' | 'info' | 'warning' | 'error';
|
|
147
290
|
showProgress?: boolean;
|
|
148
291
|
isLoading?: boolean;
|
|
292
|
+
isNotChatbot?: boolean;
|
|
293
|
+
allowClear?: boolean;
|
|
294
|
+
isBack?: boolean;
|
|
295
|
+
showCount?: boolean;
|
|
296
|
+
avatarClassName?: string;
|
|
297
|
+
segmentedOptions?: string[] | {
|
|
298
|
+
tooltip: string;
|
|
299
|
+
label: string;
|
|
300
|
+
value: string;
|
|
301
|
+
}[];
|
|
302
|
+
manageRadioButton?: boolean;
|
|
303
|
+
cardClassname?: string;
|
|
304
|
+
autoFocus?: boolean;
|
|
305
|
+
titleClassName?: string;
|
|
306
|
+
fileType?: string[];
|
|
307
|
+
fileSize?: number;
|
|
308
|
+
allowOne?: boolean;
|
|
309
|
+
showSerialNumber?: boolean;
|
|
310
|
+
isTextSelect?: boolean;
|
|
311
|
+
autoSize?: boolean;
|
|
312
|
+
rowClick?: boolean;
|
|
313
|
+
dropdownRender?: (menu: ReactElement<string | JSXElementConstructor<string>>) => ReactElement<string | JSXElementConstructor<string>>;
|
|
314
|
+
isopen?: boolean;
|
|
315
|
+
clickedVal?: string;
|
|
316
|
+
customColor?: boolean;
|
|
149
317
|
};
|
|
318
|
+
export type Colors = 'blue-green' | 'danger' | 'facebook' | 'instagram' | 'primary' | 'secondary' | 'success' | 'turquoise' | 'warning' | 'yellow';
|
|
150
319
|
export {};
|
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
export declare const testIcons: {
|
|
3
|
+
[key: string]: string;
|
|
4
|
+
};
|
|
5
|
+
export declare const sidenavIcons: {
|
|
6
|
+
[key: string]: (props: {
|
|
7
|
+
fill?: string;
|
|
8
|
+
}) => React.ReactNode;
|
|
9
|
+
};
|
|
2
10
|
export declare const icons: {
|
|
3
11
|
[key: string]: React.ReactNode;
|
|
4
12
|
};
|