@dcl/asset-packs 2.3.1 → 2.4.0

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.
Files changed (61) hide show
  1. package/bin/index.js +3722 -1596
  2. package/catalog.json +127 -1
  3. package/dist/admin-toolkit-ui/Active.d.ts +11 -0
  4. package/dist/admin-toolkit-ui/Active.js +32 -0
  5. package/dist/admin-toolkit-ui/Button.d.ts +22 -9
  6. package/dist/admin-toolkit-ui/Button.js +45 -28
  7. package/dist/admin-toolkit-ui/Card.d.ts +6 -0
  8. package/dist/admin-toolkit-ui/Card.js +22 -0
  9. package/dist/admin-toolkit-ui/Error.d.ts +9 -0
  10. package/dist/admin-toolkit-ui/Error.js +31 -0
  11. package/dist/admin-toolkit-ui/Header.d.ts +8 -0
  12. package/dist/admin-toolkit-ui/Header.js +17 -0
  13. package/dist/admin-toolkit-ui/Loading.d.ts +11 -0
  14. package/dist/admin-toolkit-ui/Loading.js +31 -0
  15. package/dist/admin-toolkit-ui/ModerationControl/AddUserInput.d.ts +7 -0
  16. package/dist/admin-toolkit-ui/ModerationControl/AddUserInput.js +67 -0
  17. package/dist/admin-toolkit-ui/ModerationControl/AdminList.d.ts +10 -0
  18. package/dist/admin-toolkit-ui/ModerationControl/AdminList.js +192 -0
  19. package/dist/admin-toolkit-ui/ModerationControl/RemoveAdminConfirmation.d.ts +8 -0
  20. package/dist/admin-toolkit-ui/ModerationControl/RemoveAdminConfirmation.js +75 -0
  21. package/dist/admin-toolkit-ui/ModerationControl/api.d.ts +12 -0
  22. package/dist/admin-toolkit-ui/ModerationControl/api.js +28 -0
  23. package/dist/admin-toolkit-ui/ModerationControl/index.d.ts +23 -0
  24. package/dist/admin-toolkit-ui/ModerationControl/index.js +37 -0
  25. package/dist/admin-toolkit-ui/SmartItemsControl.js +34 -56
  26. package/dist/admin-toolkit-ui/TextAnnouncementsControl.js +50 -59
  27. package/dist/admin-toolkit-ui/VideoControl/LiveStream/DeleteStreamKey.d.ts +7 -0
  28. package/dist/admin-toolkit-ui/VideoControl/LiveStream/DeleteStreamKey.js +62 -0
  29. package/dist/admin-toolkit-ui/{VideoControl.d.ts → VideoControl/LiveStream/GenerateStreamKey.d.ts} +2 -3
  30. package/dist/admin-toolkit-ui/VideoControl/LiveStream/GenerateStreamKey.js +41 -0
  31. package/dist/admin-toolkit-ui/VideoControl/LiveStream/ShowStreamKey.d.ts +11 -0
  32. package/dist/admin-toolkit-ui/VideoControl/LiveStream/ShowStreamKey.js +112 -0
  33. package/dist/admin-toolkit-ui/VideoControl/LiveStream/index.d.ts +10 -0
  34. package/dist/admin-toolkit-ui/VideoControl/LiveStream/index.js +62 -0
  35. package/dist/admin-toolkit-ui/VideoControl/VideoUrl.d.ts +9 -0
  36. package/dist/admin-toolkit-ui/VideoControl/VideoUrl.js +125 -0
  37. package/dist/admin-toolkit-ui/VideoControl/VolumeControl.d.ts +8 -0
  38. package/dist/admin-toolkit-ui/VideoControl/VolumeControl.js +82 -0
  39. package/dist/admin-toolkit-ui/VideoControl/api.d.ts +12 -0
  40. package/dist/admin-toolkit-ui/VideoControl/api.js +17 -0
  41. package/dist/admin-toolkit-ui/VideoControl/index.d.ts +28 -0
  42. package/dist/admin-toolkit-ui/VideoControl/index.js +107 -0
  43. package/dist/admin-toolkit-ui/VideoControl/utils.d.ts +28 -0
  44. package/dist/admin-toolkit-ui/VideoControl/utils.js +87 -0
  45. package/dist/admin-toolkit-ui/fetch-utils.d.ts +14 -0
  46. package/dist/admin-toolkit-ui/fetch-utils.js +41 -0
  47. package/dist/admin-toolkit-ui/index.d.ts +11 -0
  48. package/dist/admin-toolkit-ui/index.js +200 -272
  49. package/dist/admin-toolkit-ui/types.d.ts +0 -2
  50. package/dist/admin-toolkit-ui/types.js +1 -1
  51. package/dist/admin-toolkit-ui/utils.d.ts +10 -2
  52. package/dist/admin-toolkit-ui/utils.js +31 -51
  53. package/dist/bin/index.js +3722 -1596
  54. package/dist/definitions.d.ts +18 -17
  55. package/dist/definitions.js +12 -10
  56. package/dist/enums.d.ts +5 -0
  57. package/dist/enums.js +7 -1
  58. package/dist/id.d.ts +2 -4
  59. package/dist/scene-entrypoint.js +1 -1
  60. package/package.json +6 -6
  61. package/dist/admin-toolkit-ui/VideoControl.js +0 -297
@@ -0,0 +1,12 @@
1
+ import { Result } from "../fetch-utils";
2
+ type StreamKeyResponse = {
3
+ streamingUrl: string;
4
+ streamingKey: string;
5
+ createdAt: number;
6
+ endsAt: number;
7
+ };
8
+ export declare function getStreamKey(): Promise<Result<StreamKeyResponse, string>>;
9
+ export declare function generateStreamKey(): Promise<Result<StreamKeyResponse, string>>;
10
+ export declare function revokeStreamKey(): Promise<Result<StreamKeyResponse, string>>;
11
+ export declare function resetStreamKey(): Promise<Result<StreamKeyResponse, string>>;
12
+ export {};
@@ -0,0 +1,17 @@
1
+ import { getDomain, wrapSignedFetch } from "../fetch-utils";
2
+ const URLS = () => ({
3
+ STREAM_KEY: `https://comms-gatekeeper.decentraland.${getDomain()}/scene-stream-access`,
4
+ });
5
+ export async function getStreamKey() {
6
+ return wrapSignedFetch({ url: URLS().STREAM_KEY }, { toCamelCase: true });
7
+ }
8
+ export async function generateStreamKey() {
9
+ return wrapSignedFetch({ url: URLS().STREAM_KEY, init: { method: 'POST', headers: {} } }, { toCamelCase: true });
10
+ }
11
+ export async function revokeStreamKey() {
12
+ return wrapSignedFetch({ url: URLS().STREAM_KEY, init: { method: 'DELETE', headers: {} } });
13
+ }
14
+ export async function resetStreamKey() {
15
+ return wrapSignedFetch({ url: URLS().STREAM_KEY, init: { method: 'PUT', headers: {} } }, { toCamelCase: true });
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FkbWluLXRvb2xraXQtdWkvVmlkZW9Db250cm9sL2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRW5FLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDbEIsVUFBVSxFQUFFLHlDQUF5QyxTQUFTLEVBQUUsc0JBQXNCO0NBQ3ZGLENBQUMsQ0FBQTtBQVNGLE1BQU0sQ0FBQyxLQUFLLFVBQVUsWUFBWTtJQUNoQyxPQUFPLGVBQWUsQ0FBb0IsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtBQUM5RixDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxpQkFBaUI7SUFDckMsT0FBTyxlQUFlLENBQW9CLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxFQUFHLEVBQUMsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7QUFDckksQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsZUFBZTtJQUNuQyxPQUFPLGVBQWUsQ0FBb0IsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQTtBQUNoSCxDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxjQUFjO0lBQ2xDLE9BQU8sZUFBZSxDQUFvQixFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0FBQ3BJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXREb21haW4sIFJlc3VsdCwgd3JhcFNpZ25lZEZldGNoIH0gZnJvbSBcIi4uL2ZldGNoLXV0aWxzXCJcblxuY29uc3QgVVJMUyA9ICgpID0+ICh7XG4gIFNUUkVBTV9LRVk6IGBodHRwczovL2NvbW1zLWdhdGVrZWVwZXIuZGVjZW50cmFsYW5kLiR7Z2V0RG9tYWluKCl9L3NjZW5lLXN0cmVhbS1hY2Nlc3NgLFxufSlcblxudHlwZSBTdHJlYW1LZXlSZXNwb25zZSA9IHtcbiAgc3RyZWFtaW5nVXJsOiBzdHJpbmdcbiAgc3RyZWFtaW5nS2V5OiBzdHJpbmdcbiAgY3JlYXRlZEF0OiBudW1iZXJcbiAgZW5kc0F0OiBudW1iZXJcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFN0cmVhbUtleSgpOiBQcm9taXNlPFJlc3VsdDxTdHJlYW1LZXlSZXNwb25zZSwgc3RyaW5nPj4gIHtcbiAgcmV0dXJuIHdyYXBTaWduZWRGZXRjaDxTdHJlYW1LZXlSZXNwb25zZT4oeyB1cmw6IFVSTFMoKS5TVFJFQU1fS0VZIH0sIHsgdG9DYW1lbENhc2U6IHRydWUgfSlcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlU3RyZWFtS2V5KCk6IFByb21pc2U8UmVzdWx0PFN0cmVhbUtleVJlc3BvbnNlLCBzdHJpbmc+PiAge1xuICByZXR1cm4gd3JhcFNpZ25lZEZldGNoPFN0cmVhbUtleVJlc3BvbnNlPih7IHVybDogVVJMUygpLlNUUkVBTV9LRVksIGluaXQ6IHsgbWV0aG9kOiAnUE9TVCcsIGhlYWRlcnM6IHsgfX0gfSwgeyB0b0NhbWVsQ2FzZTogdHJ1ZSB9KVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmV2b2tlU3RyZWFtS2V5KCk6IFByb21pc2U8UmVzdWx0PFN0cmVhbUtleVJlc3BvbnNlLCBzdHJpbmc+PiAge1xuICByZXR1cm4gd3JhcFNpZ25lZEZldGNoPFN0cmVhbUtleVJlc3BvbnNlPih7IHVybDogVVJMUygpLlNUUkVBTV9LRVksIGluaXQ6IHsgbWV0aG9kOiAnREVMRVRFJywgaGVhZGVyczoge30gfSB9KVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVzZXRTdHJlYW1LZXkoKTogUHJvbWlzZTxSZXN1bHQ8U3RyZWFtS2V5UmVzcG9uc2UsIHN0cmluZz4+ICB7XG4gIHJldHVybiB3cmFwU2lnbmVkRmV0Y2g8U3RyZWFtS2V5UmVzcG9uc2U+KHsgdXJsOiBVUkxTKCkuU1RSRUFNX0tFWSwgaW5pdDogeyBtZXRob2Q6ICdQVVQnLCBoZWFkZXJzOiB7fSB9IH0sIHsgdG9DYW1lbENhc2U6IHRydWUgfSlcbn1cbiJdfQ==
@@ -0,0 +1,28 @@
1
+ import { IEngine } from '@dcl/ecs';
2
+ import ReactEcs from '@dcl/react-ecs';
3
+ import { Color4 } from '@dcl/sdk/math';
4
+ import { State } from '../types';
5
+ export declare const ICONS: {
6
+ readonly VIDEO_CONTROL: "https://builder-items.decentraland.org/admin_toolkit/assets/icons/video-control.png";
7
+ readonly PREVIOUS_BUTTON: "https://builder-items.decentraland.org/admin_toolkit/assets/icons/video-control-previous-button.png";
8
+ readonly FORWARD_BUTTON: "https://builder-items.decentraland.org/admin_toolkit/assets/icons/video-control-forward-button.png";
9
+ readonly PLAY_BUTTON: "https://builder-items.decentraland.org/admin_toolkit/assets/icons/video-control-play-button.png";
10
+ readonly MUTE: "https://builder-items.decentraland.org/admin_toolkit/assets/icons/video-control-mute.png";
11
+ readonly LOOP: "https://builder-items.decentraland.org/admin_toolkit/assets/icons/video-control-loop.png";
12
+ readonly VOLUME_MINUS_BUTTON: "https://builder-items.decentraland.org/admin_toolkit/assets/icons/video-control-volume-minus-button.png";
13
+ readonly VOLUME_PLUS_BUTTON: "https://builder-items.decentraland.org/admin_toolkit/assets/icons/video-control-volume-plus-button.png";
14
+ readonly VIDEO_SOURCE: "https://builder-items.decentraland.org/admin_toolkit/assets/icons/video-control-video.png";
15
+ readonly LIVE_SOURCE: "https://builder-items.decentraland.org/admin_toolkit/assets/icons/video-control-live.png";
16
+ readonly INFO: "https://builder-items.decentraland.org/admin_toolkit/assets/icons/info.png";
17
+ };
18
+ export declare const VOLUME_STEP = 0.1;
19
+ export declare const DEFAULT_VOLUME = 1;
20
+ export declare const COLORS: {
21
+ readonly WHITE: Color4.MutableColor4;
22
+ readonly GRAY: Color4.MutableColor4;
23
+ readonly SUCCESS: Color4.MutableColor4;
24
+ };
25
+ export declare function VideoControl({ engine, state, }: {
26
+ engine: IEngine;
27
+ state: State;
28
+ }): ReactEcs.JSX.Element;
@@ -0,0 +1,107 @@
1
+ import ReactEcs, { Label, UiEntity, Dropdown } from '@dcl/react-ecs';
2
+ import { Color4 } from '@dcl/sdk/math';
3
+ import { getScaleUIFactor } from '../../ui';
4
+ import { Button } from '../Button';
5
+ import { CONTENT_URL } from '../constants';
6
+ import { Header } from '../Header';
7
+ import { getVideoPlayers, useSelectedVideoPlayer } from './utils';
8
+ import { Card } from '../Card';
9
+ import { VideoControlURL } from './VideoUrl';
10
+ import { LiveStream } from './LiveStream';
11
+ import { Active } from '../Active';
12
+ import { LIVEKIT_STREAM_SRC } from '../../definitions';
13
+ export const ICONS = {
14
+ VIDEO_CONTROL: `${CONTENT_URL}/admin_toolkit/assets/icons/video-control.png`,
15
+ PREVIOUS_BUTTON: `${CONTENT_URL}/admin_toolkit/assets/icons/video-control-previous-button.png`,
16
+ FORWARD_BUTTON: `${CONTENT_URL}/admin_toolkit/assets/icons/video-control-forward-button.png`,
17
+ PLAY_BUTTON: `${CONTENT_URL}/admin_toolkit/assets/icons/video-control-play-button.png`,
18
+ MUTE: `${CONTENT_URL}/admin_toolkit/assets/icons/video-control-mute.png`,
19
+ LOOP: `${CONTENT_URL}/admin_toolkit/assets/icons/video-control-loop.png`,
20
+ VOLUME_MINUS_BUTTON: `${CONTENT_URL}/admin_toolkit/assets/icons/video-control-volume-minus-button.png`,
21
+ VOLUME_PLUS_BUTTON: `${CONTENT_URL}/admin_toolkit/assets/icons/video-control-volume-plus-button.png`,
22
+ VIDEO_SOURCE: `${CONTENT_URL}/admin_toolkit/assets/icons/video-control-video.png`,
23
+ LIVE_SOURCE: `${CONTENT_URL}/admin_toolkit/assets/icons/video-control-live.png`,
24
+ INFO: `${CONTENT_URL}/admin_toolkit/assets/icons/info.png`,
25
+ };
26
+ export const VOLUME_STEP = 0.1;
27
+ export const DEFAULT_VOLUME = 1;
28
+ export const COLORS = {
29
+ WHITE: Color4.White(),
30
+ GRAY: Color4.create(160 / 255, 155 / 255, 168 / 255, 1),
31
+ SUCCESS: Color4.fromHexString('#34CE77'),
32
+ };
33
+ export function VideoControl({ engine, state, }) {
34
+ const [selectedEntity, selectedVideo] = useSelectedVideoPlayer(engine) ?? [];
35
+ const scaleFactor = getScaleUIFactor(engine);
36
+ const videoPlayers = getVideoPlayers(engine);
37
+ const [selected, setSelected] = ReactEcs.useState(undefined);
38
+ ReactEcs.useEffect(() => {
39
+ setSelected(selectedVideo && selectedVideo.src.startsWith('https://')
40
+ ? 'video-url'
41
+ : 'live');
42
+ }, [state.videoControl.selectedVideoPlayer]);
43
+ return (ReactEcs.createElement(UiEntity, { uiTransform: { flexDirection: 'column', width: '100%', height: '100%' } },
44
+ ReactEcs.createElement(Card, { scaleFactor: scaleFactor, uiTransform: {
45
+ padding: {
46
+ top: 32 * scaleFactor,
47
+ right: 32 * scaleFactor,
48
+ bottom: 0,
49
+ left: 32 * scaleFactor,
50
+ },
51
+ } },
52
+ ReactEcs.createElement(UiEntity, { uiTransform: {
53
+ width: '100%',
54
+ height: '100%',
55
+ flexDirection: 'column',
56
+ } },
57
+ ReactEcs.createElement(Header, { iconSrc: ICONS.VIDEO_CONTROL, title: "<b>VIDEO SCREENS</b>", scaleFactor: scaleFactor }),
58
+ videoPlayers.length > 1 && ReactEcs.createElement(Label, { value: "<b>Current Screen</b>", fontSize: 16 * scaleFactor, color: Color4.White(), uiTransform: { margin: { bottom: 16 * scaleFactor } } }),
59
+ ReactEcs.createElement(UiEntity, { uiTransform: {
60
+ flexDirection: 'column',
61
+ margin: { bottom: 16 * scaleFactor },
62
+ } },
63
+ videoPlayers.length > 1 && (ReactEcs.createElement(UiEntity, { uiTransform: { flexDirection: 'column' } },
64
+ ReactEcs.createElement(Dropdown, { options: videoPlayers.map((player) => `<b>${player.customName}</b>`), selectedIndex: state.videoControl.selectedVideoPlayer ?? 0, onChange: (idx) => (state.videoControl.selectedVideoPlayer = idx), textAlign: "middle-left", fontSize: 16 * scaleFactor, uiTransform: {
65
+ margin: { right: 8 * scaleFactor },
66
+ width: '100%',
67
+ }, uiBackground: { color: Color4.White() } }))),
68
+ ReactEcs.createElement(Label, { fontSize: 16 * scaleFactor, value: "<b>Media Source</b>", color: Color4.White(), uiTransform: { margin: { bottom: 2 * scaleFactor, top: 16 * scaleFactor } } }),
69
+ ReactEcs.createElement(UiEntity, { uiTransform: {
70
+ margin: { top: 10 * scaleFactor },
71
+ flexDirection: 'row',
72
+ width: '100%',
73
+ } },
74
+ ReactEcs.createElement(UiEntity, { uiTransform: { width: '50%', padding: { right: 8 * scaleFactor } } },
75
+ ReactEcs.createElement(CustomButton, { engine: engine, id: "video_control_url", value: "<b>VIDEO URL</b>", icon: ICONS.VIDEO_SOURCE, onClick: () => setSelected('video-url'), scaleFactor: scaleFactor, selected: selected === 'video-url', active: selectedVideo && selectedVideo.src.startsWith('https://') })),
76
+ ReactEcs.createElement(UiEntity, { uiTransform: { width: '50%', padding: { left: 8 * scaleFactor } } },
77
+ ReactEcs.createElement(CustomButton, { engine: engine, id: "video_control_live", value: "<b>LIVE STREAM</b>", icon: ICONS.LIVE_SOURCE, onClick: () => setSelected('live'), active: selectedVideo &&
78
+ selectedVideo.src.startsWith(LIVEKIT_STREAM_SRC), scaleFactor: scaleFactor, selected: selected === 'live' })))))),
79
+ selected && selectedEntity && (ReactEcs.createElement(Card, { scaleFactor: scaleFactor },
80
+ selected === 'video-url' && (ReactEcs.createElement(VideoControlURL, { engine: engine, scaleFactor: scaleFactor, entity: selectedEntity, video: selectedVideo })),
81
+ selected === 'live' && (ReactEcs.createElement(LiveStream, { engine: engine, scaleFactor: scaleFactor, entity: selectedEntity, video: selectedVideo }))))));
82
+ }
83
+ function CustomButton({ active, scaleFactor, value, id, onClick, icon, selected, engine }) {
84
+ return (ReactEcs.createElement(UiEntity, { uiTransform: { flexDirection: 'column', height: '100%', width: '100%' } },
85
+ ReactEcs.createElement(UiEntity, { uiTransform: { width: '100%' } },
86
+ ReactEcs.createElement(Button, { id: id, onMouseDown: onClick, value: value, fontSize: 14 * scaleFactor, icon: icon, iconTransform: {
87
+ width: 24 * scaleFactor,
88
+ height: 24 * scaleFactor,
89
+ margin: { right: 8 * scaleFactor },
90
+ }, color: selected ? Color4.Black() : Color4.fromHexString('#FCFCFC'), iconBackground: {
91
+ color: selected ? Color4.Black() : Color4.fromHexString('#FCFCFC'),
92
+ }, uiBackground: {
93
+ color: selected ? Color4.White() : Color4.fromHexString('#43404A'),
94
+ }, uiTransform: {
95
+ padding: {
96
+ top: 6 * scaleFactor,
97
+ bottom: 6 * scaleFactor,
98
+ },
99
+ borderRadius: 6 * scaleFactor,
100
+ alignItems: 'center',
101
+ justifyContent: 'center',
102
+ width: '100%',
103
+ height: 36 * scaleFactor
104
+ } })),
105
+ active && ReactEcs.createElement(Active, { scaleFactor: scaleFactor, engine: engine, uiTransform: { width: '100%', margin: { top: 6 * scaleFactor } } })));
106
+ }
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS9WaWRlb0NvbnRyb2wvaW5kZXgudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sUUFBUSxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3RDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ2xDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFMUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNsQyxPQUFPLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ2pFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDOUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUM1QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDbEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFHdEQsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHO0lBQ25CLGFBQWEsRUFBRSxHQUFHLFdBQVcsK0NBQStDO0lBQzVFLGVBQWUsRUFBRSxHQUFHLFdBQVcsK0RBQStEO0lBQzlGLGNBQWMsRUFBRSxHQUFHLFdBQVcsOERBQThEO0lBQzVGLFdBQVcsRUFBRSxHQUFHLFdBQVcsMkRBQTJEO0lBQ3RGLElBQUksRUFBRSxHQUFHLFdBQVcsb0RBQW9EO0lBQ3hFLElBQUksRUFBRSxHQUFHLFdBQVcs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LENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEVBQ2xFLGNBQWMsRUFBRTtvQkFDZCxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO2lCQUNuRSxFQUNELFlBQVksRUFBRTtvQkFDWixLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO2lCQUNuRSxFQUNELFdBQVcsRUFBRTtvQkFDWCxPQUFPLEVBQUU7d0JBQ1AsR0FBRyxFQUFFLENBQUMsR0FBRyxXQUFXO3dCQUNwQixNQUFNLEVBQUUsQ0FBQyxHQUFHLFdBQVc7cUJBQ3hCO29CQUNELFlBQVksRUFBRSxDQUFDLEdBQUcsV0FBVztvQkFDN0IsVUFBVSxFQUFFLFFBQVE7b0JBQ3BCLGNBQWMsRUFBRSxRQUFRO29CQUN4QixLQUFLLEVBQUUsTUFBTTtvQkFDYixNQUFNLEVBQUUsRUFBRSxHQUFHLFdBQVc7aUJBQ3pCLEdBQ0QsQ0FDTztRQUVWLE1BQU0sSUFBSSx1QkFBQyxNQUFNLElBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxXQUFXLEVBQUUsRUFBRSxHQUFJLENBQ3hILENBQ1osQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJRW5naW5lIH0gZnJvbSAnQGRjbC9lY3MnXG5pbXBvcnQgUmVhY3RFY3MsIHsgTGFiZWwsIFVpRW50aXR5LCBEcm9wZG93biB9IGZyb20gJ0BkY2wvcmVhY3QtZWNzJ1xuaW1wb3J0IHsgQ29sb3I0IH0gZnJvbSAnQGRjbC9zZGsvbWF0aCdcbmltcG9ydCB7IGdldFNjYWxlVUlGYWN0b3IgfSBmcm9tICcuLi8uLi91aSdcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4uL0J1dHRvbidcbmltcG9ydCB7IENPTlRFTlRfVVJMIH0gZnJvbSAnLi4vY29uc3RhbnRzJ1xuaW1wb3J0IHsgU3RhdGUgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB7IEhlYWRlciB9IGZyb20gJy4uL0hlYWRlcidcbmltcG9ydCB7IGdldFZpZGVvUGxheWVycywgdXNlU2VsZWN0ZWRWaWRlb1BsYXllciB9IGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgeyBDYXJkIH0gZnJvbSAnLi4vQ2FyZCdcbmltcG9ydCB7IFZpZGVvQ29udHJvbFVSTCB9IGZyb20gJy4vVmlkZW9VcmwnXG5pbXBvcnQgeyBMaXZlU3RyZWFtIH0gZnJvbSAnLi9MaXZlU3RyZWFtJ1xuaW1wb3J0IHsgQWN0aXZlIH0gZnJvbSAnLi4vQWN0aXZlJ1xuaW1wb3J0IHsgTElWRUtJVF9TVFJFQU1fU1JDIH0gZnJvbSAnLi4vLi4vZGVmaW5pdGlvbnMnXG5cbi8vIENvbnN0YW50c1xuZXhwb3J0IGNvbnN0IElDT05TID0ge1xuICBWSURFT19DT05UUk9MOiBgJHtDT05URU5UX1VSTH0vYWRtaW5fdG9vbGtpdC9hc3NldHMvaWNvbnMvdmlkZW8tY29udHJvbC5wbmdgLFxuICBQUkVWSU9VU19CVVRUT046IGAke0NPTlRFTlRfVVJMfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy92aWRlby1jb250cm9sLXByZXZpb3VzLWJ1dHRvbi5wbmdgLFxuICBGT1JXQVJEX0JVVFRPTjogYCR7Q09OVEVOVF9VUkx9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL3ZpZGVvLWNvbnRyb2wtZm9yd2FyZC1idXR0b24ucG5nYCxcbiAgUExBWV9CVVRUT046IGAke0NPTlRFTlRfVVJMfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy92aWRlby1jb250cm9sLXBsYXktYnV0dG9uLnBuZ2AsXG4gIE1VVEU6IGAke0NPTlRFTlRfVVJMfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy92aWRlby1jb250cm9sLW11dGUucG5nYCxcbiAgTE9PUDogYCR7Q09OVEVOVF9VUkx9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL3ZpZGVvLWNvbnRyb2wtbG9vcC5wbmdgLFxuICBWT0xVTUVfTUlOVVNfQlVUVE9OOiBgJHtDT05URU5UX1VSTH0vYWRtaW5fdG9vbGtpdC9hc3NldHMvaWNvbnMvdmlkZW8tY29udHJvbC12b2x1bWUtbWludXMtYnV0dG9uLnBuZ2AsXG4gIFZPTFVNRV9QTFVTX0JVVFRPTjogYCR7Q09OVEVOVF9VUkx9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL3ZpZGVvLWNvbnRyb2wtdm9sdW1lLXBsdXMtYnV0dG9uLnBuZ2AsXG4gIFZJREVPX1NPVVJDRTogYCR7Q09OVEVOVF9VUkx9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL3ZpZGVvLWNvbnRyb2wtdmlkZW8ucG5nYCxcbiAgTElWRV9TT1VSQ0U6IGAke0NPTlRFTlRfVVJMfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy92aWRlby1jb250cm9sLWxpdmUucG5nYCxcbiAgSU5GTzogYCR7Q09OVEVOVF9VUkx9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL2luZm8ucG5nYCxcbn0gYXMgY29uc3RcblxuXG5leHBvcnQgY29uc3QgVk9MVU1FX1NURVAgPSAwLjFcbmV4cG9ydCBjb25zdCBERUZBVUxUX1ZPTFVNRSA9IDFcblxuZXhwb3J0IGNvbnN0IENPTE9SUyA9IHtcbiAgV0hJVEU6IENvbG9yNC5XaGl0ZSgpLFxuICBHUkFZOiBDb2xvcjQuY3JlYXRlKDE2MCAvIDI1NSwgMTU1IC8gMjU1LCAxNjggLyAyNTUsIDEpLFxuICBTVUNDRVNTOiBDb2xvcjQuZnJvbUhleFN0cmluZygnIzM0Q0U3NycpLFxufSBhcyBjb25zdFxuXG5cbi8vIE1haW4gY29tcG9uZW50XG5leHBvcnQgZnVuY3Rpb24gVmlkZW9Db250cm9sKHtcbiAgZW5naW5lLFxuICBzdGF0ZSxcbn06IHtcbiAgZW5naW5lOiBJRW5naW5lXG4gIHN0YXRlOiBTdGF0ZVxufSkge1xuICBjb25zdCBbc2VsZWN0ZWRFbnRpdHksIHNlbGVjdGVkVmlkZW9dID0gdXNlU2VsZWN0ZWRWaWRlb1BsYXllcihlbmdpbmUpID8/IFtdXG4gIGNvbnN0IHNjYWxlRmFjdG9yID0gZ2V0U2NhbGVVSUZhY3RvcihlbmdpbmUpXG4gIGNvbnN0IHZpZGVvUGxheWVycyA9IGdldFZpZGVvUGxheWVycyhlbmdpbmUpXG4gIGNvbnN0IFtzZWxlY3RlZCwgc2V0U2VsZWN0ZWRdID0gUmVhY3RFY3MudXNlU3RhdGU8J3ZpZGVvLXVybCcgfCAnbGl2ZScgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcblxuICBSZWFjdEVjcy51c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldFNlbGVjdGVkKFxuICAgICAgc2VsZWN0ZWRWaWRlbyAmJiBzZWxlY3RlZFZpZGVvLnNyYy5zdGFydHNXaXRoKCdodHRwczovLycpXG4gICAgICAgID8gJ3ZpZGVvLXVybCdcbiAgICAgICAgOiAnbGl2ZScsXG4gICAgKVxuICB9LCBbc3RhdGUudmlkZW9Db250cm9sLnNlbGVjdGVkVmlkZW9QbGF5ZXJdKVxuXG4gIHJldHVybiAoXG4gICAgPFVpRW50aXR5XG4gICAgICB1aVRyYW5zZm9ybT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnMTAwJScgfX1cbiAgICA+XG4gICAgICA8Q2FyZFxuICAgICAgICBzY2FsZUZhY3Rvcj17c2NhbGVGYWN0b3J9XG4gICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgdG9wOiAzMiAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgICAgcmlnaHQ6IDMyICogc2NhbGVGYWN0b3IsXG4gICAgICAgICAgICBib3R0b206IDAsXG4gICAgICAgICAgICBsZWZ0OiAzMiAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgIH0sXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgey8qIEhlYWRlciAqL31cbiAgICAgICAgICA8SGVhZGVyXG4gICAgICAgICAgICBpY29uU3JjPXtJQ09OUy5WSURFT19DT05UUk9MfVxuICAgICAgICAgICAgdGl0bGU9XCI8Yj5WSURFTyBTQ1JFRU5TPC9iPlwiXG4gICAgICAgICAgICBzY2FsZUZhY3Rvcj17c2NhbGVGYWN0b3J9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7dmlkZW9QbGF5ZXJzLmxlbmd0aCA+IDEgJiYgPExhYmVsXG4gICAgICAgICAgICB2YWx1ZT1cIjxiPkN1cnJlbnQgU2NyZWVuPC9iPlwiXG4gICAgICAgICAgICBmb250U2l6ZT17MTYgKiBzY2FsZUZhY3Rvcn1cbiAgICAgICAgICAgIGNvbG9yPXtDb2xvcjQuV2hpdGUoKX1cbiAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7IG1hcmdpbjogeyBib3R0b206IDE2ICogc2NhbGVGYWN0b3IgfSB9fVxuICAgICAgICAgIC8+fVxuXG4gICAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgICAgICAgbWFyZ2luOiB7IGJvdHRvbTogMTYgKiBzY2FsZUZhY3RvciB9LFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dmlkZW9QbGF5ZXJzLmxlbmd0aCA+IDEgJiYgKFxuICAgICAgICAgICAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICAgICAgICAgICAgPERyb3Bkb3duXG4gICAgICAgICAgICAgICAgICBvcHRpb25zPXt2aWRlb1BsYXllcnMubWFwKFxuICAgICAgICAgICAgICAgICAgICAocGxheWVyKSA9PiBgPGI+JHtwbGF5ZXIuY3VzdG9tTmFtZX08L2I+YCxcbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZEluZGV4PXtzdGF0ZS52aWRlb0NvbnRyb2wuc2VsZWN0ZWRWaWRlb1BsYXllciA/PyAwfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhpZHgpID0+XG4gICAgICAgICAgICAgICAgICAgIChzdGF0ZS52aWRlb0NvbnRyb2wuc2VsZWN0ZWRWaWRlb1BsYXllciA9IGlkeClcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHRleHRBbGlnbj1cIm1pZGRsZS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXsxNiAqIHNjYWxlRmFjdG9yfVxuICAgICAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiB7IHJpZ2h0OiA4ICogc2NhbGVGYWN0b3IgfSxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICB1aUJhY2tncm91bmQ9e3sgY29sb3I6IENvbG9yNC5XaGl0ZSgpIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgICAgZm9udFNpemU9ezE2ICogc2NhbGVGYWN0b3J9XG4gICAgICAgICAgICAgIHZhbHVlPVwiPGI+TWVkaWEgU291cmNlPC9iPlwiXG4gICAgICAgICAgICAgIGNvbG9yPXtDb2xvcjQuV2hpdGUoKX1cbiAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3sgbWFyZ2luOiB7IGJvdHRvbTogMiAqIHNjYWxlRmFjdG9yLCB0b3A6IDE2ICogc2NhbGVGYWN0b3IgfSB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgIG1hcmdpbjogeyB0b3A6IDEwICogc2NhbGVGYWN0b3IgfSxcbiAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAncm93JyxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3sgd2lkdGg6ICc1MCUnLCBwYWRkaW5nOiB7IHJpZ2h0OiA4ICogc2NhbGVGYWN0b3IgfSB9fT5cbiAgICAgICAgICAgICAgICA8Q3VzdG9tQnV0dG9uXG4gICAgICAgICAgICAgICAgICBlbmdpbmU9e2VuZ2luZX1cbiAgICAgICAgICAgICAgICAgIGlkPVwidmlkZW9fY29udHJvbF91cmxcIlxuICAgICAgICAgICAgICAgICAgdmFsdWU9XCI8Yj5WSURFTyBVUkw8L2I+XCJcbiAgICAgICAgICAgICAgICAgIGljb249e0lDT05TLlZJREVPX1NPVVJDRX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNlbGVjdGVkKCd2aWRlby11cmwnKX1cbiAgICAgICAgICAgICAgICAgIHNjYWxlRmFjdG9yPXtzY2FsZUZhY3Rvcn1cbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPXtzZWxlY3RlZCA9PT0gJ3ZpZGVvLXVybCd9XG4gICAgICAgICAgICAgICAgICBhY3RpdmU9e1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFZpZGVvICYmIHNlbGVjdGVkVmlkZW8uc3JjLnN0YXJ0c1dpdGgoJ2h0dHBzOi8vJylcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgICAgICAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3sgd2lkdGg6ICc1MCUnLCBwYWRkaW5nOiB7IGxlZnQ6IDggKiBzY2FsZUZhY3RvciB9IH19PlxuICAgICAgICAgICAgICAgIDxDdXN0b21CdXR0b25cbiAgICAgICAgICAgICAgICAgIGVuZ2luZT17ZW5naW5lfVxuICAgICAgICAgICAgICAgICAgaWQ9XCJ2aWRlb19jb250cm9sX2xpdmVcIlxuICAgICAgICAgICAgICAgICAgdmFsdWU9XCI8Yj5MSVZFIFNUUkVBTTwvYj5cIlxuICAgICAgICAgICAgICAgICAgaWNvbj17SUNPTlMuTElWRV9TT1VSQ0V9XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTZWxlY3RlZCgnbGl2ZScpfVxuICAgICAgICAgICAgICAgICAgYWN0aXZlPXtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRWaWRlbyAmJlxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFZpZGVvLnNyYy5zdGFydHNXaXRoKExJVkVLSVRfU1RSRUFNX1NSQylcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHNjYWxlRmFjdG9yPXtzY2FsZUZhY3Rvcn1cbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPXtzZWxlY3RlZCA9PT0gJ2xpdmUnfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICA8L0NhcmQ+XG4gICAgICB7c2VsZWN0ZWQgJiYgc2VsZWN0ZWRFbnRpdHkgJiYgKFxuICAgICAgICA8Q2FyZCBzY2FsZUZhY3Rvcj17c2NhbGVGYWN0b3J9PlxuICAgICAgICAgIHtzZWxlY3RlZCA9PT0gJ3ZpZGVvLXVybCcgJiYgKFxuICAgICAgICAgICAgPFZpZGVvQ29udHJvbFVSTFxuICAgICAgICAgICAgICBlbmdpbmU9e2VuZ2luZX1cbiAgICAgICAgICAgICAgc2NhbGVGYWN0b3I9e3NjYWxlRmFjdG9yfVxuICAgICAgICAgICAgICBlbnRpdHk9e3NlbGVjdGVkRW50aXR5fVxuICAgICAgICAgICAgICB2aWRlbz17c2VsZWN0ZWRWaWRlb31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7c2VsZWN0ZWQgPT09ICdsaXZlJyAmJiAoXG4gICAgICAgICAgICA8TGl2ZVN0cmVhbVxuICAgICAgICAgICAgICBlbmdpbmU9e2VuZ2luZX1cbiAgICAgICAgICAgICAgc2NhbGVGYWN0b3I9e3NjYWxlRmFjdG9yfVxuICAgICAgICAgICAgICBlbnRpdHk9e3NlbGVjdGVkRW50aXR5fVxuICAgICAgICAgICAgICB2aWRlbz17c2VsZWN0ZWRWaWRlb31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9DYXJkPlxuICAgICAgKX1cbiAgICA8L1VpRW50aXR5PlxuICApXG59XG5cblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgaWQ6IHN0cmluZ1xuICB2YWx1ZTogc3RyaW5nXG4gIG9uQ2xpY2soKTogdm9pZFxuICBzZWxlY3RlZDogYm9vbGVhblxuICBzY2FsZUZhY3RvcjogbnVtYmVyXG4gIGljb246IHN0cmluZ1xuICBlbmdpbmU6IElFbmdpbmVcbiAgYWN0aXZlPzogYm9vbGVhblxufVxuXG5mdW5jdGlvbiBDdXN0b21CdXR0b24oeyBhY3RpdmUsIHNjYWxlRmFjdG9yLCB2YWx1ZSwgaWQsIG9uQ2xpY2ssIGljb24sIHNlbGVjdGVkLCBlbmdpbmUgfTogUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8VWlFbnRpdHlcbiAgICAgIHVpVHJhbnNmb3JtPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBoZWlnaHQ6ICcxMDAlJywgd2lkdGg6ICcxMDAlJyB9fVxuICAgID5cbiAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17eyB3aWR0aDogJzEwMCUnIH19PlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgaWQ9e2lkfVxuICAgICAgICAgIG9uTW91c2VEb3duPXtvbkNsaWNrfVxuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICBmb250U2l6ZT17MTQgKiBzY2FsZUZhY3Rvcn1cbiAgICAgICAgICBpY29uPXtpY29ufVxuICAgICAgICAgIGljb25UcmFuc2Zvcm09e3tcbiAgICAgICAgICAgIHdpZHRoOiAyNCAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgICAgaGVpZ2h0OiAyNCAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgICAgbWFyZ2luOiB7IHJpZ2h0OiA4ICogc2NhbGVGYWN0b3IgfSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIGNvbG9yPXtzZWxlY3RlZCA/IENvbG9yNC5CbGFjaygpIDogQ29sb3I0LmZyb21IZXhTdHJpbmcoJyNGQ0ZDRkMnKX1cbiAgICAgICAgICBpY29uQmFja2dyb3VuZD17e1xuICAgICAgICAgICAgY29sb3I6IHNlbGVjdGVkID8gQ29sb3I0LkJsYWNrKCkgOiBDb2xvcjQuZnJvbUhleFN0cmluZygnI0ZDRkNGQycpLFxuICAgICAgICAgIH19XG4gICAgICAgICAgdWlCYWNrZ3JvdW5kPXt7XG4gICAgICAgICAgICBjb2xvcjogc2VsZWN0ZWQgPyBDb2xvcjQuV2hpdGUoKSA6IENvbG9yNC5mcm9tSGV4U3RyaW5nKCcjNDM0MDRBJyksXG4gICAgICAgICAgfX1cbiAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgICB0b3A6IDYgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgICAgYm90dG9tOiA2ICogc2NhbGVGYWN0b3IsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiA2ICogc2NhbGVGYWN0b3IsXG4gICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICBoZWlnaHQ6IDM2ICogc2NhbGVGYWN0b3JcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgPC9VaUVudGl0eT5cblxuICAgICAge2FjdGl2ZSAmJiA8QWN0aXZlIHNjYWxlRmFjdG9yPXtzY2FsZUZhY3Rvcn0gZW5naW5lPXtlbmdpbmV9IHVpVHJhbnNmb3JtPXt7IHdpZHRoOiAnMTAwJScsIG1hcmdpbjogeyB0b3A6IDYgKiBzY2FsZUZhY3RvciB9IH19IC8+fVxuICAgIDwvVWlFbnRpdHk+XG4gIClcbn0iXX0=
@@ -0,0 +1,28 @@
1
+ import { DeepReadonlyObject, Entity, IEngine, PBVideoPlayer } from '@dcl/ecs';
2
+ interface VideoPlayerControls {
3
+ play(): void;
4
+ pause(): void;
5
+ restart(): void;
6
+ previous(): void;
7
+ next(): void;
8
+ setVolume(volume: number): void;
9
+ setSource(url: string): void;
10
+ setLoop(loop: boolean): void;
11
+ }
12
+ export declare function getAdminToolkitVideoControl(engine: IEngine): DeepReadonlyObject<import("@dcl/ecs").MapResult<{
13
+ isEnabled: import("@dcl/ecs").ISchema<boolean>;
14
+ disableVideoPlayersSound: import("@dcl/ecs").ISchema<boolean>;
15
+ showAuthorOnVideoPlayers: import("@dcl/ecs").ISchema<boolean>;
16
+ linkAllVideoPlayers: import("@dcl/ecs").ISchema<boolean>;
17
+ videoPlayers: import("@dcl/ecs").ISchema<import("@dcl/ecs").MapResult<{
18
+ entity: import("@dcl/ecs").ISchema<number>;
19
+ customName: import("@dcl/ecs").ISchema<string>;
20
+ }>[] | undefined>;
21
+ }>> | null;
22
+ export declare function getVideoPlayers(engine: IEngine): DeepReadonlyObject<import("@dcl/ecs").MapResult<{
23
+ entity: import("@dcl/ecs").ISchema<number>;
24
+ customName: import("@dcl/ecs").ISchema<string>;
25
+ }>>[];
26
+ export declare function createVideoPlayerControls(entity: Entity, engine: IEngine): VideoPlayerControls;
27
+ export declare function useSelectedVideoPlayer(engine: IEngine): [Entity, DeepReadonlyObject<PBVideoPlayer>] | null;
28
+ export {};
@@ -0,0 +1,87 @@
1
+ import { getComponents } from '../../definitions';
2
+ import { getExplorerComponents } from '../../components';
3
+ import { nextTickFunctions, state } from '../index';
4
+ import { DEFAULT_VOLUME } from '.';
5
+ export function getAdminToolkitVideoControl(engine) {
6
+ const { AdminTools } = getComponents(engine);
7
+ const adminToolkitEntities = Array.from(engine.getEntitiesWith(AdminTools));
8
+ return adminToolkitEntities.length > 0
9
+ ? adminToolkitEntities[0][1].videoControl
10
+ : null;
11
+ }
12
+ export function getVideoPlayers(engine) {
13
+ const adminToolkitVideoControl = getAdminToolkitVideoControl(engine);
14
+ if (!adminToolkitVideoControl ||
15
+ !adminToolkitVideoControl.videoPlayers ||
16
+ adminToolkitVideoControl.videoPlayers.length === 0)
17
+ return [];
18
+ return Array.from(adminToolkitVideoControl.videoPlayers);
19
+ }
20
+ function checkVideoPlayerSound(entity, engine) {
21
+ const videoControl = getAdminToolkitVideoControl(engine);
22
+ const { VideoPlayer } = getExplorerComponents(engine);
23
+ if (videoControl?.disableVideoPlayersSound) {
24
+ const video = VideoPlayer.get(entity);
25
+ if (video.volume) {
26
+ VideoPlayer.getMutable(entity).volume = 0;
27
+ }
28
+ }
29
+ }
30
+ export function createVideoPlayerControls(entity, engine) {
31
+ const videoControl = getAdminToolkitVideoControl(engine);
32
+ const { VideoPlayer } = getExplorerComponents(engine);
33
+ checkVideoPlayerSound(entity, engine);
34
+ return {
35
+ play: () => {
36
+ VideoPlayer.getMutable(entity).playing = true;
37
+ },
38
+ pause: () => VideoPlayer.getMutable(entity).playing = false,
39
+ restart: () => {
40
+ VideoPlayer.getMutable(entity).playing = false;
41
+ VideoPlayer.getMutable(entity).position = 0;
42
+ nextTickFunctions.push(() => {
43
+ const video = VideoPlayer.getMutable(entity);
44
+ video.playing = true;
45
+ });
46
+ },
47
+ previous: () => {
48
+ console.log('TODO: Previous Track clicked');
49
+ },
50
+ next: () => {
51
+ console.log('TODO: Next Track clicked');
52
+ },
53
+ setVolume: (volumeOrStep) => {
54
+ if (videoControl?.disableVideoPlayersSound) {
55
+ return;
56
+ }
57
+ const video = VideoPlayer.getMutable(entity);
58
+ if (volumeOrStep === 0) {
59
+ video.volume = 0;
60
+ }
61
+ else {
62
+ const steps = Math.round((video.volume ?? DEFAULT_VOLUME) * 10);
63
+ const newSteps = Math.max(0, Math.min(10, steps + volumeOrStep * 10));
64
+ video.volume = newSteps / 10;
65
+ }
66
+ },
67
+ setSource: (url) => {
68
+ VideoPlayer.getMutable(entity).src = url;
69
+ nextTickFunctions.push(() => {
70
+ VideoPlayer.getMutable(entity).playing = true;
71
+ });
72
+ },
73
+ setLoop(loop) {
74
+ VideoPlayer.getMutable(entity).loop = loop;
75
+ }
76
+ };
77
+ }
78
+ export function useSelectedVideoPlayer(engine) {
79
+ const { VideoPlayer } = getExplorerComponents(engine);
80
+ const videoPlayers = getVideoPlayers(engine);
81
+ if (videoPlayers.length === 0)
82
+ return null;
83
+ const entity = videoPlayers[state.videoControl.selectedVideoPlayer ?? 0].entity;
84
+ const videoPlayer = VideoPlayer.getOrNull(entity);
85
+ return [entity, videoPlayer];
86
+ }
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS9WaWRlb0NvbnRyb2wvdXRpbHMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxHQUFHLENBQUE7QUFlbEMsTUFBTSxVQUFVLDJCQUEyQixDQUFDLE1BQWU7SUFDekQsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUM1QyxNQUFNLG9CQUFvQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFBO0lBQzNFLE9BQU8sb0JBQW9CLENBQUMsTUFBTSxHQUFHLENBQUM7UUFDcEMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVk7UUFDekMsQ0FBQyxDQUFDLElBQUksQ0FBQTtBQUNWLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLE1BQWU7SUFDN0MsTUFBTSx3QkFBd0IsR0FBRywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUVwRSxJQUNFLENBQUMsd0JBQXdCO1FBQ3pCLENBQUMsd0JBQXdCLENBQUMsWUFBWTtRQUN0Qyx3QkFBd0IsQ0FBQyxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUM7UUFFbEQsT0FBTyxFQUFFLENBQUE7SUFFWCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsWUFBWSxDQUFDLENBQUE7QUFDMUQsQ0FBQztBQUVELFNBQVMs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QyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUE7WUFDeEMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDMUIsV0FBVyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFBO1lBQy9DLENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQztRQUNELE9BQU8sQ0FBQyxJQUFJO1lBQ1YsV0FBVyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO1FBQzVDLENBQUM7S0FDRixDQUFBO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FDcEMsTUFBZTtJQUVmLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNyRCxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUE7SUFFNUMsSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQTtJQUUxQyxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFnQixDQUFBO0lBQ3pGLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDakQsT0FBTyxDQUFDLE1BQU0sRUFBRSxXQUFZLENBQUMsQ0FBQTtBQUMvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVlcFJlYWRvbmx5T2JqZWN0LCBFbnRpdHksIElFbmdpbmUsIFBCVmlkZW9QbGF5ZXIgfSBmcm9tICdAZGNsL2VjcydcbmltcG9ydCB7IGdldENvbXBvbmVudHMgfSBmcm9tICcuLi8uLi9kZWZpbml0aW9ucydcbmltcG9ydCB7IGdldEV4cGxvcmVyQ29tcG9uZW50cyB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMnXG5pbXBvcnQgeyBuZXh0VGlja0Z1bmN0aW9ucywgc3RhdGUgfSBmcm9tICcuLi9pbmRleCdcbmltcG9ydCB7IERFRkFVTFRfVk9MVU1FIH0gZnJvbSAnLidcblxuXG4vLyBUeXBlc1xuaW50ZXJmYWNlIFZpZGVvUGxheWVyQ29udHJvbHMge1xuICBwbGF5KCk6IHZvaWRcbiAgcGF1c2UoKTogdm9pZFxuICByZXN0YXJ0KCk6IHZvaWRcbiAgcHJldmlvdXMoKTogdm9pZFxuICBuZXh0KCk6IHZvaWRcbiAgc2V0Vm9sdW1lKHZvbHVtZTogbnVtYmVyKTogdm9pZFxuICBzZXRTb3VyY2UodXJsOiBzdHJpbmcpOiB2b2lkXG4gIHNldExvb3AobG9vcDogYm9vbGVhbik6IHZvaWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFkbWluVG9vbGtpdFZpZGVvQ29udHJvbChlbmdpbmU6IElFbmdpbmUpIHtcbiAgY29uc3QgeyBBZG1pblRvb2xzIH0gPSBnZXRDb21wb25lbnRzKGVuZ2luZSlcbiAgY29uc3QgYWRtaW5Ub29sa2l0RW50aXRpZXMgPSBBcnJheS5mcm9tKGVuZ2luZS5nZXRFbnRpdGllc1dpdGgoQWRtaW5Ub29scykpXG4gIHJldHVybiBhZG1pblRvb2xraXRFbnRpdGllcy5sZW5ndGggPiAwXG4gICAgPyBhZG1pblRvb2xraXRFbnRpdGllc1swXVsxXS52aWRlb0NvbnRyb2xcbiAgICA6IG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZpZGVvUGxheWVycyhlbmdpbmU6IElFbmdpbmUpIHtcbiAgY29uc3QgYWRtaW5Ub29sa2l0VmlkZW9Db250cm9sID0gZ2V0QWRtaW5Ub29sa2l0VmlkZW9Db250cm9sKGVuZ2luZSlcblxuICBpZiAoXG4gICAgIWFkbWluVG9vbGtpdFZpZGVvQ29udHJvbCB8fFxuICAgICFhZG1pblRvb2xraXRWaWRlb0NvbnRyb2wudmlkZW9QbGF5ZXJzIHx8XG4gICAgYWRtaW5Ub29sa2l0VmlkZW9Db250cm9sLnZpZGVvUGxheWVycy5sZW5ndGggPT09IDBcbiAgKVxuICAgIHJldHVybiBbXVxuXG4gIHJldHVybiBBcnJheS5mcm9tKGFkbWluVG9vbGtpdFZpZGVvQ29udHJvbC52aWRlb1BsYXllcnMpXG59XG5cbmZ1bmN0aW9uIGNoZWNrVmlkZW9QbGF5ZXJTb3VuZChlbnRpdHk6IEVudGl0eSwgZW5naW5lOiBJRW5naW5lKSB7XG4gIGNvbnN0IHZpZGVvQ29udHJvbCA9IGdldEFkbWluVG9vbGtpdFZpZGVvQ29udHJvbChlbmdpbmUpXG4gIGNvbnN0IHsgVmlkZW9QbGF5ZXIgfSA9IGdldEV4cGxvcmVyQ29tcG9uZW50cyhlbmdpbmUpXG5cbiAgaWYgKHZpZGVvQ29udHJvbD8uZGlzYWJsZVZpZGVvUGxheWVyc1NvdW5kKSB7XG4gICAgY29uc3QgdmlkZW8gPSBWaWRlb1BsYXllci5nZXQoZW50aXR5KVxuICAgIGlmICh2aWRlby52b2x1bWUpIHtcbiAgICAgIFZpZGVvUGxheWVyLmdldE11dGFibGUoZW50aXR5KS52b2x1bWUgPSAwXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVWaWRlb1BsYXllckNvbnRyb2xzKFxuICBlbnRpdHk6IEVudGl0eSxcbiAgZW5naW5lOiBJRW5naW5lXG4pOiBWaWRlb1BsYXllckNvbnRyb2xzIHtcbiAgY29uc3QgdmlkZW9Db250cm9sID0gZ2V0QWRtaW5Ub29sa2l0VmlkZW9Db250cm9sKGVuZ2luZSlcbiAgY29uc3QgeyBWaWRlb1BsYXllciB9ID0gZ2V0RXhwbG9yZXJDb21wb25lbnRzKGVuZ2luZSlcblxuICBjaGVja1ZpZGVvUGxheWVyU291bmQoZW50aXR5LCBlbmdpbmUpXG5cbiAgcmV0dXJuIHtcbiAgICBwbGF5OiAoKSA9PiB7XG4gICAgICBWaWRlb1BsYXllci5nZXRNdXRhYmxlKGVudGl0eSkucGxheWluZyA9IHRydWVcbiAgICB9LFxuICAgIHBhdXNlOiAoKSA9PiBWaWRlb1BsYXllci5nZXRNdXRhYmxlKGVudGl0eSkucGxheWluZyA9IGZhbHNlLFxuICAgIHJlc3RhcnQ6ICgpID0+IHtcbiAgICAgIFZpZGVvUGxheWVyLmdldE11dGFibGUoZW50aXR5KS5wbGF5aW5nID0gZmFsc2VcbiAgICAgIFZpZGVvUGxheWVyLmdldE11dGFibGUoZW50aXR5KS5wb3NpdGlvbiA9IDBcbiAgICAgIG5leHRUaWNrRnVuY3Rpb25zLnB1c2goKCkgPT4ge1xuICAgICAgICBjb25zdCB2aWRlbyA9IFZpZGVvUGxheWVyLmdldE11dGFibGUoZW50aXR5KVxuICAgICAgICB2aWRlby5wbGF5aW5nID0gdHJ1ZVxuICAgICAgfSlcbiAgICB9LFxuICAgIHByZXZpb3VzOiAoKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZygnVE9ETzogUHJldmlvdXMgVHJhY2sgY2xpY2tlZCcpXG4gICAgfSxcbiAgICBuZXh0OiAoKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZygnVE9ETzogTmV4dCBUcmFjayBjbGlja2VkJylcbiAgICB9LFxuICAgIHNldFZvbHVtZTogKHZvbHVtZU9yU3RlcCkgPT4ge1xuICAgICAgLy8gRG9uJ3QgYWxsb3cgdm9sdW1lIGNoYW5nZXMgaWYgc291bmQgaXMgZGlzYWJsZWRcbiAgICAgIGlmICh2aWRlb0NvbnRyb2w/LmRpc2FibGVWaWRlb1BsYXllcnNTb3VuZCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNvbnN0IHZpZGVvID0gVmlkZW9QbGF5ZXIuZ2V0TXV0YWJsZShlbnRpdHkpXG4gICAgICBpZiAodm9sdW1lT3JTdGVwID09PSAwKSB7XG4gICAgICAgIHZpZGVvLnZvbHVtZSA9IDBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHN0ZXBzID0gTWF0aC5yb3VuZCgodmlkZW8udm9sdW1lID8/IERFRkFVTFRfVk9MVU1FKSAqIDEwKVxuICAgICAgICBjb25zdCBuZXdTdGVwcyA9IE1hdGgubWF4KDAsIE1hdGgubWluKDEwLCBzdGVwcyArICh2b2x1bWVPclN0ZXAgYXMgbnVtYmVyKSAqIDEwKSlcbiAgICAgICAgdmlkZW8udm9sdW1lID0gbmV3U3RlcHMgLyAxMFxuICAgICAgfVxuICAgIH0sXG4gICAgc2V0U291cmNlOiAodXJsKSA9PiB7XG4gICAgICBWaWRlb1BsYXllci5nZXRNdXRhYmxlKGVudGl0eSkuc3JjID0gdXJsXG4gICAgICBuZXh0VGlja0Z1bmN0aW9ucy5wdXNoKCgpID0+IHtcbiAgICAgICAgVmlkZW9QbGF5ZXIuZ2V0TXV0YWJsZShlbnRpdHkpLnBsYXlpbmcgPSB0cnVlXG4gICAgICB9KVxuICAgIH0sXG4gICAgc2V0TG9vcChsb29wKSB7XG4gICAgICBWaWRlb1BsYXllci5nZXRNdXRhYmxlKGVudGl0eSkubG9vcCA9IGxvb3BcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVNlbGVjdGVkVmlkZW9QbGF5ZXIoXG4gIGVuZ2luZTogSUVuZ2luZVxuKTogW0VudGl0eSwgRGVlcFJlYWRvbmx5T2JqZWN0PFBCVmlkZW9QbGF5ZXI+XSB8IG51bGwge1xuICBjb25zdCB7IFZpZGVvUGxheWVyIH0gPSBnZXRFeHBsb3JlckNvbXBvbmVudHMoZW5naW5lKVxuICBjb25zdCB2aWRlb1BsYXllcnMgPSBnZXRWaWRlb1BsYXllcnMoZW5naW5lKVxuXG4gIGlmICh2aWRlb1BsYXllcnMubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IGVudGl0eSA9IHZpZGVvUGxheWVyc1tzdGF0ZS52aWRlb0NvbnRyb2wuc2VsZWN0ZWRWaWRlb1BsYXllciA/PyAwXS5lbnRpdHkgYXMgRW50aXR5XG4gIGNvbnN0IHZpZGVvUGxheWVyID0gVmlkZW9QbGF5ZXIuZ2V0T3JOdWxsKGVudGl0eSlcbiAgcmV0dXJuIFtlbnRpdHksIHZpZGVvUGxheWVyIV1cbn1cbiJdfQ==
@@ -0,0 +1,14 @@
1
+ import { SignedFetchRequest } from "~system/SignedFetch";
2
+ import { PBRealmInfo } from "~system/Runtime";
3
+ type Opts = {
4
+ toCamelCase?: boolean;
5
+ };
6
+ export declare function wrapSignedFetch<T extends any = unknown>(signedFetchBody: SignedFetchRequest, opts?: Opts): Promise<Result<T, string>>;
7
+ export type Success<T> = [null, T];
8
+ export type Failure<E> = [E, null];
9
+ export type Result<T, E = Error> = Success<T> | Failure<E>;
10
+ export declare function tryCatch<T, E = Error>(promise: Promise<T>): Promise<Result<T, E>>;
11
+ export declare function getRealm(): Promise<PBRealmInfo | undefined>;
12
+ export declare function isPreview(): boolean;
13
+ export declare function getDomain(): "org" | "zone";
14
+ export {};
@@ -0,0 +1,41 @@
1
+ import { signedFetch } from "~system/SignedFetch";
2
+ import { toCamelCase } from "./utils";
3
+ import { getRealm as getRealmRuntime } from "~system/Runtime";
4
+ export async function wrapSignedFetch(signedFetchBody, opts = {}) {
5
+ const realm = await getRealm();
6
+ if (realm?.isPreview) {
7
+ return ["Try again in Genesis/World. LocalPreview not supported.", null];
8
+ }
9
+ const [error, value] = await tryCatch(signedFetch(signedFetchBody));
10
+ if (!value?.ok || error) {
11
+ console.log(`Error in ${signedFetchBody.url} endpoint`, JSON.stringify({ error, value }));
12
+ return [error?.message ?? value?.body ?? 'There was an error', null];
13
+ }
14
+ const [_, body] = await tryCatch(JSON.parse(value.body || '{}'));
15
+ return [null, opts.toCamelCase ? toCamelCase(body ?? {}) : body ?? {}];
16
+ }
17
+ export async function tryCatch(promise) {
18
+ try {
19
+ const data = await promise;
20
+ return [null, data];
21
+ }
22
+ catch (error) {
23
+ return [error, null];
24
+ }
25
+ }
26
+ let realmCache;
27
+ export async function getRealm() {
28
+ if (realmCache)
29
+ return realmCache;
30
+ return realmCache = (await getRealmRuntime({})).realmInfo;
31
+ }
32
+ getRealm();
33
+ export function isPreview() {
34
+ return !!realmCache?.isPreview;
35
+ }
36
+ export function getDomain() {
37
+ if (!realmCache || realmCache.networkId === 1)
38
+ return 'org';
39
+ return 'zone';
40
+ }
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2gtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS9mZXRjaC11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXNCLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3JFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDckMsT0FBTyxFQUFFLFFBQVEsSUFBSSxlQUFlLEVBQWUsTUFBTSxpQkFBaUIsQ0FBQTtBQUsxRSxNQUFNLENBQUMsS0FBSyxVQUFVLGVBQWUsQ0FBMEIsZUFBbUMsRUFBRSxPQUFhLEVBQUU7SUFFakgsTUFBTSxLQUFLLEdBQUcsTUFBTSxRQUFRLEVBQUUsQ0FBQTtJQUU5QixJQUFJLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUNyQixPQUFPLENBQUMseURBQXlELEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDMUUsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsTUFBTSxRQUFRLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUE7SUFFbkUsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksS0FBSyxFQUFFLENBQUM7UUFDeEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLGVBQWUsQ0FBQyxHQUFHLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUN6RixPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sSUFBSSxLQUFLLEVBQUUsSUFBSSxJQUFJLG9CQUFvQixFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ3RFLENBQUM7SUFDRCxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLE1BQU0sUUFBUSxDQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBRW5FLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBYyxDQUFBO0FBQ3JGLENBQUM7QUFVRCxNQUFNLENBQUMsS0FBSyxVQUFVLFFBQVEsQ0FDNUIsT0FBbUI7SUFFbkIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxJQUFJLEdBQUcsTUFBTSxPQUFPLENBQUM7UUFDM0IsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUNyQixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE9BQU8sQ0FBQyxLQUFVLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDM0IsQ0FBQztBQUNILENBQUM7QUFFRCxJQUFJLFVBQW1DLENBQUE7QUFFdkMsTUFBTSxDQUFDLEtBQUssVUFBVSxRQUFRO0lBQzVCLElBQUksVUFBVTtRQUFFLE9BQU8sVUFBVSxDQUFBO0lBQ2pDLE9BQU8sVUFBVSxHQUFHLENBQUMsTUFBTSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7QUFDM0QsQ0FBQztBQUVELFFBQVEsRUFBRSxDQUFBO0FBRVYsTUFBTSxVQUFVLFNBQVM7SUFDdkIsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQTtBQUNoQyxDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVM7SUFDdkIsSUFBSSxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUMsU0FBUyxLQUFLLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQTtJQUMzRCxPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaWduZWRGZXRjaFJlcXVlc3QsIHNpZ25lZEZldGNoIH0gZnJvbSBcIn5zeXN0ZW0vU2lnbmVkRmV0Y2hcIlxuaW1wb3J0IHsgdG9DYW1lbENhc2UgfSBmcm9tIFwiLi91dGlsc1wiXG5pbXBvcnQgeyBnZXRSZWFsbSBhcyBnZXRSZWFsbVJ1bnRpbWUsIFBCUmVhbG1JbmZvIH0gZnJvbSBcIn5zeXN0ZW0vUnVudGltZVwiXG5cbnR5cGUgT3B0cyA9IHtcbiAgdG9DYW1lbENhc2U/OiBib29sZWFuXG59XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JhcFNpZ25lZEZldGNoPFQgZXh0ZW5kcyBhbnkgPSB1bmtub3duPihzaWduZWRGZXRjaEJvZHk6IFNpZ25lZEZldGNoUmVxdWVzdCwgb3B0czogT3B0cyA9IHt9KTogUHJvbWlzZTxSZXN1bHQ8VCwgc3RyaW5nPj4ge1xuICAvLyBUT0RPOiB1bmNvbW1lbnQgdGhpc1xuICBjb25zdCByZWFsbSA9IGF3YWl0IGdldFJlYWxtKClcblxuICBpZiAocmVhbG0/LmlzUHJldmlldykge1xuICAgIHJldHVybiBbXCJUcnkgYWdhaW4gaW4gR2VuZXNpcy9Xb3JsZC4gTG9jYWxQcmV2aWV3IG5vdCBzdXBwb3J0ZWQuXCIsIG51bGxdXG4gIH1cblxuICBjb25zdCBbZXJyb3IsIHZhbHVlXSA9IGF3YWl0IHRyeUNhdGNoKHNpZ25lZEZldGNoKHNpZ25lZEZldGNoQm9keSkpXG5cbiAgaWYgKCF2YWx1ZT8ub2sgfHwgZXJyb3IpIHtcbiAgICBjb25zb2xlLmxvZyhgRXJyb3IgaW4gJHtzaWduZWRGZXRjaEJvZHkudXJsfSBlbmRwb2ludGAsIEpTT04uc3RyaW5naWZ5KHsgZXJyb3IsIHZhbHVlIH0pKVxuICAgIHJldHVybiBbZXJyb3I/Lm1lc3NhZ2UgPz8gdmFsdWU/LmJvZHkgPz8gJ1RoZXJlIHdhcyBhbiBlcnJvcicsIG51bGxdXG4gIH1cbiAgY29uc3QgW18sIGJvZHldID0gYXdhaXQgdHJ5Q2F0Y2g8VD4oSlNPTi5wYXJzZSh2YWx1ZS5ib2R5IHx8ICd7fScpKVxuXG4gIHJldHVybiBbbnVsbCwgb3B0cy50b0NhbWVsQ2FzZSA/IHRvQ2FtZWxDYXNlKGJvZHkgPz8ge30pIDogYm9keSA/PyB7fV0gYXMgW251bGwsIFRdXG59XG5cbi8vIFR5cGVzIGZvciB0aGUgcmVzdWx0IG9iamVjdCB3aXRoIGRpc2NyaW1pbmF0ZWQgdW5pb25cbmV4cG9ydCB0eXBlIFN1Y2Nlc3M8VD4gPSBbbnVsbCwgVF1cblxuZXhwb3J0IHR5cGUgRmFpbHVyZTxFPiA9IFtFLCBudWxsXVxuXG5leHBvcnQgdHlwZSBSZXN1bHQ8VCwgRSA9IEVycm9yPiA9IFN1Y2Nlc3M8VD4gfCBGYWlsdXJlPEU+O1xuXG4vLyBNYWluIHdyYXBwZXIgZnVuY3Rpb25cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cnlDYXRjaDxULCBFID0gRXJyb3I+KFxuICBwcm9taXNlOiBQcm9taXNlPFQ+LFxuKTogUHJvbWlzZTxSZXN1bHQ8VCwgRT4+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcHJvbWlzZTtcbiAgICByZXR1cm4gW251bGwsIGRhdGFdXG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIFtlcnJvciBhcyBFLCBudWxsXVxuICB9XG59XG5cbmxldCByZWFsbUNhY2hlOiBQQlJlYWxtSW5mbyB8IHVuZGVmaW5lZFxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0UmVhbG0oKSB7XG4gIGlmIChyZWFsbUNhY2hlKSByZXR1cm4gcmVhbG1DYWNoZVxuICByZXR1cm4gcmVhbG1DYWNoZSA9IChhd2FpdCBnZXRSZWFsbVJ1bnRpbWUoe30pKS5yZWFsbUluZm9cbn1cblxuZ2V0UmVhbG0oKVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQcmV2aWV3KCkge1xuICByZXR1cm4gISFyZWFsbUNhY2hlPy5pc1ByZXZpZXdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERvbWFpbigpIHtcbiAgaWYgKCFyZWFsbUNhY2hlIHx8IHJlYWxtQ2FjaGUubmV0d29ya0lkID09PSAxKSByZXR1cm4gJ29yZydcbiAgcmV0dXJuICd6b25lJ1xufVxuXG4iXX0=
@@ -1,6 +1,17 @@
1
+ import { Color4 } from '@dcl/sdk/math';
1
2
  import { ReactBasedUiSystem } from '@dcl/react-ecs';
2
3
  import { IEngine, PointerEventsSystem } from '@dcl/ecs';
3
4
  import { IPlayersHelper, ISDKHelpers } from '../definitions';
5
+ import { State } from './types';
4
6
  export declare const nextTickFunctions: (() => void)[];
7
+ export declare let scaleFactor: number;
8
+ export declare let state: State;
9
+ export declare const containerBackgroundColor: Color4.MutableColor4;
10
+ export declare function fetchSceneAdmins(): Promise<void>;
11
+ export declare function getSmartItems(engine: IEngine): import("@dcl/ecs").DeepReadonlyObject<import("@dcl/ecs").MapResult<{
12
+ entity: import("@dcl/ecs").ISchema<number>;
13
+ customName: import("@dcl/ecs").ISchema<string>;
14
+ defaultAction: import("@dcl/ecs").ISchema<string>;
15
+ }>>[];
5
16
  export declare function initializeAdminData(engine: IEngine, sdkHelpers?: ISDKHelpers): Promise<void>;
6
17
  export declare function createAdminToolkitUI(engine: IEngine, pointerEventsSystem: PointerEventsSystem, reactBasedUiSystem: ReactBasedUiSystem, sdkHelpers?: ISDKHelpers, playersHelper?: IPlayersHelper): void;