studiokit-scaffolding-js 7.0.12-next.1.4 → 7.0.12-next.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/ActionList.js +170 -34
- package/lib/components/AlertDialog.js +133 -9
- package/lib/components/AlertWithIcon.js +92 -25
- package/lib/components/ConnectedModal.js +43 -13
- package/lib/components/Dropdowns/GroupsDropdown.js +69 -44
- package/lib/components/Dropdowns/ManagedNavDropdown.js +100 -67
- package/lib/components/Dropdowns/UserDropdown.js +111 -21
- package/lib/components/Dropdowns/index.js +27 -9
- package/lib/components/EntityOwnerList.js +52 -18
- package/lib/components/Error.js +106 -11
- package/lib/components/ErrorBoundary.js +134 -35
- package/lib/components/ErrorMessage.js +44 -9
- package/lib/components/Forms/DateField.js +61 -42
- package/lib/components/Forms/TimeField.js +81 -42
- package/lib/components/Forms/index.js +27 -4
- package/lib/components/Groups/CreateEditCopySaveButtons.js +114 -11
- package/lib/components/Groups/ExternalGroups/Attach.js +212 -148
- package/lib/components/Groups/ExternalGroups/Table.js +181 -45
- package/lib/components/Groups/GroupCreateOrEditCommonProps.js +5 -1
- package/lib/components/Groups/RosterSyncInfo.js +147 -20
- package/lib/components/HOC/AccessibleAppComponent.js +98 -73
- package/lib/components/HOC/ActivityRequiredComponent.js +92 -49
- package/lib/components/HOC/AsyncComponent.js +54 -39
- package/lib/components/HOC/AuthenticatedComponent.js +58 -38
- package/lib/components/HOC/CollectionComponent.js +170 -110
- package/lib/components/HOC/CollectionFirstItemComponent.js +51 -38
- package/lib/components/HOC/CollectionItemComponent.js +168 -106
- package/lib/components/HOC/ConnectedModalComponent.js +109 -80
- package/lib/components/HOC/DataDependentComponent.js +29 -21
- package/lib/components/HOC/EntityComponent.js +71 -57
- package/lib/components/HOC/FullscreenModalComponent.js +163 -123
- package/lib/components/HOC/GroupActivityRequiredComponent.js +45 -31
- package/lib/components/HOC/GuidComponent.js +29 -22
- package/lib/components/HOC/ModelContextDependencyVerifyComponent.js +41 -31
- package/lib/components/HOC/ModelErrorRedirectComponent.js +51 -47
- package/lib/components/HOC/SearchPersistorComponent.js +240 -166
- package/lib/components/HOC/UnauthenticatedComponent.js +37 -25
- package/lib/components/HOC/UserComponent.js +12 -7
- package/lib/components/Icons/IconAlphaList.js +33 -5
- package/lib/components/Icons/IconExternalUser.js +33 -5
- package/lib/components/Icons/IconImpersonation.js +33 -5
- package/lib/components/Icons/IconStopImpersonating.js +33 -5
- package/lib/components/Icons/IconTable.js +35 -7
- package/lib/components/Icons/IconTableDeleteCol.js +33 -5
- package/lib/components/Icons/IconTableDeleteRow.js +33 -5
- package/lib/components/Icons/IconTableInsertCol.js +33 -5
- package/lib/components/Icons/IconTableInsertRow.js +33 -5
- package/lib/components/Impersonation/Button.js +77 -13
- package/lib/components/Impersonation/Link.js +77 -13
- package/lib/components/Impersonation/UserDetail.js +66 -9
- package/lib/components/Loading.js +26 -4
- package/lib/components/LockDownBrowser/Check.js +194 -49
- package/lib/components/LockDownBrowser/ExitButton.js +26 -9
- package/lib/components/LockDownBrowser/Launch.js +70 -62
- package/lib/components/Lti/Confirm.js +152 -11
- package/lib/components/Lti/CreateNonLtiGroupAlertDialog.js +170 -33
- package/lib/components/Lti/Launch.js +105 -24
- package/lib/components/Lti/LaunchGroup.js +85 -13
- package/lib/components/ManageTable.js +309 -87
- package/lib/components/ManageTableNoDataComponent.js +42 -4
- package/lib/components/NewVersionAlert.js +82 -46
- package/lib/components/NotFound.js +86 -10
- package/lib/components/Notifications.js +185 -126
- package/lib/components/PaginationNextButton.js +33 -6
- package/lib/components/PaginationPreviousButton.js +33 -6
- package/lib/components/Quill/CustomToolbar.js +432 -218
- package/lib/components/Quill/Formats/Image.js +73 -63
- package/lib/components/Quill/Formats/List.js +45 -45
- package/lib/components/Quill/Formats/Video.js +28 -24
- package/lib/components/Quill/ImageDropModule.js +147 -117
- package/lib/components/Quill/ImageWarning.js +47 -9
- package/lib/components/Quill/ImageWithAltTextModal.js +425 -86
- package/lib/components/Quill/Specs/CustomImageSpec.js +42 -34
- package/lib/components/Quill/Specs/CustomVideoSpec.js +34 -28
- package/lib/components/Quill/TableModule/Blots/BaseTableBlot.js +98 -98
- package/lib/components/Quill/TableModule/Blots/TableBlot.js +52 -47
- package/lib/components/Quill/TableModule/Blots/TableBodyBlot.js +53 -48
- package/lib/components/Quill/TableModule/Blots/TableCellBlot.js +224 -221
- package/lib/components/Quill/TableModule/Blots/TableContainer.js +80 -83
- package/lib/components/Quill/TableModule/Blots/TableRowBlot.js +75 -70
- package/lib/components/Quill/TableModule/constants.js +45 -41
- package/lib/components/Quill/TableModule/index.js +362 -301
- package/lib/components/Quill/TableModule/utils.js +42 -38
- package/lib/components/Quill/accessibilityFix.js +234 -232
- package/lib/components/Quill/index.js +34 -28
- package/lib/components/RefreshIndicator/Bordered.js +47 -6
- package/lib/components/RefreshIndicator/Inline.js +47 -8
- package/lib/components/RefreshIndicator/index.js +263 -59
- package/lib/components/SearchControls.js +216 -11
- package/lib/components/SentryRoute.js +11 -6
- package/lib/components/Tables/RoleFilter.js +69 -32
- package/lib/components/Tables/TextFilter.js +62 -13
- package/lib/components/UserRoles/Add.js +199 -96
- package/lib/components/UserRoles/Context.js +11 -7
- package/lib/components/UserRoles/RoleCell.js +181 -72
- package/lib/components/UserRoles/Select.js +157 -17
- package/lib/components/UserRoles/Table.js +221 -80
- package/lib/components/UserRoles/index.js +534 -384
- package/lib/config/eslint/index.js +32 -28
- package/lib/config/eslint/lib/order.js +26 -27
- package/lib/config/eslint/lib/prettier.js +20 -18
- package/lib/config/eslint/lib/typescript.js +93 -112
- package/lib/config/eslint/react.js +24 -14
- package/lib/constants/baseActivity.js +30 -26
- package/lib/constants/baseRole.js +14 -10
- package/lib/constants/configuration.js +33 -29
- package/lib/constants/externalProviderType.js +10 -6
- package/lib/constants/fetchErrorData.js +15 -11
- package/lib/constants/index.js +137 -14
- package/lib/constants/lockDownBrowser.js +28 -24
- package/lib/constants/mockData.js +382 -297
- package/lib/constants/modelStatus.js +15 -11
- package/lib/constants/notificationType.js +12 -8
- package/lib/constants/operatingSystem.js +12 -8
- package/lib/constants/shard.js +11 -7
- package/lib/constants/table.js +21 -21
- package/lib/constants/tier.js +12 -8
- package/lib/constants/userRole.js +15 -5
- package/lib/endpointMappings.js +197 -181
- package/lib/hooks/useCollection.js +82 -62
- package/lib/hooks/useCollectionConfiguration.js +228 -83
- package/lib/hooks/useCollectionItem.js +154 -54
- package/lib/hooks/useGuid.js +20 -8
- package/lib/hooks/usePrevious.js +19 -13
- package/lib/index.js +157 -25
- package/lib/redux/actionCreator.js +50 -28
- package/lib/redux/actions/AuthAction.js +44 -31
- package/lib/redux/actions/ModalAction.js +10 -6
- package/lib/redux/actions/ModelAction.js +77 -39
- package/lib/redux/actions/NotificationAction.js +10 -6
- package/lib/redux/actions/SearchAction.js +9 -5
- package/lib/redux/actions/index.js +60 -7
- package/lib/redux/configureReducers.js +60 -49
- package/lib/redux/configureStore.js +83 -87
- package/lib/redux/helpers.js +6 -2
- package/lib/redux/reducers/authReducer.js +50 -43
- package/lib/redux/reducers/index.js +41 -13
- package/lib/redux/reducers/modalsReducer.js +47 -29
- package/lib/redux/reducers/modelsReducer.js +178 -173
- package/lib/redux/reducers/notificationsReducer.js +24 -18
- package/lib/redux/reducers/searchReducer.js +25 -19
- package/lib/redux/sagas/appInsightsSaga.js +22 -18
- package/lib/redux/sagas/authSaga.js +253 -218
- package/lib/redux/sagas/caliperSaga.js +159 -143
- package/lib/redux/sagas/clockOffsetSaga.js +34 -31
- package/lib/redux/sagas/configurationSaga.js +11 -7
- package/lib/redux/sagas/downtimeApiErrorSaga.js +20 -17
- package/lib/redux/sagas/errorSaga.js +27 -21
- package/lib/redux/sagas/googleAnalyticsSaga.js +28 -24
- package/lib/redux/sagas/identityProviderSaga.js +22 -18
- package/lib/redux/sagas/initialDataLoadSaga.js +37 -28
- package/lib/redux/sagas/lockDownBrowserErrorSaga.js +29 -20
- package/lib/redux/sagas/modelFetchSaga.js +355 -322
- package/lib/redux/sagas/noStoreSaga.js +61 -48
- package/lib/redux/sagas/postLoginDataSaga.js +45 -34
- package/lib/redux/sagas/postLoginRedirectSaga.js +27 -27
- package/lib/redux/sagas/rootSaga.js +82 -57
- package/lib/redux/sagas/sentrySaga.js +29 -25
- package/lib/redux/sagas/userIdSaga.js +16 -12
- package/lib/services/codeProviderService.js +25 -19
- package/lib/services/dateService.js +12 -7
- package/lib/services/documentService.js +17 -12
- package/lib/services/fetchService.js +129 -112
- package/lib/services/persistenceService.js +33 -29
- package/lib/services/ticketProviderService.js +29 -23
- package/lib/services/tokenPersistenceService.js +12 -8
- package/lib/services/windowService.js +18 -14
- package/lib/startup.js +132 -114
- package/lib/types/AppConfiguration.js +5 -1
- package/lib/types/Artifact.js +11 -7
- package/lib/types/BaseReduxState.js +5 -1
- package/lib/types/Client.js +5 -1
- package/lib/types/Collection.js +5 -1
- package/lib/types/Configuration.js +5 -1
- package/lib/types/DeepLinkingResponseRequest.js +5 -1
- package/lib/types/DeletableModel.js +5 -1
- package/lib/types/Event.js +5 -1
- package/lib/types/ExternalGroup.js +5 -1
- package/lib/types/ExternalProvider.js +5 -1
- package/lib/types/ExternalTerm.js +5 -1
- package/lib/types/Group.js +5 -1
- package/lib/types/IdentityProvider.js +5 -1
- package/lib/types/LtiLaunch.js +5 -1
- package/lib/types/NameOnlyEntity.js +5 -1
- package/lib/types/Notification.js +5 -1
- package/lib/types/OptionalRecord.js +5 -1
- package/lib/types/OwnerSchedule.js +5 -1
- package/lib/types/PropertyOfType.js +5 -1
- package/lib/types/Quill.js +5 -1
- package/lib/types/RoleDescription.js +5 -1
- package/lib/types/Search.js +5 -1
- package/lib/types/SimpleLocation.js +5 -1
- package/lib/types/UniTime.js +5 -1
- package/lib/types/User.js +5 -1
- package/lib/types/UserRole.js +5 -1
- package/lib/types/auth/AuthState.js +5 -1
- package/lib/types/auth/CasV1LoginRequestBody.js +5 -1
- package/lib/types/auth/ClientCredentials.js +5 -1
- package/lib/types/auth/CodeProviderService.js +5 -1
- package/lib/types/auth/LocalLoginRequestBody.js +5 -1
- package/lib/types/auth/TicketProviderService.js +5 -1
- package/lib/types/auth/TokenPersistenceService.js +5 -1
- package/lib/types/auth/index.js +82 -9
- package/lib/types/externals.d.js +2 -0
- package/lib/types/index.js +313 -30
- package/lib/types/net/EndpointConfig.js +5 -1
- package/lib/types/net/EndpointMapping.js +5 -1
- package/lib/types/net/EndpointMappings.js +5 -1
- package/lib/types/net/ErrorHandler.js +5 -1
- package/lib/types/net/FetchConfig.js +5 -1
- package/lib/types/net/FetchErrorData.js +10 -6
- package/lib/types/net/FetchResult.js +5 -1
- package/lib/types/net/HTTPMethod.js +5 -1
- package/lib/types/net/HTTPStatusCode.js +16 -12
- package/lib/types/net/Metadata.js +5 -1
- package/lib/types/net/Model.js +5 -1
- package/lib/types/net/ModelCollection.js +5 -1
- package/lib/types/net/ModelsState.js +5 -1
- package/lib/types/net/OAuthToken.js +5 -1
- package/lib/types/net/OAuthTokenOrNull.js +5 -1
- package/lib/types/net/TokenAccessFunction.js +5 -1
- package/lib/types/net/index.js +181 -18
- package/lib/utils/baseActivity.js +133 -123
- package/lib/utils/baseRole.js +37 -33
- package/lib/utils/collection.js +425 -298
- package/lib/utils/cookies.js +22 -19
- package/lib/utils/date.js +303 -279
- package/lib/utils/dom.js +176 -165
- package/lib/utils/domainIdentifier.js +9 -5
- package/lib/utils/entityUserRole.js +6 -2
- package/lib/utils/error.js +17 -15
- package/lib/utils/events.js +40 -31
- package/lib/utils/externalGroup.js +22 -18
- package/lib/utils/externalProviders.js +8 -4
- package/lib/utils/externalTerms.js +10 -3
- package/lib/utils/fetch.js +179 -180
- package/lib/utils/group.js +18 -7
- package/lib/utils/groupDates.js +37 -33
- package/lib/utils/groupRoles.js +25 -21
- package/lib/utils/lockDownBrowser.js +15 -11
- package/lib/utils/logger.js +26 -22
- package/lib/utils/lti.js +9 -4
- package/lib/utils/model.js +36 -41
- package/lib/utils/number.js +21 -18
- package/lib/utils/promise.js +28 -21
- package/lib/utils/quill.js +65 -62
- package/lib/utils/route.js +58 -55
- package/lib/utils/search.js +76 -80
- package/lib/utils/shard.js +37 -37
- package/lib/utils/sort.js +50 -42
- package/lib/utils/string.js +13 -8
- package/lib/utils/table.js +38 -33
- package/lib/utils/timezone.js +10 -6
- package/lib/utils/url.js +142 -142
- package/lib/utils/user.js +58 -55
- package/lib/utils/userAgent.js +10 -10
- package/lib/utils/userRole.js +57 -49
- package/package.json +17 -3
|
@@ -1,77 +1,186 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
3
7
|
exports.RoleCell = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const RoleCell =
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
8
|
+
var _reactCompilerRuntime = require("react-compiler-runtime");
|
|
9
|
+
var _core = require("@material-ui/core");
|
|
10
|
+
var _Delete = _interopRequireDefault(require("@material-ui/icons/Delete"));
|
|
11
|
+
var _react = require("react");
|
|
12
|
+
var _reactBootstrap = require("react-bootstrap");
|
|
13
|
+
var _reactRedux = require("react-redux");
|
|
14
|
+
var _userRole = require("../../utils/userRole");
|
|
15
|
+
var _IconExternalUser = require("../Icons/IconExternalUser");
|
|
16
|
+
var _Inline = require("../RefreshIndicator/Inline");
|
|
17
|
+
var _Context = require("./Context");
|
|
18
|
+
var _Select = require("./Select");
|
|
19
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
20
|
+
const RoleCell = t0 => {
|
|
21
|
+
const $ = (0, _reactCompilerRuntime.c)(39);
|
|
22
|
+
const {
|
|
23
|
+
user,
|
|
24
|
+
requiredRoleCount
|
|
25
|
+
} = t0;
|
|
26
|
+
const {
|
|
27
|
+
isUpdateDisabled,
|
|
28
|
+
isDeleteDisabled,
|
|
29
|
+
canModify,
|
|
30
|
+
canDeleteSelf,
|
|
31
|
+
allowMultipleRoles,
|
|
32
|
+
roles,
|
|
33
|
+
requiredRole,
|
|
34
|
+
textForRole,
|
|
35
|
+
userRoleToUpdate,
|
|
36
|
+
isUpdating,
|
|
37
|
+
updateUserRole,
|
|
38
|
+
userRoleToRemove,
|
|
39
|
+
isRemoving,
|
|
40
|
+
removeUserRole
|
|
41
|
+
} = (0, _react.useContext)(_Context.UserRolesContext);
|
|
42
|
+
const currentUserId = (0, _reactRedux.useSelector)(_temp);
|
|
43
|
+
let t1;
|
|
44
|
+
if ($[0] !== allowMultipleRoles || $[1] !== canDeleteSelf || $[2] !== canModify || $[3] !== currentUserId || $[4] !== isDeleteDisabled || $[5] !== isRemoving || $[6] !== isUpdateDisabled || $[7] !== isUpdating || $[8] !== removeUserRole || $[9] !== requiredRole || $[10] !== requiredRoleCount || $[11] !== roles || $[12] !== textForRole || $[13] !== updateUserRole || $[14] !== user.id || $[15] !== user.roles || $[16] !== userRoleToRemove?.id || $[17] !== userRoleToUpdate?.id) {
|
|
45
|
+
let t2;
|
|
46
|
+
if ($[19] !== allowMultipleRoles || $[20] !== canDeleteSelf || $[21] !== canModify || $[22] !== currentUserId || $[23] !== isDeleteDisabled || $[24] !== isRemoving || $[25] !== isUpdateDisabled || $[26] !== isUpdating || $[27] !== removeUserRole || $[28] !== requiredRole || $[29] !== requiredRoleCount || $[30] !== roles || $[31] !== textForRole || $[32] !== updateUserRole || $[33] !== user.id || $[34] !== userRoleToRemove?.id || $[35] !== userRoleToUpdate?.id) {
|
|
47
|
+
t2 = userRole => {
|
|
48
|
+
const roleText = (0, _userRole.getRoleText)(textForRole)(userRole);
|
|
49
|
+
const isUserRoleExternal = (0, _userRole.isExternal)(userRole);
|
|
50
|
+
const userId = (0, _userRole.getUserId)(userRole);
|
|
51
|
+
const canUpdate = canModify && !allowMultipleRoles && !isUserRoleExternal && !isUpdateDisabled && roles.length > 1 && (!requiredRole || userRole.role !== requiredRole || !requiredRoleCount || requiredRoleCount > 1);
|
|
52
|
+
const canDelete = !isUserRoleExternal && !isDeleteDisabled && (!requiredRole || userRole.role !== requiredRole || !requiredRoleCount || requiredRoleCount > 1) && (canModify && user.id !== currentUserId || canDeleteSelf && user.id === currentUserId);
|
|
53
|
+
const shouldDisplayRightAligned = allowMultipleRoles || roles.length === 1 || !canModify || isUpdateDisabled;
|
|
54
|
+
const isExternalPopover = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Popover, {
|
|
55
|
+
id: `is-external-popover-${userId}-${userRole.role}`,
|
|
56
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("h3", {
|
|
57
|
+
children: "Added via Roster Sync"
|
|
58
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
|
|
59
|
+
className: "mb2",
|
|
60
|
+
children: "This person was added automatically via roster sync and cannot be manually removed."
|
|
61
|
+
})]
|
|
62
|
+
});
|
|
63
|
+
const isUserRoleUpdating = isUpdating && userRoleToUpdate?.id === userRole.id;
|
|
64
|
+
const isUserRoleRemoving = isRemoving && userRoleToRemove?.id === userRole.id;
|
|
65
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("li", {
|
|
66
|
+
className: `nowrap flex items-center${shouldDisplayRightAligned ? " justify-end" : ""}`,
|
|
67
|
+
children: [isUserRoleUpdating ? /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
68
|
+
className: "flex justify-start flex-grow-1 pl3",
|
|
69
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Inline.RefreshIndicatorInline, {
|
|
70
|
+
size: 20
|
|
71
|
+
})
|
|
72
|
+
}) : canUpdate ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Select.RoleSelectControl, {
|
|
73
|
+
options: roles,
|
|
74
|
+
value: userRole.role,
|
|
75
|
+
onChange: role => {
|
|
76
|
+
updateUserRole(userRole, role);
|
|
77
|
+
},
|
|
78
|
+
textForRole: textForRole,
|
|
79
|
+
disabled: isUpdating || isRemoving
|
|
80
|
+
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
81
|
+
className: shouldDisplayRightAligned ? "" : "pl3",
|
|
82
|
+
children: roleText
|
|
83
|
+
}), isUserRoleRemoving ? /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
84
|
+
className: "flex items-center",
|
|
85
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Inline.RefreshIndicatorInline, {
|
|
86
|
+
size: 20,
|
|
87
|
+
className: "ma3"
|
|
88
|
+
})
|
|
89
|
+
}) : canDelete ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_core.IconButton, {
|
|
90
|
+
className: "remove-user-button",
|
|
91
|
+
"aria-label": `Remove ${roleText}`,
|
|
92
|
+
onClick: () => {
|
|
93
|
+
removeUserRole(userRole);
|
|
94
|
+
},
|
|
95
|
+
disabled: isUpdating || isRemoving,
|
|
96
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Delete.default, {
|
|
97
|
+
color: "error"
|
|
98
|
+
})
|
|
99
|
+
}) : isUserRoleExternal ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.OverlayTrigger, {
|
|
100
|
+
placement: "auto",
|
|
101
|
+
trigger: ["click", "hover", "focus"],
|
|
102
|
+
overlay: isExternalPopover,
|
|
103
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconExternalUser.IconExternalUser, {
|
|
104
|
+
tabIndex: 0,
|
|
105
|
+
style: {
|
|
106
|
+
margin: "12px",
|
|
107
|
+
opacity: 0.5
|
|
108
|
+
},
|
|
109
|
+
className: "external-icon"
|
|
110
|
+
})
|
|
111
|
+
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
112
|
+
style: {
|
|
113
|
+
margin: "12px",
|
|
114
|
+
width: "24px",
|
|
115
|
+
height: "24px",
|
|
116
|
+
display: "inline-block",
|
|
117
|
+
verticalAlign: "middle"
|
|
118
|
+
}
|
|
119
|
+
})]
|
|
120
|
+
}, `${user.id}-${roleText}`);
|
|
121
|
+
};
|
|
122
|
+
$[19] = allowMultipleRoles;
|
|
123
|
+
$[20] = canDeleteSelf;
|
|
124
|
+
$[21] = canModify;
|
|
125
|
+
$[22] = currentUserId;
|
|
126
|
+
$[23] = isDeleteDisabled;
|
|
127
|
+
$[24] = isRemoving;
|
|
128
|
+
$[25] = isUpdateDisabled;
|
|
129
|
+
$[26] = isUpdating;
|
|
130
|
+
$[27] = removeUserRole;
|
|
131
|
+
$[28] = requiredRole;
|
|
132
|
+
$[29] = requiredRoleCount;
|
|
133
|
+
$[30] = roles;
|
|
134
|
+
$[31] = textForRole;
|
|
135
|
+
$[32] = updateUserRole;
|
|
136
|
+
$[33] = user.id;
|
|
137
|
+
$[34] = userRoleToRemove?.id;
|
|
138
|
+
$[35] = userRoleToUpdate?.id;
|
|
139
|
+
$[36] = t2;
|
|
140
|
+
} else {
|
|
141
|
+
t2 = $[36];
|
|
142
|
+
}
|
|
143
|
+
t1 = user.roles.sort((0, _userRole.sortByRole)(roles)).map(t2);
|
|
144
|
+
$[0] = allowMultipleRoles;
|
|
145
|
+
$[1] = canDeleteSelf;
|
|
146
|
+
$[2] = canModify;
|
|
147
|
+
$[3] = currentUserId;
|
|
148
|
+
$[4] = isDeleteDisabled;
|
|
149
|
+
$[5] = isRemoving;
|
|
150
|
+
$[6] = isUpdateDisabled;
|
|
151
|
+
$[7] = isUpdating;
|
|
152
|
+
$[8] = removeUserRole;
|
|
153
|
+
$[9] = requiredRole;
|
|
154
|
+
$[10] = requiredRoleCount;
|
|
155
|
+
$[11] = roles;
|
|
156
|
+
$[12] = textForRole;
|
|
157
|
+
$[13] = updateUserRole;
|
|
158
|
+
$[14] = user.id;
|
|
159
|
+
$[15] = user.roles;
|
|
160
|
+
$[16] = userRoleToRemove?.id;
|
|
161
|
+
$[17] = userRoleToUpdate?.id;
|
|
162
|
+
$[18] = t1;
|
|
163
|
+
} else {
|
|
164
|
+
t1 = $[18];
|
|
165
|
+
}
|
|
166
|
+
let t2;
|
|
167
|
+
if ($[37] !== t1) {
|
|
168
|
+
t2 = /*#__PURE__*/(0, _jsxRuntime.jsx)("ul", {
|
|
169
|
+
className: "mb0 list pa0 tr",
|
|
170
|
+
children: t1
|
|
23
171
|
});
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
canModify &&
|
|
31
|
-
// in single role mode (multiple roles are not allowed)
|
|
32
|
-
!allowMultipleRoles &&
|
|
33
|
-
// the userRole is not external (roster synced)
|
|
34
|
-
!isUserRoleExternal &&
|
|
35
|
-
// update is not disabled
|
|
36
|
-
!isUpdateDisabled &&
|
|
37
|
-
// there is more than one possible role
|
|
38
|
-
roles.length > 1 &&
|
|
39
|
-
// the user role is not the last remaining required role user
|
|
40
|
-
(!requiredRole || userRole.role !== requiredRole || !requiredRoleCount || requiredRoleCount > 1);
|
|
41
|
-
const canDelete =
|
|
42
|
-
// the userRole is not external (roster synced)
|
|
43
|
-
!isUserRoleExternal &&
|
|
44
|
-
// delete is not disabled, e.g. course is ended
|
|
45
|
-
!isDeleteDisabled &&
|
|
46
|
-
// the role is not the last required role
|
|
47
|
-
(!requiredRole || userRole.role !== requiredRole || !requiredRoleCount || requiredRoleCount > 1) &&
|
|
48
|
-
// the current user can delete the role for another user, or the current user can delete themselves
|
|
49
|
-
((canModify && user.id !== currentUserId) || (canDeleteSelf && user.id === currentUserId));
|
|
50
|
-
const shouldDisplayRightAligned =
|
|
51
|
-
// in multiple role mode
|
|
52
|
-
allowMultipleRoles ||
|
|
53
|
-
// only one role option
|
|
54
|
-
roles.length === 1 ||
|
|
55
|
-
// no access to update
|
|
56
|
-
!canModify ||
|
|
57
|
-
// update is disabled
|
|
58
|
-
isUpdateDisabled;
|
|
59
|
-
const isExternalPopover = ((0, jsx_runtime_1.jsxs)(react_bootstrap_1.Popover, { id: `is-external-popover-${userId}-${userRole.role}`, children: [(0, jsx_runtime_1.jsx)("h3", { children: "Added via Roster Sync" }), (0, jsx_runtime_1.jsx)("p", { className: "mb2", children: "This person was added automatically via roster sync and cannot be manually removed." })] }));
|
|
60
|
-
const isUserRoleUpdating = isUpdating && (userRoleToUpdate === null || userRoleToUpdate === void 0 ? void 0 : userRoleToUpdate.id) === userRole.id;
|
|
61
|
-
const isUserRoleRemoving = isRemoving && (userRoleToRemove === null || userRoleToRemove === void 0 ? void 0 : userRoleToRemove.id) === userRole.id;
|
|
62
|
-
return ((0, jsx_runtime_1.jsxs)("li", { className: `nowrap flex items-center${shouldDisplayRightAligned ? ' justify-end' : ''}`, children: [isUserRoleUpdating ? ((0, jsx_runtime_1.jsx)("div", { className: "flex justify-start flex-grow-1 pl3", children: (0, jsx_runtime_1.jsx)(Inline_1.RefreshIndicatorInline, { size: 20 }) })) : canUpdate ? ((0, jsx_runtime_1.jsx)(Select_1.RoleSelectControl, { options: roles, value: userRole.role, onChange: (role) => {
|
|
63
|
-
updateUserRole(userRole, role);
|
|
64
|
-
}, textForRole: textForRole, disabled: isUpdating || isRemoving })) : ((0, jsx_runtime_1.jsx)("span", { className: shouldDisplayRightAligned ? '' : 'pl3', children: roleText })), isUserRoleRemoving ? ((0, jsx_runtime_1.jsx)("div", { className: "flex items-center", children: (0, jsx_runtime_1.jsx)(Inline_1.RefreshIndicatorInline, { size: 20, className: "ma3" }) })) : canDelete ? ((0, jsx_runtime_1.jsx)(core_1.IconButton, { className: "remove-user-button", "aria-label": `Remove ${roleText}`, onClick: () => {
|
|
65
|
-
removeUserRole(userRole);
|
|
66
|
-
}, disabled: isUpdating || isRemoving, children: (0, jsx_runtime_1.jsx)(Delete_1.default, { color: "error" }) })) : isUserRoleExternal ? ((0, jsx_runtime_1.jsx)(react_bootstrap_1.OverlayTrigger, { placement: "auto", trigger: ['click', 'hover', 'focus'], overlay: isExternalPopover, children: (0, jsx_runtime_1.jsx)(IconExternalUser_1.IconExternalUser, { tabIndex: 0, style: { margin: '12px', opacity: 0.5 }, className: "external-icon" }) })) : (
|
|
67
|
-
// dummy spacer to keep items aligned
|
|
68
|
-
(0, jsx_runtime_1.jsx)("span", { style: {
|
|
69
|
-
margin: '12px',
|
|
70
|
-
width: '24px',
|
|
71
|
-
height: '24px',
|
|
72
|
-
display: 'inline-block',
|
|
73
|
-
verticalAlign: 'middle'
|
|
74
|
-
} }))] }, `${user.id}-${roleText}`));
|
|
75
|
-
}) }));
|
|
172
|
+
$[37] = t1;
|
|
173
|
+
$[38] = t2;
|
|
174
|
+
} else {
|
|
175
|
+
t2 = $[38];
|
|
176
|
+
}
|
|
177
|
+
return t2;
|
|
76
178
|
};
|
|
77
179
|
exports.RoleCell = RoleCell;
|
|
180
|
+
function _temp(state) {
|
|
181
|
+
if (!state.models.user || !state.models.user.userInfo) {
|
|
182
|
+
throw new Error("Current user id is not stored in redux");
|
|
183
|
+
}
|
|
184
|
+
return state.models.user.userInfo.id;
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfRGVsZXRlIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9yZWFjdCIsIl9yZWFjdEJvb3RzdHJhcCIsIl9yZWFjdFJlZHV4IiwiX3VzZXJSb2xlIiwiX0ljb25FeHRlcm5hbFVzZXIiLCJfSW5saW5lIiwiX0NvbnRleHQiLCJfU2VsZWN0IiwiX2pzeFJ1bnRpbWUiLCJSb2xlQ2VsbCIsInQwIiwiJCIsIl9yZWFjdENvbXBpbGVyUnVudGltZSIsImMiLCJ1c2VyIiwicmVxdWlyZWRSb2xlQ291bnQiLCJpc1VwZGF0ZURpc2FibGVkIiwiaXNEZWxldGVEaXNhYmxlZCIsImNhbk1vZGlmeSIsImNhbkRlbGV0ZVNlbGYiLCJhbGxvd011bHRpcGxlUm9sZXMiLCJyb2xlcyIsInJlcXVpcmVkUm9sZSIsInRleHRGb3JSb2xlIiwidXNlclJvbGVUb1VwZGF0ZSIsImlzVXBkYXRpbmciLCJ1cGRhdGVVc2VyUm9sZSIsInVzZXJSb2xlVG9SZW1vdmUiLCJpc1JlbW92aW5nIiwicmVtb3ZlVXNlclJvbGUiLCJ1c2VDb250ZXh0IiwiVXNlclJvbGVzQ29udGV4dCIsImN1cnJlbnRVc2VySWQiLCJ1c2VTZWxlY3RvciIsIl90ZW1wIiwidDEiLCJpZCIsInQyIiwidXNlclJvbGUiLCJyb2xlVGV4dCIsImdldFJvbGVUZXh0IiwiaXNVc2VyUm9sZUV4dGVybmFsIiwiaXNFeHRlcm5hbCIsInVzZXJJZCIsImdldFVzZXJJZCIsImNhblVwZGF0ZSIsImxlbmd0aCIsInJvbGUiLCJjYW5EZWxldGUiLCJzaG91bGREaXNwbGF5UmlnaHRBbGlnbmVkIiwiaXNFeHRlcm5hbFBvcG92ZXIiLCJqc3hzIiwiUG9wb3ZlciIsImNoaWxkcmVuIiwianN4IiwiY2xhc3NOYW1lIiwiaXNVc2VyUm9sZVVwZGF0aW5nIiwiaXNVc2VyUm9sZVJlbW92aW5nIiwiUmVmcmVzaEluZGljYXRvcklubGluZSIsInNpemUiLCJSb2xlU2VsZWN0Q29udHJvbCIsInZhbHVlIiwib25DaGFuZ2UiLCJkaXNhYmxlZCIsIkljb25CdXR0b24iLCJvbkNsaWNrIiwiZGVmYXVsdCIsImNvbG9yIiwiT3ZlcmxheVRyaWdnZXIiLCJwbGFjZW1lbnQiLCJ0cmlnZ2VyIiwiSWNvbkV4dGVybmFsVXNlciIsInRhYkluZGV4Iiwic3R5bGUiLCJtYXJnaW4iLCJvcGFjaXR5Iiwid2lkdGgiLCJoZWlnaHQiLCJkaXNwbGF5IiwidmVydGljYWxBbGlnbiIsInNvcnQiLCJzb3J0QnlSb2xlIiwibWFwIiwiZXhwb3J0cyIsInN0YXRlIiwibW9kZWxzIiwidXNlckluZm8iLCJFcnJvciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1VzZXJSb2xlcy9Sb2xlQ2VsbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSWNvbkJ1dHRvbiB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlJ1xyXG5pbXBvcnQgSWNvbkRlbGV0ZSBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvRGVsZXRlJ1xyXG5pbXBvcnQgeyBGdW5jdGlvbkNvbXBvbmVudCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0J1xyXG5pbXBvcnQgeyBPdmVybGF5VHJpZ2dlciwgUG9wb3ZlciB9IGZyb20gJ3JlYWN0LWJvb3RzdHJhcCdcclxuaW1wb3J0IHsgdXNlU2VsZWN0b3IgfSBmcm9tICdyZWFjdC1yZWR1eCdcclxuaW1wb3J0IHsgQmFzZVJlZHV4U3RhdGUgfSBmcm9tICcuLi8uLi90eXBlcy9CYXNlUmVkdXhTdGF0ZSdcclxuaW1wb3J0IHsgVXNlcldpdGhSb2xlcyB9IGZyb20gJy4uLy4uL3R5cGVzL1VzZXJSb2xlJ1xyXG5pbXBvcnQgeyBnZXRSb2xlVGV4dCwgZ2V0VXNlcklkLCBpc0V4dGVybmFsLCBzb3J0QnlSb2xlIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXNlclJvbGUnXHJcbmltcG9ydCB7IEljb25FeHRlcm5hbFVzZXIgfSBmcm9tICcuLi9JY29ucy9JY29uRXh0ZXJuYWxVc2VyJ1xyXG5pbXBvcnQgeyBSZWZyZXNoSW5kaWNhdG9ySW5saW5lIH0gZnJvbSAnLi4vUmVmcmVzaEluZGljYXRvci9JbmxpbmUnXHJcbmltcG9ydCB7IFVzZXJSb2xlc0NvbnRleHQgfSBmcm9tICcuL0NvbnRleHQnXHJcbmltcG9ydCB7IFJvbGVTZWxlY3RDb250cm9sIH0gZnJvbSAnLi9TZWxlY3QnXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFJvbGVDZWxsUHJvcHMge1xyXG5cdHVzZXI6IFVzZXJXaXRoUm9sZXNcclxuXHRyZXF1aXJlZFJvbGVDb3VudD86IG51bWJlclxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgUm9sZUNlbGw6IEZ1bmN0aW9uQ29tcG9uZW50PFJvbGVDZWxsUHJvcHM+ID0gKHsgdXNlciwgcmVxdWlyZWRSb2xlQ291bnQgfSkgPT4ge1xyXG5cdGNvbnN0IHtcclxuXHRcdGlzVXBkYXRlRGlzYWJsZWQsXHJcblx0XHRpc0RlbGV0ZURpc2FibGVkLFxyXG5cdFx0Y2FuTW9kaWZ5LFxyXG5cdFx0Y2FuRGVsZXRlU2VsZixcclxuXHRcdGFsbG93TXVsdGlwbGVSb2xlcyxcclxuXHRcdHJvbGVzLFxyXG5cdFx0cmVxdWlyZWRSb2xlLFxyXG5cdFx0dGV4dEZvclJvbGUsXHJcblx0XHR1c2VyUm9sZVRvVXBkYXRlLFxyXG5cdFx0aXNVcGRhdGluZyxcclxuXHRcdHVwZGF0ZVVzZXJSb2xlLFxyXG5cdFx0dXNlclJvbGVUb1JlbW92ZSxcclxuXHRcdGlzUmVtb3ZpbmcsXHJcblx0XHRyZW1vdmVVc2VyUm9sZVxyXG5cdH0gPSB1c2VDb250ZXh0KFVzZXJSb2xlc0NvbnRleHQpXHJcblxyXG5cdGNvbnN0IGN1cnJlbnRVc2VySWQgPSB1c2VTZWxlY3Rvcigoc3RhdGU6IEJhc2VSZWR1eFN0YXRlKSA9PiB7XHJcblx0XHRpZiAoIXN0YXRlLm1vZGVscy51c2VyIHx8ICFzdGF0ZS5tb2RlbHMudXNlci51c2VySW5mbykge1xyXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0N1cnJlbnQgdXNlciBpZCBpcyBub3Qgc3RvcmVkIGluIHJlZHV4JylcclxuXHRcdH1cclxuXHRcdHJldHVybiBzdGF0ZS5tb2RlbHMudXNlci51c2VySW5mby5pZFxyXG5cdH0pXHJcblxyXG5cdHJldHVybiAoXHJcblx0XHQ8dWwgY2xhc3NOYW1lPVwibWIwIGxpc3QgcGEwIHRyXCI+XHJcblx0XHRcdHt1c2VyLnJvbGVzLnNvcnQoc29ydEJ5Um9sZShyb2xlcykpLm1hcCh1c2VyUm9sZSA9PiB7XHJcblx0XHRcdFx0Y29uc3Qgcm9sZVRleHQgPSBnZXRSb2xlVGV4dCh0ZXh0Rm9yUm9sZSkodXNlclJvbGUpXHJcblx0XHRcdFx0Y29uc3QgaXNVc2VyUm9sZUV4dGVybmFsID0gaXNFeHRlcm5hbCh1c2VyUm9sZSlcclxuXHRcdFx0XHRjb25zdCB1c2VySWQgPSBnZXRVc2VySWQodXNlclJvbGUpXHJcblxyXG5cdFx0XHRcdGNvbnN0IGNhblVwZGF0ZSA9XHJcblx0XHRcdFx0XHQvLyBjdXJyZW50IHVzZXIgaGFzIG1vZGlmeSBhY2Nlc3NcclxuXHRcdFx0XHRcdGNhbk1vZGlmeSAmJlxyXG5cdFx0XHRcdFx0Ly8gaW4gc2luZ2xlIHJvbGUgbW9kZSAobXVsdGlwbGUgcm9sZXMgYXJlIG5vdCBhbGxvd2VkKVxyXG5cdFx0XHRcdFx0IWFsbG93TXVsdGlwbGVSb2xlcyAmJlxyXG5cdFx0XHRcdFx0Ly8gdGhlIHVzZXJSb2xlIGlzIG5vdCBleHRlcm5hbCAocm9zdGVyIHN5bmNlZClcclxuXHRcdFx0XHRcdCFpc1VzZXJSb2xlRXh0ZXJuYWwgJiZcclxuXHRcdFx0XHRcdC8vIHVwZGF0ZSBpcyBub3QgZGlzYWJsZWRcclxuXHRcdFx0XHRcdCFpc1VwZGF0ZURpc2FibGVkICYmXHJcblx0XHRcdFx0XHQvLyB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIHBvc3NpYmxlIHJvbGVcclxuXHRcdFx0XHRcdHJvbGVzLmxlbmd0aCA+IDEgJiZcclxuXHRcdFx0XHRcdC8vIHRoZSB1c2VyIHJvbGUgaXMgbm90IHRoZSBsYXN0IHJlbWFpbmluZyByZXF1aXJlZCByb2xlIHVzZXJcclxuXHRcdFx0XHRcdCghcmVxdWlyZWRSb2xlIHx8IHVzZXJSb2xlLnJvbGUgIT09IHJlcXVpcmVkUm9sZSB8fCAhcmVxdWlyZWRSb2xlQ291bnQgfHwgcmVxdWlyZWRSb2xlQ291bnQgPiAxKVxyXG5cclxuXHRcdFx0XHRjb25zdCBjYW5EZWxldGUgPVxyXG5cdFx0XHRcdFx0Ly8gdGhlIHVzZXJSb2xlIGlzIG5vdCBleHRlcm5hbCAocm9zdGVyIHN5bmNlZClcclxuXHRcdFx0XHRcdCFpc1VzZXJSb2xlRXh0ZXJuYWwgJiZcclxuXHRcdFx0XHRcdC8vIGRlbGV0ZSBpcyBub3QgZGlzYWJsZWQsIGUuZy4gY291cnNlIGlzIGVuZGVkXHJcblx0XHRcdFx0XHQhaXNEZWxldGVEaXNhYmxlZCAmJlxyXG5cdFx0XHRcdFx0Ly8gdGhlIHJvbGUgaXMgbm90IHRoZSBsYXN0IHJlcXVpcmVkIHJvbGVcclxuXHRcdFx0XHRcdCghcmVxdWlyZWRSb2xlIHx8IHVzZXJSb2xlLnJvbGUgIT09IHJlcXVpcmVkUm9sZSB8fCAhcmVxdWlyZWRSb2xlQ291bnQgfHwgcmVxdWlyZWRSb2xlQ291bnQgPiAxKSAmJlxyXG5cdFx0XHRcdFx0Ly8gdGhlIGN1cnJlbnQgdXNlciBjYW4gZGVsZXRlIHRoZSByb2xlIGZvciBhbm90aGVyIHVzZXIsIG9yIHRoZSBjdXJyZW50IHVzZXIgY2FuIGRlbGV0ZSB0aGVtc2VsdmVzXHJcblx0XHRcdFx0XHQoKGNhbk1vZGlmeSAmJiB1c2VyLmlkICE9PSBjdXJyZW50VXNlcklkKSB8fCAoY2FuRGVsZXRlU2VsZiAmJiB1c2VyLmlkID09PSBjdXJyZW50VXNlcklkKSlcclxuXHJcblx0XHRcdFx0Y29uc3Qgc2hvdWxkRGlzcGxheVJpZ2h0QWxpZ25lZCA9XHJcblx0XHRcdFx0XHQvLyBpbiBtdWx0aXBsZSByb2xlIG1vZGVcclxuXHRcdFx0XHRcdGFsbG93TXVsdGlwbGVSb2xlcyB8fFxyXG5cdFx0XHRcdFx0Ly8gb25seSBvbmUgcm9sZSBvcHRpb25cclxuXHRcdFx0XHRcdHJvbGVzLmxlbmd0aCA9PT0gMSB8fFxyXG5cdFx0XHRcdFx0Ly8gbm8gYWNjZXNzIHRvIHVwZGF0ZVxyXG5cdFx0XHRcdFx0IWNhbk1vZGlmeSB8fFxyXG5cdFx0XHRcdFx0Ly8gdXBkYXRlIGlzIGRpc2FibGVkXHJcblx0XHRcdFx0XHRpc1VwZGF0ZURpc2FibGVkXHJcblxyXG5cdFx0XHRcdGNvbnN0IGlzRXh0ZXJuYWxQb3BvdmVyID0gKFxyXG5cdFx0XHRcdFx0PFBvcG92ZXIgaWQ9e2Bpcy1leHRlcm5hbC1wb3BvdmVyLSR7dXNlcklkfS0ke3VzZXJSb2xlLnJvbGV9YH0+XHJcblx0XHRcdFx0XHRcdDxoMz5BZGRlZCB2aWEgUm9zdGVyIFN5bmM8L2gzPlxyXG5cdFx0XHRcdFx0XHQ8cCBjbGFzc05hbWU9XCJtYjJcIj5cclxuXHRcdFx0XHRcdFx0XHRUaGlzIHBlcnNvbiB3YXMgYWRkZWQgYXV0b21hdGljYWxseSB2aWEgcm9zdGVyIHN5bmMgYW5kIGNhbm5vdCBiZSBtYW51YWxseSByZW1vdmVkLlxyXG5cdFx0XHRcdFx0XHQ8L3A+XHJcblx0XHRcdFx0XHQ8L1BvcG92ZXI+XHJcblx0XHRcdFx0KVxyXG5cclxuXHRcdFx0XHRjb25zdCBpc1VzZXJSb2xlVXBkYXRpbmcgPSBpc1VwZGF0aW5nICYmIHVzZXJSb2xlVG9VcGRhdGU/LmlkID09PSB1c2VyUm9sZS5pZFxyXG5cdFx0XHRcdGNvbnN0IGlzVXNlclJvbGVSZW1vdmluZyA9IGlzUmVtb3ZpbmcgJiYgdXNlclJvbGVUb1JlbW92ZT8uaWQgPT09IHVzZXJSb2xlLmlkXHJcblxyXG5cdFx0XHRcdHJldHVybiAoXHJcblx0XHRcdFx0XHQ8bGlcclxuXHRcdFx0XHRcdFx0a2V5PXtgJHt1c2VyLmlkfS0ke3JvbGVUZXh0fWB9XHJcblx0XHRcdFx0XHRcdGNsYXNzTmFtZT17YG5vd3JhcCBmbGV4IGl0ZW1zLWNlbnRlciR7c2hvdWxkRGlzcGxheVJpZ2h0QWxpZ25lZCA/ICcganVzdGlmeS1lbmQnIDogJyd9YH0+XHJcblx0XHRcdFx0XHRcdHtpc1VzZXJSb2xlVXBkYXRpbmcgPyAoXHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktc3RhcnQgZmxleC1ncm93LTEgcGwzXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8UmVmcmVzaEluZGljYXRvcklubGluZSBzaXplPXsyMH0gLz5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0KSA6IGNhblVwZGF0ZSA/IChcclxuXHRcdFx0XHRcdFx0XHQ8Um9sZVNlbGVjdENvbnRyb2xcclxuXHRcdFx0XHRcdFx0XHRcdG9wdGlvbnM9e3JvbGVzfVxyXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU9e3VzZXJSb2xlLnJvbGV9XHJcblx0XHRcdFx0XHRcdFx0XHRvbkNoYW5nZT17KHJvbGU6IHN0cmluZykgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR1cGRhdGVVc2VyUm9sZSh1c2VyUm9sZSwgcm9sZSlcclxuXHRcdFx0XHRcdFx0XHRcdH19XHJcblx0XHRcdFx0XHRcdFx0XHR0ZXh0Rm9yUm9sZT17dGV4dEZvclJvbGV9XHJcblx0XHRcdFx0XHRcdFx0XHRkaXNhYmxlZD17aXNVcGRhdGluZyB8fCBpc1JlbW92aW5nfVxyXG5cdFx0XHRcdFx0XHRcdC8+XHJcblx0XHRcdFx0XHRcdCkgOiAoXHJcblx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3NOYW1lPXtzaG91bGREaXNwbGF5UmlnaHRBbGlnbmVkID8gJycgOiAncGwzJ30+e3JvbGVUZXh0fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0KX1cclxuXHJcblx0XHRcdFx0XHRcdHtpc1VzZXJSb2xlUmVtb3ZpbmcgPyAoXHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PFJlZnJlc2hJbmRpY2F0b3JJbmxpbmUgc2l6ZT17MjB9IGNsYXNzTmFtZT1cIm1hM1wiIC8+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdCkgOiBjYW5EZWxldGUgPyAoXHJcblx0XHRcdFx0XHRcdFx0PEljb25CdXR0b25cclxuXHRcdFx0XHRcdFx0XHRcdGNsYXNzTmFtZT1cInJlbW92ZS11c2VyLWJ1dHRvblwiXHJcblx0XHRcdFx0XHRcdFx0XHRhcmlhLWxhYmVsPXtgUmVtb3ZlICR7cm9sZVRleHR9YH1cclxuXHRcdFx0XHRcdFx0XHRcdG9uQ2xpY2s9eygpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0cmVtb3ZlVXNlclJvbGUodXNlclJvbGUpXHJcblx0XHRcdFx0XHRcdFx0XHR9fVxyXG5cdFx0XHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e2lzVXBkYXRpbmcgfHwgaXNSZW1vdmluZ30+XHJcblx0XHRcdFx0XHRcdFx0XHQ8SWNvbkRlbGV0ZSBjb2xvcj1cImVycm9yXCIgLz5cclxuXHRcdFx0XHRcdFx0XHQ8L0ljb25CdXR0b24+XHJcblx0XHRcdFx0XHRcdCkgOiBpc1VzZXJSb2xlRXh0ZXJuYWwgPyAoXHJcblx0XHRcdFx0XHRcdFx0PE92ZXJsYXlUcmlnZ2VyXHJcblx0XHRcdFx0XHRcdFx0XHRwbGFjZW1lbnQ9XCJhdXRvXCJcclxuXHRcdFx0XHRcdFx0XHRcdHRyaWdnZXI9e1snY2xpY2snLCAnaG92ZXInLCAnZm9jdXMnXX1cclxuXHRcdFx0XHRcdFx0XHRcdG92ZXJsYXk9e2lzRXh0ZXJuYWxQb3BvdmVyfT5cclxuXHRcdFx0XHRcdFx0XHRcdDxJY29uRXh0ZXJuYWxVc2VyXHJcblx0XHRcdFx0XHRcdFx0XHRcdHRhYkluZGV4PXswfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRzdHlsZT17eyBtYXJnaW46ICcxMnB4Jywgb3BhY2l0eTogMC41IH19XHJcblx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzTmFtZT1cImV4dGVybmFsLWljb25cIlxyXG5cdFx0XHRcdFx0XHRcdFx0Lz5cclxuXHRcdFx0XHRcdFx0XHQ8L092ZXJsYXlUcmlnZ2VyPlxyXG5cdFx0XHRcdFx0XHQpIDogKFxyXG5cdFx0XHRcdFx0XHRcdC8vIGR1bW15IHNwYWNlciB0byBrZWVwIGl0ZW1zIGFsaWduZWRcclxuXHRcdFx0XHRcdFx0XHQ8c3BhblxyXG5cdFx0XHRcdFx0XHRcdFx0c3R5bGU9e3tcclxuXHRcdFx0XHRcdFx0XHRcdFx0bWFyZ2luOiAnMTJweCcsXHJcblx0XHRcdFx0XHRcdFx0XHRcdHdpZHRoOiAnMjRweCcsXHJcblx0XHRcdFx0XHRcdFx0XHRcdGhlaWdodDogJzI0cHgnLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0dmVydGljYWxBbGlnbjogJ21pZGRsZSdcclxuXHRcdFx0XHRcdFx0XHRcdH19Pjwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0KX1cclxuXHRcdFx0XHRcdDwvbGk+XHJcblx0XHRcdFx0KVxyXG5cdFx0XHR9KX1cclxuXHRcdDwvdWw+XHJcblx0KVxyXG59XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxlQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxXQUFBLEdBQUFMLE9BQUE7QUFHQSxJQUFBTSxTQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxpQkFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsT0FBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsUUFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsT0FBQSxHQUFBVixPQUFBO0FBQTRDLElBQUFXLFdBQUEsR0FBQVgsT0FBQTtBQU9yQyxNQUFNWSxRQUEwQyxHQUFHQyxFQUFBO0VBQUEsTUFBQUMsQ0FBQSxPQUFBQyxxQkFBQSxDQUFBQyxDQUFBO0VBQUM7SUFBQUMsSUFBQTtJQUFBQztFQUFBLElBQUFMLEVBQTJCO0VBQ3JGO0lBQUFNLGdCQUFBO0lBQUFDLGdCQUFBO0lBQUFDLFNBQUE7SUFBQUMs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
|
|
@@ -1,24 +1,164 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.RoleSelectControl = exports.RoleSelect = void 0;
|
|
8
|
+
var _reactCompilerRuntime = require("react-compiler-runtime");
|
|
9
|
+
var _Help = _interopRequireDefault(require("@material-ui/icons/Help"));
|
|
10
|
+
var _reactBootstrap = require("react-bootstrap");
|
|
11
|
+
var _baseRole = require("../../utils/baseRole");
|
|
12
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
9
13
|
const label = (hasMultipleOptions, labelVisible, hasTooltip) => {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
14
|
+
const content = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
15
|
+
children: ["Role", hasTooltip && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Help.default, {
|
|
16
|
+
color: "primary",
|
|
17
|
+
className: "ml1 v-mid",
|
|
18
|
+
tabIndex: 0
|
|
19
|
+
})]
|
|
20
|
+
});
|
|
21
|
+
const classes = `f6 mb1 ${!labelVisible ? 'visually-hidden' : ''}`;
|
|
22
|
+
return hasMultipleOptions ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.FormLabel, {
|
|
23
|
+
className: classes,
|
|
24
|
+
children: content
|
|
25
|
+
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
26
|
+
className: classes + ' b',
|
|
27
|
+
children: content
|
|
28
|
+
});
|
|
13
29
|
};
|
|
14
|
-
const overlay = (hasMultipleOptions
|
|
15
|
-
|
|
30
|
+
const overlay = function (hasMultipleOptions) {
|
|
31
|
+
let labelVisible = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
32
|
+
let rolePopover = arguments.length > 2 ? arguments[2] : undefined;
|
|
33
|
+
return rolePopover ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.OverlayTrigger, {
|
|
34
|
+
placement: "right",
|
|
35
|
+
trigger: ['click', 'hover', 'focus'],
|
|
36
|
+
overlay: rolePopover,
|
|
37
|
+
children: label(hasMultipleOptions, labelVisible, true)
|
|
38
|
+
}) : label(hasMultipleOptions, labelVisible, false);
|
|
39
|
+
};
|
|
40
|
+
const RoleSelectControl = t0 => {
|
|
41
|
+
const $ = (0, _reactCompilerRuntime.c)(7);
|
|
42
|
+
const {
|
|
43
|
+
className,
|
|
44
|
+
options,
|
|
45
|
+
value,
|
|
46
|
+
onChange,
|
|
47
|
+
textForRole,
|
|
48
|
+
disabled
|
|
49
|
+
} = t0;
|
|
50
|
+
let t1;
|
|
51
|
+
if ($[0] !== className || $[1] !== disabled || $[2] !== onChange || $[3] !== options || $[4] !== textForRole || $[5] !== value) {
|
|
52
|
+
t1 = options.length > 1 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.FormControl, {
|
|
53
|
+
className: className ? className : "",
|
|
54
|
+
"aria-label": "Role",
|
|
55
|
+
as: "select",
|
|
56
|
+
placeholder: "select",
|
|
57
|
+
onChange: e => {
|
|
16
58
|
onChange(e.target.value);
|
|
17
|
-
|
|
59
|
+
},
|
|
60
|
+
value: value,
|
|
61
|
+
disabled: disabled,
|
|
62
|
+
children: options.map(role => /*#__PURE__*/(0, _jsxRuntime.jsx)("option", {
|
|
63
|
+
value: role,
|
|
64
|
+
children: textForRole ? textForRole(role) : (0, _baseRole.textForBaseRole)(role)
|
|
65
|
+
}, role))
|
|
66
|
+
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
67
|
+
children: textForRole ? textForRole(options[0]) : (0, _baseRole.textForBaseRole)(options[0])
|
|
68
|
+
});
|
|
69
|
+
$[0] = className;
|
|
70
|
+
$[1] = disabled;
|
|
71
|
+
$[2] = onChange;
|
|
72
|
+
$[3] = options;
|
|
73
|
+
$[4] = textForRole;
|
|
74
|
+
$[5] = value;
|
|
75
|
+
$[6] = t1;
|
|
76
|
+
} else {
|
|
77
|
+
t1 = $[6];
|
|
78
|
+
}
|
|
79
|
+
return t1;
|
|
80
|
+
};
|
|
18
81
|
exports.RoleSelectControl = RoleSelectControl;
|
|
19
|
-
const RoleSelect =
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
82
|
+
const RoleSelect = t0 => {
|
|
83
|
+
const $ = (0, _reactCompilerRuntime.c)(20);
|
|
84
|
+
let controlId;
|
|
85
|
+
let controlProps;
|
|
86
|
+
let labelVisible;
|
|
87
|
+
let options;
|
|
88
|
+
let popoverContentComponent;
|
|
89
|
+
if ($[0] !== t0) {
|
|
90
|
+
({
|
|
91
|
+
controlId,
|
|
92
|
+
labelVisible,
|
|
93
|
+
popoverContentComponent,
|
|
94
|
+
options,
|
|
95
|
+
...controlProps
|
|
96
|
+
} = t0);
|
|
97
|
+
$[0] = t0;
|
|
98
|
+
$[1] = controlId;
|
|
99
|
+
$[2] = controlProps;
|
|
100
|
+
$[3] = labelVisible;
|
|
101
|
+
$[4] = options;
|
|
102
|
+
$[5] = popoverContentComponent;
|
|
103
|
+
} else {
|
|
104
|
+
controlId = $[1];
|
|
105
|
+
controlProps = $[2];
|
|
106
|
+
labelVisible = $[3];
|
|
107
|
+
options = $[4];
|
|
108
|
+
popoverContentComponent = $[5];
|
|
109
|
+
}
|
|
110
|
+
const t1 = options.length > 1;
|
|
111
|
+
const t2 = !!labelVisible;
|
|
112
|
+
let t3;
|
|
113
|
+
if ($[6] !== popoverContentComponent || $[7] !== t1 || $[8] !== t2) {
|
|
114
|
+
t3 = overlay(t1, t2, popoverContentComponent);
|
|
115
|
+
$[6] = popoverContentComponent;
|
|
116
|
+
$[7] = t1;
|
|
117
|
+
$[8] = t2;
|
|
118
|
+
$[9] = t3;
|
|
119
|
+
} else {
|
|
120
|
+
t3 = $[9];
|
|
121
|
+
}
|
|
122
|
+
let t4;
|
|
123
|
+
if ($[10] !== controlProps || $[11] !== options) {
|
|
124
|
+
t4 = /*#__PURE__*/(0, _jsxRuntime.jsx)(RoleSelectControl, {
|
|
125
|
+
options: options,
|
|
126
|
+
...controlProps
|
|
127
|
+
});
|
|
128
|
+
$[10] = controlProps;
|
|
129
|
+
$[11] = options;
|
|
130
|
+
$[12] = t4;
|
|
131
|
+
} else {
|
|
132
|
+
t4 = $[12];
|
|
133
|
+
}
|
|
134
|
+
let t5;
|
|
135
|
+
if ($[13] !== t3 || $[14] !== t4) {
|
|
136
|
+
t5 = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
137
|
+
children: [t3, t4]
|
|
138
|
+
});
|
|
139
|
+
$[13] = t3;
|
|
140
|
+
$[14] = t4;
|
|
141
|
+
$[15] = t5;
|
|
142
|
+
} else {
|
|
143
|
+
t5 = $[15];
|
|
144
|
+
}
|
|
145
|
+
const content = t5;
|
|
146
|
+
let t6;
|
|
147
|
+
if ($[16] !== content || $[17] !== controlId || $[18] !== options.length) {
|
|
148
|
+
t6 = options.length > 1 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.FormGroup, {
|
|
149
|
+
controlId: controlId ? controlId : "RoleSelect",
|
|
150
|
+
children: content
|
|
151
|
+
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
152
|
+
children: content
|
|
153
|
+
});
|
|
154
|
+
$[16] = content;
|
|
155
|
+
$[17] = controlId;
|
|
156
|
+
$[18] = options.length;
|
|
157
|
+
$[19] = t6;
|
|
158
|
+
} else {
|
|
159
|
+
t6 = $[19];
|
|
160
|
+
}
|
|
161
|
+
return t6;
|
|
23
162
|
};
|
|
24
163
|
exports.RoleSelect = RoleSelect;
|
|
164
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfSGVscCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3JlYWN0Qm9vdHN0cmFwIiwiX2Jhc2VSb2xlIiwiX2pzeFJ1bnRpbWUiLCJsYWJlbCIsImhhc011bHRpcGxlT3B0aW9ucyIsImxhYmVsVmlzaWJsZSIsImhhc1Rvb2x0aXAiLCJjb250ZW50IiwianN4cyIsIkZyYWdtZW50IiwiY2hpbGRyZW4iLCJqc3giLCJkZWZhdWx0IiwiY29sb3IiLCJjbGFzc05hbWUiLCJ0YWJJbmRleCIsImNsYXNzZXMiLCJGb3JtTGFiZWwiLCJvdmVybGF5IiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwicm9sZVBvcG92ZXIiLCJPdmVybGF5VHJpZ2dlciIsInBsYWNlbWVudCIsInRyaWdnZXIiLCJSb2xlU2VsZWN0Q29udHJvbCIsInQwIiwiJCIsIl9yZWFjdENvbXBpbGVyUnVudGltZSIsImMiLCJvcHRpb25zIiwidmFsdWUiLCJvbkNoYW5nZSIsInRleHRGb3JSb2xlIiwiZGlzYWJsZWQiLCJ0MSIsIkZvcm1Db250cm9sIiwiYXMiLCJwbGFjZWhvbGRlciIsImUiLCJ0YXJnZXQiLCJtYXAiLCJyb2xlIiwidGV4dEZvckJhc2VSb2xlIiwiZXhwb3J0cyIsIlJvbGVTZWxlY3QiLCJjb250cm9sSWQiLCJjb250cm9sUHJvcHMiLCJwb3BvdmVyQ29udGVudENvbXBvbmVudCIsInQyIiwidDMiLCJ0NCIsInQ1IiwidDYiLCJGb3JtR3JvdXAiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9Vc2VyUm9sZXMvU2VsZWN0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgSWNvbkhlbHAgZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0hlbHAnXHJcbmltcG9ydCB7IENoYW5nZUV2ZW50LCBGdW5jdGlvbkNvbXBvbmVudCwgUmVhY3RFbGVtZW50IH0gZnJvbSAncmVhY3QnXHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIEZvcm1MYWJlbCwgT3ZlcmxheVRyaWdnZXIgfSBmcm9tICdyZWFjdC1ib290c3RyYXAnXHJcbmltcG9ydCB7IE92ZXJsYXlJbmplY3RlZFByb3BzIH0gZnJvbSAncmVhY3QtYm9vdHN0cmFwL092ZXJsYXknXHJcbmltcG9ydCB7IHRleHRGb3JCYXNlUm9sZSB9IGZyb20gJy4uLy4uL3V0aWxzL2Jhc2VSb2xlJ1xyXG5cclxuY29uc3QgbGFiZWwgPSAoaGFzTXVsdGlwbGVPcHRpb25zOiBib29sZWFuLCBsYWJlbFZpc2libGU6IGJvb2xlYW4sIGhhc1Rvb2x0aXA6IGJvb2xlYW4pID0+IHtcclxuXHRjb25zdCBjb250ZW50ID0gKFxyXG5cdFx0PD5cclxuXHRcdFx0Um9sZVxyXG5cdFx0XHR7aGFzVG9vbHRpcCAmJiA8SWNvbkhlbHAgY29sb3I9XCJwcmltYXJ5XCIgY2xhc3NOYW1lPVwibWwxIHYtbWlkXCIgdGFiSW5kZXg9ezB9IC8+fVxyXG5cdFx0PC8+XHJcblx0KVxyXG5cclxuXHRjb25zdCBjbGFzc2VzID0gYGY2IG1iMSAkeyFsYWJlbFZpc2libGUgPyAndmlzdWFsbHktaGlkZGVuJyA6ICcnfWBcclxuXHJcblx0cmV0dXJuIGhhc011bHRpcGxlT3B0aW9ucyA/IChcclxuXHRcdDxGb3JtTGFiZWwgY2xhc3NOYW1lPXtjbGFzc2VzfT57Y29udGVudH08L0Zvcm1MYWJlbD5cclxuXHQpIDogKFxyXG5cdFx0PHNwYW4gY2xhc3NOYW1lPXtjbGFzc2VzICsgJyBiJ30+e2NvbnRlbnR9PC9zcGFuPlxyXG5cdClcclxufVxyXG5cclxuY29uc3Qgb3ZlcmxheSA9IChcclxuXHRoYXNNdWx0aXBsZU9wdGlvbnM6IGJvb2xlYW4sXHJcblx0bGFiZWxWaXNpYmxlID0gZmFsc2UsXHJcblx0cm9sZVBvcG92ZXI/OiBSZWFjdEVsZW1lbnQ8T3ZlcmxheUluamVjdGVkUHJvcHM+XHJcbikgPT5cclxuXHRyb2xlUG9wb3ZlciA/IChcclxuXHRcdDxPdmVybGF5VHJpZ2dlciBwbGFjZW1lbnQ9XCJyaWdodFwiIHRyaWdnZXI9e1snY2xpY2snLCAnaG92ZXInLCAnZm9jdXMnXX0gb3ZlcmxheT17cm9sZVBvcG92ZXJ9PlxyXG5cdFx0XHR7bGFiZWwoaGFzTXVsdGlwbGVPcHRpb25zLCBsYWJlbFZpc2libGUsIHRydWUpfVxyXG5cdFx0PC9PdmVybGF5VHJpZ2dlcj5cclxuXHQpIDogKFxyXG5cdFx0bGFiZWwoaGFzTXVsdGlwbGVPcHRpb25zLCBsYWJlbFZpc2libGUsIGZhbHNlKVxyXG5cdClcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUm9sZVNlbGVjdENvbnRyb2xQcm9wcyB7XHJcblx0LyoqIENTUyBjbGFzcyBwYXNzZWQgdG8gdGhlIHNlbGVjdG9yIEZvcm1Db250cm9sIGNvbXBvbmVudCAqL1xyXG5cdGNsYXNzTmFtZT86IHN0cmluZ1xyXG5cdC8qKiBBcnJheSBvZiBvcHRpb25zIHRoZSB1c2VyIGNhbiBjaG9vc2UgZnJvbSAqL1xyXG5cdG9wdGlvbnM6IHN0cmluZ1tdXHJcblx0LyoqIEN1cnJlbnRseSBzZWxlY3RlZCB2YWx1ZSAqL1xyXG5cdHZhbHVlOiBzdHJpbmdcclxuXHQvKiogRnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgd2hlbiB0aGUgdmFsdWUgY2hhbmdlcyAqL1xyXG5cdG9uQ2hhbmdlOiAob3B0aW9uOiBzdHJpbmcpID0+IHZvaWRcclxuXHQvKiogKE9wdGlvbmFsKSBQcm92aWRlIGN1c3RvbSB1c2VyLWZyaWVuZGx5IG5hbWVzIGZvciBkaXNwbGF5ZWQgcm9sZXMgKi9cclxuXHR0ZXh0Rm9yUm9sZT86IChyb2xlOiBzdHJpbmcpID0+IHN0cmluZ1xyXG5cdC8qKiAoT3B0aW9uYWwpIElzIHRoZSBjb250cm9sIGRpc2FibGVkPyAqL1xyXG5cdGRpc2FibGVkPzogYm9vbGVhblxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgUm9sZVNlbGVjdENvbnRyb2w6IEZ1bmN0aW9uQ29tcG9uZW50PFJvbGVTZWxlY3RDb250cm9sUHJvcHM+ID0gKHtcclxuXHRjbGFzc05hbWUsXHJcblx0b3B0aW9ucyxcclxuXHR2YWx1ZSxcclxuXHRvbkNoYW5nZSxcclxuXHR0ZXh0Rm9yUm9sZSxcclxuXHRkaXNhYmxlZFxyXG59KSA9PlxyXG5cdG9wdGlvbnMubGVuZ3RoID4gMSA/IChcclxuXHRcdDxGb3JtQ29udHJvbFxyXG5cdFx0XHRjbGFzc05hbWU9e2NsYXNzTmFtZSA/IGNsYXNzTmFtZSA6ICcnfVxyXG5cdFx0XHRhcmlhLWxhYmVsPVwiUm9sZVwiXHJcblx0XHRcdGFzPVwic2VsZWN0XCJcclxuXHRcdFx0cGxhY2Vob2xkZXI9XCJzZWxlY3RcIlxyXG5cdFx0XHRvbkNoYW5nZT17KGU6IENoYW5nZUV2ZW50PEhUTUxTZWxlY3RFbGVtZW50PikgPT4ge1xyXG5cdFx0XHRcdG9uQ2hhbmdlKGUudGFyZ2V0LnZhbHVlKVxyXG5cdFx0XHR9fVxyXG5cdFx0XHR2YWx1ZT17dmFsdWV9XHJcblx0XHRcdGRpc2FibGVkPXtkaXNhYmxlZH0+XHJcblx0XHRcdHtvcHRpb25zLm1hcChyb2xlID0+IChcclxuXHRcdFx0XHQ8b3B0aW9uIHZhbHVlPXtyb2xlfSBrZXk9e3JvbGV9PlxyXG5cdFx0XHRcdFx0e3RleHRGb3JSb2xlID8gdGV4dEZvclJvbGUocm9sZSkgOiB0ZXh0Rm9yQmFzZVJvbGUocm9sZSl9XHJcblx0XHRcdFx0PC9vcHRpb24+XHJcblx0XHRcdCkpfVxyXG5cdFx0PC9Gb3JtQ29udHJvbD5cclxuXHQpIDogKFxyXG5cdFx0PGRpdj57dGV4dEZvclJvbGUgPyB0ZXh0Rm9yUm9sZShvcHRpb25zWzBdKSA6IHRleHRGb3JCYXNlUm9sZShvcHRpb25zWzBdKX08L2Rpdj5cclxuXHQpXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFJvbGVTZWxlY3RQcm9wcyBleHRlbmRzIFJvbGVTZWxlY3RDb250cm9sUHJvcHMge1xyXG5cdC8qKiBJZCBmb3IgdGhlICdzZWxlY3QnIGZvcm0gY29udHJvbCwgZGVmYXVsdHMgdG8gJ1JvbGVTZWxlY3QnICovXHJcblx0Y29udHJvbElkPzogc3RyaW5nXHJcblx0LyoqIFdoZXRoZXIgdGhlIGxhYmVsIHRleHQgc2hvdWxkIGJlIHZpc2libGUgKi9cclxuXHRsYWJlbFZpc2libGU/OiBib29sZWFuXHJcblx0LyoqIChPcHRpb25hbCkgQ29udGVudCBvZiB0aGUgcG9wb3ZlciB0b29sdGlwICovXHJcblx0cG9wb3ZlckNvbnRlbnRDb21wb25lbnQ/OiBSZWFjdEVsZW1lbnQ8T3ZlcmxheUluamVjdGVkUHJvcHM+XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBSb2xlU2VsZWN0OiBGdW5jdGlvbkNvbXBvbmVudDxSb2xlU2VsZWN0UHJvcHM+ID0gKHtcclxuXHRjb250cm9sSWQsXHJcblx0bGFiZWxWaXNpYmxlLFxyXG5cdHBvcG92ZXJDb250ZW50Q29tcG9uZW50LFxyXG5cdG9wdGlvbnMsXHJcblx0Li4uY29udHJvbFByb3BzXHJcbn0pID0+IHtcclxuXHRjb25zdCBjb250ZW50ID0gKFxyXG5cdFx0PD5cclxuXHRcdFx0e292ZXJsYXkob3B0aW9ucy5sZW5ndGggPiAxLCAhIWxhYmVsVmlzaWJsZSwgcG9wb3ZlckNvbnRlbnRDb21wb25lbnQpfVxyXG5cdFx0XHQ8Um9sZVNlbGVjdENvbnRyb2wgb3B0aW9ucz17b3B0aW9uc30gey4uLmNvbnRyb2xQcm9wc30gLz5cclxuXHRcdDwvPlxyXG5cdClcclxuXHJcblx0cmV0dXJuIG9wdGlvbnMubGVuZ3RoID4gMSA/IChcclxuXHRcdDxGb3JtR3JvdXAgY29udHJvbElkPXtjb250cm9sSWQgPyBjb250cm9sSWQgOiAnUm9sZVNlbGVjdCd9Pntjb250ZW50fTwvRm9ybUdyb3VwPlxyXG5cdCkgOiAoXHJcblx0XHQ8c3Bhbj57Y29udGVudH08L3NwYW4+XHJcblx0KVxyXG59XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxlQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFBRSxTQUFBLEdBQUFGLE9BQUE7QUFBc0QsSUFBQUcsV0FB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
|