commandbar 1.6.8 → 1.6.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/build/commandbar-js/src/init.d.ts +1 -1
- package/build/internal/src/client/AddContextOptions.d.ts +16 -2
- package/build/internal/src/client/CommandBarClientSDK.d.ts +12 -2
- package/build/internal/src/client/EventHandler.d.ts +12 -2
- package/build/internal/src/middleware/CommandFromClientV.d.ts +32 -0
- package/build/internal/src/middleware/ICommandFromClientType.d.ts +2 -0
- package/build/internal/src/middleware/OrganizationV.d.ts +22 -4
- package/build/internal/src/middleware/ResourceSettingsV.d.ts +16 -2
- package/build/internal/src/middleware/command.d.ts +1888 -32
- package/build/internal/src/middleware/commandCategory.d.ts +49 -0
- package/build/internal/src/middleware/detailPreview.d.ts +21 -0
- package/build/internal/src/middleware/generics.d.ts +10 -2
- package/build/internal/src/middleware/helpDocsIntegration.d.ts +66 -0
- package/build/internal/src/middleware/helpDocsSync.d.ts +42 -0
- package/build/internal/src/middleware/helpers/commandTemplate.d.ts +62 -0
- package/build/internal/src/middleware/helpers/optionGroup.d.ts +2 -0
- package/build/internal/src/middleware/organization.d.ts +161 -55
- package/build/internal/src/middleware/types.d.ts +51 -4
- package/package.json +1 -1
- package/src/init.ts +1 -1
@@ -1,5 +1,6 @@
|
|
1
1
|
/*******************************************************************************/
|
2
2
|
import * as t from 'io-ts';
|
3
|
+
import { GenericBatchRequest } from './generics';
|
3
4
|
export declare const CommandCategoryV: t.IntersectionC<[t.IntersectionC<[t.TypeC<{
|
4
5
|
id: t.NumberC;
|
5
6
|
organization: t.UnionC<[t.NumberC, t.StringC]>;
|
@@ -7,13 +8,33 @@ export declare const CommandCategoryV: t.IntersectionC<[t.IntersectionC<[t.TypeC
|
|
7
8
|
}>, t.PartialC<{}>]>, t.TypeC<{
|
8
9
|
sort_key: t.UnionC<[t.NumberC, t.NullC]>;
|
9
10
|
icon: t.UnionC<[t.StringC, t.NullC]>;
|
11
|
+
render_as: t.UnionC<[t.LiteralC<"list">, t.LiteralC<"grid">]>;
|
10
12
|
setting_hide_before_search: t.BooleanC;
|
11
13
|
setting_max_options_count: t.UnionC<[t.NumberC, t.NullC]>;
|
12
14
|
setting_pin_to_bottom: t.BooleanC;
|
13
15
|
search_tab_enabled: t.BooleanC;
|
14
16
|
search_tab_name: t.StringC;
|
15
17
|
search_tab_instruction: t.StringC;
|
18
|
+
track_recents: t.BooleanC;
|
16
19
|
}>]>;
|
20
|
+
export declare const BatchEditorCategoryResponseV: t.TypeC<{
|
21
|
+
batch: t.ArrayC<t.IntersectionC<[t.IntersectionC<[t.TypeC<{
|
22
|
+
id: t.NumberC;
|
23
|
+
organization: t.UnionC<[t.NumberC, t.StringC]>;
|
24
|
+
name: t.StringC;
|
25
|
+
}>, t.PartialC<{}>]>, t.TypeC<{
|
26
|
+
sort_key: t.UnionC<[t.NumberC, t.NullC]>;
|
27
|
+
icon: t.UnionC<[t.StringC, t.NullC]>;
|
28
|
+
render_as: t.UnionC<[t.LiteralC<"list">, t.LiteralC<"grid">]>;
|
29
|
+
setting_hide_before_search: t.BooleanC;
|
30
|
+
setting_max_options_count: t.UnionC<[t.NumberC, t.NullC]>;
|
31
|
+
setting_pin_to_bottom: t.BooleanC;
|
32
|
+
search_tab_enabled: t.BooleanC;
|
33
|
+
search_tab_name: t.StringC;
|
34
|
+
search_tab_instruction: t.StringC;
|
35
|
+
track_recents: t.BooleanC;
|
36
|
+
}>]>>;
|
37
|
+
}>;
|
17
38
|
export declare class CommandCategory {
|
18
39
|
static create: (object: {
|
19
40
|
id: number;
|
@@ -22,12 +43,14 @@ export declare class CommandCategory {
|
|
22
43
|
} & {} & {
|
23
44
|
sort_key: number | null;
|
24
45
|
icon: string | null;
|
46
|
+
render_as: "grid" | "list";
|
25
47
|
setting_hide_before_search: boolean;
|
26
48
|
setting_max_options_count: number | null;
|
27
49
|
setting_pin_to_bottom: boolean;
|
28
50
|
search_tab_enabled: boolean;
|
29
51
|
search_tab_name: string;
|
30
52
|
search_tab_instruction: string;
|
53
|
+
track_recents: boolean;
|
31
54
|
}, onSuccess?: (() => void) | undefined, onError?: ((err: string) => void) | undefined) => Promise<{
|
32
55
|
id: number;
|
33
56
|
organization: string | number;
|
@@ -35,12 +58,14 @@ export declare class CommandCategory {
|
|
35
58
|
} & {} & {
|
36
59
|
sort_key: number | null;
|
37
60
|
icon: string | null;
|
61
|
+
render_as: "grid" | "list";
|
38
62
|
setting_hide_before_search: boolean;
|
39
63
|
setting_max_options_count: number | null;
|
40
64
|
setting_pin_to_bottom: boolean;
|
41
65
|
search_tab_enabled: boolean;
|
42
66
|
search_tab_name: string;
|
43
67
|
search_tab_instruction: string;
|
68
|
+
track_recents: boolean;
|
44
69
|
}>;
|
45
70
|
static update: (object: {
|
46
71
|
id: number;
|
@@ -49,12 +74,14 @@ export declare class CommandCategory {
|
|
49
74
|
} & {} & {
|
50
75
|
sort_key: number | null;
|
51
76
|
icon: string | null;
|
77
|
+
render_as: "grid" | "list";
|
52
78
|
setting_hide_before_search: boolean;
|
53
79
|
setting_max_options_count: number | null;
|
54
80
|
setting_pin_to_bottom: boolean;
|
55
81
|
search_tab_enabled: boolean;
|
56
82
|
search_tab_name: string;
|
57
83
|
search_tab_instruction: string;
|
84
|
+
track_recents: boolean;
|
58
85
|
}, onSuccess?: (() => void) | undefined, onError?: ((err: string) => void) | undefined) => Promise<{
|
59
86
|
id: number;
|
60
87
|
organization: string | number;
|
@@ -62,12 +89,14 @@ export declare class CommandCategory {
|
|
62
89
|
} & {} & {
|
63
90
|
sort_key: number | null;
|
64
91
|
icon: string | null;
|
92
|
+
render_as: "grid" | "list";
|
65
93
|
setting_hide_before_search: boolean;
|
66
94
|
setting_max_options_count: number | null;
|
67
95
|
setting_pin_to_bottom: boolean;
|
68
96
|
search_tab_enabled: boolean;
|
69
97
|
search_tab_name: string;
|
70
98
|
search_tab_instruction: string;
|
99
|
+
track_recents: boolean;
|
71
100
|
}>;
|
72
101
|
static delete: (id: string | number, onSuccess?: (() => void) | undefined, onError?: ((err: string) => void) | undefined) => Promise<void>;
|
73
102
|
static decode: (data: any) => {
|
@@ -77,11 +106,31 @@ export declare class CommandCategory {
|
|
77
106
|
} & {} & {
|
78
107
|
sort_key: number | null;
|
79
108
|
icon: string | null;
|
109
|
+
render_as: "grid" | "list";
|
80
110
|
setting_hide_before_search: boolean;
|
81
111
|
setting_max_options_count: number | null;
|
82
112
|
setting_pin_to_bottom: boolean;
|
83
113
|
search_tab_enabled: boolean;
|
84
114
|
search_tab_name: string;
|
85
115
|
search_tab_instruction: string;
|
116
|
+
track_recents: boolean;
|
86
117
|
};
|
118
|
+
static batch: (request: t.TypeOf<typeof GenericBatchRequest>) => Promise<{
|
119
|
+
batch: ({
|
120
|
+
id: number;
|
121
|
+
organization: string | number;
|
122
|
+
name: string;
|
123
|
+
} & {} & {
|
124
|
+
sort_key: number | null;
|
125
|
+
icon: string | null;
|
126
|
+
render_as: "grid" | "list";
|
127
|
+
setting_hide_before_search: boolean;
|
128
|
+
setting_max_options_count: number | null;
|
129
|
+
setting_pin_to_bottom: boolean;
|
130
|
+
search_tab_enabled: boolean;
|
131
|
+
search_tab_name: string;
|
132
|
+
search_tab_instruction: string;
|
133
|
+
track_recents: boolean;
|
134
|
+
})[];
|
135
|
+
}>;
|
87
136
|
}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
/*******************************************************************************/
|
2
|
+
import * as t from 'io-ts';
|
3
|
+
export declare const DetailPreviewObjectV: t.TypeC<{
|
4
|
+
type: t.UnionC<[t.LiteralC<"plaintext">, t.LiteralC<"markdown">, t.LiteralC<"html">, t.LiteralC<"react">, t.LiteralC<"video">, t.NullC]>;
|
5
|
+
value: t.StringC;
|
6
|
+
}>;
|
7
|
+
export declare type DetailPreviewObjectType = t.TypeOf<typeof DetailPreviewObjectV>;
|
8
|
+
export declare type DetailPreviewType = string | DetailPreviewObjectType | (string | DetailPreviewObjectType)[];
|
9
|
+
export declare type DataRowMedata = {
|
10
|
+
type: 'command' | 'parameter';
|
11
|
+
label: string;
|
12
|
+
value: any;
|
13
|
+
contextKey?: string;
|
14
|
+
uid?: string;
|
15
|
+
};
|
16
|
+
export declare const DEFAULT_DETAIL_PREVIEW_TYPE: DetailPreviewObjectType['type'];
|
17
|
+
export declare const standardize: (item: undefined | null | DetailPreviewType) => null | DetailPreviewObjectType[];
|
18
|
+
export declare const getFirstDetail: (detail?: DetailPreviewType | null | undefined) => DetailPreviewObjectType | {
|
19
|
+
type: null;
|
20
|
+
value: null;
|
21
|
+
};
|
@@ -5,6 +5,10 @@ declare const GenericObject: t.TypeC<{
|
|
5
5
|
id: t.UnionC<[t.NumberC, t.StringC]>;
|
6
6
|
}>;
|
7
7
|
export declare type GenericObjectType = t.TypeOf<typeof GenericObject>;
|
8
|
+
export declare const GenericBatchRequest: t.TypeC<{
|
9
|
+
batch: t.ArrayC<t.UnknownC>;
|
10
|
+
note: t.StringC;
|
11
|
+
}>;
|
8
12
|
declare function createObject<T, Q, O, I>(output: t.Type<T, O, I>, input: t.Type<Q, O, I>, url: string, params?: Record<string, string>): (object: Q, onSuccess?: () => void, onError?: (err: string) => void) => Promise<T>;
|
9
13
|
declare function readObject<T, O, I>(arg: t.Type<T, O, I>, url: string): (arg0: string, params?: Record<string, string>, callbacks?: {
|
10
14
|
onSuccess?: () => void;
|
@@ -25,8 +29,12 @@ declare function createObjectDetail<T, O, I, J, K, Q extends GenericObjectType>(
|
|
25
29
|
declare function loadIDList(ids: number[], klass: any, method?: string, urlArgs?: {
|
26
30
|
[arg: string]: string;
|
27
31
|
}): Promise<any[]>;
|
28
|
-
declare function read<T, O, I>(
|
32
|
+
declare function read<T, O, I>(output: t.Type<T, O, I>, url: string): (params?: Record<string, string>, callbacks?: {
|
33
|
+
onSuccess?: () => void;
|
34
|
+
onError?: (err: string) => void;
|
35
|
+
}) => Promise<T>;
|
36
|
+
declare function update<T, O, I, Q>(output: t.Type<T, O, I>, input: t.Type<Q, O, I>, url: string): (object: Q, params?: Record<string, string>, callbacks?: {
|
29
37
|
onSuccess?: () => void;
|
30
38
|
onError?: (err: string) => void;
|
31
39
|
}) => Promise<T>;
|
32
|
-
export { createObject, createObjectDetail, read, readObject, listObject, updateObject, deleteObject, GenericObject, readObjectDetail, updateObjectDetail, loadIDList, decodeToPromise, decodeThrowing, };
|
40
|
+
export { createObject, createObjectDetail, read, readObject, listObject, update, updateObject, deleteObject, GenericObject, readObjectDetail, updateObjectDetail, loadIDList, decodeToPromise, decodeThrowing, };
|
@@ -0,0 +1,66 @@
|
|
1
|
+
import * as t from 'io-ts';
|
2
|
+
export declare const HelpDocsIntegrationV: t.IntersectionC<[t.TypeC<{
|
3
|
+
id: t.NumberC;
|
4
|
+
organization: t.StringC;
|
5
|
+
type: t.StringC;
|
6
|
+
schedule: t.StringC;
|
7
|
+
meta: t.UnionC<[t.RecordC<t.StringC, t.AnyC>, t.NullC]>;
|
8
|
+
}>, t.PartialC<{}>]>;
|
9
|
+
export declare class HelpDocsIntegration {
|
10
|
+
static create: (object: {
|
11
|
+
id: number;
|
12
|
+
organization: string;
|
13
|
+
type: string;
|
14
|
+
schedule: string;
|
15
|
+
meta: {
|
16
|
+
[x: string]: any;
|
17
|
+
} | null;
|
18
|
+
} & {}, onSuccess?: (() => void) | undefined, onError?: ((err: string) => void) | undefined) => Promise<{
|
19
|
+
id: number;
|
20
|
+
organization: string;
|
21
|
+
type: string;
|
22
|
+
schedule: string;
|
23
|
+
meta: {
|
24
|
+
[x: string]: any;
|
25
|
+
} | null;
|
26
|
+
} & {}>;
|
27
|
+
static read: (arg0: string, params?: Record<string, string> | undefined, callbacks?: {
|
28
|
+
onSuccess?: (() => void) | undefined;
|
29
|
+
onError?: ((err: string) => void) | undefined;
|
30
|
+
} | undefined) => Promise<{
|
31
|
+
id: number;
|
32
|
+
organization: string;
|
33
|
+
type: string;
|
34
|
+
schedule: string;
|
35
|
+
meta: {
|
36
|
+
[x: string]: any;
|
37
|
+
} | null;
|
38
|
+
} & {}>;
|
39
|
+
static list: (onSuccess?: (() => void) | undefined, onError?: ((err: string) => void) | undefined) => Promise<({
|
40
|
+
id: number;
|
41
|
+
organization: string;
|
42
|
+
type: string;
|
43
|
+
schedule: string;
|
44
|
+
meta: {
|
45
|
+
[x: string]: any;
|
46
|
+
} | null;
|
47
|
+
} & {})[]>;
|
48
|
+
static update: (object: {
|
49
|
+
id: number;
|
50
|
+
organization: string;
|
51
|
+
type: string;
|
52
|
+
schedule: string;
|
53
|
+
meta: {
|
54
|
+
[x: string]: any;
|
55
|
+
} | null;
|
56
|
+
} & {}, onSuccess?: (() => void) | undefined, onError?: ((err: string) => void) | undefined) => Promise<{
|
57
|
+
id: number;
|
58
|
+
organization: string;
|
59
|
+
type: string;
|
60
|
+
schedule: string;
|
61
|
+
meta: {
|
62
|
+
[x: string]: any;
|
63
|
+
} | null;
|
64
|
+
} & {}>;
|
65
|
+
static delete: (id: string | number, onSuccess?: (() => void) | undefined, onError?: ((err: string) => void) | undefined) => Promise<void>;
|
66
|
+
}
|
@@ -0,0 +1,42 @@
|
|
1
|
+
import * as t from 'io-ts';
|
2
|
+
export declare const HelpDocsSyncV: t.IntersectionC<[t.TypeC<{
|
3
|
+
id: t.NumberC;
|
4
|
+
integration: t.NumberC;
|
5
|
+
scheduled: t.BooleanC;
|
6
|
+
}>, t.PartialC<{
|
7
|
+
commands: t.ArrayC<t.NumberC>;
|
8
|
+
started: t.StringC;
|
9
|
+
ended: t.StringC;
|
10
|
+
log: t.ArrayC<t.ArrayC<t.AnyC>>;
|
11
|
+
}>]>;
|
12
|
+
export declare class HelpDocsSync {
|
13
|
+
static create: (object: {
|
14
|
+
id: number;
|
15
|
+
integration: number;
|
16
|
+
scheduled: boolean;
|
17
|
+
} & {
|
18
|
+
commands?: number[] | undefined;
|
19
|
+
started?: string | undefined;
|
20
|
+
ended?: string | undefined;
|
21
|
+
log?: any[][] | undefined;
|
22
|
+
}, onSuccess?: (() => void) | undefined, onError?: ((err: string) => void) | undefined) => Promise<{
|
23
|
+
id: number;
|
24
|
+
integration: number;
|
25
|
+
scheduled: boolean;
|
26
|
+
} & {
|
27
|
+
commands?: number[] | undefined;
|
28
|
+
started?: string | undefined;
|
29
|
+
ended?: string | undefined;
|
30
|
+
log?: any[][] | undefined;
|
31
|
+
}>;
|
32
|
+
static list: (onSuccess?: (() => void) | undefined, onError?: ((err: string) => void) | undefined) => Promise<({
|
33
|
+
id: number;
|
34
|
+
integration: number;
|
35
|
+
scheduled: boolean;
|
36
|
+
} & {
|
37
|
+
commands?: number[] | undefined;
|
38
|
+
started?: string | undefined;
|
39
|
+
ended?: string | undefined;
|
40
|
+
log?: any[][] | undefined;
|
41
|
+
})[]>;
|
42
|
+
}
|
@@ -61,6 +61,15 @@ export declare const WebhookTemplateV: t.IntersectionC<[t.TypeC<{
|
|
61
61
|
hoverTooltip: t.BooleanC;
|
62
62
|
operation: t.UnionC<[t.LiteralC<"router">, t.LiteralC<"self">, t.LiteralC<"blank">, t.UndefinedC]>;
|
63
63
|
}>]>]>;
|
64
|
+
export declare const AppCuesTemplateV: t.IntersectionC<[t.TypeC<{
|
65
|
+
type: t.LiteralC<"appcues">;
|
66
|
+
value: t.StringC;
|
67
|
+
}>, t.IntersectionC<[t.TypeC<{}>, t.PartialC<{
|
68
|
+
commandType: t.UnionC<[t.LiteralC<"independent">, t.LiteralC<"object">, t.LiteralC<"help">]>;
|
69
|
+
object: t.StringC;
|
70
|
+
hoverTooltip: t.BooleanC;
|
71
|
+
operation: t.UnionC<[t.LiteralC<"router">, t.LiteralC<"self">, t.LiteralC<"blank">, t.UndefinedC]>;
|
72
|
+
}>]>]>;
|
64
73
|
export declare const ScriptTemplateV: t.IntersectionC<[t.TypeC<{
|
65
74
|
type: t.LiteralC<"script">;
|
66
75
|
value: t.StringC;
|
@@ -70,6 +79,34 @@ export declare const ScriptTemplateV: t.IntersectionC<[t.TypeC<{
|
|
70
79
|
hoverTooltip: t.BooleanC;
|
71
80
|
operation: t.UnionC<[t.LiteralC<"router">, t.LiteralC<"self">, t.LiteralC<"blank">, t.UndefinedC]>;
|
72
81
|
}>]>]>;
|
82
|
+
export declare const RequestV: t.IntersectionC<[t.TypeC<{
|
83
|
+
method: t.UnionC<[t.LiteralC<"get">, t.LiteralC<"delete">, t.LiteralC<"head">, t.LiteralC<"options">, t.LiteralC<"post">, t.LiteralC<"put">, t.LiteralC<"patch">]>;
|
84
|
+
url: t.StringC;
|
85
|
+
}>, t.PartialC<{
|
86
|
+
headers: t.UnknownRecordC;
|
87
|
+
body: t.UnknownRecordC;
|
88
|
+
onSend: t.StringC;
|
89
|
+
onSuccess: t.StringC;
|
90
|
+
onError: t.StringC;
|
91
|
+
}>]>;
|
92
|
+
export declare const RequestTemplateV: t.IntersectionC<[t.TypeC<{
|
93
|
+
type: t.LiteralC<"request">;
|
94
|
+
value: t.IntersectionC<[t.TypeC<{
|
95
|
+
method: t.UnionC<[t.LiteralC<"get">, t.LiteralC<"delete">, t.LiteralC<"head">, t.LiteralC<"options">, t.LiteralC<"post">, t.LiteralC<"put">, t.LiteralC<"patch">]>;
|
96
|
+
url: t.StringC;
|
97
|
+
}>, t.PartialC<{
|
98
|
+
headers: t.UnknownRecordC;
|
99
|
+
body: t.UnknownRecordC;
|
100
|
+
onSend: t.StringC;
|
101
|
+
onSuccess: t.StringC;
|
102
|
+
onError: t.StringC;
|
103
|
+
}>]>;
|
104
|
+
}>, t.IntersectionC<[t.TypeC<{}>, t.PartialC<{
|
105
|
+
commandType: t.UnionC<[t.LiteralC<"independent">, t.LiteralC<"object">, t.LiteralC<"help">]>;
|
106
|
+
object: t.StringC;
|
107
|
+
hoverTooltip: t.BooleanC;
|
108
|
+
operation: t.UnionC<[t.LiteralC<"router">, t.LiteralC<"self">, t.LiteralC<"blank">, t.UndefinedC]>;
|
109
|
+
}>]>]>;
|
73
110
|
export declare const TemplateV: t.UnionC<[t.IntersectionC<[t.TypeC<{
|
74
111
|
type: t.LiteralC<"admin">;
|
75
112
|
value: t.StringC;
|
@@ -126,4 +163,29 @@ export declare const TemplateV: t.UnionC<[t.IntersectionC<[t.TypeC<{
|
|
126
163
|
object: t.StringC;
|
127
164
|
hoverTooltip: t.BooleanC;
|
128
165
|
operation: t.UnionC<[t.LiteralC<"router">, t.LiteralC<"self">, t.LiteralC<"blank">, t.UndefinedC]>;
|
166
|
+
}>]>]>, t.IntersectionC<[t.TypeC<{
|
167
|
+
type: t.LiteralC<"request">;
|
168
|
+
value: t.IntersectionC<[t.TypeC<{
|
169
|
+
method: t.UnionC<[t.LiteralC<"get">, t.LiteralC<"delete">, t.LiteralC<"head">, t.LiteralC<"options">, t.LiteralC<"post">, t.LiteralC<"put">, t.LiteralC<"patch">]>;
|
170
|
+
url: t.StringC;
|
171
|
+
}>, t.PartialC<{
|
172
|
+
headers: t.UnknownRecordC;
|
173
|
+
body: t.UnknownRecordC;
|
174
|
+
onSend: t.StringC;
|
175
|
+
onSuccess: t.StringC;
|
176
|
+
onError: t.StringC;
|
177
|
+
}>]>;
|
178
|
+
}>, t.IntersectionC<[t.TypeC<{}>, t.PartialC<{
|
179
|
+
commandType: t.UnionC<[t.LiteralC<"independent">, t.LiteralC<"object">, t.LiteralC<"help">]>;
|
180
|
+
object: t.StringC;
|
181
|
+
hoverTooltip: t.BooleanC;
|
182
|
+
operation: t.UnionC<[t.LiteralC<"router">, t.LiteralC<"self">, t.LiteralC<"blank">, t.UndefinedC]>;
|
183
|
+
}>]>]>, t.IntersectionC<[t.TypeC<{
|
184
|
+
type: t.LiteralC<"appcues">;
|
185
|
+
value: t.StringC;
|
186
|
+
}>, t.IntersectionC<[t.TypeC<{}>, t.PartialC<{
|
187
|
+
commandType: t.UnionC<[t.LiteralC<"independent">, t.LiteralC<"object">, t.LiteralC<"help">]>;
|
188
|
+
object: t.StringC;
|
189
|
+
hoverTooltip: t.BooleanC;
|
190
|
+
operation: t.UnionC<[t.LiteralC<"router">, t.LiteralC<"self">, t.LiteralC<"blank">, t.UndefinedC]>;
|
129
191
|
}>]>]>]>;
|