blob: 3a468284af6f8ee21c393427a1ad16ee803807f8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
export type AccessoryCallback = (props: Record<string, any>) => JSX.Element;
export type Accessory = {
callback: AccessoryCallback;
position?: number;
};
export const accessories = new Map<String, Accessory>();
export function addAccessory(
identifier: string,
callback: AccessoryCallback,
position?: number
) {
accessories.set(identifier, {
callback,
position,
});
}
export function removeAccessory(identifier: string) {
accessories.delete(identifier);
}
export function _modifyAccessories(
elements: JSX.Element[],
props: Record<string, any>
) {
for (const accessory of accessories.values()) {
elements.splice(
accessory.position != null
? accessory.position < 0
? elements.length + accessory.position
: accessory.position
: elements.length,
0,
accessory.callback(props)
);
}
return elements;
}
|