@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,67 @@
1
+ import { Color4 } from '@dcl/ecs-math';
2
+ import ReactEcs, { UiEntity, Label, Input } from "@dcl/react-ecs";
3
+ import { Button } from '../Button';
4
+ import { postSceneAdmin } from './api';
5
+ import { Error } from '../Error';
6
+ import { fetchSceneAdmins } from '..';
7
+ let $inputValue = '';
8
+ function isValidAddress(value) {
9
+ return /^0x[a-fA-F0-9]{40}$/.test(value);
10
+ }
11
+ export function AddUserInput({ scaleFactor, onSubmit }) {
12
+ const [error, setError] = ReactEcs.useState(false);
13
+ const [loading, setLoading] = ReactEcs.useState(false);
14
+ return (ReactEcs.createElement(UiEntity, { uiTransform: {
15
+ display: 'flex',
16
+ flexDirection: 'column',
17
+ positionType: 'relative',
18
+ } },
19
+ ReactEcs.createElement(Label, { value: "<b>Add an Admin</b>", fontSize: 18 * scaleFactor, color: Color4.White(), uiTransform: {
20
+ margin: { bottom: 16 * scaleFactor },
21
+ } }),
22
+ ReactEcs.createElement(UiEntity, null,
23
+ ReactEcs.createElement(Input, { onChange: ($) => {
24
+ if (error) {
25
+ setError(false);
26
+ }
27
+ $inputValue = $;
28
+ }, onSubmit: (value) => {
29
+ onSubmit(value);
30
+ $inputValue = '';
31
+ }, value: $inputValue, fontSize: 16 * scaleFactor, placeholder: "Wallet Address", placeholderColor: Color4.create(160 / 255, 155 / 255, 168 / 255, 1), color: Color4.Black(), uiBackground: { color: Color4.White() }, uiTransform: {
32
+ width: '100%',
33
+ height: 42 * scaleFactor,
34
+ margin: { bottom: 16 * scaleFactor },
35
+ borderColor: ((!$inputValue || isValidAddress($inputValue)) && !error) ? Color4.White() : Color4.Red(),
36
+ borderWidth: 4,
37
+ borderRadius: 8
38
+ } }),
39
+ ReactEcs.createElement(Button, { id: "moderation_control_add_admin", value: '<b>Add</b>', fontSize: 18 * scaleFactor, uiTransform: {
40
+ margin: { left: 10 * scaleFactor },
41
+ minWidth: 96 * scaleFactor,
42
+ height: 42 * scaleFactor,
43
+ alignItems: 'center',
44
+ justifyContent: 'center',
45
+ padding: 0,
46
+ }, onMouseDown: async () => {
47
+ if (loading)
48
+ return;
49
+ setLoading(true);
50
+ const [error, data] = await postSceneAdmin($inputValue);
51
+ if (data) {
52
+ setError(false);
53
+ $inputValue = '';
54
+ await fetchSceneAdmins();
55
+ }
56
+ else {
57
+ console.log(error);
58
+ setError(true);
59
+ }
60
+ setLoading(false);
61
+ } })),
62
+ error && (ReactEcs.createElement(Error, { uiTransform: {
63
+ margin: { top: -16 & scaleFactor, bottom: 16 * scaleFactor },
64
+ justifyContent: 'flex-start',
65
+ }, scaleFactor: scaleFactor, text: "Please try again." }))));
66
+ }
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWRkVXNlcklucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FkbWluLXRvb2xraXQtdWkvTW9kZXJhdGlvbkNvbnRyb2wvQWRkVXNlcklucHV0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3RDLE9BQU8sUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNqRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ2xDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxPQUFPLENBQUE7QUFDdEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUNoQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxJQUFJLENBQUE7QUFNckMsSUFBSSxXQUFXLEdBQVcsRUFBRSxDQUFBO0FBRTVCLFNBQVMsY0FBYyxDQUFDLEtBQWE7SUFDbkMsT0FBTyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDMUMsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFTO0lBQzNELE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNsRCxNQUFNLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFdEQsT0FBTyxDQUNMLHVCQUFDLFFBQVEsSUFDUCxXQUFXLEVBQUU7WUFDWCxPQUFPLEVBQUUsTUFBTTtZQUNmLGFBQWEsRUFBRSxRQUFRO1lBQ3ZCLFlBQVksRUFBRSxVQUFVO1NBQ3pCO1FBRUQsdUJBQUMsS0FBSyxJQUNKLEtBQUssRUFBQyxxQkFBcUIs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RUFBRTtnQkFDWCxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsV0FBVyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsV0FBVyxFQUFFO2dCQUM1RCxjQUFjLEVBQUUsWUFBWTthQUM3QixFQUNELFdBQVcsRUFBRSxXQUFXLEVBQ3hCLElBQUksRUFBQyxtQkFBbUIsR0FDeEIsQ0FDSCxDQUNRLENBQ1osQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2xvcjQgfSBmcm9tICdAZGNsL2Vjcy1tYXRoJ1xuaW1wb3J0IFJlYWN0RWNzLCB7IFVpRW50aXR5LCBMYWJlbCwgSW5wdXQgfSBmcm9tIFwiQGRjbC9yZWFjdC1lY3NcIlxuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi4vQnV0dG9uJ1xuaW1wb3J0IHsgcG9zdFNjZW5lQWRtaW4gfSBmcm9tICcuL2FwaSdcbmltcG9ydCB7IEVycm9yIH0gZnJvbSAnLi4vRXJyb3InXG5pbXBvcnQgeyBmZXRjaFNjZW5lQWRtaW5zIH0gZnJvbSAnLi4nXG5cbnR5cGUgUHJvcHMgPSB7XG4gIHNjYWxlRmFjdG9yOiBudW1iZXJcbiAgb25TdWJtaXQodmFsdWU6IHN0cmluZyk6IHZvaWRcbn1cbmxldCAkaW5wdXRWYWx1ZTogc3RyaW5nID0gJydcblxuZnVuY3Rpb24gaXNWYWxpZEFkZHJlc3ModmFsdWU6IHN0cmluZykge1xuICByZXR1cm4gL14weFthLWZBLUYwLTldezQwfSQvLnRlc3QodmFsdWUpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBBZGRVc2VySW5wdXQoeyBzY2FsZUZhY3Rvciwgb25TdWJtaXQgfTogUHJvcHMpIHtcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSBSZWFjdEVjcy51c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gUmVhY3RFY3MudXNlU3RhdGUoZmFsc2UpXG5cbiAgcmV0dXJuIChcbiAgICA8VWlFbnRpdHlcbiAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgIHBvc2l0aW9uVHlwZTogJ3JlbGF0aXZlJyxcbiAgICAgIH19XG4gICAgPlxuICAgICAgPExhYmVsXG4gICAgICAgIHZhbHVlPVwiPGI+QWRkIGFuIEFkbWluPC9iPlwiXG4gICAgICAgIGZvbnRTaXplPXsxOCAqIHNjYWxlRmFjdG9yfVxuICAgICAgICBjb2xvcj17Q29sb3I0LldoaXRlKCl9XG4gICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgbWFyZ2luOiB7IGJvdHRvbTogMTYgKiBzY2FsZUZhY3RvciB9LFxuICAgICAgICB9fVxuICAgICAgLz5cbiAgICAgIDxVaUVudGl0eT5cbiAgICAgICAgPElucHV0XG4gICAgICAgICAgb25DaGFuZ2U9eygkKSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgc2V0RXJyb3IoZmFsc2UpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkaW5wdXRWYWx1ZSA9ICRcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uU3VibWl0PXsodmFsdWUpID0+IHtcbiAgICAgICAgICAgIG9uU3VibWl0KHZhbHVlKVxuICAgICAgICAgICAgJGlucHV0VmFsdWUgPSAnJ1xuICAgICAgICAgIH19XG4gICAgICAgICAgdmFsdWU9eyRpbnB1dFZhbHVlfVxuICAgICAgICAgIGZvbnRTaXplPXsxNiAqIHNjYWxlRmFjdG9yfVxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiV2FsbGV0IEFkZHJlc3NcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyQ29sb3I9e0NvbG9yNC5jcmVhdGUoMTYwIC8gMjU1LCAxNTUgLyAyNTUsIDE2OCAvIDI1NSwgMSl9XG4gICAgICAgICAgY29sb3I9e0NvbG9yNC5CbGFjaygpfVxuICAgICAgICAgIHVpQmFja2dyb3VuZD17eyBjb2xvcjogQ29sb3I0LldoaXRlKCkgfX1cbiAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgIGhlaWdodDogNDIgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgIG1hcmdpbjogeyBib3R0b206IDE2ICogc2NhbGVGYWN0b3IgfSxcbiAgICAgICAgICAgIGJvcmRlckNvbG9yOiAoKCEkaW5wdXRWYWx1ZSB8fCBpc1ZhbGlkQWRkcmVzcygkaW5wdXRWYWx1ZSkpICYmICFlcnJvcikgPyBDb2xvcjQuV2hpdGUoKSA6IENvbG9yNC5SZWQoKSxcbiAgICAgICAgICAgIGJvcmRlcldpZHRoOiA0LFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiA4XG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGlkPVwibW9kZXJhdGlvbl9jb250cm9sX2FkZF9hZG1pblwiXG4gICAgICAgICAgdmFsdWU9eyc8Yj5BZGQ8L2I+J31cbiAgICAgICAgICBmb250U2l6ZT17MTggKiBzY2FsZUZhY3Rvcn1cbiAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgbWFyZ2luOiB7IGxlZnQ6IDEwICogc2NhbGVGYWN0b3IgfSxcbiAgICAgICAgICAgIG1pbldpZHRoOiA5NiAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgICAgaGVpZ2h0OiA0MiAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICAgIH19XG4gICAgICAgICAgb25Nb3VzZURvd249e2FzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGlmIChsb2FkaW5nKSByZXR1cm5cbiAgICAgICAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgICAgICAgIGNvbnN0IFtlcnJvciwgZGF0YV0gPSBhd2FpdCBwb3N0U2NlbmVBZG1pbigkaW5wdXRWYWx1ZSlcbiAgICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICAgIHNldEVycm9yKGZhbHNlKVxuICAgICAgICAgICAgICAkaW5wdXRWYWx1ZSA9ICcnXG4gICAgICAgICAgICAgIGF3YWl0IGZldGNoU2NlbmVBZG1pbnMoKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpXG4gICAgICAgICAgICAgIHNldEVycm9yKHRydWUpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICA8L1VpRW50aXR5PlxuICAgICAge2Vycm9yICYmIChcbiAgICAgICAgPEVycm9yXG4gICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgIG1hcmdpbjogeyB0b3A6IC0xNiAmIHNjYWxlRmFjdG9yLCBib3R0b206IDE2ICogc2NhbGVGYWN0b3IgfSxcbiAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnZmxleC1zdGFydCcsXG4gICAgICAgICAgfX1cbiAgICAgICAgICBzY2FsZUZhY3Rvcj17c2NhbGVGYWN0b3J9XG4gICAgICAgICAgdGV4dD1cIlBsZWFzZSB0cnkgYWdhaW4uXCJcbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9VaUVudGl0eT5cbiAgKVxufSJdfQ==
@@ -0,0 +1,10 @@
1
+ import { IEngine } from '@dcl/ecs';
2
+ import ReactEcs from '@dcl/react-ecs';
3
+ import { SceneAdmin } from '.';
4
+ type CurrentAdminProps = {
5
+ scaleFactor: number;
6
+ sceneAdmins: SceneAdmin[];
7
+ engine: IEngine;
8
+ };
9
+ export declare function ModalAdminList({ scaleFactor, sceneAdmins, engine, }: CurrentAdminProps): ReactEcs.JSX.Element;
10
+ export {};
@@ -0,0 +1,192 @@
1
+ import { Color4 } from '@dcl/ecs-math';
2
+ import ReactEcs, { UiEntity, Label } from '@dcl/react-ecs';
3
+ import { Button } from '../Button';
4
+ import { RemoveAdminConfirmation } from './RemoveAdminConfirmation';
5
+ import { moderationControlState } from '.';
6
+ import { CONTENT_URL } from '../constants';
7
+ const ADMINS_PER_PAGE = 5;
8
+ const ICONS = {
9
+ BACK: `${CONTENT_URL}/admin_toolkit/assets/icons/chevron-back.png`,
10
+ NEXT: `${CONTENT_URL}/admin_toolkit/assets/icons/chevron-forward.png`,
11
+ CLOSE: `${CONTENT_URL}/admin_toolkit/assets/icons/close.png`,
12
+ PERSON: `${CONTENT_URL}/admin_toolkit/assets/icons/person-outline.png`,
13
+ VERIFIED_USER: `${CONTENT_URL}/admin_toolkit/assets/icons/admin-panel-verified-user.png`,
14
+ };
15
+ export function ModalAdminList({ scaleFactor, sceneAdmins, engine, }) {
16
+ const [page, setPage] = ReactEcs.useState(1);
17
+ if (moderationControlState.adminToRemove) {
18
+ return (ReactEcs.createElement(RemoveAdminConfirmation, { scaleFactor: scaleFactor, admin: moderationControlState.adminToRemove, engine: engine }));
19
+ }
20
+ const startIndex = (page - 1) * ADMINS_PER_PAGE;
21
+ const endIndex = Math.min(startIndex + ADMINS_PER_PAGE, sceneAdmins.length);
22
+ const currentPageAdmins = sceneAdmins.slice(startIndex, endIndex);
23
+ return (ReactEcs.createElement(UiEntity, { uiTransform: {
24
+ width: '100%',
25
+ height: '100%',
26
+ positionType: 'absolute',
27
+ display: 'flex',
28
+ justifyContent: 'center',
29
+ alignItems: 'center',
30
+ flexDirection: 'row',
31
+ } },
32
+ ReactEcs.createElement(UiEntity, { uiTransform: {
33
+ width: 675 * scaleFactor,
34
+ maxHeight: 679 * scaleFactor,
35
+ minHeight: 479 * scaleFactor,
36
+ padding: 20 * scaleFactor,
37
+ display: 'flex',
38
+ flexDirection: 'column',
39
+ justifyContent: 'space-between',
40
+ borderRadius: 12 * scaleFactor,
41
+ }, uiBackground: { color: Color4.Black() } },
42
+ ReactEcs.createElement(UiEntity, { uiTransform: {
43
+ display: 'flex',
44
+ flexDirection: 'column',
45
+ flexGrow: 1,
46
+ } },
47
+ ReactEcs.createElement(UiEntity, { uiTransform: {
48
+ justifyContent: 'flex-start',
49
+ alignItems: 'center',
50
+ margin: { bottom: 24 * scaleFactor },
51
+ } },
52
+ ReactEcs.createElement(UiEntity, { uiTransform: {
53
+ width: 30 * scaleFactor,
54
+ height: 30 * scaleFactor,
55
+ margin: { right: 10 * scaleFactor },
56
+ }, uiBackground: {
57
+ textureMode: 'stretch',
58
+ texture: {
59
+ src: ICONS.VERIFIED_USER,
60
+ },
61
+ } }),
62
+ ReactEcs.createElement(Label, { value: "<b>ADMIN LIST</b>", fontSize: 24 * scaleFactor, color: Color4.White() }),
63
+ ReactEcs.createElement(Label, { value: `(${sceneAdmins.length} admins)`, fontSize: 16 * scaleFactor, color: Color4.Gray(), uiTransform: { margin: { left: 8 * scaleFactor } } }),
64
+ ReactEcs.createElement(Button, { id: "close-modal", onlyIcon: true, icon: ICONS.CLOSE, variant: "secondary", fontSize: 20 * scaleFactor, uiTransform: {
65
+ position: { right: 0 },
66
+ positionType: 'absolute',
67
+ borderColor: Color4.Clear(),
68
+ }, iconTransform: {
69
+ width: 32 * scaleFactor,
70
+ height: 32 * scaleFactor,
71
+ }, onMouseDown: () => (moderationControlState.showModalAdminList = false) })),
72
+ ReactEcs.createElement(UiEntity, { uiTransform: {
73
+ flexDirection: 'column',
74
+ width: '100%',
75
+ margin: { top: 16 * scaleFactor },
76
+ } }, currentPageAdmins.map((user, index) => (ReactEcs.createElement(UiEntity, { key: user.address, uiTransform: { display: 'flex', flexDirection: 'column' } },
77
+ ReactEcs.createElement(UiEntity, { key: `admin-${user.name}`, uiTransform: {
78
+ flexDirection: 'row',
79
+ justifyContent: 'space-between',
80
+ alignItems: 'center',
81
+ height: 48 * scaleFactor,
82
+ padding: { left: 8 * scaleFactor, right: 8 * scaleFactor },
83
+ margin: { top: 4 * scaleFactor, bottom: 4 * scaleFactor },
84
+ } },
85
+ ReactEcs.createElement(UiEntity, { uiTransform: {
86
+ display: 'flex',
87
+ height: '100%',
88
+ justifyContent: 'center',
89
+ } },
90
+ ReactEcs.createElement(UiEntity, { uiTransform: {
91
+ display: 'flex',
92
+ alignItems: 'center',
93
+ justifyContent: 'center',
94
+ margin: { right: 10 * scaleFactor },
95
+ } },
96
+ ReactEcs.createElement(UiEntity, { uiTransform: {
97
+ width: 28 * scaleFactor,
98
+ height: 28 * scaleFactor,
99
+ }, uiBackground: {
100
+ textureMode: 'stretch',
101
+ texture: {
102
+ src: ICONS.PERSON,
103
+ },
104
+ } })),
105
+ ReactEcs.createElement(UiEntity, { uiTransform: {
106
+ display: 'flex',
107
+ flexDirection: 'column',
108
+ justifyContent: 'center',
109
+ } },
110
+ user.name && (ReactEcs.createElement(UiEntity, { uiTransform: {
111
+ display: 'flex',
112
+ alignItems: 'center',
113
+ } },
114
+ ReactEcs.createElement(Label, { value: `<b>${user.name}</b>`, fontSize: 14 * scaleFactor, color: Color4.White() }),
115
+ !user.name.includes('#') && (ReactEcs.createElement(UiEntity, { uiTransform: {
116
+ width: 14 * scaleFactor,
117
+ height: 14 * scaleFactor,
118
+ }, uiBackground: {
119
+ textureMode: 'stretch',
120
+ texture: {
121
+ src: ICONS.VERIFIED_USER,
122
+ },
123
+ color: Color4.White(),
124
+ } })),
125
+ (user.role === 'owner' ||
126
+ user.role === 'operator') && (ReactEcs.createElement(UiEntity, { uiTransform: {
127
+ display: 'flex',
128
+ alignItems: 'center',
129
+ justifyContent: 'center',
130
+ width: 'auto',
131
+ height: 20 * scaleFactor,
132
+ padding: {
133
+ left: 4 * scaleFactor,
134
+ },
135
+ margin: { left: 8 * scaleFactor },
136
+ borderRadius: 4 * scaleFactor,
137
+ }, uiBackground: {
138
+ color: Color4.fromHexString('#A09BA8'),
139
+ } },
140
+ ReactEcs.createElement(Label, { value: `<b>${(user.role ?? '')?.charAt(0).toUpperCase() +
141
+ user.role?.slice(1)}</b>`, fontSize: 12 * scaleFactor, color: Color4.Black() }))))),
142
+ ReactEcs.createElement(Label, { fontSize: (user.name ? 12 : 14) * scaleFactor, value: user.name ? user.address : `${user.address}`, color: user.name
143
+ ? Color4.fromHexString('#716B7C')
144
+ : Color4.White() }))),
145
+ user.canBeRemoved && (ReactEcs.createElement(Button, { id: `remove-${index}`, value: "<b>Remove</b>", variant: "text", fontSize: 14 * scaleFactor, color: Color4.fromHexString('#FF2D55FF'), labelTransform: {
146
+ margin: {
147
+ left: 10 * scaleFactor,
148
+ right: 10 * scaleFactor,
149
+ },
150
+ }, onMouseDown: () => {
151
+ moderationControlState.adminToRemove = user;
152
+ } }))),
153
+ ReactEcs.createElement(UiEntity, { uiTransform: {
154
+ width: '100%',
155
+ height: 1,
156
+ }, uiBackground: { color: Color4.fromHexString('#43404A') } })))))),
157
+ sceneAdmins.length > ADMINS_PER_PAGE && (ReactEcs.createElement(UiEntity, { uiTransform: {
158
+ flexDirection: 'row',
159
+ justifyContent: 'space-between',
160
+ alignItems: 'center',
161
+ margin: { top: 20 * scaleFactor },
162
+ padding: { left: 10 * scaleFactor, right: 10 * scaleFactor },
163
+ } },
164
+ ReactEcs.createElement(Button, { id: "prev", value: "Prev", variant: "secondary", disabled: page <= 1, fontSize: 18 * scaleFactor, icon: ICONS.BACK, iconTransform: {
165
+ width: 25 * scaleFactor,
166
+ height: 25 * scaleFactor,
167
+ margin: { left: 8 * scaleFactor },
168
+ }, iconBackground: { color: page <= 1 ? Color4.fromHexString('#323232') : Color4.White() }, color: page <= 1 ? Color4.fromHexString('#323232') : Color4.White(), labelTransform: {
169
+ margin: { right: 10 * scaleFactor },
170
+ }, uiTransform: {
171
+ height: 42 * scaleFactor,
172
+ alignItems: 'center',
173
+ }, onMouseDown: () => setPage(page - 1) }),
174
+ ReactEcs.createElement(Label, { value: `${page} / ${Math.ceil(sceneAdmins.length / ADMINS_PER_PAGE)}`, fontSize: 14 * scaleFactor, color: Color4.White() }),
175
+ ReactEcs.createElement(Button, { id: "next", value: "<b>Next</b>", variant: "secondary", fontSize: 18 * scaleFactor, iconRight: ICONS.NEXT, iconRightTransform: {
176
+ width: 25 * scaleFactor,
177
+ height: 25 * scaleFactor,
178
+ margin: { right: 8 * scaleFactor },
179
+ }, labelTransform: {
180
+ margin: { left: 10 * scaleFactor },
181
+ }, iconRightBackground: {
182
+ color: page >= Math.ceil(sceneAdmins.length / ADMINS_PER_PAGE)
183
+ ? Color4.fromHexString('#323232')
184
+ : Color4.White()
185
+ }, color: page >= Math.ceil(sceneAdmins.length / ADMINS_PER_PAGE)
186
+ ? Color4.fromHexString('#323232')
187
+ : Color4.White(), disabled: page >= Math.ceil(sceneAdmins.length / ADMINS_PER_PAGE), uiTransform: {
188
+ alignItems: 'center',
189
+ height: 42 * scaleFactor,
190
+ }, onMouseDown: () => setPage(page + 1) }))))));
191
+ }
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWRtaW5MaXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FkbWluLXRvb2xraXQtdWkvTW9kZXJhdGlvbkNvbnRyb2wvQWRtaW5MaXN0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3RDLE9BQU8sUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRTFELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDbEMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDbkUsT0FBTyxFQUFFLHNCQUFzQixFQUFjLE1BQU0sR0FBRyxDQUFBO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFTMUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxDQUFBO0FBRXpCLE1BQU0sS0FBSyxHQUFHO0lBQ1osSUFBSSxFQUFFLEdBQUcsV0FBVyw4Q0FBOEM7SUFDbEUsSUFBSSxFQUFFLEdBQUcsV0FBVyxpREFBaUQ7SUFDckUsS0FBSyxFQUFFLEdBQUcsV0FBVyx1Q0FBdUM7SUFDNUQsTUFBTSxFQUFFLEdBQUcsV0FBVyxnREFBZ0Q7SUFDdEUsYUFBYSxFQUFFLEdBQUcsV0FBVywyREFBMkQ7Q0FDekYsQ0FBQTtBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsRUFDN0IsV0FBVyxFQUNYLFdBQVcsRUFDWCxNQUFNLEdBQ1k7SUFDbEIsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzVDLElBQUksc0JBQXNCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekMsT0FBTyxDQUNMLHVCQUFDLHVCQUF1QixJQUN0QixXQUFXLEVBQUUsV0FBVyxFQUN4QixLQUFLLEVBQUUsc0JBQXNCLENB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Q0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO3dCQUNqQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUVwQixRQUFRLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxlQUFlLENBQUMsRUFDakUsV0FBVyxFQUFFO3dCQUNYLFVBQVUsRUFBRSxRQUFRO3dCQUNwQixNQUFNLEVBQUUsRUFBRSxHQUFHLFdBQVc7cUJBQ3pCLEVBQ0QsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQ3BDLENBQ08sQ0FDWixDQUNRLENBQ0YsQ0FDWixDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElFbmdpbmUgfSBmcm9tICdAZGNsL2VjcydcbmltcG9ydCB7IENvbG9yNCB9IGZyb20gJ0BkY2wvZWNzLW1hdGgnXG5pbXBvcnQgUmVhY3RFY3MsIHsgVWlFbnRpdHksIExhYmVsIH0gZnJvbSAnQGRjbC9yZWFjdC1lY3MnXG5cbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4uL0J1dHRvbidcbmltcG9ydCB7IFJlbW92ZUFkbWluQ29uZmlybWF0aW9uIH0gZnJvbSAnLi9SZW1vdmVBZG1pbkNvbmZpcm1hdGlvbidcbmltcG9ydCB7IG1vZGVyYXRpb25Db250cm9sU3RhdGUsIFNjZW5lQWRtaW4gfSBmcm9tICcuJ1xuaW1wb3J0IHsgQ09OVEVOVF9VUkwgfSBmcm9tICcuLi9jb25zdGFudHMnXG5cblxudHlwZSBDdXJyZW50QWRtaW5Qcm9wcyA9IHtcbiAgc2NhbGVGYWN0b3I6IG51bWJlclxuICBzY2VuZUFkbWluczogU2NlbmVBZG1pbltdXG4gIGVuZ2luZTogSUVuZ2luZVxufVxuXG5jb25zdCBBRE1JTlNfUEVSX1BBR0UgPSA1XG5cbmNvbnN0IElDT05TID0ge1xuICBCQUNLOiBgJHtDT05URU5UX1VSTH0vYWRtaW5fdG9vbGtpdC9hc3NldHMvaWNvbnMvY2hldnJvbi1iYWNrLnBuZ2AsXG4gIE5FWFQ6IGAke0NPTlRFTlRfVVJMfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy9jaGV2cm9uLWZvcndhcmQucG5nYCxcbiAgQ0xPU0U6IGAke0NPTlRFTlRfVVJMfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy9jbG9zZS5wbmdgLFxuICBQRVJTT046IGAke0NPTlRFTlRfVVJMfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy9wZXJzb24tb3V0bGluZS5wbmdgLFxuICBWRVJJRklFRF9VU0VSOiBgJHtDT05URU5UX1VSTH0vYWRtaW5fdG9vbGtpdC9hc3NldHMvaWNvbnMvYWRtaW4tcGFuZWwtdmVyaWZpZWQtdXNlci5wbmdgLFxufVxuXG5leHBvcnQgZnVuY3Rpb24gTW9kYWxBZG1pbkxpc3Qoe1xuICBzY2FsZUZhY3RvcixcbiAgc2NlbmVBZG1pbnMsXG4gIGVuZ2luZSxcbn06IEN1cnJlbnRBZG1pblByb3BzKSB7XG4gIGNvbnN0IFtwYWdlLCBzZXRQYWdlXSA9IFJlYWN0RWNzLnVzZVN0YXRlKDEpXG4gIGlmIChtb2RlcmF0aW9uQ29udHJvbFN0YXRlLmFkbWluVG9SZW1vdmUpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPFJlbW92ZUFkbWluQ29uZmlybWF0aW9uXG4gICAgICAgIHNjYWxlRmFjdG9yPXtzY2FsZUZhY3Rvcn1cbiAgICAgICAgYWRtaW49e21vZGVyYXRpb25Db250cm9sU3RhdGUuYWRtaW5Ub1JlbW92ZX1cbiAgICAgICAgZW5naW5lPXtlbmdpbmV9XG4gICAgICAvPlxuICAgIClcbiAgfVxuICBjb25zdCBzdGFydEluZGV4ID0gKHBhZ2UgLSAxKSAqIEFETUlOU19QRVJfUEFHRVxuICBjb25zdCBlbmRJbmRleCA9IE1hdGgubWluKHN0YXJ0SW5kZXggKyBBRE1JTlNfUEVSX1BBR0UsIHNjZW5lQWRtaW5zLmxlbmd0aClcbiAgY29uc3QgY3VycmVudFBhZ2VBZG1pbnMgPSBzY2VuZUFkbWlucy5zbGljZShzdGFydEluZGV4LCBlbmRJbmRleClcbiAgcmV0dXJuIChcbiAgICA8VWlFbnRpdHlcbiAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICBwb3NpdGlvblR5cGU6ICdhYnNvbHV0ZScsXG4gICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgZmxleERpcmVjdGlvbjogJ3JvdycsXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxVaUVudGl0eVxuICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgIHdpZHRoOiA2NzUgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICBtYXhIZWlnaHQ6IDY3OSAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgIG1pbkhlaWdodDogNDc5ICogc2NhbGVGYWN0b3IsXG4gICAgICAgICAgcGFkZGluZzogMjAgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgICAgICAgICBib3JkZXJSYWRpdXM6IDEyICogc2NhbGVGYWN0b3IsXG4gICAgICAgIH19XG4gICAgICAgIHVpQmFja2dyb3VuZD17eyBjb2xvcjogQ29sb3I0LkJsYWNrKCkgfX1cbiAgICAgID5cbiAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgZmxleEdyb3c6IDEsXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHsvKiBIZWFkZXIgKi99XG4gICAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2ZsZXgtc3RhcnQnLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgbWFyZ2luOiB7IGJvdHRvbTogMjQgKiBzY2FsZUZhY3RvciB9LFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICB3aWR0aDogMzAgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwICogc2NhbGVGYWN0b3IsXG4gICAgICAgICAgICAgICAgbWFyZ2luOiB7IHJpZ2h0OiAxMCAqIHNjYWxlRmFjdG9yIH0sXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIHVpQmFja2dyb3VuZD17e1xuICAgICAgICAgICAgICAgIHRleHR1cmVNb2RlOiAnc3RyZXRjaCcsXG4gICAgICAgICAgICAgICAgdGV4dHVyZToge1xuICAgICAgICAgICAgICAgICAgc3JjOiBJQ09OUy5WRVJJRklFRF9VU0VSLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPExhYmVsXG4gICAgICAgICAgICAgIHZhbHVlPVwiPGI+QURNSU4gTElTVDwvYj5cIlxuICAgICAgICAgICAgICBmb250U2l6ZT17MjQgKiBzY2FsZUZhY3Rvcn1cbiAgICAgICAgICAgICAgY29sb3I9e0NvbG9yNC5XaGl0ZSgpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxMYWJlbFxuICAgICAgICAgICAgICB2YWx1ZT17YCgke3NjZW5lQWRtaW5zLmxlbmd0aH0gYWRtaW5zKWB9XG4gICAgICAgICAgICAgIGZvbnRTaXplPXsxNiAqIHNjYWxlRmFjdG9yfVxuICAgICAgICAgICAgICBjb2xvcj17Q29sb3I0LkdyYXkoKX1cbiAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3sgbWFyZ2luOiB7IGxlZnQ6IDggKiBzY2FsZUZhY3RvciB9IH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICBpZD1cImNsb3NlLW1vZGFsXCJcbiAgICAgICAgICAgICAgb25seUljb25cbiAgICAgICAgICAgICAgaWNvbj17SUNPTlMuQ0xPU0V9XG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICBmb250U2l6ZT17MjAgKiBzY2FsZUZhY3Rvcn1cbiAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogeyByaWdodDogMCB9LFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uVHlwZTogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcjogQ29sb3I0LkNsZWFyKCksXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGljb25UcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICB3aWR0aDogMzIgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDMyICogc2NhbGVGYWN0b3IsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIG9uTW91c2VEb3duPXsoKSA9PlxuICAgICAgICAgICAgICAgIChtb2RlcmF0aW9uQ29udHJvbFN0YXRlLnNob3dNb2RhbEFkbWluTGlzdCA9IGZhbHNlKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvVWlFbnRpdHk+XG5cbiAgICAgICAgICB7LyogQWRtaW4gTGlzdCAqL31cbiAgICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICBtYXJnaW46IHsgdG9wOiAxNiAqIHNjYWxlRmFjdG9yIH0sXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtjdXJyZW50UGFnZUFkbWlucy5tYXAoKHVzZXIsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgICAgIGtleT17dXNlci5hZGRyZXNzfVxuICAgICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7IGRpc3BsYXk6ICdmbGV4JywgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgICAgICAga2V5PXtgYWRtaW4tJHt1c2VyLm5hbWV9YH1cbiAgICAgICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdyb3cnLFxuICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgICAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiA0OCAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiB7IGxlZnQ6IDggKiBzY2FsZUZhY3RvciwgcmlnaHQ6IDggKiBzY2FsZUZhY3RvciB9LFxuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IHsgdG9wOiA0ICogc2NhbGVGYWN0b3IsIGJvdHRvbTogNCAqIHNjYWxlRmFjdG9yIH0sXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbjogeyByaWdodDogMTAgKiBzY2FsZUZhY3RvciB9LFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICAgICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAyOCAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDI4ICogc2NhbGVGYWN0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgdWlCYWNrZ3JvdW5kPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmVNb2RlOiAnc3RyZXRjaCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6IElDT05TLlBFUlNPTixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9VaUVudGl0eT5cblxuICAgICAgICAgICAgICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt1c2VyLm5hbWUgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YDxiPiR7dXNlci5uYW1lfTwvYj5gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXsxNCAqIHNjYWxlRmFjdG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPXtDb2xvcjQuV2hpdGUoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgeyF1c2VyLm5hbWUuaW5jbHVkZXMoJyMnKSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTQgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxNCAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpQmFja2dyb3VuZD17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlTW9kZTogJ3N0cmV0Y2gnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiBJQ09OUy5WRVJJRklFRF9VU0VSLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogQ29sb3I0LldoaXRlKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsodXNlci5yb2xlID09PSAnb3duZXInIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci5yb2xlID09PSAnb3BlcmF0b3InKSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnYXV0bycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjAgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IDQgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiB7IGxlZnQ6IDggKiBzY2FsZUZhY3RvciB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IDQgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aUJhY2tncm91bmQ9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IENvbG9yNC5mcm9tSGV4U3RyaW5nKCcjQTA5QkE4JyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YDxiPiR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVzZXIucm9sZSA/PyAnJyk/LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnJvbGU/LnNsaWNlKDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH08L2I+YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9ezEyICogc2NhbGVGYWN0b3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPXtDb2xvcjQuQmxhY2soKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXsodXNlci5uYW1lID8gMTIgOiAxNCkgKiBzY2FsZUZhY3Rvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt1c2VyLm5hbWUgPyB1c2VyLmFkZHJlc3MgOiBgJHt1c2VyLmFkZHJlc3N9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBDb2xvcjQuZnJvbUhleFN0cmluZygnIzcxNkI3QycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBDb2xvcjQuV2hpdGUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgICAgICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgICAgICAgICAgICAge3VzZXIuY2FuQmVSZW1vdmVkICYmIChcbiAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIGlkPXtgcmVtb3ZlLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cIjxiPlJlbW92ZTwvYj5cIlxuICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZT17MTQgKiBzY2FsZUZhY3Rvcn1cbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcj17Q29sb3I0LmZyb21IZXhTdHJpbmcoJyNGRjJENTVGRicpfVxuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogMTAgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDEwICogc2NhbGVGYWN0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZURvd249eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVyYXRpb25Db250cm9sU3RhdGUuYWRtaW5Ub1JlbW92ZSA9IHVzZXJcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxLFxuICAgICAgICAgICAgICAgICAgICAvLyBtYXJnaW46IHsgdG9wOiAtNCAqIHNjYWxlRmFjdG9yLCBib3R0b206IDQgKiBzY2FsZUZhY3RvciB9LFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIHVpQmFja2dyb3VuZD17eyBjb2xvcjogQ29sb3I0LmZyb21IZXhTdHJpbmcoJyM0MzQwNEEnKSB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgICA8L1VpRW50aXR5PlxuXG4gICAgICAgIHtzY2VuZUFkbWlucy5sZW5ndGggPiBBRE1JTlNfUEVSX1BBR0UgJiYgKFxuICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ3JvdycsXG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsXG4gICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBtYXJnaW46IHsgdG9wOiAyMCAqIHNjYWxlRmFjdG9yIH0sXG4gICAgICAgICAgICAgIHBhZGRpbmc6IHsgbGVmdDogMTAgKiBzY2FsZUZhY3RvciwgcmlnaHQ6IDEwICogc2NhbGVGYWN0b3IgfSxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICBpZD1cInByZXZcIlxuICAgICAgICAgICAgICB2YWx1ZT1cIlByZXZcIlxuICAgICAgICAgICAgICB2YXJpYW50PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e3BhZ2UgPD0gMX1cbiAgICAgICAgICAgICAgZm9udFNpemU9ezE4ICogc2NhbGVGYWN0b3J9XG4gICAgICAgICAgICAgIGljb249e0lDT05TLkJBQ0t9XG4gICAgICAgICAgICAgIGljb25UcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICB3aWR0aDogMjUgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDI1ICogc2NhbGVGYWN0b3IsXG4gICAgICAgICAgICAgICAgbWFyZ2luOiB7IGxlZnQ6IDggKiBzY2FsZUZhY3RvciB9LFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBpY29uQmFja2dyb3VuZD17eyBjb2xvcjogcGFnZSA8PSAxID8gQ29sb3I0LmZyb21IZXhTdHJpbmcoJyMzMjMyMzInKSA6IENvbG9yNC5XaGl0ZSgpIH19XG4gICAgICAgICAgICAgIGNvbG9yPXtcbiAgICAgICAgICAgICAgICBwYWdlIDw9IDEgPyBDb2xvcjQuZnJvbUhleFN0cmluZygnIzMyMzIzMicpIDogQ29sb3I0LldoaXRlKClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBsYWJlbFRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgIG1hcmdpbjogeyByaWdodDogMTAgKiBzY2FsZUZhY3RvciB9LFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgIGhlaWdodDogNDIgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgb25Nb3VzZURvd249eygpID0+IHNldFBhZ2UocGFnZSAtIDEpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxMYWJlbFxuICAgICAgICAgICAgICB2YWx1ZT17YCR7cGFnZX0gLyAke01hdGguY2VpbChzY2VuZUFkbWlucy5sZW5ndGggLyBBRE1JTlNfUEVSX1BBR0UpfWB9XG4gICAgICAgICAgICAgIGZvbnRTaXplPXsxNCAqIHNjYWxlRmFjdG9yfVxuICAgICAgICAgICAgICBjb2xvcj17Q29sb3I0LldoaXRlKCl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICBpZD1cIm5leHRcIlxuICAgICAgICAgICAgICB2YWx1ZT1cIjxiPk5leHQ8L2I+XCJcbiAgICAgICAgICAgICAgdmFyaWFudD1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgIGZvbnRTaXplPXsxOCAqIHNjYWxlRmFjdG9yfVxuICAgICAgICAgICAgICBpY29uUmlnaHQ9e0lDT05TLk5FWFR9XG4gICAgICAgICAgICAgIGljb25SaWdodFRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgIHdpZHRoOiAyNSAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgICAgICAgIGhlaWdodDogMjUgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgICAgICBtYXJnaW46IHsgcmlnaHQ6IDggKiBzY2FsZUZhY3RvciB9LFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBsYWJlbFRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgIG1hcmdpbjogeyBsZWZ0OiAxMCAqIHNjYWxlRmFjdG9yIH0sXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGljb25SaWdodEJhY2tncm91bmQ9e3tcbiAgICAgICAgICAgICAgICBjb2xvcjogcGFnZSA+PSBNYXRoLmNlaWwoc2NlbmVBZG1pbnMubGVuZ3RoIC8gQURNSU5TX1BFUl9QQUdFKVxuICAgICAgICAgICAgICAgICAgICA/IENvbG9yNC5mcm9tSGV4U3RyaW5nKCcjMzIzMjMyJylcbiAgICAgICAgICAgICAgICAgICAgOiBDb2xvcjQuV2hpdGUoKVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGNvbG9yPXtcbiAgICAgICAgICAgICAgICBwYWdlID49IE1hdGguY2VpbChzY2VuZUFkbWlucy5sZW5ndGggLyBBRE1JTlNfUEVSX1BBR0UpXG4gICAgICAgICAgICAgICAgICA/IENvbG9yNC5mcm9tSGV4U3RyaW5nKCcjMzIzMjMyJylcbiAgICAgICAgICAgICAgICAgIDogQ29sb3I0LldoaXRlKClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17cGFnZSA+PSBNYXRoLmNlaWwoc2NlbmVBZG1pbnMubGVuZ3RoIC8gQURNSU5TX1BFUl9QQUdFKX1cbiAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDQyICogc2NhbGVGYWN0b3IsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIG9uTW91c2VEb3duPXsoKSA9PiBzZXRQYWdlKHBhZ2UgKyAxKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICAgKX1cbiAgICAgIDwvVWlFbnRpdHk+XG4gICAgPC9VaUVudGl0eT5cbiAgKVxufVxuIl19
@@ -0,0 +1,8 @@
1
+ import { IEngine } from '@dcl/ecs';
2
+ import ReactEcs from '@dcl/react-ecs';
3
+ import { SceneAdmin } from '.';
4
+ export declare function RemoveAdminConfirmation({ scaleFactor, admin, engine, }: {
5
+ scaleFactor: number;
6
+ admin: SceneAdmin;
7
+ engine: IEngine;
8
+ }): ReactEcs.JSX.Element;
@@ -0,0 +1,75 @@
1
+ import { Color4 } from '@dcl/ecs-math';
2
+ import ReactEcs, { UiEntity, Label } from '@dcl/react-ecs';
3
+ import { Button } from '../Button';
4
+ import { deleteSceneAdmin } from './api';
5
+ import { moderationControlState } from '.';
6
+ import { LoadingDots } from '../Loading';
7
+ import { Error } from '../Error';
8
+ import { fetchSceneAdmins } from '..';
9
+ export function RemoveAdminConfirmation({ scaleFactor, admin, engine, }) {
10
+ const [isLoading, setIsLoading] = ReactEcs.useState(false);
11
+ const [error, setError] = ReactEcs.useState('');
12
+ return (ReactEcs.createElement(UiEntity, { uiTransform: {
13
+ width: '100%',
14
+ height: '100%',
15
+ display: 'flex',
16
+ justifyContent: 'center',
17
+ alignItems: 'center',
18
+ } },
19
+ ReactEcs.createElement(UiEntity, { uiTransform: {
20
+ width: 675 * scaleFactor,
21
+ minHeight: 279 * scaleFactor,
22
+ padding: 24 * scaleFactor,
23
+ display: 'flex',
24
+ flexDirection: 'column',
25
+ alignItems: 'center',
26
+ justifyContent: 'center',
27
+ borderRadius: 12,
28
+ }, uiBackground: { color: Color4.Black() } },
29
+ ReactEcs.createElement(UiEntity, { uiTransform: { flexDirection: 'row', maxWidth: 675 * scaleFactor } },
30
+ ReactEcs.createElement(Label, { value: `Are you sure you want to remove `, fontSize: 18 * scaleFactor, color: Color4.White() }),
31
+ ReactEcs.createElement(Label, { value: `<b>${admin.name || (admin.address ? `${admin.address.substring(0, 6)}...${admin.address.substring(admin.address.length - 4)}` : '')}</b>`, fontSize: 18 * scaleFactor, color: Color4.fromHexString('#FF2D55') }),
32
+ ReactEcs.createElement(Label, { value: ` from the Admin list?`, fontSize: 18 * scaleFactor, color: Color4.White() })),
33
+ ReactEcs.createElement(Label, { value: "If you proceed, they will lose access to tehe Admin Tools for this scene.", fontSize: 14 * scaleFactor, color: Color4.Gray(), uiTransform: {
34
+ margin: { top: 12 * scaleFactor, bottom: 24 * scaleFactor },
35
+ } }),
36
+ ReactEcs.createElement(UiEntity, { uiTransform: {
37
+ display: 'flex',
38
+ flexDirection: 'row',
39
+ justifyContent: 'center',
40
+ alignItems: 'center',
41
+ width: '100%',
42
+ } },
43
+ !isLoading && (ReactEcs.createElement(Button, { id: "cancel-remove", value: "<b>Cancel</b>", variant: "primary", fontSize: 16 * scaleFactor, color: Color4.Black(), uiTransform: {
44
+ width: 90 * scaleFactor,
45
+ height: 40 * scaleFactor,
46
+ display: 'flex',
47
+ justifyContent: 'center',
48
+ alignItems: 'center',
49
+ margin: { right: 30 * scaleFactor, left: 30 * scaleFactor },
50
+ }, onMouseDown: () => {
51
+ moderationControlState.adminToRemove = undefined;
52
+ } })),
53
+ !isLoading && (ReactEcs.createElement(Button, { id: "confirm-remove", value: '<b>Remove</b>', variant: "primary", fontSize: 16 * scaleFactor, color: Color4.White(), uiTransform: {
54
+ width: 160 * scaleFactor,
55
+ height: 40 * scaleFactor,
56
+ justifyContent: 'center',
57
+ alignItems: 'center',
58
+ }, uiBackground: { color: Color4.fromHexString('#FF2D55') }, onMouseDown: async () => {
59
+ if (!isLoading && admin.address) {
60
+ setIsLoading(true);
61
+ const [error] = await deleteSceneAdmin(admin.address);
62
+ if (error) {
63
+ setError(error);
64
+ }
65
+ else {
66
+ moderationControlState.adminToRemove = undefined;
67
+ await fetchSceneAdmins();
68
+ }
69
+ setIsLoading(false);
70
+ }
71
+ } }))),
72
+ isLoading && ReactEcs.createElement(LoadingDots, { scaleFactor: scaleFactor, engine: engine }),
73
+ error && (ReactEcs.createElement(Error, { uiTransform: { margin: { top: 16 * scaleFactor } }, scaleFactor: scaleFactor, text: error })))));
74
+ }
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVtb3ZlQWRtaW5Db25maXJtYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS9Nb2RlcmF0aW9uQ29udHJvbC9SZW1vdmVBZG1pbkNvbmZpcm1hdGlvbi50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN0QyxPQUFPLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUUxRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ2xDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUN4QyxPQUFPLEVBQUUsc0JBQXNCLEVBQWMsTUFBTSxHQUFHLENBQUE7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUN4QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ2hDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLElBQUksQ0FBQTtBQUdyQyxNQUFNLFVBQVUsdUJBQXVCLENBQUMsRUFDdEMsV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLEdBS1A7SUFDQyxNQUFNLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDMUQsTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBRS9DLE9BQU8sQ0FDTCx1QkFBQyxRQUFRLElBQ1AsV0FBVyxFQUFFO1lBQ1gsS0FBSyxFQUFFLE1BQU07WUFDYixNQUFNLEVBQUUsTUFBTTtZQUNkLE9BQU8sRUFBRSxNQUFNO1lBQ2YsY0FBYyxFQUFFLFFBQVE7WUFDeEIsVUFBVSxFQUFFLFFBQVE7U0FDckI7UUFF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QU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsV0FBVyxFQUFFLEVBQUUsRUFDbEQsV0FBVyxFQUFFLFdBQVcsRUFDeEIsSUFBSSxFQUFFLEtBQUssR0FDWCxDQUNILENBQ1EsQ0FDRixDQUNaLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUVuZ2luZSB9IGZyb20gJ0BkY2wvZWNzJ1xuaW1wb3J0IHsgQ29sb3I0IH0gZnJvbSAnQGRjbC9lY3MtbWF0aCdcbmltcG9ydCBSZWFjdEVjcywgeyBVaUVudGl0eSwgTGFiZWwgfSBmcm9tICdAZGNsL3JlYWN0LWVjcydcblxuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi4vQnV0dG9uJ1xuaW1wb3J0IHsgZGVsZXRlU2NlbmVBZG1pbiB9IGZyb20gJy4vYXBpJ1xuaW1wb3J0IHsgbW9kZXJhdGlvbkNvbnRyb2xTdGF0ZSwgU2NlbmVBZG1pbiB9IGZyb20gJy4nXG5pbXBvcnQgeyBMb2FkaW5nRG90cyB9IGZyb20gJy4uL0xvYWRpbmcnXG5pbXBvcnQgeyBFcnJvciB9IGZyb20gJy4uL0Vycm9yJ1xuaW1wb3J0IHsgZmV0Y2hTY2VuZUFkbWlucyB9IGZyb20gJy4uJ1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBSZW1vdmVBZG1pbkNvbmZpcm1hdGlvbih7XG4gIHNjYWxlRmFjdG9yLFxuICBhZG1pbixcbiAgZW5naW5lLFxufToge1xuICBzY2FsZUZhY3RvcjogbnVtYmVyXG4gIGFkbWluOiBTY2VuZUFkbWluXG4gIGVuZ2luZTogSUVuZ2luZVxufSkge1xuICBjb25zdCBbaXNMb2FkaW5nLCBzZXRJc0xvYWRpbmddID0gUmVhY3RFY3MudXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtlcnJvciwgc2V0RXJyb3JdID0gUmVhY3RFY3MudXNlU3RhdGUoJycpXG5cbiAgcmV0dXJuIChcbiAgICA8VWlFbnRpdHlcbiAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxVaUVudGl0eVxuICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgIHdpZHRoOiA2NzUgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICBtaW5IZWlnaHQ6IDI3OSAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgIHBhZGRpbmc6IDI0ICogc2NhbGVGYWN0b3IsXG4gICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICBib3JkZXJSYWRpdXM6IDEyLFxuICAgICAgICB9fVxuICAgICAgICB1aUJhY2tncm91bmQ9e3sgY29sb3I6IENvbG9yNC5CbGFjaygpIH19XG4gICAgICA+XG4gICAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgbWF4V2lkdGg6IDY3NSAqIHNjYWxlRmFjdG9yIH19PlxuICAgICAgICAgIDxMYWJlbFxuICAgICAgICAgICAgdmFsdWU9e2BBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIGB9XG4gICAgICAgICAgICBmb250U2l6ZT17MTggKiBzY2FsZUZhY3Rvcn1cbiAgICAgICAgICAgIGNvbG9yPXtDb2xvcjQuV2hpdGUoKX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxMYWJlbFxuICAgICAgICAgICAgdmFsdWU9e2A8Yj4ke2FkbWluLm5hbWUgfHwgKGFkbWluLmFkZHJlc3MgPyBgJHthZG1pbi5hZGRyZXNzLnN1YnN0cmluZygwLCA2KX0uLi4ke2FkbWluLmFkZHJlc3Muc3Vic3RyaW5nKGFkbWluLmFkZHJlc3MubGVuZ3RoIC0gNCl9YCA6ICcnKX08L2I+YH1cbiAgICAgICAgICAgIGZvbnRTaXplPXsxOCAqIHNjYWxlRmFjdG9yfVxuICAgICAgICAgICAgY29sb3I9e0NvbG9yNC5mcm9tSGV4U3RyaW5nKCcjRkYyRDU1Jyl9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgIHZhbHVlPXtgIGZyb20gdGhlIEFkbWluIGxpc3Q/YH1cbiAgICAgICAgICAgIGZvbnRTaXplPXsxOCAqIHNjYWxlRmFjdG9yfVxuICAgICAgICAgICAgY29sb3I9e0NvbG9yNC5XaGl0ZSgpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvVWlFbnRpdHk+XG5cbiAgICAgICAgPExhYmVsXG4gICAgICAgICAgdmFsdWU9XCJJZiB5b3UgcHJvY2VlZCwgdGhleSB3aWxsIGxvc2UgYWNjZXNzIHRvIHRlaGUgQWRtaW4gVG9vbHMgZm9yIHRoaXMgc2NlbmUuXCJcbiAgICAgICAgICBmb250U2l6ZT17MTQgKiBzY2FsZUZhY3Rvcn1cbiAgICAgICAgICBjb2xvcj17Q29sb3I0LkdyYXkoKX1cbiAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgbWFyZ2luOiB7IHRvcDogMTIgKiBzY2FsZUZhY3RvciwgYm90dG9tOiAyNCAqIHNjYWxlRmFjdG9yIH0sXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cblxuICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ3JvdycsXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHshaXNMb2FkaW5nICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgaWQ9XCJjYW5jZWwtcmVtb3ZlXCJcbiAgICAgICAgICAgICAgdmFsdWU9XCI8Yj5DYW5jZWw8L2I+XCJcbiAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICBmb250U2l6ZT17MTYgKiBzY2FsZUZhY3Rvcn1cbiAgICAgICAgICAgICAgY29sb3I9e0NvbG9yNC5CbGFjaygpfVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgIHdpZHRoOiA5MCAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgICAgICAgIGhlaWdodDogNDAgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgIG1hcmdpbjogeyByaWdodDogMzAgKiBzY2FsZUZhY3RvciwgbGVmdDogMzAgKiBzY2FsZUZhY3RvciB9LFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4ge1xuICAgICAgICAgICAgICAgIG1vZGVyYXRpb25Db250cm9sU3RhdGUuYWRtaW5Ub1JlbW92ZSA9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICAgIHshaXNMb2FkaW5nICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgaWQ9XCJjb25maXJtLXJlbW92ZVwiXG4gICAgICAgICAgICAgIHZhbHVlPXsnPGI+UmVtb3ZlPC9iPid9XG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgZm9udFNpemU9ezE2ICogc2NhbGVGYWN0b3J9XG4gICAgICAgICAgICAgIGNvbG9yPXtDb2xvcjQuV2hpdGUoKX1cbiAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICB3aWR0aDogMTYwICogc2NhbGVGYWN0b3IsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA0MCAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgdWlCYWNrZ3JvdW5kPXt7IGNvbG9yOiBDb2xvcjQuZnJvbUhleFN0cmluZygnI0ZGMkQ1NScpIH19XG4gICAgICAgICAgICAgIG9uTW91c2VEb3duPXthc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc0xvYWRpbmcgJiYgYWRtaW4uYWRkcmVzcykge1xuICAgICAgICAgICAgICAgICAgc2V0SXNMb2FkaW5nKHRydWUpXG4gICAgICAgICAgICAgICAgICBjb25zdCBbZXJyb3JdID0gYXdhaXQgZGVsZXRlU2NlbmVBZG1pbihhZG1pbi5hZGRyZXNzKVxuICAgICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldEVycm9yKGVycm9yKVxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbW9kZXJhdGlvbkNvbnRyb2xTdGF0ZS5hZG1pblRvUmVtb3ZlID0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGZldGNoU2NlbmVBZG1pbnMoKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICAge2lzTG9hZGluZyAmJiA8TG9hZGluZ0RvdHMgc2NhbGVGYWN0b3I9e3NjYWxlRmFjdG9yfSBlbmdpbmU9e2VuZ2luZX0gLz59XG4gICAgICAgIHtlcnJvciAmJiAoXG4gICAgICAgICAgPEVycm9yXG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17eyBtYXJnaW46IHsgdG9wOiAxNiAqIHNjYWxlRmFjdG9yIH0gfX1cbiAgICAgICAgICAgIHNjYWxlRmFjdG9yPXtzY2FsZUZhY3Rvcn1cbiAgICAgICAgICAgIHRleHQ9e2Vycm9yfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L1VpRW50aXR5PlxuICAgIDwvVWlFbnRpdHk+XG4gIClcbn1cbiJdfQ==
@@ -0,0 +1,12 @@
1
+ import { Result } from "../fetch-utils";
2
+ type SceneAdminResponse = {
3
+ id: string;
4
+ name: string;
5
+ admin: string;
6
+ active: string;
7
+ canBeRemoved: boolean;
8
+ };
9
+ export declare function getSceneAdmins(): Promise<Result<SceneAdminResponse[], string>>;
10
+ export declare function postSceneAdmin<T = unknown>(address: string): Promise<Result<T, string>>;
11
+ export declare function deleteSceneAdmin<T = unknown>(address: string): Promise<Result<T, string>>;
12
+ export {};
@@ -0,0 +1,28 @@
1
+ import { getDomain, wrapSignedFetch } from "../fetch-utils";
2
+ const URLS = () => ({
3
+ SCENE_ADMIN: `https://comms-gatekeeper.decentraland.${getDomain()}/scene-admin`,
4
+ });
5
+ export async function getSceneAdmins() {
6
+ return wrapSignedFetch({ url: URLS().SCENE_ADMIN });
7
+ }
8
+ export async function postSceneAdmin(address) {
9
+ return wrapSignedFetch({
10
+ url: URLS().SCENE_ADMIN,
11
+ init: {
12
+ method: 'POST',
13
+ headers: {},
14
+ body: JSON.stringify({ admin: address })
15
+ }
16
+ });
17
+ }
18
+ export async function deleteSceneAdmin(address) {
19
+ return wrapSignedFetch({
20
+ url: URLS().SCENE_ADMIN,
21
+ init: {
22
+ method: 'DELETE',
23
+ headers: {},
24
+ body: JSON.stringify({ admin: address })
25
+ }
26
+ });
27
+ }
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FkbWluLXRvb2xraXQtdWkvTW9kZXJhdGlvbkNvbnRyb2wvYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEUsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNsQixXQUFXLEVBQUUseUNBQXlDLFNBQVMsRUFBRSxjQUFjO0NBQ2hGLENBQUMsQ0FBQTtBQVVGLE1BQU0sQ0FBQyxLQUFLLFVBQVUsY0FBYztJQUNsQyxPQUFPLGVBQWUsQ0FBdUIsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQTtBQUMzRSxDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxjQUFjLENBQWMsT0FBZTtJQUMvRCxPQUFPLGVBQWUsQ0FBSTtRQUN4QixHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsV0FBVztRQUN2QixJQUFJLEVBQUU7WUFDSixNQUFNLEVBQUUsTUFBTTtZQUNkLE9BQU8sRUFBRSxFQUFFO1lBQ1gsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUM7U0FDekM7S0FDRixDQUFDLENBQUE7QUFDSixDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxnQkFBZ0IsQ0FBYyxPQUFlO0lBQ2pFLE9BQU8sZUFBZSxDQUFJO1FBQ3hCLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxXQUFXO1FBQ3ZCLElBQUksRUFBRTtZQUNKLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLE9BQU8sRUFBRSxFQUFFO1lBQ1gsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUM7U0FDekM7S0FDRixDQUFDLENBQUE7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0RG9tYWluLCBSZXN1bHQsIHdyYXBTaWduZWRGZXRjaCB9IGZyb20gXCIuLi9mZXRjaC11dGlsc1wiO1xuXG5jb25zdCBVUkxTID0gKCkgPT4gKHtcbiAgU0NFTkVfQURNSU46IGBodHRwczovL2NvbW1zLWdhdGVrZWVwZXIuZGVjZW50cmFsYW5kLiR7Z2V0RG9tYWluKCl9L3NjZW5lLWFkbWluYCxcbn0pXG5cbnR5cGUgU2NlbmVBZG1pblJlc3BvbnNlID0ge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGFkbWluOiBzdHJpbmc7XG4gIGFjdGl2ZTogc3RyaW5nO1xuICBjYW5CZVJlbW92ZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRTY2VuZUFkbWlucygpOiBQcm9taXNlPFJlc3VsdDxTY2VuZUFkbWluUmVzcG9uc2VbXSwgc3RyaW5nPj4gIHtcbiAgcmV0dXJuIHdyYXBTaWduZWRGZXRjaDxTY2VuZUFkbWluUmVzcG9uc2VbXT4oeyB1cmw6IFVSTFMoKS5TQ0VORV9BRE1JTiB9KVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcG9zdFNjZW5lQWRtaW48VCA9IHVua25vd24+KGFkZHJlc3M6IHN0cmluZykge1xuICByZXR1cm4gd3JhcFNpZ25lZEZldGNoPFQ+KHtcbiAgICB1cmw6IFVSTFMoKS5TQ0VORV9BRE1JTixcbiAgICBpbml0OiB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IHt9LFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBhZG1pbjogYWRkcmVzcyB9KVxuICAgIH1cbiAgfSlcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlbGV0ZVNjZW5lQWRtaW48VCA9IHVua25vd24+KGFkZHJlc3M6IHN0cmluZykge1xuICByZXR1cm4gd3JhcFNpZ25lZEZldGNoPFQ+KHtcbiAgICB1cmw6IFVSTFMoKS5TQ0VORV9BRE1JTixcbiAgICBpbml0OiB7XG4gICAgICBtZXRob2Q6ICdERUxFVEUnLFxuICAgICAgaGVhZGVyczoge30sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGFkbWluOiBhZGRyZXNzIH0pXG4gICAgfVxuICB9KVxufVxuXG4iXX0=
@@ -0,0 +1,23 @@
1
+ import { IEngine } from '@dcl/ecs';
2
+ import ReactEcs from '@dcl/react-ecs';
3
+ import { GetPlayerDataRes } from '../../types';
4
+ type Props = {
5
+ engine: IEngine;
6
+ player: GetPlayerDataRes | null | undefined;
7
+ };
8
+ export declare const BTN_MODERATION_CONTROL = "https://builder-items.decentraland.org/admin_toolkit/assets/icons/admin-panel-moderation-control-button.png";
9
+ export declare const MODERATION_CONTROL_ICON = "https://builder-items.decentraland.org/admin_toolkit/assets/icons/moderation-control-icon.png";
10
+ export type SceneAdmin = {
11
+ name?: string;
12
+ address: string;
13
+ role?: 'owner' | 'operator' | 'admin';
14
+ verified?: boolean;
15
+ canBeRemoved: boolean;
16
+ };
17
+ type State = {
18
+ showModalAdminList?: boolean;
19
+ adminToRemove?: SceneAdmin;
20
+ };
21
+ export declare const moderationControlState: State;
22
+ export declare function ModerationControl({ engine, player }: Props): ReactEcs.JSX.Element;
23
+ export {};
@@ -0,0 +1,37 @@
1
+ import { Color4 } from '@dcl/ecs-math';
2
+ import ReactEcs, { UiEntity } from '@dcl/react-ecs';
3
+ import { Header } from '../Header';
4
+ import { getScaleUIFactor } from '../../ui';
5
+ import { AddUserInput } from './AddUserInput';
6
+ import { Button } from '../Button';
7
+ import { Card } from '../Card';
8
+ import { CONTENT_URL } from '../constants';
9
+ export const BTN_MODERATION_CONTROL = `${CONTENT_URL}/admin_toolkit/assets/icons/admin-panel-moderation-control-button.png`;
10
+ export const MODERATION_CONTROL_ICON = `${CONTENT_URL}/admin_toolkit/assets/icons/moderation-control-icon.png`;
11
+ const VERIFIED_USER_ICON = `${CONTENT_URL}/admin_toolkit/assets/icons/admin-panel-verified-user.png`;
12
+ export const moderationControlState = {
13
+ showModalAdminList: false,
14
+ adminToRemove: undefined
15
+ };
16
+ export function ModerationControl({ engine, player }) {
17
+ const scaleFactor = getScaleUIFactor(engine);
18
+ return (ReactEcs.createElement(Card, { scaleFactor: scaleFactor },
19
+ ReactEcs.createElement(UiEntity, { uiTransform: {
20
+ width: '100%',
21
+ height: '100%',
22
+ flexDirection: 'column',
23
+ } },
24
+ ReactEcs.createElement(Header, { iconSrc: MODERATION_CONTROL_ICON, title: "PERMISSIONS", scaleFactor: scaleFactor }),
25
+ ReactEcs.createElement(AddUserInput, { scaleFactor: scaleFactor, onSubmit: console.log }),
26
+ ReactEcs.createElement(Button, { variant: "secondary", id: "moderation_control_admin_list", value: "<b>View Admin List</b>", fontSize: 18 * scaleFactor, color: Color4.White(), uiTransform: {
27
+ width: 220 * scaleFactor,
28
+ height: 42 * scaleFactor,
29
+ alignItems: 'center',
30
+ justifyContent: 'center',
31
+ }, icon: VERIFIED_USER_ICON, iconTransform: {
32
+ width: 25 * scaleFactor,
33
+ height: 25 * scaleFactor,
34
+ margin: { right: 10 * scaleFactor },
35
+ }, onMouseDown: () => (moderationControlState.showModalAdminList = true) }))));
36
+ }
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS9Nb2RlcmF0aW9uQ29udHJvbC9pbmRleC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN0QyxPQUFPLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRW5ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDbEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBRWxDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDOUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQVMxQyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxHQUFHLFdBQVcsdUVBQXVFLENBQUE7QUFDM0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxXQUFXLHlEQUF5RCxDQUFBO0FBQzlHLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxXQUFXLDJEQUEyRCxDQUFBO0FBZXBHLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFVO0lBQzNDLGtCQUFrQixFQUFFLEtBQUs7SUFDekIsYUFBYSxFQUFFLFNBQVM7Q0FDekIsQ0FBQTtBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQVM7SUFDekQsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUE7SUFFNUMsT0FBTyxDQUNMLHVCQUFDLElBQUksSUFBQyxXQUFXLEVBQUUsV0FBVztRQUM1Qix1QkFBQyxRQUFRLElBQ1AsV0FBVyxFQUFFO2dCQUNYLEtBQUssRUFBRSxNQUFNO2dCQUNiLE1BQU0sRUFBRSxNQUFNO2dCQUNkLGFBQWEsRUFBRSxRQUFRO2FBQ3hCO1lBRUQsdUJBQUMsTUFBTSxJQUNMLE9BQU8sRUFBRSx1QkFBdUIsRUFDaEMsS0FBSyxFQUFDLGFBQWEsRUFDbkIsV0FBVyxFQUFFLFdBQVcsR0FDeEI7WUFDRix1QkFBQyxZQUFZLElBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsR0FBSTtZQUNqRSx1QkFBQyxNQUFNLElBQ0wsT0FBTyxFQUFDLFdBQVcsRUFDbkIsRUFBRSxFQUFDLCtCQUErQixFQUNsQyxLQUFLLEVBQUMsd0JBQXdCLEVBQzlCLFFBQVEsRUFBRSxFQUFFLEdBQUcsV0FBVyxFQUMxQixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUNyQixXQUFXLEVBQUU7b0JBQ1gsS0FBSyxFQUFFLEdBQUcsR0FBRyxXQUFXO29CQUN4QixNQUFNLEVBQUUsRUFBRSxHQUFHLFdBQVc7b0JBQ3hCLFVBQVUsRUFBRSxRQUFRO29CQUNwQixjQUFjLEVBQUUsUUFBUTtpQkFDekIsRUFDRCxJQUFJLEVBQUUsa0JBQWtCLEVBQ3hCLGFBQWEsRUFBRTtvQkFDYixLQUFLLEVBQUUsRUFBRSxHQUFHLFdBQVc7b0JBQ3ZCLE1BQU0sRUFBRSxFQUFFLEdBQUcsV0FBVztvQkFDeEIsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxXQUFXLEVBQUU7aUJBQ3BDLEVBQ0QsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsc0JBQXNCLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLEdBQ3JFLENBQ08sQ0FDTixDQUNSLENBQUE7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUVuZ2luZSB9IGZyb20gJ0BkY2wvZWNzJ1xuaW1wb3J0IHsgQ29sb3I0IH0gZnJvbSAnQGRjbC9lY3MtbWF0aCdcbmltcG9ydCBSZWFjdEVjcywgeyBVaUVudGl0eSB9IGZyb20gJ0BkY2wvcmVhY3QtZWNzJ1xuXG5pbXBvcnQgeyBIZWFkZXIgfSBmcm9tICcuLi9IZWFkZXInXG5pbXBvcnQgeyBnZXRTY2FsZVVJRmFjdG9yIH0gZnJvbSAnLi4vLi4vdWknXG5pbXBvcnQgeyBBZGRVc2VySW5wdXQgfSBmcm9tICcuL0FkZFVzZXJJbnB1dCdcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4uL0J1dHRvbidcbmltcG9ydCB7IEdldFBsYXllckRhdGFSZXMgfSBmcm9tICcuLi8uLi90eXBlcydcbmltcG9ydCB7IENhcmQgfSBmcm9tICcuLi9DYXJkJ1xuaW1wb3J0IHsgQ09OVEVOVF9VUkwgfSBmcm9tICcuLi9jb25zdGFudHMnXG5cblxudHlwZSBQcm9wcyA9IHtcbiAgZW5naW5lOiBJRW5naW5lXG4gIHBsYXllcjogR2V0UGxheWVyRGF0YVJlcyB8IG51bGwgfCB1bmRlZmluZWRcbn1cblxuLy8gVE9ETzogdXBsb2FkIHRoaXMgdG8gdGhlIGNvbnRlbnRcbmV4cG9ydCBjb25zdCBCVE5fTU9ERVJBVElPTl9DT05UUk9MID0gYCR7Q09OVEVOVF9VUkx9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL2FkbWluLXBhbmVsLW1vZGVyYXRpb24tY29udHJvbC1idXR0b24ucG5nYFxuZXhwb3J0IGNvbnN0IE1PREVSQVRJT05fQ09OVFJPTF9JQ09OID0gYCR7Q09OVEVOVF9VUkx9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL21vZGVyYXRpb24tY29udHJvbC1pY29uLnBuZ2BcbmNvbnN0IFZFUklGSUVEX1VTRVJfSUNPTiA9IGAke0NPTlRFTlRfVVJMfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy9hZG1pbi1wYW5lbC12ZXJpZmllZC11c2VyLnBuZ2BcblxuXG5leHBvcnQgdHlwZSBTY2VuZUFkbWluID0ge1xuICBuYW1lPzogc3RyaW5nXG4gIGFkZHJlc3M6IHN0cmluZ1xuICByb2xlPzogJ293bmVyJyB8ICdvcGVyYXRvcicgfCAnYWRtaW4nXG4gIHZlcmlmaWVkPzogYm9vbGVhblxuICBjYW5CZVJlbW92ZWQ6IGJvb2xlYW5cbn1cblxudHlwZSBTdGF0ZSA9IHtcbiAgc2hvd01vZGFsQWRtaW5MaXN0PzogYm9vbGVhblxuICBhZG1pblRvUmVtb3ZlPzogU2NlbmVBZG1pblxufVxuZXhwb3J0IGNvbnN0IG1vZGVyYXRpb25Db250cm9sU3RhdGU6IFN0YXRlID0ge1xuICBzaG93TW9kYWxBZG1pbkxpc3Q6IGZhbHNlLFxuICBhZG1pblRvUmVtb3ZlOiB1bmRlZmluZWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE1vZGVyYXRpb25Db250cm9sKHsgZW5naW5lLCBwbGF5ZXIgfTogUHJvcHMpIHtcbiAgY29uc3Qgc2NhbGVGYWN0b3IgPSBnZXRTY2FsZVVJRmFjdG9yKGVuZ2luZSlcblxuICByZXR1cm4gKFxuICAgIDxDYXJkIHNjYWxlRmFjdG9yPXtzY2FsZUZhY3Rvcn0+XG4gICAgICA8VWlFbnRpdHlcbiAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8SGVhZGVyXG4gICAgICAgICAgaWNvblNyYz17TU9ERVJBVElPTl9DT05UUk9MX0lDT059XG4gICAgICAgICAgdGl0bGU9XCJQRVJNSVNTSU9OU1wiXG4gICAgICAgICAgc2NhbGVGYWN0b3I9e3NjYWxlRmFjdG9yfVxuICAgICAgICAvPlxuICAgICAgICA8QWRkVXNlcklucHV0IHNjYWxlRmFjdG9yPXtzY2FsZUZhY3Rvcn0gb25TdWJtaXQ9e2NvbnNvbGUubG9nfSAvPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgdmFyaWFudD1cInNlY29uZGFyeVwiXG4gICAgICAgICAgaWQ9XCJtb2RlcmF0aW9uX2NvbnRyb2xfYWRtaW5fbGlzdFwiXG4gICAgICAgICAgdmFsdWU9XCI8Yj5WaWV3IEFkbWluIExpc3Q8L2I+XCJcbiAgICAgICAgICBmb250U2l6ZT17MTggKiBzY2FsZUZhY3Rvcn1cbiAgICAgICAgICBjb2xvcj17Q29sb3I0LldoaXRlKCl9XG4gICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgIHdpZHRoOiAyMjAgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgIGhlaWdodDogNDIgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgIH19XG4gICAgICAgICAgaWNvbj17VkVSSUZJRURfVVNFUl9JQ09OfVxuICAgICAgICAgIGljb25UcmFuc2Zvcm09e3tcbiAgICAgICAgICAgIHdpZHRoOiAyNSAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgICAgaGVpZ2h0OiAyNSAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgICAgbWFyZ2luOiB7IHJpZ2h0OiAxMCAqIHNjYWxlRmFjdG9yIH0sXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4gKG1vZGVyYXRpb25Db250cm9sU3RhdGUuc2hvd01vZGFsQWRtaW5MaXN0ID0gdHJ1ZSl9XG4gICAgICAgIC8+XG4gICAgICA8L1VpRW50aXR5PlxuICAgIDwvQ2FyZD5cbiAgKVxufVxuXG4iXX0=