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.
Files changed (258) hide show
  1. package/lib/components/ActionList.js +170 -34
  2. package/lib/components/AlertDialog.js +133 -9
  3. package/lib/components/AlertWithIcon.js +92 -25
  4. package/lib/components/ConnectedModal.js +43 -13
  5. package/lib/components/Dropdowns/GroupsDropdown.js +69 -44
  6. package/lib/components/Dropdowns/ManagedNavDropdown.js +100 -67
  7. package/lib/components/Dropdowns/UserDropdown.js +111 -21
  8. package/lib/components/Dropdowns/index.js +27 -9
  9. package/lib/components/EntityOwnerList.js +52 -18
  10. package/lib/components/Error.js +106 -11
  11. package/lib/components/ErrorBoundary.js +134 -35
  12. package/lib/components/ErrorMessage.js +44 -9
  13. package/lib/components/Forms/DateField.js +61 -42
  14. package/lib/components/Forms/TimeField.js +81 -42
  15. package/lib/components/Forms/index.js +27 -4
  16. package/lib/components/Groups/CreateEditCopySaveButtons.js +114 -11
  17. package/lib/components/Groups/ExternalGroups/Attach.js +212 -148
  18. package/lib/components/Groups/ExternalGroups/Table.js +181 -45
  19. package/lib/components/Groups/GroupCreateOrEditCommonProps.js +5 -1
  20. package/lib/components/Groups/RosterSyncInfo.js +147 -20
  21. package/lib/components/HOC/AccessibleAppComponent.js +98 -73
  22. package/lib/components/HOC/ActivityRequiredComponent.js +92 -49
  23. package/lib/components/HOC/AsyncComponent.js +54 -39
  24. package/lib/components/HOC/AuthenticatedComponent.js +58 -38
  25. package/lib/components/HOC/CollectionComponent.js +170 -110
  26. package/lib/components/HOC/CollectionFirstItemComponent.js +51 -38
  27. package/lib/components/HOC/CollectionItemComponent.js +168 -106
  28. package/lib/components/HOC/ConnectedModalComponent.js +109 -80
  29. package/lib/components/HOC/DataDependentComponent.js +29 -21
  30. package/lib/components/HOC/EntityComponent.js +71 -57
  31. package/lib/components/HOC/FullscreenModalComponent.js +163 -123
  32. package/lib/components/HOC/GroupActivityRequiredComponent.js +45 -31
  33. package/lib/components/HOC/GuidComponent.js +29 -22
  34. package/lib/components/HOC/ModelContextDependencyVerifyComponent.js +41 -31
  35. package/lib/components/HOC/ModelErrorRedirectComponent.js +51 -47
  36. package/lib/components/HOC/SearchPersistorComponent.js +240 -166
  37. package/lib/components/HOC/UnauthenticatedComponent.js +37 -25
  38. package/lib/components/HOC/UserComponent.js +12 -7
  39. package/lib/components/Icons/IconAlphaList.js +33 -5
  40. package/lib/components/Icons/IconExternalUser.js +33 -5
  41. package/lib/components/Icons/IconImpersonation.js +33 -5
  42. package/lib/components/Icons/IconStopImpersonating.js +33 -5
  43. package/lib/components/Icons/IconTable.js +35 -7
  44. package/lib/components/Icons/IconTableDeleteCol.js +33 -5
  45. package/lib/components/Icons/IconTableDeleteRow.js +33 -5
  46. package/lib/components/Icons/IconTableInsertCol.js +33 -5
  47. package/lib/components/Icons/IconTableInsertRow.js +33 -5
  48. package/lib/components/Impersonation/Button.js +77 -13
  49. package/lib/components/Impersonation/Link.js +77 -13
  50. package/lib/components/Impersonation/UserDetail.js +66 -9
  51. package/lib/components/Loading.js +26 -4
  52. package/lib/components/LockDownBrowser/Check.js +194 -49
  53. package/lib/components/LockDownBrowser/ExitButton.js +26 -9
  54. package/lib/components/LockDownBrowser/Launch.js +70 -62
  55. package/lib/components/Lti/Confirm.js +152 -11
  56. package/lib/components/Lti/CreateNonLtiGroupAlertDialog.js +170 -33
  57. package/lib/components/Lti/Launch.js +105 -24
  58. package/lib/components/Lti/LaunchGroup.js +85 -13
  59. package/lib/components/ManageTable.js +309 -87
  60. package/lib/components/ManageTableNoDataComponent.js +42 -4
  61. package/lib/components/NewVersionAlert.js +82 -46
  62. package/lib/components/NotFound.js +86 -10
  63. package/lib/components/Notifications.js +185 -126
  64. package/lib/components/PaginationNextButton.js +33 -6
  65. package/lib/components/PaginationPreviousButton.js +33 -6
  66. package/lib/components/Quill/CustomToolbar.js +432 -218
  67. package/lib/components/Quill/Formats/Image.js +73 -63
  68. package/lib/components/Quill/Formats/List.js +45 -45
  69. package/lib/components/Quill/Formats/Video.js +28 -24
  70. package/lib/components/Quill/ImageDropModule.js +147 -117
  71. package/lib/components/Quill/ImageWarning.js +47 -9
  72. package/lib/components/Quill/ImageWithAltTextModal.js +425 -86
  73. package/lib/components/Quill/Specs/CustomImageSpec.js +42 -34
  74. package/lib/components/Quill/Specs/CustomVideoSpec.js +34 -28
  75. package/lib/components/Quill/TableModule/Blots/BaseTableBlot.js +98 -98
  76. package/lib/components/Quill/TableModule/Blots/TableBlot.js +52 -47
  77. package/lib/components/Quill/TableModule/Blots/TableBodyBlot.js +53 -48
  78. package/lib/components/Quill/TableModule/Blots/TableCellBlot.js +224 -221
  79. package/lib/components/Quill/TableModule/Blots/TableContainer.js +80 -83
  80. package/lib/components/Quill/TableModule/Blots/TableRowBlot.js +75 -70
  81. package/lib/components/Quill/TableModule/constants.js +45 -41
  82. package/lib/components/Quill/TableModule/index.js +362 -301
  83. package/lib/components/Quill/TableModule/utils.js +42 -38
  84. package/lib/components/Quill/accessibilityFix.js +234 -232
  85. package/lib/components/Quill/index.js +34 -28
  86. package/lib/components/RefreshIndicator/Bordered.js +47 -6
  87. package/lib/components/RefreshIndicator/Inline.js +47 -8
  88. package/lib/components/RefreshIndicator/index.js +263 -59
  89. package/lib/components/SearchControls.js +216 -11
  90. package/lib/components/SentryRoute.js +11 -6
  91. package/lib/components/Tables/RoleFilter.js +69 -32
  92. package/lib/components/Tables/TextFilter.js +62 -13
  93. package/lib/components/UserRoles/Add.js +199 -96
  94. package/lib/components/UserRoles/Context.js +11 -7
  95. package/lib/components/UserRoles/RoleCell.js +181 -72
  96. package/lib/components/UserRoles/Select.js +157 -17
  97. package/lib/components/UserRoles/Table.js +221 -80
  98. package/lib/components/UserRoles/index.js +534 -384
  99. package/lib/config/eslint/index.js +32 -28
  100. package/lib/config/eslint/lib/order.js +26 -27
  101. package/lib/config/eslint/lib/prettier.js +20 -18
  102. package/lib/config/eslint/lib/typescript.js +93 -112
  103. package/lib/config/eslint/react.js +24 -14
  104. package/lib/constants/baseActivity.js +30 -26
  105. package/lib/constants/baseRole.js +14 -10
  106. package/lib/constants/configuration.js +33 -29
  107. package/lib/constants/externalProviderType.js +10 -6
  108. package/lib/constants/fetchErrorData.js +15 -11
  109. package/lib/constants/index.js +137 -14
  110. package/lib/constants/lockDownBrowser.js +28 -24
  111. package/lib/constants/mockData.js +382 -297
  112. package/lib/constants/modelStatus.js +15 -11
  113. package/lib/constants/notificationType.js +12 -8
  114. package/lib/constants/operatingSystem.js +12 -8
  115. package/lib/constants/shard.js +11 -7
  116. package/lib/constants/table.js +21 -21
  117. package/lib/constants/tier.js +12 -8
  118. package/lib/constants/userRole.js +15 -5
  119. package/lib/endpointMappings.js +197 -181
  120. package/lib/hooks/useCollection.js +82 -62
  121. package/lib/hooks/useCollectionConfiguration.js +228 -83
  122. package/lib/hooks/useCollectionItem.js +154 -54
  123. package/lib/hooks/useGuid.js +20 -8
  124. package/lib/hooks/usePrevious.js +19 -13
  125. package/lib/index.js +157 -25
  126. package/lib/redux/actionCreator.js +50 -28
  127. package/lib/redux/actions/AuthAction.js +44 -31
  128. package/lib/redux/actions/ModalAction.js +10 -6
  129. package/lib/redux/actions/ModelAction.js +77 -39
  130. package/lib/redux/actions/NotificationAction.js +10 -6
  131. package/lib/redux/actions/SearchAction.js +9 -5
  132. package/lib/redux/actions/index.js +60 -7
  133. package/lib/redux/configureReducers.js +60 -49
  134. package/lib/redux/configureStore.js +83 -87
  135. package/lib/redux/helpers.js +6 -2
  136. package/lib/redux/reducers/authReducer.js +50 -43
  137. package/lib/redux/reducers/index.js +41 -13
  138. package/lib/redux/reducers/modalsReducer.js +47 -29
  139. package/lib/redux/reducers/modelsReducer.js +178 -173
  140. package/lib/redux/reducers/notificationsReducer.js +24 -18
  141. package/lib/redux/reducers/searchReducer.js +25 -19
  142. package/lib/redux/sagas/appInsightsSaga.js +22 -18
  143. package/lib/redux/sagas/authSaga.js +253 -218
  144. package/lib/redux/sagas/caliperSaga.js +159 -143
  145. package/lib/redux/sagas/clockOffsetSaga.js +34 -31
  146. package/lib/redux/sagas/configurationSaga.js +11 -7
  147. package/lib/redux/sagas/downtimeApiErrorSaga.js +20 -17
  148. package/lib/redux/sagas/errorSaga.js +27 -21
  149. package/lib/redux/sagas/googleAnalyticsSaga.js +28 -24
  150. package/lib/redux/sagas/identityProviderSaga.js +22 -18
  151. package/lib/redux/sagas/initialDataLoadSaga.js +37 -28
  152. package/lib/redux/sagas/lockDownBrowserErrorSaga.js +29 -20
  153. package/lib/redux/sagas/modelFetchSaga.js +355 -322
  154. package/lib/redux/sagas/noStoreSaga.js +61 -48
  155. package/lib/redux/sagas/postLoginDataSaga.js +45 -34
  156. package/lib/redux/sagas/postLoginRedirectSaga.js +27 -27
  157. package/lib/redux/sagas/rootSaga.js +82 -57
  158. package/lib/redux/sagas/sentrySaga.js +29 -25
  159. package/lib/redux/sagas/userIdSaga.js +16 -12
  160. package/lib/services/codeProviderService.js +25 -19
  161. package/lib/services/dateService.js +12 -7
  162. package/lib/services/documentService.js +17 -12
  163. package/lib/services/fetchService.js +129 -112
  164. package/lib/services/persistenceService.js +33 -29
  165. package/lib/services/ticketProviderService.js +29 -23
  166. package/lib/services/tokenPersistenceService.js +12 -8
  167. package/lib/services/windowService.js +18 -14
  168. package/lib/startup.js +132 -114
  169. package/lib/types/AppConfiguration.js +5 -1
  170. package/lib/types/Artifact.js +11 -7
  171. package/lib/types/BaseReduxState.js +5 -1
  172. package/lib/types/Client.js +5 -1
  173. package/lib/types/Collection.js +5 -1
  174. package/lib/types/Configuration.js +5 -1
  175. package/lib/types/DeepLinkingResponseRequest.js +5 -1
  176. package/lib/types/DeletableModel.js +5 -1
  177. package/lib/types/Event.js +5 -1
  178. package/lib/types/ExternalGroup.js +5 -1
  179. package/lib/types/ExternalProvider.js +5 -1
  180. package/lib/types/ExternalTerm.js +5 -1
  181. package/lib/types/Group.js +5 -1
  182. package/lib/types/IdentityProvider.js +5 -1
  183. package/lib/types/LtiLaunch.js +5 -1
  184. package/lib/types/NameOnlyEntity.js +5 -1
  185. package/lib/types/Notification.js +5 -1
  186. package/lib/types/OptionalRecord.js +5 -1
  187. package/lib/types/OwnerSchedule.js +5 -1
  188. package/lib/types/PropertyOfType.js +5 -1
  189. package/lib/types/Quill.js +5 -1
  190. package/lib/types/RoleDescription.js +5 -1
  191. package/lib/types/Search.js +5 -1
  192. package/lib/types/SimpleLocation.js +5 -1
  193. package/lib/types/UniTime.js +5 -1
  194. package/lib/types/User.js +5 -1
  195. package/lib/types/UserRole.js +5 -1
  196. package/lib/types/auth/AuthState.js +5 -1
  197. package/lib/types/auth/CasV1LoginRequestBody.js +5 -1
  198. package/lib/types/auth/ClientCredentials.js +5 -1
  199. package/lib/types/auth/CodeProviderService.js +5 -1
  200. package/lib/types/auth/LocalLoginRequestBody.js +5 -1
  201. package/lib/types/auth/TicketProviderService.js +5 -1
  202. package/lib/types/auth/TokenPersistenceService.js +5 -1
  203. package/lib/types/auth/index.js +82 -9
  204. package/lib/types/externals.d.js +2 -0
  205. package/lib/types/index.js +313 -30
  206. package/lib/types/net/EndpointConfig.js +5 -1
  207. package/lib/types/net/EndpointMapping.js +5 -1
  208. package/lib/types/net/EndpointMappings.js +5 -1
  209. package/lib/types/net/ErrorHandler.js +5 -1
  210. package/lib/types/net/FetchConfig.js +5 -1
  211. package/lib/types/net/FetchErrorData.js +10 -6
  212. package/lib/types/net/FetchResult.js +5 -1
  213. package/lib/types/net/HTTPMethod.js +5 -1
  214. package/lib/types/net/HTTPStatusCode.js +16 -12
  215. package/lib/types/net/Metadata.js +5 -1
  216. package/lib/types/net/Model.js +5 -1
  217. package/lib/types/net/ModelCollection.js +5 -1
  218. package/lib/types/net/ModelsState.js +5 -1
  219. package/lib/types/net/OAuthToken.js +5 -1
  220. package/lib/types/net/OAuthTokenOrNull.js +5 -1
  221. package/lib/types/net/TokenAccessFunction.js +5 -1
  222. package/lib/types/net/index.js +181 -18
  223. package/lib/utils/baseActivity.js +133 -123
  224. package/lib/utils/baseRole.js +37 -33
  225. package/lib/utils/collection.js +425 -298
  226. package/lib/utils/cookies.js +22 -19
  227. package/lib/utils/date.js +303 -279
  228. package/lib/utils/dom.js +176 -165
  229. package/lib/utils/domainIdentifier.js +9 -5
  230. package/lib/utils/entityUserRole.js +6 -2
  231. package/lib/utils/error.js +17 -15
  232. package/lib/utils/events.js +40 -31
  233. package/lib/utils/externalGroup.js +22 -18
  234. package/lib/utils/externalProviders.js +8 -4
  235. package/lib/utils/externalTerms.js +10 -3
  236. package/lib/utils/fetch.js +179 -180
  237. package/lib/utils/group.js +18 -7
  238. package/lib/utils/groupDates.js +37 -33
  239. package/lib/utils/groupRoles.js +25 -21
  240. package/lib/utils/lockDownBrowser.js +15 -11
  241. package/lib/utils/logger.js +26 -22
  242. package/lib/utils/lti.js +9 -4
  243. package/lib/utils/model.js +36 -41
  244. package/lib/utils/number.js +21 -18
  245. package/lib/utils/promise.js +28 -21
  246. package/lib/utils/quill.js +65 -62
  247. package/lib/utils/route.js +58 -55
  248. package/lib/utils/search.js +76 -80
  249. package/lib/utils/shard.js +37 -37
  250. package/lib/utils/sort.js +50 -42
  251. package/lib/utils/string.js +13 -8
  252. package/lib/utils/table.js +38 -33
  253. package/lib/utils/timezone.js +10 -6
  254. package/lib/utils/url.js +142 -142
  255. package/lib/utils/user.js +58 -55
  256. package/lib/utils/userAgent.js +10 -10
  257. package/lib/utils/userRole.js +57 -49
  258. package/package.json +17 -3
@@ -1,101 +1,204 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
3
7
  exports.UserRolesAdd = void 0;
4
- const tslib_1 = require("tslib");
5
- const jsx_runtime_1 = require("react/jsx-runtime");
6
- const Button_1 = tslib_1.__importDefault(require("@material-ui/core/Button"));
7
- const AddCircle_1 = tslib_1.__importDefault(require("@material-ui/icons/AddCircle"));
8
- const lodash_1 = tslib_1.__importDefault(require("lodash"));
9
- const react_1 = require("react");
10
- const react_bootstrap_1 = require("react-bootstrap");
11
- const AlertDialog_1 = require("../../components/AlertDialog");
12
- const Inline_1 = require("../../components/RefreshIndicator/Inline");
13
- const Select_1 = require("../../components/UserRoles/Select");
14
- const baseRole_1 = require("../../constants/baseRole");
15
- const configuration_1 = require("../../constants/configuration");
16
- const domainIdentifier_1 = require("../../utils/domainIdentifier");
17
- const shard_1 = require("../../utils/shard");
18
- const string_1 = require("../../utils/string");
19
- const AlertWithIcon_1 = require("../AlertWithIcon");
20
- const FERPA_ROLES = [baseRole_1.BASE_ROLE.SUPER_ADMIN, baseRole_1.BASE_ROLE.ADMIN, baseRole_1.BASE_ROLE.GROUP_OWNER, baseRole_1.BASE_ROLE.GROUP_GRADER];
21
- class UserRolesAdd extends react_1.Component {
22
- constructor(props) {
23
- super(props);
24
- this.updateRole = (role) => {
25
- this.setState({
26
- role
27
- });
28
- };
29
- this.handleSubmit = () => {
30
- const { identifiers, role } = this.state;
31
- const identifiersArray = identifiers
32
- .split(/\r\n|\r|\n/g)
33
- .map(id => id.trim())
34
- .filter(id => id !== ''); // filter identifiers that are empty
35
- const errorMessage = this.getValidationErrorMessage(identifiersArray);
36
- if (errorMessage) {
37
- this.setState({
38
- showErrorAlert: true,
39
- errorMessage
40
- });
41
- }
42
- else {
43
- this.props.addUserRoles(identifiersArray, role);
44
- }
45
- };
46
- this.closeErrorAlert = () => {
47
- this.setState({
48
- showErrorAlert: false,
49
- errorMessage: undefined
50
- });
51
- };
52
- this.updateIdentifiers = (e) => {
53
- this.setState({
54
- identifiers: e.target.value
55
- });
56
- };
57
- this.getValidationErrorMessage = (identifiers) => {
58
- if (!identifiers || identifiers.length === 0) {
59
- return `Please enter at least one ${(0, domainIdentifier_1.getDomainIdentifierTypeString)()}.`;
60
- }
61
- let invalidIdentifiers;
62
- if ((0, shard_1.isPurdueShard)() && !identifiers.every(id => (0, string_1.isPurdueAliasOrPuid)(id))) {
63
- invalidIdentifiers = identifiers.filter(id => !(0, string_1.isPurdueAliasOrPuid)(id));
64
- }
65
- if (!(0, shard_1.isPurdueShard)() && !identifiers.every(id => (0, string_1.isEmail)(id))) {
66
- invalidIdentifiers = identifiers.filter(id => !(0, string_1.isEmail)(id));
67
- }
68
- if (invalidIdentifiers) {
69
- return `Please enter valid ${(0, domainIdentifier_1.getDomainIdentifierTypePluralString)()}. The following are invalid:\r\n${invalidIdentifiers.join('\r\n')}`;
70
- }
71
- return undefined;
72
- };
73
- this.state = {
74
- identifiers: '',
75
- role: this.props.defaultRole,
76
- showErrorAlert: false,
77
- errorMessage: undefined
78
- };
79
- }
80
- componentDidUpdate(prevProps) {
81
- const { shouldReset: prevShouldReset } = prevProps;
82
- const { shouldReset } = this.props;
83
- if (!prevShouldReset && shouldReset) {
84
- this.setState({
85
- identifiers: '',
86
- role: this.props.defaultRole
87
- });
88
- }
89
- }
90
- render() {
91
- const { identifiers, role, showErrorAlert, errorMessage } = this.state;
92
- const { entityName, isAddingUsersToRole, roleDescriptions, renderAddDescription, disabled, textForRole } = this.props;
93
- const roles = lodash_1.default.keys(roleDescriptions);
94
- const rolePopover = ((0, jsx_runtime_1.jsxs)(react_bootstrap_1.Popover, { id: "role", children: [(0, jsx_runtime_1.jsx)("h3", { children: "Role" }), roles.map(r => ((0, jsx_runtime_1.jsx)(react_1.Fragment, { children: roleDescriptions[r] }, r)))] }));
95
- const appConfig = (0, configuration_1.getAppConfig)();
96
- const appName = appConfig.APP_NAME;
97
- const gradableDescriptor = appConfig.GRADABLE_DESCRIPTOR;
98
- return ((0, jsx_runtime_1.jsxs)(react_bootstrap_1.Row, { children: [!!renderAddDescription && (0, jsx_runtime_1.jsx)(react_bootstrap_1.Col, { xs: 12, children: renderAddDescription(entityName) }), (0, jsx_runtime_1.jsx)(react_bootstrap_1.Col, { xs: 12, sm: 6, children: (0, jsx_runtime_1.jsxs)(react_bootstrap_1.FormGroup, { controlId: "UserEntry", children: [(0, jsx_runtime_1.jsxs)(react_bootstrap_1.FormLabel, { className: "f6", children: [(0, domainIdentifier_1.getDomainIdentifierTypePluralString)(), " (separated by a new line)"] }), (0, jsx_runtime_1.jsx)(react_bootstrap_1.FormControl, { type: "text", as: "textarea", name: "account", "aria-label": "The account names to add", onChange: this.updateIdentifiers, value: identifiers, placeholder: (0, domainIdentifier_1.getDomainIdentifierTypeString)(), disabled: disabled })] }) }), (0, jsx_runtime_1.jsx)(react_bootstrap_1.Col, { xs: 12, sm: 4, children: (0, jsx_runtime_1.jsx)(Select_1.RoleSelect, { options: roles, value: role, onChange: this.updateRole, labelVisible: true, popoverContentComponent: rolePopover, textForRole: textForRole }) }), (0, jsx_runtime_1.jsxs)(react_bootstrap_1.Col, { xs: 12, sm: 2, className: "mt3-ns pt2-ns", children: [isAddingUsersToRole && (0, jsx_runtime_1.jsx)(Inline_1.RefreshIndicatorInline, { className: "mr3" }), !isAddingUsersToRole && ((0, jsx_runtime_1.jsxs)(Button_1.default, { id: "userRolesAddButton", color: "primary", className: "btn-primary w-100-lt-xs", disabled: !identifiers || disabled, onClick: this.handleSubmit, children: [(0, jsx_runtime_1.jsx)(AddCircle_1.default, { className: "v-mid" }), "Add"] })), (0, jsx_runtime_1.jsx)(AlertDialog_1.AlertDialog, { isOpen: showErrorAlert, title: `Error Adding People to the ${entityName}`, description: (0, jsx_runtime_1.jsx)("div", { className: "pre-wrap", children: errorMessage }), proceedText: "Got it. Thanks!", onProceed: this.closeErrorAlert, onCancel: this.closeErrorAlert })] }), lodash_1.default.includes(FERPA_ROLES, role) && ((0, jsx_runtime_1.jsx)(react_bootstrap_1.Col, { xs: 12, children: (0, jsx_runtime_1.jsx)(AlertWithIcon_1.AlertWithIcon, { id: "ferpaWarning", variant: "warning", children: (0, jsx_runtime_1.jsxs)("p", { children: ["This role includes ", gradableDescriptor, " scores in ", appName, ". Please consider whether", ' ', (0, jsx_runtime_1.jsx)("a", { href: "https://www.purdue.edu/registrar/FERPA/index.html", target: "_blank", rel: "noopener noreferrer", children: "FERPA" }), ' ', "certification is needed."] }) }) }))] }));
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _Button = _interopRequireDefault(require("@material-ui/core/Button"));
10
+ var _AddCircle = _interopRequireDefault(require("@material-ui/icons/AddCircle"));
11
+ var _lodash = _interopRequireDefault(require("lodash"));
12
+ var _react = _interopRequireWildcard(require("react"));
13
+ var _reactBootstrap = require("react-bootstrap");
14
+ var _AlertDialog = require("../../components/AlertDialog");
15
+ var _Inline = require("../../components/RefreshIndicator/Inline");
16
+ var _Select = require("../../components/UserRoles/Select");
17
+ var _baseRole = require("../../constants/baseRole");
18
+ var _configuration = require("../../constants/configuration");
19
+ var _domainIdentifier = require("../../utils/domainIdentifier");
20
+ var _shard = require("../../utils/shard");
21
+ var _string = require("../../utils/string");
22
+ var _AlertWithIcon = require("../AlertWithIcon");
23
+ var _jsxRuntime = require("react/jsx-runtime");
24
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
25
+ const FERPA_ROLES = [_baseRole.BASE_ROLE.SUPER_ADMIN, _baseRole.BASE_ROLE.ADMIN, _baseRole.BASE_ROLE.GROUP_OWNER, _baseRole.BASE_ROLE.GROUP_GRADER];
26
+ class UserRolesAdd extends _react.Component {
27
+ constructor(props) {
28
+ super(props);
29
+ (0, _defineProperty2.default)(this, "updateRole", role => {
30
+ this.setState({
31
+ role
32
+ });
33
+ });
34
+ (0, _defineProperty2.default)(this, "handleSubmit", () => {
35
+ const {
36
+ identifiers,
37
+ role
38
+ } = this.state;
39
+ const identifiersArray = identifiers.split(/\r\n|\r|\n/g).map(id => id.trim()).filter(id => id !== ''); // filter identifiers that are empty
40
+ const errorMessage = this.getValidationErrorMessage(identifiersArray);
41
+ if (errorMessage) {
42
+ this.setState({
43
+ showErrorAlert: true,
44
+ errorMessage
45
+ });
46
+ } else {
47
+ this.props.addUserRoles(identifiersArray, role);
48
+ }
49
+ });
50
+ (0, _defineProperty2.default)(this, "closeErrorAlert", () => {
51
+ this.setState({
52
+ showErrorAlert: false,
53
+ errorMessage: undefined
54
+ });
55
+ });
56
+ (0, _defineProperty2.default)(this, "updateIdentifiers", e => {
57
+ this.setState({
58
+ identifiers: e.target.value
59
+ });
60
+ });
61
+ (0, _defineProperty2.default)(this, "getValidationErrorMessage", identifiers => {
62
+ if (!identifiers || identifiers.length === 0) {
63
+ return `Please enter at least one ${(0, _domainIdentifier.getDomainIdentifierTypeString)()}.`;
64
+ }
65
+ let invalidIdentifiers;
66
+ if ((0, _shard.isPurdueShard)() && !identifiers.every(id => (0, _string.isPurdueAliasOrPuid)(id))) {
67
+ invalidIdentifiers = identifiers.filter(id => !(0, _string.isPurdueAliasOrPuid)(id));
68
+ }
69
+ if (!(0, _shard.isPurdueShard)() && !identifiers.every(id => (0, _string.isEmail)(id))) {
70
+ invalidIdentifiers = identifiers.filter(id => !(0, _string.isEmail)(id));
71
+ }
72
+ if (invalidIdentifiers) {
73
+ return `Please enter valid ${(0, _domainIdentifier.getDomainIdentifierTypePluralString)()}. The following are invalid:\r\n${invalidIdentifiers.join('\r\n')}`;
74
+ }
75
+ return undefined;
76
+ });
77
+ this.state = {
78
+ identifiers: '',
79
+ role: this.props.defaultRole,
80
+ showErrorAlert: false,
81
+ errorMessage: undefined
82
+ };
83
+ }
84
+ componentDidUpdate(prevProps) {
85
+ const {
86
+ shouldReset: prevShouldReset
87
+ } = prevProps;
88
+ const {
89
+ shouldReset
90
+ } = this.props;
91
+ if (!prevShouldReset && shouldReset) {
92
+ this.setState({
93
+ identifiers: '',
94
+ role: this.props.defaultRole
95
+ });
99
96
  }
97
+ }
98
+ render() {
99
+ const {
100
+ identifiers,
101
+ role,
102
+ showErrorAlert,
103
+ errorMessage
104
+ } = this.state;
105
+ const {
106
+ entityName,
107
+ isAddingUsersToRole,
108
+ roleDescriptions,
109
+ renderAddDescription,
110
+ disabled,
111
+ textForRole
112
+ } = this.props;
113
+ const roles = _lodash.default.keys(roleDescriptions);
114
+ const rolePopover = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Popover, {
115
+ id: "role",
116
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("h3", {
117
+ children: "Role"
118
+ }), roles.map(r => /*#__PURE__*/(0, _jsxRuntime.jsx)(_react.Fragment, {
119
+ children: roleDescriptions[r]
120
+ }, r))]
121
+ });
122
+ const appConfig = (0, _configuration.getAppConfig)();
123
+ const appName = appConfig.APP_NAME;
124
+ const gradableDescriptor = appConfig.GRADABLE_DESCRIPTOR;
125
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Row, {
126
+ children: [!!renderAddDescription && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Col, {
127
+ xs: 12,
128
+ children: renderAddDescription(entityName)
129
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Col, {
130
+ xs: 12,
131
+ sm: 6,
132
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.FormGroup, {
133
+ controlId: "UserEntry",
134
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.FormLabel, {
135
+ className: "f6",
136
+ children: [(0, _domainIdentifier.getDomainIdentifierTypePluralString)(), " (separated by a new line)"]
137
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.FormControl, {
138
+ type: "text",
139
+ as: "textarea",
140
+ name: "account",
141
+ "aria-label": "The account names to add",
142
+ onChange: this.updateIdentifiers,
143
+ value: identifiers,
144
+ placeholder: (0, _domainIdentifier.getDomainIdentifierTypeString)(),
145
+ disabled: disabled
146
+ })]
147
+ })
148
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Col, {
149
+ xs: 12,
150
+ sm: 4,
151
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Select.RoleSelect, {
152
+ options: roles,
153
+ value: role,
154
+ onChange: this.updateRole,
155
+ labelVisible: true,
156
+ popoverContentComponent: rolePopover,
157
+ textForRole: textForRole
158
+ })
159
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Col, {
160
+ xs: 12,
161
+ sm: 2,
162
+ className: "mt3-ns pt2-ns",
163
+ children: [isAddingUsersToRole && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Inline.RefreshIndicatorInline, {
164
+ className: "mr3"
165
+ }), !isAddingUsersToRole && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Button.default, {
166
+ id: "userRolesAddButton",
167
+ color: "primary",
168
+ className: "btn-primary w-100-lt-xs",
169
+ disabled: !identifiers || disabled,
170
+ onClick: this.handleSubmit,
171
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_AddCircle.default, {
172
+ className: "v-mid"
173
+ }), "Add"]
174
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_AlertDialog.AlertDialog, {
175
+ isOpen: showErrorAlert,
176
+ title: `Error Adding People to the ${entityName}`,
177
+ description: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
178
+ className: "pre-wrap",
179
+ children: errorMessage
180
+ }),
181
+ proceedText: "Got it. Thanks!",
182
+ onProceed: this.closeErrorAlert,
183
+ onCancel: this.closeErrorAlert
184
+ })]
185
+ }), _lodash.default.includes(FERPA_ROLES, role) && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactBootstrap.Col, {
186
+ xs: 12,
187
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_AlertWithIcon.AlertWithIcon, {
188
+ id: "ferpaWarning",
189
+ variant: "warning",
190
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("p", {
191
+ children: ["This role includes ", gradableDescriptor, " scores in ", appName, ". Please consider whether", ' ', /*#__PURE__*/(0, _jsxRuntime.jsx)("a", {
192
+ href: "https://www.purdue.edu/registrar/FERPA/index.html",
193
+ target: "_blank",
194
+ rel: "noopener noreferrer",
195
+ children: "FERPA"
196
+ }), ' ', "certification is needed."]
197
+ })
198
+ })
199
+ })]
200
+ });
201
+ }
100
202
  }
101
203
  exports.UserRolesAdd = UserRolesAdd;
204
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfQnV0dG9uIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfQWRkQ2lyY2xlIiwiX2xvZGFzaCIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX3JlYWN0Qm9vdHN0cmFwIiwiX0FsZXJ0RGlhbG9nIiwiX0lubGluZSIsIl9TZWxlY3QiLCJfYmFzZVJvbGUiLCJfY29uZmlndXJhdGlvbiIsIl9kb21haW5JZGVudGlmaWVyIiwiX3NoYXJkIiwiX3N0cmluZyIsIl9BbGVydFdpdGhJY29uIiwiX2pzeFJ1bnRpbWUiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJkZWZhdWx0IiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJGRVJQQV9ST0xFUyIsIkJBU0VfUk9MRSIsIlNVUEVSX0FETUlOIiwiQURNSU4iLCJHUk9VUF9PV05FUiIsIkdST1VQX0dSQURFUiIsIlVzZXJSb2xlc0FkZCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJfZGVmaW5lUHJvcGVydHkyIiwicm9sZSIsInNldFN0YXRlIiwiaWRlbnRpZmllcnMiLCJzdGF0ZSIsImlkZW50aWZpZXJzQXJyYXkiLCJzcGxpdCIsIm1hcCIsImlkIiwidHJpbSIsImZpbHRlciIsImVycm9yTWVzc2FnZSIsImdldFZhbGlkYXRpb25FcnJvck1lc3NhZ2UiLCJzaG93RXJyb3JBbGVydCIsImFkZFVzZXJSb2xlcyIsInVuZGVmaW5lZCIsInRhcmdldCIsInZhbHVlIiwibGVuZ3RoIiwiZ2V0RG9tYWluSWRlbnRpZmllclR5cGVTdHJpbmciLCJpbnZhbGlkSWRlbnRpZmllcnMiLCJpc1B1cmR1ZVNoYXJkIiwiZXZlcnkiLCJpc1B1cmR1ZUFsaWFzT3JQdWlkIiwiaXNFbWFpbCIsImdldERvbWFpbklkZW50aWZpZXJUeXBlUGx1cmFsU3RyaW5nIiwiam9pbiIsImRlZmF1bHRSb2xlIiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJldlByb3BzIiwic2hvdWxkUmVzZXQiLCJwcmV2U2hvdWxkUmVzZXQiLCJyZW5kZXIiLCJlbnRpdHlOYW1lIiwiaXNBZGRpbmdVc2Vyc1RvUm9sZSIsInJvbGVEZXNjcmlwdGlvbnMiLCJyZW5kZXJBZGREZXNjcmlwdGlvbiIsImRpc2FibGVkIiwidGV4dEZvclJvbGUiLCJyb2xlcyIsIl8iLCJrZXlzIiwicm9sZVBvcG92ZXIiLCJqc3hzIiwiUG9wb3ZlciIsImNoaWxkcmVuIiwianN4IiwiRnJhZ21lbnQiLCJhcHBDb25maWciLCJnZXRBcHBDb25maWciLCJhcHBOYW1lIiwiQVBQX05BTUUiLCJncmFkYWJsZURlc2NyaXB0b3IiLCJHUkFEQUJMRV9ERVNDUklQVE9SIiwiUm93IiwiQ29sIiwieHMiLCJzbSIsIkZvcm1Hcm91cCIsImNvbnRyb2xJZCIsIkZvcm1MYWJlbCIsImNsYXNzTmFtZSIsIkZvcm1Db250cm9sIiwidHlwZSIsImFzIiwibmFtZSIsIm9uQ2hhbmdlIiwidXBkYXRlSWRlbnRpZmllcnMiLCJwbGFjZWhvbGRlciIsIlJvbGVTZWxlY3QiLCJvcHRpb25zIiwidXBkYXRlUm9sZSIsImxhYmVsVmlzaWJsZSIsInBvcG92ZXJDb250ZW50Q29tcG9uZW50IiwiUmVmcmVzaEluZGljYXRvcklubGluZSIsImNvbG9yIiwib25DbGljayIsImhhbmRsZVN1Ym1pdCIsIkFsZXJ0RGlhbG9nIiwiaXNPcGVuIiwidGl0bGUiLCJkZXNjcmlwdGlvbiIsInByb2NlZWRUZXh0Iiwib25Qcm9jZWVkIiwiY2xvc2VFcnJvckFsZXJ0Iiwib25DYW5jZWwiLCJpbmNsdWRlcyIsIkFsZXJ0V2l0aEljb24iLCJ2YXJpYW50IiwiaHJlZiIsInJlbCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9Vc2VyUm9sZXMvQWRkLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnV0dG9uIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0J1dHRvbidcclxuaW1wb3J0IEFkZENpcmNsZSBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvQWRkQ2lyY2xlJ1xyXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnXHJcbmltcG9ydCBSZWFjdCwgeyBDb21wb25lbnQsIEZyYWdtZW50IH0gZnJvbSAncmVhY3QnXHJcbmltcG9ydCB7IENvbCwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgRm9ybUxhYmVsLCBQb3BvdmVyLCBSb3cgfSBmcm9tICdyZWFjdC1ib290c3RyYXAnXHJcbmltcG9ydCB7IEFsZXJ0RGlhbG9nIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9BbGVydERpYWxvZydcclxuaW1wb3J0IHsgUmVmcmVzaEluZGljYXRvcklubGluZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvUmVmcmVzaEluZGljYXRvci9JbmxpbmUnXHJcbmltcG9ydCB7IFJvbGVTZWxlY3QgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL1VzZXJSb2xlcy9TZWxlY3QnXHJcbmltcG9ydCB7IEJBU0VfUk9MRSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9iYXNlUm9sZSdcclxuaW1wb3J0IHsgZ2V0QXBwQ29uZmlnIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2NvbmZpZ3VyYXRpb24nXHJcbmltcG9ydCB7IFJvbGVEZXNjcmlwdGlvbnMgfSBmcm9tICcuLi8uLi90eXBlcydcclxuaW1wb3J0IHsgZ2V0RG9tYWluSWRlbnRpZmllclR5cGVQbHVyYWxTdHJpbmcsIGdldERvbWFpbklkZW50aWZpZXJUeXBlU3RyaW5nIH0gZnJvbSAnLi4vLi4vdXRpbHMvZG9tYWluSWRlbnRpZmllcidcclxuaW1wb3J0IHsgaXNQdXJkdWVTaGFyZCB9IGZyb20gJy4uLy4uL3V0aWxzL3NoYXJkJ1xyXG5pbXBvcnQgeyBpc0VtYWlsLCBpc1B1cmR1ZUFsaWFzT3JQdWlkIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyaW5nJ1xyXG5pbXBvcnQgeyBBbGVydFdpdGhJY29uIH0gZnJvbSAnLi4vQWxlcnRXaXRoSWNvbidcclxuXHJcbmNvbnN0IEZFUlBBX1JPTEVTID0gW0JBU0VfUk9MRS5TVVBFUl9BRE1JTiwgQkFTRV9ST0xFLkFETUlOLCBCQVNFX1JPTEUuR1JPVVBfT1dORVIsIEJBU0VfUk9MRS5HUk9VUF9HUkFERVJdXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJSb2xlc0FkZFByb3BzIHtcclxuXHRpZDogc3RyaW5nXHJcblxyXG5cdGRpc2FibGVkPzogYm9vbGVhblxyXG5cdGVudGl0eU5hbWU/OiBzdHJpbmdcclxuXHRkZWZhdWx0Um9sZTogc3RyaW5nXHJcblx0cm9sZURlc2NyaXB0aW9uczogUm9sZURlc2NyaXB0aW9uc1xyXG5cdHJlbmRlckFkZERlc2NyaXB0aW9uPzogKGVudGl0eU5hbWU/OiBzdHJpbmcpID0+IFJlYWN0LkpTWC5FbGVtZW50XHJcblx0dGV4dEZvclJvbGU/OiAocm9sZTogc3RyaW5nKSA9PiBzdHJpbmdcclxuXHJcblx0aXNBZGRpbmdVc2Vyc1RvUm9sZTogYm9vbGVhblxyXG5cdHNob3VsZFJlc2V0OiBib29sZWFuXHJcblx0YWRkVXNlclJvbGVzOiAoaWRlbnRpZmllcnM6IHN0cmluZ1tdLCByb2xlOiBzdHJpbmcpID0+IHZvaWRcclxufVxyXG5cclxuaW50ZXJmYWNlIFVzZXJSb2xlc0FkZFN0YXRlIHtcclxuXHRpZGVudGlmaWVyczogc3RyaW5nXHJcblx0cm9sZTogc3RyaW5nXHJcblx0c2hvd0Vycm9yQWxlcnQ6IGJvb2xlYW5cclxuXHRlcnJvck1lc3NhZ2U/OiBzdHJpbmdcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFVzZXJSb2xlc0FkZCBleHRlbmRzIENvbXBvbmVudDxVc2VyUm9sZXNBZGRQcm9wcywgVXNlclJvbGVzQWRkU3RhdGU+IHtcclxuXHRjb25zdHJ1Y3Rvcihwcm9wczogVXNlclJvbGVzQWRkUHJvcHMpIHtcclxuXHRcdHN1cGVyKHByb3BzKVxyXG5cdFx0dGhpcy5zdGF0ZSA9IHtcclxuXHRcdFx0aWRlbnRpZmllcnM6ICcnLFxyXG5cdFx0XHRyb2xlOiB0aGlzLnByb3BzLmRlZmF1bHRSb2xlLFxyXG5cdFx0XHRzaG93RXJyb3JBbGVydDogZmFsc2UsXHJcblx0XHRcdGVycm9yTWVzc2FnZTogdW5kZWZpbmVkXHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHR1cGRhdGVSb2xlID0gKHJvbGU6IHN0cmluZykgPT4ge1xyXG5cdFx0dGhpcy5zZXRTdGF0ZSh7XHJcblx0XHRcdHJvbGVcclxuXHRcdH0pXHJcblx0fVxyXG5cclxuXHRjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzOiBVc2VyUm9sZXNBZGRQcm9wcykge1xyXG5cdFx0Y29uc3QgeyBzaG91bGRSZXNldDogcHJldlNob3VsZFJlc2V0IH0gPSBwcmV2UHJvcHNcclxuXHRcdGNvbnN0IHsgc2hvdWxkUmVzZXQgfSA9IHRoaXMucHJvcHNcclxuXHRcdGlmICghcHJldlNob3VsZFJlc2V0ICYmIHNob3VsZFJlc2V0KSB7XHJcblx0XHRcdHRoaXMuc2V0U3RhdGUoe1xyXG5cdFx0XHRcdGlkZW50aWZpZXJzOiAnJyxcclxuXHRcdFx0XHRyb2xlOiB0aGlzLnByb3BzLmRlZmF1bHRSb2xlXHJcblx0XHRcdH0pXHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRoYW5kbGVTdWJtaXQgPSAoKSA9PiB7XHJcblx0XHRjb25zdCB7IGlkZW50aWZpZXJzLCByb2xlIH0gPSB0aGlzLnN0YXRlXHJcblx0XHRjb25zdCBpZGVudGlmaWVyc0FycmF5ID0gaWRlbnRpZmllcnNcclxuXHRcdFx0LnNwbGl0KC9cXHJcXG58XFxyfFxcbi9nKVxyXG5cdFx0XHQubWFwKGlkID0+IGlkLnRyaW0oKSlcclxuXHRcdFx0LmZpbHRlcihpZCA9PiBpZCAhPT0gJycpIC8vIGZpbHRlciBpZGVudGlmaWVycyB0aGF0IGFyZSBlbXB0eVxyXG5cdFx0Y29uc3QgZXJyb3JNZXNzYWdlID0gdGhpcy5nZXRWYWxpZGF0aW9uRXJyb3JNZXNzYWdlKGlkZW50aWZpZXJzQXJyYXkpXHJcblx0XHRpZiAoZXJyb3JNZXNzYWdlKSB7XHJcblx0XHRcdHRoaXMuc2V0U3RhdGUoe1xyXG5cdFx0XHRcdHNob3dFcnJvckFsZXJ0OiB0cnVlLFxyXG5cdFx0XHRcdGVycm9yTWVzc2FnZVxyXG5cdFx0XHR9KVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5wcm9wcy5hZGRVc2VyUm9sZXMoaWRlbnRpZmllcnNBcnJheSwgcm9sZSlcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGNsb3NlRXJyb3JBbGVydCA9ICgpID0+IHtcclxuXHRcdHRoaXMuc2V0U3RhdGUoe1xyXG5cdFx0XHRzaG93RXJyb3JBbGVydDogZmFsc2UsXHJcblx0XHRcdGVycm9yTWVzc2FnZTogdW5kZWZpbmVkXHJcblx0XHR9KVxyXG5cdH1cclxuXHJcblx0dXBkYXRlSWRlbnRpZmllcnMgPSAoZTogYW55KSA9PiB7XHJcblx0XHR0aGlzLnNldFN0YXRlKHtcclxuXHRcdFx0aWRlbnRpZmllcnM6IGUudGFyZ2V0LnZhbHVlIGFzIHN0cmluZ1xyXG5cdFx0fSlcclxuXHR9XHJcblxyXG5cdGdldFZhbGlkYXRpb25FcnJvck1lc3NhZ2UgPSAoaWRlbnRpZmllcnM/OiBzdHJpbmdbXSkgPT4ge1xyXG5cdFx0aWYgKCFpZGVudGlmaWVycyB8fCBpZGVudGlmaWVycy5sZW5ndGggPT09IDApIHtcclxuXHRcdFx0cmV0dXJuIGBQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lICR7Z2V0RG9tYWluSWRlbnRpZmllclR5cGVTdHJpbmcoKX0uYFxyXG5cdFx0fVxyXG5cclxuXHRcdGxldCBpbnZhbGlkSWRlbnRpZmllcnNcclxuXHRcdGlmIChpc1B1cmR1ZVNoYXJkKCkgJiYgIWlkZW50aWZpZXJzLmV2ZXJ5KGlkID0+IGlzUHVyZHVlQWxpYXNPclB1aWQoaWQpKSkge1xyXG5cdFx0XHRpbnZhbGlkSWRlbnRpZmllcnMgPSBpZGVudGlmaWVycy5maWx0ZXIoaWQgPT4gIWlzUHVyZHVlQWxpYXNPclB1aWQoaWQpKVxyXG5cdFx0fVxyXG5cdFx0aWYgKCFpc1B1cmR1ZVNoYXJkKCkgJiYgIWlkZW50aWZpZXJzLmV2ZXJ5KGlkID0+IGlzRW1haWwoaWQpKSkge1xyXG5cdFx0XHRpbnZhbGlkSWRlbnRpZmllcnMgPSBpZGVudGlmaWVycy5maWx0ZXIoaWQgPT4gIWlzRW1haWwoaWQpKVxyXG5cdFx0fVxyXG5cdFx0aWYgKGludmFsaWRJZGVudGlmaWVycykge1xyXG5cdFx0XHRyZXR1cm4gYFBsZWFzZSBlbnRlciB2YWxpZCAke2dldERvbWFpbklkZW50aWZpZXJUeXBlUGx1cmFsU3RyaW5nKCl9LiBUaGUgZm9sbG93aW5nIGFyZSBpbnZhbGlkOlxcclxcbiR7aW52YWxpZElkZW50aWZpZXJzLmpvaW4oXHJcblx0XHRcdFx0J1xcclxcbidcclxuXHRcdFx0KX1gXHJcblx0XHR9XHJcblx0XHRyZXR1cm4gdW5kZWZpbmVkXHJcblx0fVxyXG5cclxuXHRyZW5kZXIoKSB7XHJcblx0XHRjb25zdCB7IGlkZW50aWZpZXJzLCByb2xlLCBzaG93RXJyb3JBbGVydCwgZXJyb3JNZXNzYWdlIH0gPSB0aGlzLnN0YXRlXHJcblx0XHRjb25zdCB7IGVudGl0eU5hbWUsIGlzQWRkaW5nVXNlcnNUb1JvbGUsIHJvbGVEZXNjcmlwdGlvbnMsIHJlbmRlckFkZERlc2NyaXB0aW9uLCBkaXNhYmxlZCwgdGV4dEZvclJvbGUgfSA9XHJcblx0XHRcdHRoaXMucHJvcHNcclxuXHRcdGNvbnN0IHJvbGVzID0gXy5rZXlzKHJvbGVEZXNjcmlwdGlvbnMpXHJcblx0XHRjb25zdCByb2xlUG9wb3ZlciA9IChcclxuXHRcdFx0PFBvcG92ZXIgaWQ9XCJyb2xlXCI+XHJcblx0XHRcdFx0PGgzPlJvbGU8L2gzPlxyXG5cdFx0XHRcdHtyb2xlcy5tYXAociA9PiAoXHJcblx0XHRcdFx0XHQ8RnJhZ21lbnQga2V5PXtyfT57cm9sZURlc2NyaXB0aW9uc1tyXX08L0ZyYWdtZW50PlxyXG5cdFx0XHRcdCkpfVxyXG5cdFx0XHQ8L1BvcG92ZXI+XHJcblx0XHQpXHJcblxyXG5cdFx0Y29uc3QgYXBwQ29uZmlnID0gZ2V0QXBwQ29uZmlnKClcclxuXHRcdGNvbnN0IGFwcE5hbWUgPSBhcHBDb25maWcuQVBQX05BTUVcclxuXHRcdGNvbnN0IGdyYWRhYmxlRGVzY3JpcHRvciA9IGFwcENvbmZpZy5HUkFEQUJMRV9ERVNDUklQVE9SXHJcblxyXG5cdFx0cmV0dXJuIChcclxuXHRcdFx0PFJvdz5cclxuXHRcdFx0XHR7ISFyZW5kZXJBZGREZXNjcmlwdGlvbiAmJiA8Q29sIHhzPXsxMn0+e3JlbmRlckFkZERlc2NyaXB0aW9uKGVudGl0eU5hbWUpfTwvQ29sPn1cclxuXHRcdFx0XHQ8Q29sIHhzPXsxMn0gc209ezZ9PlxyXG5cdFx0XHRcdFx0PEZvcm1Hcm91cCBjb250cm9sSWQ9XCJVc2VyRW50cnlcIj5cclxuXHRcdFx0XHRcdFx0PEZvcm1MYWJlbCBjbGFzc05hbWU9XCJmNlwiPlxyXG5cdFx0XHRcdFx0XHRcdHtnZXREb21haW5JZGVudGlmaWVyVHlwZVBsdXJhbFN0cmluZygpfSAoc2VwYXJhdGVkIGJ5IGEgbmV3IGxpbmUpXHJcblx0XHRcdFx0XHRcdDwvRm9ybUxhYmVsPlxyXG5cdFx0XHRcdFx0XHQ8Rm9ybUNvbnRyb2xcclxuXHRcdFx0XHRcdFx0XHR0eXBlPVwidGV4dFwiXHJcblx0XHRcdFx0XHRcdFx0YXM9XCJ0ZXh0YXJlYVwiXHJcblx0XHRcdFx0XHRcdFx0bmFtZT1cImFjY291bnRcIlxyXG5cdFx0XHRcdFx0XHRcdGFyaWEtbGFiZWw9XCJUaGUgYWNjb3VudCBuYW1lcyB0byBhZGRcIlxyXG5cdFx0XHRcdFx0XHRcdG9uQ2hhbmdlPXt0aGlzLnVwZGF0ZUlkZW50aWZpZXJzfVxyXG5cdFx0XHRcdFx0XHRcdHZhbHVlPXtpZGVudGlmaWVyc31cclxuXHRcdFx0XHRcdFx0XHRwbGFjZWhvbGRlcj17Z2V0RG9tYWluSWRlbnRpZmllclR5cGVTdHJpbmcoKX1cclxuXHRcdFx0XHRcdFx0XHRkaXNhYmxlZD17ZGlzYWJsZWR9XHJcblx0XHRcdFx0XHRcdC8+XHJcblx0XHRcdFx0XHQ8L0Zvcm1Hcm91cD5cclxuXHRcdFx0XHQ8L0NvbD5cclxuXHRcdFx0XHQ8Q29sIHhzPXsxMn0gc209ezR9PlxyXG5cdFx0XHRcdFx0PFJvbGVTZWxlY3RcclxuXHRcdFx0XHRcdFx0b3B0aW9ucz17cm9sZXN9XHJcblx0XHRcdFx0XHRcdHZhbHVlPXtyb2xlfVxyXG5cdFx0XHRcdFx0XHRvbkNoYW5nZT17dGhpcy51cGRhdGVSb2xlfVxyXG5cdFx0XHRcdFx0XHRsYWJlbFZpc2libGVcclxuXHRcdFx0XHRcdFx0cG9wb3ZlckNvbnRlbnRDb21wb25lbnQ9e3JvbGVQb3BvdmVyfVxyXG5cdFx0XHRcdFx0XHR0ZXh0Rm9yUm9sZT17dGV4dEZvclJvbGV9XHJcblx0XHRcdFx0XHQvPlxyXG5cdFx0XHRcdDwvQ29sPlxyXG5cdFx0XHRcdDxDb2wgeHM9ezEyfSBzbT17Mn0gY2xhc3NOYW1lPVwibXQzLW5zIHB0Mi1uc1wiPlxyXG5cdFx0XHRcdFx0e2lzQWRkaW5nVXNlcnNUb1JvbGUgJiYgPFJlZnJlc2hJbmRpY2F0b3JJbmxpbmUgY2xhc3NOYW1lPVwibXIzXCIgLz59XHJcblx0XHRcdFx0XHR7IWlzQWRkaW5nVXNlcnNUb1JvbGUgJiYgKFxyXG5cdFx0XHRcdFx0XHQ8QnV0dG9uXHJcblx0XHRcdFx0XHRcdFx0aWQ9XCJ1c2VyUm9sZXNBZGRCdXR0b25cIlxyXG5cdFx0XHRcdFx0XHRcdGNvbG9yPVwicHJpbWFyeVwiXHJcblx0XHRcdFx0XHRcdFx0Y2xhc3NOYW1lPVwiYnRuLXByaW1hcnkgdy0xMDAtbHQteHNcIlxyXG5cdFx0XHRcdFx0XHRcdGRpc2FibGVkPXshaWRlbnRpZmllcnMgfHwgZGlzYWJsZWR9XHJcblx0XHRcdFx0XHRcdFx0b25DbGljaz17dGhpcy5oYW5kbGVTdWJtaXR9PlxyXG5cdFx0XHRcdFx0XHRcdDxBZGRDaXJjbGUgY2xhc3NOYW1lPVwidi1taWRcIiAvPlxyXG5cdFx0XHRcdFx0XHRcdEFkZFxyXG5cdFx0XHRcdFx0XHQ8L0J1dHRvbj5cclxuXHRcdFx0XHRcdCl9XHJcblx0XHRcdFx0XHQ8QWxlcnREaWFsb2dcclxuXHRcdFx0XHRcdFx0aXNPcGVuPXtzaG93RXJyb3JBbGVydH1cclxuXHRcdFx0XHRcdFx0dGl0bGU9e2BFcnJvciBBZGRpbmcgUGVvcGxlIHRvIHRoZSAke2VudGl0eU5hbWV9YH1cclxuXHRcdFx0XHRcdFx0ZGVzY3JpcHRpb249ezxkaXYgY2xhc3NOYW1lPVwicHJlLXdyYXBcIj57ZXJyb3JNZXNzYWdlfTwvZGl2Pn1cclxuXHRcdFx0XHRcdFx0cHJvY2VlZFRleHQ9XCJHb3QgaXQuIFRoYW5rcyFcIlxyXG5cdFx0XHRcdFx0XHRvblByb2NlZWQ9e3RoaXMuY2xvc2VFcnJvckFsZXJ0fVxyXG5cdFx0XHRcdFx0XHRvbkNhbmNlbD17dGhpcy5jbG9zZUVycm9yQWxlcnR9XHJcblx0XHRcdFx0XHQvPlxyXG5cdFx0XHRcdDwvQ29sPlxyXG5cdFx0XHRcdHtfLmluY2x1ZGVzKEZFUlBBX1JPTEVTLCByb2xlKSAmJiAoXHJcblx0XHRcdFx0XHQ8Q29sIHhzPXsxMn0+XHJcblx0XHRcdFx0XHRcdDxBbGVydFdpdGhJY29uIGlkPVwiZmVycGFXYXJuaW5nXCIgdmFyaWFudD1cIndhcm5pbmdcIj5cclxuXHRcdFx0XHRcdFx0XHQ8cD5cclxuXHRcdFx0XHRcdFx0XHRcdFRoaXMgcm9sZSBpbmNsdWRlcyB7Z3JhZGFibGVEZXNjcmlwdG9yfSBzY29yZXMgaW4ge2FwcE5hbWV9LiBQbGVhc2UgY29uc2lkZXIgd2hldGhlcnsnICd9XHJcblx0XHRcdFx0XHRcdFx0XHQ8YVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRocmVmPVwiaHR0cHM6Ly93d3cucHVyZHVlLmVkdS9yZWdpc3RyYXIvRkVSUEEvaW5kZXguaHRtbFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdHRhcmdldD1cIl9ibGFua1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0RkVSUEFcclxuXHRcdFx0XHRcdFx0XHRcdDwvYT57JyAnfVxyXG5cdFx0XHRcdFx0XHRcdFx0Y2VydGlmaWNhdGlvbiBpcyBuZWVkZWQuXHJcblx0XHRcdFx0XHRcdFx0PC9wPlxyXG5cdFx0XHRcdFx0XHQ8L0FsZXJ0V2l0aEljb24+XHJcblx0XHRcdFx0XHQ8L0NvbD5cclxuXHRcdFx0XHQpfVxyXG5cdFx0XHQ8L1Jvdz5cclxuXHRcdClcclxuXHR9XHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFVBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFLLGVBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFlBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLE9BQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLE9BQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLFNBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLGNBQUEsR0FBQVYsT0FBQTtBQUVBLElBQUFXLGlCQUFBLEdBQUFYLE9BQUE7QUFDQSxJQUFBWSxNQUFBLEdBQUFaLE9BQUE7QUFDQSxJQUFBYSxPQUFBLEdBQUFiLE9BQUE7QUFDQSxJQUFBYyxjQUFBLEdBQUFkLE9BQUE7QUFBZ0QsSUFBQWUsV0FBQSxHQUFBZixPQUFBO0FBQUEsU0FBQUksd0JBQUFZLENBQUEsRUFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFkLHVCQUFBLFlBQUFBLENBQUFZLENBQUEsRUFBQUMsQ0FBQSxTQUFBQSxDQUFBLElBQUFELENBQUEsSUFBQUEsQ0FBQSxDQUFBSyxVQUFBLFNBQUFMLENBQUEsTUFBQU0sQ0FBQSxF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
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
3
7
  exports.UserRolesContext = void 0;
4
- const tslib_1 = require("tslib");
5
- const react_1 = tslib_1.__importDefault(require("react"));
6
- /*
7
- * Context provided to the children of UserRoles. Default values should be initialized
8
- * by the context provider.
8
+ var _react = _interopRequireDefault(require("react"));
9
+ /*
10
+ * Context provided to the children of UserRoles. Default values should be initialized
11
+ * by the context provider.
9
12
  */
10
13
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
11
- exports.UserRolesContext = react_1.default.createContext(undefined);
14
+ const UserRolesContext = exports.UserRolesContext = /*#__PURE__*/_react.default.createContext(undefined);
15
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIlVzZXJSb2xlc0NvbnRleHQiLCJleHBvcnRzIiwiUmVhY3QiLCJjcmVhdGVDb250ZXh0IiwidW5kZWZpbmVkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvVXNlclJvbGVzL0NvbnRleHQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcclxuaW1wb3J0IHsgVXNlclJvbGUgfSBmcm9tICcuLi8uLi90eXBlcydcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVXNlclJvbGVzQ29udGV4dFR5cGUge1xyXG5cdC8qKiBkaXNhYmxlIGFsbCB1c2VyIHJvbGUgc2VsZWN0IGRyb3Bkb3ducywgaWYgYW55ICovXHJcblx0aXNVcGRhdGVEaXNhYmxlZD86IGJvb2xlYW5cclxuXHQvKiogZGlzYWJsZSBhbGwgdXNlciByb2xlIGRlbGV0ZSBidXR0b25zICovXHJcblx0aXNEZWxldGVEaXNhYmxlZD86IGJvb2xlYW5cclxuXHQvKiogSXMgdGhlIGN1cnJlbnQgdXNlciBhbGxvd2VkIHRvIGFkZCwgdXBkYXRlLCBhbmQgZGVsZXRlIHVzZXIgcm9sZXM/ICovXHJcblx0Y2FuTW9kaWZ5PzogYm9vbGVhblxyXG5cdC8qKiBJcyB0aGUgY3VycmVudCB1c2VyIGFsbG93ZWQgdG8gZGVsZXRlIHRoZWlyIG93biB1c2VyIHJvbGU/ICovXHJcblx0Y2FuRGVsZXRlU2VsZj86IGJvb2xlYW5cclxuXHQvKiogSWYgbXVsdGlwbGUgcm9sZXMgYWxsb3dlZCwgZWFjaCByb2xlIGlzIGRpc3BsYXllZCBwZXIgdXNlciwgb3RoZXJ3aXNlIGEgc2VsZWN0IGRyb3Bkb3duIGlzIGRpc3BsYXllZC4gKi9cclxuXHRhbGxvd011bHRpcGxlUm9sZXM/OiBib29sZWFuXHJcblx0cm9sZXM6IHN0cmluZ1tdXHJcblx0LyoqIChPcHRpb25hbCkgSWYgcHJvdmlkZWQsIHRoZSBsYXN0IHVzZXIgcm9sZSB3aXRoIHRoZSByZXF1aXJlZCByb2xlIHdpbGwgYmUgcHJldmVudGVkIGZyb20gYmVpbmcgcmVtb3ZlZC4gKi9cclxuXHRyZXF1aXJlZFJvbGU/OiBzdHJpbmdcclxuXHQvKiogKE9wdGlvbmFsKSBQcm92aWRlIGN1c3RvbSB1c2VyLWZyaWVuZGx5IG5hbWVzIGZvciBkaXNwbGF5ZWQgcm9sZXMgKi9cclxuXHR0ZXh0Rm9yUm9sZT86IChyb2xlOiBzdHJpbmcpID0+IHN0cmluZ1xyXG5cdC8qKiBUaGUgdXNlciByb2xlIGJlaW5nIHVwZGF0ZWQgKi9cclxuXHR1c2VyUm9sZVRvVXBkYXRlPzogVXNlclJvbGVcclxuXHQvKiogSWYgYSB1c2VyIHJvbGUgaXMgYmVpbmcgdXBkYXRlZCAqL1xyXG5cdGlzVXBkYXRpbmc6IGJvb2xlYW5cclxuXHQvKiogTWV0aG9kIHRvIHVwZGF0ZSBhIHVzZXIgcm9sZSAqL1xyXG5cdHVwZGF0ZVVzZXJSb2xlOiAodXNlclJvbGVUb1VwZGF0ZTogVXNlclJvbGUsIG5ld1JvbGU6IHN0cmluZykgPT4gdm9pZFxyXG5cdC8qKiBUaGUgdXNlciByb2xlIGJlaW5nIHJlbW92ZWQgKi9cclxuXHR1c2VyUm9sZVRvUmVtb3ZlPzogVXNlclJvbGVcclxuXHQvKiogSWYgYSB1c2VyIHJvbGUgaXMgYmVpbmcgcmVtb3ZlZCAqL1xyXG5cdGlzUmVtb3Zpbmc6IGJvb2xlYW5cclxuXHQvKiogTWV0aG9kIHRvIHJlbW92ZSBhIHVzZXIgcm9sZSAqL1xyXG5cdHJlbW92ZVVzZXJSb2xlOiAodXNlclJvbGVUb1JlbW92ZTogVXNlclJvbGUpID0+IHZvaWRcclxufVxyXG5cclxuLypcclxuICogQ29udGV4dCBwcm92aWRlZCB0byB0aGUgY2hpbGRyZW4gb2YgVXNlclJvbGVzLiAgRGVmYXVsdCB2YWx1ZXMgc2hvdWxkIGJlIGluaXRpYWxpemVkXHJcbiAqIGJ5IHRoZSBjb250ZXh0IHByb3ZpZGVyLlxyXG4gKi9cclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cclxuZXhwb3J0IGNvbnN0IFVzZXJSb2xlc0NvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0PFVzZXJSb2xlc0NvbnRleHRUeXBlPih1bmRlZmluZWQhKVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFpQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLE1BQU1DLGdCQUFnQixHQUFBQyxPQUFBLENBQUFELGdCQUFBLGdCQUFHRSxjQUFLLENBQUNDLGFBQWEsQ0FBdUJDLFNBQVUsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==