studiokit-scaffolding-js 7.0.12-next.2.9 → 7.0.13-alpha.1

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 (390) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +137 -137
  3. package/lib/components/ActionList.d.ts +2 -2
  4. package/lib/components/ActionList.js +87 -166
  5. package/lib/components/AlertDialog.d.ts +3 -3
  6. package/lib/components/AlertDialog.js +18 -133
  7. package/lib/components/AlertWithIcon.js +52 -93
  8. package/lib/components/ConnectedModal.d.ts +2 -1
  9. package/lib/components/ConnectedModal.js +37 -43
  10. package/lib/components/Dropdowns/GroupsDropdown.d.ts +4 -4
  11. package/lib/components/Dropdowns/GroupsDropdown.js +82 -69
  12. package/lib/components/Dropdowns/ManagedNavDropdown.d.ts +2 -2
  13. package/lib/components/Dropdowns/ManagedNavDropdown.js +111 -99
  14. package/lib/components/Dropdowns/UserDropdown.js +70 -109
  15. package/lib/components/Dropdowns/index.js +11 -27
  16. package/lib/components/EntityOwnerList.d.ts +3 -3
  17. package/lib/components/EntityOwnerList.js +60 -52
  18. package/lib/components/Error.js +27 -107
  19. package/lib/components/ErrorBoundary.js +94 -133
  20. package/lib/components/ErrorMessage.d.ts +2 -2
  21. package/lib/components/ErrorMessage.js +14 -44
  22. package/lib/components/Forms/DateField.d.ts +2 -2
  23. package/lib/components/Forms/DateField.js +95 -63
  24. package/lib/components/Forms/TimeField.d.ts +2 -2
  25. package/lib/components/Forms/TimeField.js +108 -84
  26. package/lib/components/Forms/index.js +13 -27
  27. package/lib/components/Groups/CreateEditCopySaveButtons.d.ts +2 -2
  28. package/lib/components/Groups/CreateEditCopySaveButtons.js +14 -102
  29. package/lib/components/Groups/ExternalGroups/Attach.d.ts +7 -6
  30. package/lib/components/Groups/ExternalGroups/Attach.js +188 -213
  31. package/lib/components/Groups/ExternalGroups/Table.js +76 -183
  32. package/lib/components/Groups/GroupCreateOrEditCommonProps.js +1 -5
  33. package/lib/components/Groups/RosterSyncInfo.js +49 -140
  34. package/lib/components/HOC/AccessibleAppComponent.d.ts +2 -2
  35. package/lib/components/HOC/AccessibleAppComponent.js +124 -101
  36. package/lib/components/HOC/ActivityRequiredComponent.d.ts +14 -14
  37. package/lib/components/HOC/ActivityRequiredComponent.js +107 -93
  38. package/lib/components/HOC/AsyncComponent.d.ts +9 -9
  39. package/lib/components/HOC/AsyncComponent.js +129 -53
  40. package/lib/components/HOC/AuthenticatedComponent.d.ts +4 -4
  41. package/lib/components/HOC/AuthenticatedComponent.js +96 -59
  42. package/lib/components/HOC/CollectionComponent.d.ts +12 -12
  43. package/lib/components/HOC/CollectionComponent.js +171 -171
  44. package/lib/components/HOC/CollectionFirstItemComponent.d.ts +13 -13
  45. package/lib/components/HOC/CollectionFirstItemComponent.js +94 -52
  46. package/lib/components/HOC/CollectionItemComponent.d.ts +9 -9
  47. package/lib/components/HOC/CollectionItemComponent.js +168 -169
  48. package/lib/components/HOC/ConnectedModalComponent.d.ts +9 -9
  49. package/lib/components/HOC/ConnectedModalComponent.js +140 -110
  50. package/lib/components/HOC/DataDependentComponent.d.ts +55 -3
  51. package/lib/components/HOC/DataDependentComponent.js +79 -30
  52. package/lib/components/HOC/EntityComponent.d.ts +13 -13
  53. package/lib/components/HOC/EntityComponent.js +112 -74
  54. package/lib/components/HOC/FullscreenModalComponent.d.ts +9 -9
  55. package/lib/components/HOC/FullscreenModalComponent.js +185 -165
  56. package/lib/components/HOC/GroupActivityRequiredComponent.d.ts +2 -2
  57. package/lib/components/HOC/GroupActivityRequiredComponent.js +47 -48
  58. package/lib/components/HOC/GuidComponent.d.ts +1 -1
  59. package/lib/components/HOC/GuidComponent.js +68 -29
  60. package/lib/components/HOC/ModelContextDependencyVerifyComponent.d.ts +29 -28
  61. package/lib/components/HOC/ModelContextDependencyVerifyComponent.js +65 -42
  62. package/lib/components/HOC/ModelErrorRedirectComponent.d.ts +10 -10
  63. package/lib/components/HOC/ModelErrorRedirectComponent.js +94 -51
  64. package/lib/components/HOC/SearchPersistorComponent.d.ts +4 -4
  65. package/lib/components/HOC/SearchPersistorComponent.js +216 -243
  66. package/lib/components/HOC/UnauthenticatedComponent.d.ts +12 -12
  67. package/lib/components/HOC/UnauthenticatedComponent.js +82 -37
  68. package/lib/components/HOC/UserComponent.d.ts +1 -1
  69. package/lib/components/HOC/UserComponent.js +11 -12
  70. package/lib/components/Icons/IconAlphaList.js +20 -34
  71. package/lib/components/Icons/IconExternalUser.js +20 -34
  72. package/lib/components/Icons/IconImpersonation.js +20 -34
  73. package/lib/components/Icons/IconStopImpersonating.js +20 -34
  74. package/lib/components/Icons/IconTable.js +21 -35
  75. package/lib/components/Icons/IconTableDeleteCol.js +20 -34
  76. package/lib/components/Icons/IconTableDeleteRow.js +20 -34
  77. package/lib/components/Icons/IconTableInsertCol.js +20 -34
  78. package/lib/components/Icons/IconTableInsertRow.js +20 -34
  79. package/lib/components/Impersonation/Button.d.ts +2 -2
  80. package/lib/components/Impersonation/Button.js +56 -76
  81. package/lib/components/Impersonation/Link.d.ts +2 -2
  82. package/lib/components/Impersonation/Link.js +53 -76
  83. package/lib/components/Impersonation/UserDetail.css +22 -22
  84. package/lib/components/Impersonation/UserDetail.d.ts +2 -2
  85. package/lib/components/Impersonation/UserDetail.js +17 -66
  86. package/lib/components/Loading.js +21 -27
  87. package/lib/components/LockDownBrowser/Check.js +107 -194
  88. package/lib/components/LockDownBrowser/ExitButton.js +14 -27
  89. package/lib/components/LockDownBrowser/Launch.js +85 -70
  90. package/lib/components/Lti/Confirm.js +33 -152
  91. package/lib/components/Lti/CreateNonLtiGroupAlertDialog.d.ts +2 -4
  92. package/lib/components/Lti/CreateNonLtiGroupAlertDialog.js +78 -170
  93. package/lib/components/Lti/Launch.js +49 -105
  94. package/lib/components/Lti/LaunchGroup.js +39 -85
  95. package/lib/components/ManageTable.d.ts +2 -1
  96. package/lib/components/ManageTable.js +104 -309
  97. package/lib/components/ManageTableNoDataComponent.js +22 -42
  98. package/lib/components/NewVersionAlert.d.ts +2 -2
  99. package/lib/components/NewVersionAlert.js +91 -82
  100. package/lib/components/NotFound.js +28 -87
  101. package/lib/components/Notifications.d.ts +4 -4
  102. package/lib/components/Notifications.js +169 -187
  103. package/lib/components/PaginationNextButton.js +21 -33
  104. package/lib/components/PaginationPreviousButton.js +21 -33
  105. package/lib/components/Quill/CustomToolbar.d.ts +2 -2
  106. package/lib/components/Quill/CustomToolbar.js +257 -432
  107. package/lib/components/Quill/Formats/Image.d.ts +25 -10
  108. package/lib/components/Quill/Formats/Image.js +86 -80
  109. package/lib/components/Quill/Formats/List.d.ts +3 -6
  110. package/lib/components/Quill/Formats/List.js +74 -52
  111. package/lib/components/Quill/Formats/Video.d.ts +1 -2
  112. package/lib/components/Quill/Formats/Video.js +45 -31
  113. package/lib/components/Quill/ImageDropModule.d.ts +1 -1
  114. package/lib/components/Quill/ImageDropModule.js +122 -149
  115. package/lib/components/Quill/ImageWarning.d.ts +2 -2
  116. package/lib/components/Quill/ImageWarning.js +32 -45
  117. package/lib/components/Quill/ImageWithAltTextModal.d.ts +1 -0
  118. package/lib/components/Quill/ImageWithAltTextModal.js +141 -425
  119. package/lib/components/Quill/Specs/CustomImageSpec.d.ts +1 -1
  120. package/lib/components/Quill/Specs/CustomImageSpec.js +51 -43
  121. package/lib/components/Quill/Specs/CustomVideoSpec.d.ts +1 -1
  122. package/lib/components/Quill/Specs/CustomVideoSpec.js +44 -35
  123. package/lib/components/Quill/TableModule/Blots/BaseTableBlot.d.ts +1 -2
  124. package/lib/components/Quill/TableModule/Blots/BaseTableBlot.js +121 -105
  125. package/lib/components/Quill/TableModule/Blots/TableBlot.js +66 -53
  126. package/lib/components/Quill/TableModule/Blots/TableBodyBlot.js +67 -54
  127. package/lib/components/Quill/TableModule/Blots/TableCellBlot.d.ts +1 -1
  128. package/lib/components/Quill/TableModule/Blots/TableCellBlot.js +241 -225
  129. package/lib/components/Quill/TableModule/Blots/TableContainer.js +99 -82
  130. package/lib/components/Quill/TableModule/Blots/TableRowBlot.js +87 -76
  131. package/lib/components/Quill/TableModule/constants.js +41 -45
  132. package/lib/components/Quill/TableModule/index.css +171 -171
  133. package/lib/components/Quill/TableModule/index.d.ts +5 -14
  134. package/lib/components/Quill/TableModule/index.js +313 -373
  135. package/lib/components/Quill/TableModule/utils.js +45 -45
  136. package/lib/components/Quill/accessibilityFix.d.ts +1 -0
  137. package/lib/components/Quill/accessibilityFix.js +251 -235
  138. package/lib/components/Quill/index.js +32 -36
  139. package/lib/components/RefreshIndicator/Bordered.js +32 -48
  140. package/lib/components/RefreshIndicator/Inline.js +33 -48
  141. package/lib/components/RefreshIndicator/index.d.ts +2 -2
  142. package/lib/components/RefreshIndicator/index.js +113 -263
  143. package/lib/components/SearchControls.js +31 -216
  144. package/lib/components/SentryRoute.js +23 -10
  145. package/lib/components/Tables/RoleFilter.d.ts +4 -3
  146. package/lib/components/Tables/RoleFilter.js +46 -71
  147. package/lib/components/Tables/TextFilter.d.ts +3 -2
  148. package/lib/components/Tables/TextFilter.js +20 -62
  149. package/lib/components/UserRoles/Add.d.ts +3 -3
  150. package/lib/components/UserRoles/Add.js +161 -199
  151. package/lib/components/UserRoles/Context.js +9 -11
  152. package/lib/components/UserRoles/RoleCell.js +100 -180
  153. package/lib/components/UserRoles/Select.js +54 -157
  154. package/lib/components/UserRoles/Table.js +102 -221
  155. package/lib/components/UserRoles/index.d.ts +6 -6
  156. package/lib/components/UserRoles/index.js +466 -537
  157. package/lib/config/eslint/index.cjs +21 -0
  158. package/lib/config/eslint/lib/order.cjs +22 -0
  159. package/lib/config/eslint/lib/prettier.cjs +18 -0
  160. package/lib/config/eslint/lib/typescript.cjs +86 -0
  161. package/lib/config/eslint/react.cjs +9 -0
  162. package/lib/constants/baseActivity.js +26 -30
  163. package/lib/constants/baseRole.js +10 -14
  164. package/lib/constants/configuration.d.ts +1 -1
  165. package/lib/constants/configuration.js +39 -43
  166. package/lib/constants/externalProviderType.js +6 -10
  167. package/lib/constants/fetchErrorData.js +11 -15
  168. package/lib/constants/index.js +23 -137
  169. package/lib/constants/lockDownBrowser.js +24 -28
  170. package/lib/constants/mockData.d.ts +6 -4
  171. package/lib/constants/mockData.js +326 -385
  172. package/lib/constants/modelStatus.js +11 -15
  173. package/lib/constants/notificationType.js +8 -12
  174. package/lib/constants/operatingSystem.js +8 -12
  175. package/lib/constants/shard.js +7 -11
  176. package/lib/constants/table.js +21 -21
  177. package/lib/constants/tier.js +8 -12
  178. package/lib/constants/userRole.d.ts +2 -1
  179. package/lib/constants/userRole.js +17 -15
  180. package/lib/css/base/_base.css +98 -98
  181. package/lib/css/base/_typography.css +130 -130
  182. package/lib/css/components/_alert.css +86 -86
  183. package/lib/css/components/_bootstrap-grid.css +28 -28
  184. package/lib/css/components/_buttons.css +397 -397
  185. package/lib/css/components/_forms.css +101 -101
  186. package/lib/css/components/_menu.css +56 -56
  187. package/lib/css/components/_modals.css +46 -46
  188. package/lib/css/components/_quill.css +315 -315
  189. package/lib/css/components/_tables.css +497 -497
  190. package/lib/css/components/_tags.css +12 -12
  191. package/lib/css/index-with-variables.css +15 -15
  192. package/lib/css/index.css +14 -14
  193. package/lib/css/utils/_border.css +463 -463
  194. package/lib/css/utils/_color.css +317 -317
  195. package/lib/css/utils/_display.css +312 -305
  196. package/lib/css/utils/_general.css +48 -48
  197. package/lib/css/utils/_icon.css +16 -16
  198. package/lib/css/utils/_text.css +24 -25
  199. package/lib/css/utils/_width.css +60 -60
  200. package/lib/css/variables.css +84 -84
  201. package/lib/endpointMappings.js +193 -197
  202. package/lib/hooks/useCollection.js +65 -83
  203. package/lib/hooks/useCollectionConfiguration.d.ts +1 -0
  204. package/lib/hooks/useCollectionConfiguration.js +88 -185
  205. package/lib/hooks/useCollectionItem.js +58 -155
  206. package/lib/hooks/useGuid.js +10 -21
  207. package/lib/hooks/usePrevious.d.ts +1 -24
  208. package/lib/hooks/usePrevious.js +14 -84
  209. package/lib/index.js +36 -156
  210. package/lib/redux/actionCreator.d.ts +6 -6
  211. package/lib/redux/actionCreator.js +40 -51
  212. package/lib/redux/actions/AuthAction.js +31 -44
  213. package/lib/redux/actions/ModalAction.d.ts +1 -1
  214. package/lib/redux/actions/ModalAction.js +6 -10
  215. package/lib/redux/actions/ModelAction.d.ts +1 -1
  216. package/lib/redux/actions/ModelAction.js +49 -77
  217. package/lib/redux/actions/NotificationAction.js +6 -10
  218. package/lib/redux/actions/SearchAction.js +5 -9
  219. package/lib/redux/actions/index.js +16 -60
  220. package/lib/redux/configureReducers.d.ts +5 -2
  221. package/lib/redux/configureReducers.js +78 -67
  222. package/lib/redux/configureStore.d.ts +2 -2
  223. package/lib/redux/configureStore.js +115 -83
  224. package/lib/redux/helpers.js +2 -7
  225. package/lib/redux/reducers/authReducer.js +46 -52
  226. package/lib/redux/reducers/index.js +15 -41
  227. package/lib/redux/reducers/modalsReducer.js +52 -49
  228. package/lib/redux/reducers/modelsReducer.d.ts +2 -2
  229. package/lib/redux/reducers/modelsReducer.js +182 -183
  230. package/lib/redux/reducers/notificationsReducer.js +21 -26
  231. package/lib/redux/reducers/searchReducer.js +20 -26
  232. package/lib/redux/sagas/appInsightsSaga.js +62 -24
  233. package/lib/redux/sagas/authSaga.js +414 -287
  234. package/lib/redux/sagas/caliperSaga.js +263 -169
  235. package/lib/redux/sagas/clockOffsetSaga.js +77 -36
  236. package/lib/redux/sagas/configurationSaga.js +46 -13
  237. package/lib/redux/sagas/downtimeApiErrorSaga.d.ts +1 -0
  238. package/lib/redux/sagas/downtimeApiErrorSaga.js +64 -23
  239. package/lib/redux/sagas/errorSaga.d.ts +1 -0
  240. package/lib/redux/sagas/errorSaga.js +63 -29
  241. package/lib/redux/sagas/googleAnalyticsSaga.js +69 -29
  242. package/lib/redux/sagas/identityProviderSaga.js +69 -24
  243. package/lib/redux/sagas/initialDataLoadSaga.js +29 -38
  244. package/lib/redux/sagas/lockDownBrowserErrorSaga.d.ts +1 -0
  245. package/lib/redux/sagas/lockDownBrowserErrorSaga.js +81 -32
  246. package/lib/redux/sagas/modelFetchSaga.js +459 -379
  247. package/lib/redux/sagas/noStoreSaga.d.ts +1 -1
  248. package/lib/redux/sagas/noStoreSaga.js +101 -68
  249. package/lib/redux/sagas/postLoginDataSaga.js +79 -47
  250. package/lib/redux/sagas/postLoginRedirectSaga.js +71 -30
  251. package/lib/redux/sagas/rootSaga.js +137 -85
  252. package/lib/redux/sagas/sentrySaga.js +85 -29
  253. package/lib/redux/sagas/userIdSaga.js +54 -18
  254. package/lib/services/codeProviderService.js +29 -25
  255. package/lib/services/dateService.js +12 -14
  256. package/lib/services/documentService.js +13 -18
  257. package/lib/services/fetchService.js +168 -134
  258. package/lib/services/persistenceService.d.ts +4 -4
  259. package/lib/services/persistenceService.js +43 -45
  260. package/lib/services/ticketProviderService.js +33 -29
  261. package/lib/services/tokenPersistenceService.js +9 -13
  262. package/lib/services/windowService.js +17 -21
  263. package/lib/startup.d.ts +1 -1
  264. package/lib/startup.js +135 -132
  265. package/lib/types/AppConfiguration.js +1 -5
  266. package/lib/types/Artifact.js +7 -11
  267. package/lib/types/BaseReduxState.js +1 -5
  268. package/lib/types/Client.js +1 -5
  269. package/lib/types/Collection.d.ts +3 -3
  270. package/lib/types/Collection.js +1 -5
  271. package/lib/types/Configuration.js +1 -5
  272. package/lib/types/DeepLinkingResponseRequest.js +1 -5
  273. package/lib/types/DeletableModel.js +1 -5
  274. package/lib/types/Event.js +1 -5
  275. package/lib/types/ExternalGroup.js +1 -5
  276. package/lib/types/ExternalProvider.js +1 -5
  277. package/lib/types/ExternalTerm.js +1 -5
  278. package/lib/types/Group.js +1 -5
  279. package/lib/types/IdentityProvider.js +1 -5
  280. package/lib/types/LtiLaunch.js +1 -5
  281. package/lib/types/NameOnlyEntity.js +1 -5
  282. package/lib/types/Notification.d.ts +2 -2
  283. package/lib/types/Notification.js +1 -5
  284. package/lib/types/OptionalRecord.d.ts +1 -1
  285. package/lib/types/OptionalRecord.js +1 -5
  286. package/lib/types/OwnerSchedule.d.ts +1 -3
  287. package/lib/types/OwnerSchedule.js +1 -5
  288. package/lib/types/PropertyOfType.d.ts +3 -3
  289. package/lib/types/PropertyOfType.js +1 -5
  290. package/lib/types/Quill.js +1 -5
  291. package/lib/types/RoleDescription.d.ts +1 -0
  292. package/lib/types/RoleDescription.js +1 -5
  293. package/lib/types/Search.js +1 -5
  294. package/lib/types/SimpleLocation.js +1 -5
  295. package/lib/types/UniTime.js +1 -5
  296. package/lib/types/User.js +1 -5
  297. package/lib/types/UserRole.js +1 -5
  298. package/lib/types/auth/AuthState.js +1 -5
  299. package/lib/types/auth/CasV1LoginRequestBody.js +1 -5
  300. package/lib/types/auth/ClientCredentials.js +1 -5
  301. package/lib/types/auth/CodeProviderService.js +1 -5
  302. package/lib/types/auth/LocalLoginRequestBody.js +1 -5
  303. package/lib/types/auth/TicketProviderService.js +1 -5
  304. package/lib/types/auth/TokenPersistenceService.js +1 -5
  305. package/lib/types/auth/index.js +18 -82
  306. package/lib/types/index.js +39 -313
  307. package/lib/types/net/EndpointConfig.js +1 -5
  308. package/lib/types/net/EndpointMapping.js +1 -5
  309. package/lib/types/net/EndpointMappings.js +1 -5
  310. package/lib/types/net/ErrorHandler.d.ts +1 -1
  311. package/lib/types/net/ErrorHandler.js +1 -5
  312. package/lib/types/net/FetchConfig.d.ts +1 -1
  313. package/lib/types/net/FetchConfig.js +1 -5
  314. package/lib/types/net/FetchErrorData.js +6 -10
  315. package/lib/types/net/FetchResult.d.ts +2 -2
  316. package/lib/types/net/FetchResult.js +1 -5
  317. package/lib/types/net/HTTPMethod.d.ts +1 -1
  318. package/lib/types/net/HTTPMethod.js +1 -5
  319. package/lib/types/net/HTTPStatusCode.js +12 -16
  320. package/lib/types/net/Metadata.js +1 -5
  321. package/lib/types/net/Model.js +1 -5
  322. package/lib/types/net/ModelCollection.js +1 -5
  323. package/lib/types/net/ModelsState.js +1 -5
  324. package/lib/types/net/OAuthToken.js +1 -5
  325. package/lib/types/net/OAuthTokenOrNull.d.ts +1 -1
  326. package/lib/types/net/OAuthTokenOrNull.js +1 -5
  327. package/lib/types/net/TokenAccessFunction.d.ts +1 -1
  328. package/lib/types/net/TokenAccessFunction.js +1 -5
  329. package/lib/types/net/index.js +27 -181
  330. package/lib/utils/baseActivity.d.ts +2 -2
  331. package/lib/utils/baseActivity.js +136 -138
  332. package/lib/utils/baseRole.js +33 -37
  333. package/lib/utils/collection.js +310 -432
  334. package/lib/utils/cookies.js +37 -22
  335. package/lib/utils/date.js +320 -320
  336. package/lib/utils/dom.js +174 -186
  337. package/lib/utils/domainIdentifier.js +9 -9
  338. package/lib/utils/entityUserRole.js +2 -6
  339. package/lib/utils/error.d.ts +1 -1
  340. package/lib/utils/error.js +16 -18
  341. package/lib/utils/events.js +33 -40
  342. package/lib/utils/externalGroup.js +21 -25
  343. package/lib/utils/externalProviders.js +4 -8
  344. package/lib/utils/externalTerms.js +6 -9
  345. package/lib/utils/fetch.d.ts +1 -1
  346. package/lib/utils/fetch.js +185 -188
  347. package/lib/utils/group.js +9 -17
  348. package/lib/utils/groupDates.d.ts +1 -1
  349. package/lib/utils/groupDates.js +39 -43
  350. package/lib/utils/groupRoles.js +28 -28
  351. package/lib/utils/lockDownBrowser.js +12 -16
  352. package/lib/utils/logger.js +25 -30
  353. package/lib/utils/lti.js +5 -10
  354. package/lib/utils/model.d.ts +2 -2
  355. package/lib/utils/model.js +48 -39
  356. package/lib/utils/number.js +26 -23
  357. package/lib/utils/promise.d.ts +1 -6
  358. package/lib/utils/promise.js +15 -34
  359. package/lib/utils/quill.js +77 -66
  360. package/lib/utils/route.d.ts +2 -2
  361. package/lib/utils/route.js +60 -61
  362. package/lib/utils/search.d.ts +1 -1
  363. package/lib/utils/search.js +85 -78
  364. package/lib/utils/shard.js +41 -38
  365. package/lib/utils/sort.d.ts +3 -3
  366. package/lib/utils/sort.js +58 -62
  367. package/lib/utils/string.js +10 -14
  368. package/lib/utils/table.d.ts +3 -3
  369. package/lib/utils/table.js +36 -39
  370. package/lib/utils/timezone.js +26 -12
  371. package/lib/utils/url.d.ts +1 -2
  372. package/lib/utils/url.js +201 -146
  373. package/lib/utils/user.js +61 -59
  374. package/lib/utils/userAgent.js +11 -11
  375. package/lib/utils/userRole.d.ts +3 -3
  376. package/lib/utils/userRole.js +56 -58
  377. package/package.json +207 -226
  378. package/lib/config/eslint/index.d.ts +0 -2
  379. package/lib/config/eslint/index.js +0 -36
  380. package/lib/config/eslint/lib/order.d.ts +0 -3
  381. package/lib/config/eslint/lib/order.js +0 -30
  382. package/lib/config/eslint/lib/prettier.d.ts +0 -3
  383. package/lib/config/eslint/lib/prettier.js +0 -23
  384. package/lib/config/eslint/lib/typescript.d.ts +0 -2
  385. package/lib/config/eslint/lib/typescript.js +0 -98
  386. package/lib/config/eslint/react.d.ts +0 -2
  387. package/lib/config/eslint/react.js +0 -30
  388. package/lib/hooks/useEventCalback.d.ts +0 -14
  389. package/lib/hooks/useEventCalback.js +0 -51
  390. package/lib/types/externals.d.js +0 -2
@@ -1,186 +1,106 @@
1
1
  "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
6
13
  });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
7
25
  exports.RoleCell = void 0;
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
26
+ var core_1 = require("@material-ui/core");
27
+ var Delete_1 = __importDefault(require("@material-ui/icons/Delete"));
28
+ var react_1 = __importStar(require("react"));
29
+ var react_bootstrap_1 = require("react-bootstrap");
30
+ var react_redux_1 = require("react-redux");
31
+ var userRole_1 = require("../../utils/userRole");
32
+ var IconExternalUser_1 = require("../Icons/IconExternalUser");
33
+ var Inline_1 = require("../RefreshIndicator/Inline");
34
+ var Context_1 = require("./Context");
35
+ var Select_1 = require("./Select");
36
+ var RoleCell = function (_a) {
37
+ var user = _a.user, requiredRoleCount = _a.requiredRoleCount;
38
+ var _b = react_1.useContext(Context_1.UserRolesContext), isUpdateDisabled = _b.isUpdateDisabled, isDeleteDisabled = _b.isDeleteDisabled, canModify = _b.canModify, canDeleteSelf = _b.canDeleteSelf, allowMultipleRoles = _b.allowMultipleRoles, roles = _b.roles, requiredRole = _b.requiredRole, textForRole = _b.textForRole, userRoleToUpdate = _b.userRoleToUpdate, isUpdating = _b.isUpdating, updateUserRole = _b.updateUserRole, userRoleToRemove = _b.userRoleToRemove, isRemoving = _b.isRemoving, removeUserRole = _b.removeUserRole;
39
+ var currentUserId = react_redux_1.useSelector(function (state) {
40
+ if (!state.models.user || !state.models.user.userInfo) {
41
+ throw new Error('Current user id is not stored in redux');
42
+ }
43
+ return state.models.user.userInfo.id;
171
44
  });
172
- $[37] = t1;
173
- $[38] = t2;
174
- } else {
175
- t2 = $[38];
176
- }
177
- return t2;
45
+ return (react_1.default.createElement("ul", { className: "mb0 list pa0 tr" }, user.roles.sort(userRole_1.sortByRole(roles)).map(function (userRole) {
46
+ var roleText = userRole_1.getRoleText(textForRole)(userRole);
47
+ var isUserRoleExternal = userRole_1.isExternal(userRole);
48
+ var userId = userRole_1.getUserId(userRole);
49
+ var canUpdate =
50
+ // current user has modify access
51
+ canModify &&
52
+ // in single role mode (multiple roles are not allowed)
53
+ !allowMultipleRoles &&
54
+ // the userRole is not external (roster synced)
55
+ !isUserRoleExternal &&
56
+ // update is not disabled
57
+ !isUpdateDisabled &&
58
+ // there is more than one possible role
59
+ roles.length > 1 &&
60
+ // the user role is not the last remaining required role user
61
+ (!requiredRole || userRole.role !== requiredRole || !requiredRoleCount || requiredRoleCount > 1);
62
+ var canDelete =
63
+ // the userRole is not external (roster synced)
64
+ !isUserRoleExternal &&
65
+ // delete is not disabled, e.g. course is ended
66
+ !isDeleteDisabled &&
67
+ // the role is not the last required role
68
+ (!requiredRole || userRole.role !== requiredRole || !requiredRoleCount || requiredRoleCount > 1) &&
69
+ // the current user can delete the role for another user, or the current user can delete themselves
70
+ ((canModify && user.id !== currentUserId) || (canDeleteSelf && user.id === currentUserId));
71
+ var shouldDisplayRightAligned =
72
+ // in multiple role mode
73
+ allowMultipleRoles ||
74
+ // only one role option
75
+ roles.length === 1 ||
76
+ // no access to update
77
+ !canModify ||
78
+ // update is disabled
79
+ isUpdateDisabled;
80
+ var isExternalPopover = (react_1.default.createElement(react_bootstrap_1.Popover, { id: "is-external-popover-" + userId + "-" + userRole.role },
81
+ react_1.default.createElement("h3", null, "Added via Roster Sync"),
82
+ react_1.default.createElement("p", { className: "mb2" }, "This person was added automatically via roster sync and cannot be manually removed.")));
83
+ var isUserRoleUpdating = isUpdating && (userRoleToUpdate === null || userRoleToUpdate === void 0 ? void 0 : userRoleToUpdate.id) === userRole.id;
84
+ var isUserRoleRemoving = isRemoving && (userRoleToRemove === null || userRoleToRemove === void 0 ? void 0 : userRoleToRemove.id) === userRole.id;
85
+ return (react_1.default.createElement("li", { key: user.id + "-" + roleText, className: "nowrap flex items-center" + (shouldDisplayRightAligned ? ' justify-end' : '') },
86
+ isUserRoleUpdating ? (react_1.default.createElement("div", { className: "flex justify-start flex-grow-1 pl3" },
87
+ react_1.default.createElement(Inline_1.RefreshIndicatorInline, { size: 20 }))) : canUpdate ? (react_1.default.createElement(Select_1.RoleSelectControl, { options: roles, value: userRole.role, onChange: function (role) {
88
+ updateUserRole(userRole, role);
89
+ }, textForRole: textForRole, disabled: isUpdating || isRemoving })) : (react_1.default.createElement("span", { className: shouldDisplayRightAligned ? '' : 'pl3' }, roleText)),
90
+ isUserRoleRemoving ? (react_1.default.createElement("div", { className: "flex items-center" },
91
+ react_1.default.createElement(Inline_1.RefreshIndicatorInline, { size: 20, className: "ma3" }))) : canDelete ? (react_1.default.createElement(core_1.IconButton, { className: "remove-user-button", "aria-label": "Remove " + roleText, onClick: function () {
92
+ removeUserRole(userRole);
93
+ }, disabled: isUpdating || isRemoving },
94
+ react_1.default.createElement(Delete_1.default, { color: "error" }))) : isUserRoleExternal ? (react_1.default.createElement(react_bootstrap_1.OverlayTrigger, { placement: "auto", trigger: ['hover', 'focus'], overlay: isExternalPopover },
95
+ react_1.default.createElement(IconExternalUser_1.IconExternalUser, { tabIndex: 0, style: { margin: '12px', opacity: 0.5 }, className: "external-icon", titleAccess: "External Role" }))) : (
96
+ // dummy spacer to keep items aligned
97
+ react_1.default.createElement("span", { style: {
98
+ margin: '12px',
99
+ width: '24px',
100
+ height: '24px',
101
+ display: 'inline-block',
102
+ verticalAlign: 'middle'
103
+ } }))));
104
+ })));
178
105
  };
179
106
  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,164 +1,61 @@
1
1
  "use strict";
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");
13
- const label = (hasMultipleOptions, labelVisible, hasTooltip) => {
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
- });
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
29
12
  };
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);
13
+ var __rest = (this && this.__rest) || function (s, e) {
14
+ var t = {};
15
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
16
+ t[p] = s[p];
17
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
18
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
19
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
20
+ t[p[i]] = s[p[i]];
21
+ }
22
+ return t;
39
23
  };
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 => {
58
- onChange(e.target.value);
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;
24
+ var __importDefault = (this && this.__importDefault) || function (mod) {
25
+ return (mod && mod.__esModule) ? mod : { "default": mod };
26
+ };
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.RoleSelect = exports.RoleSelectControl = void 0;
29
+ var Help_1 = __importDefault(require("@material-ui/icons/Help"));
30
+ var react_1 = __importDefault(require("react"));
31
+ var react_bootstrap_1 = require("react-bootstrap");
32
+ var baseRole_1 = require("../../utils/baseRole");
33
+ var label = function (hasMultipleOptions, labelVisible, hasTooltip, ref) {
34
+ var content = (react_1.default.createElement(react_1.default.Fragment, null,
35
+ "Role",
36
+ hasTooltip && react_1.default.createElement(Help_1.default, { ref: ref, color: "primary", className: "ml1 v-mid", tabIndex: 0, titleAccess: "help" })));
37
+ var classes = "f6 mb1 " + (!labelVisible ? 'visually-hidden' : '');
38
+ return hasMultipleOptions ? (react_1.default.createElement(react_bootstrap_1.FormLabel, { className: classes }, content)) : (react_1.default.createElement("span", { className: classes + ' b' }, content));
39
+ };
40
+ var overlay = function (hasMultipleOptions, labelVisible, rolePopover) {
41
+ if (labelVisible === void 0) { labelVisible = false; }
42
+ return rolePopover ? (react_1.default.createElement(react_bootstrap_1.OverlayTrigger, { placement: "right", trigger: ['hover', 'focus'], overlay: rolePopover }, function (_a) {
43
+ var ref = _a.ref, triggerHandler = __rest(_a, ["ref"]);
44
+ return (react_1.default.createElement("span", __assign({}, triggerHandler), label(hasMultipleOptions, labelVisible, true, ref)));
45
+ })) : (label(hasMultipleOptions, labelVisible, false));
46
+ };
47
+ var RoleSelectControl = function (_a) {
48
+ var className = _a.className, options = _a.options, value = _a.value, onChange = _a.onChange, textForRole = _a.textForRole, disabled = _a.disabled;
49
+ return options.length > 1 ? (react_1.default.createElement(react_bootstrap_1.FormControl, { className: className ? className : '', "aria-label": "Role", as: "select", placeholder: "select", onChange: function (e) {
50
+ onChange(e.target.value);
51
+ }, value: value, disabled: disabled }, options.map(function (role, i) { return (react_1.default.createElement("option", { value: role, key: role }, textForRole ? textForRole(role) : baseRole_1.textForBaseRole(role))); }))) : (react_1.default.createElement("div", null, textForRole ? textForRole(options[0]) : baseRole_1.textForBaseRole(options[0])));
80
52
  };
81
53
  exports.RoleSelectControl = RoleSelectControl;
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;
54
+ var RoleSelect = function (_a) {
55
+ var controlId = _a.controlId, labelVisible = _a.labelVisible, popoverContentComponent = _a.popoverContentComponent, options = _a.options, controlProps = __rest(_a, ["controlId", "labelVisible", "popoverContentComponent", "options"]);
56
+ var content = (react_1.default.createElement(react_1.default.Fragment, null,
57
+ overlay(options.length > 1, !!labelVisible, popoverContentComponent),
58
+ react_1.default.createElement(exports.RoleSelectControl, __assign({ options: options }, controlProps))));
59
+ return options.length > 1 ? (react_1.default.createElement(react_bootstrap_1.FormGroup, { controlId: controlId ? controlId : 'RoleSelect' }, content)) : (react_1.default.createElement("span", null, content));
162
60
  };
163
61
  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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