studiokit-scaffolding-js 7.0.12-next.1.3 → 7.0.12-next.2.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 (258) hide show
  1. package/lib/components/ActionList.js +164 -37
  2. package/lib/components/AlertDialog.js +128 -12
  3. package/lib/components/AlertWithIcon.js +88 -29
  4. package/lib/components/ConnectedModal.js +35 -12
  5. package/lib/components/Dropdowns/GroupsDropdown.js +63 -45
  6. package/lib/components/Dropdowns/ManagedNavDropdown.js +92 -67
  7. package/lib/components/Dropdowns/UserDropdown.js +105 -24
  8. package/lib/components/Dropdowns/index.js +4 -10
  9. package/lib/components/EntityOwnerList.js +47 -21
  10. package/lib/components/Error.js +101 -12
  11. package/lib/components/ErrorBoundary.js +127 -38
  12. package/lib/components/ErrorMessage.js +39 -12
  13. package/lib/components/Forms/DateField.js +56 -45
  14. package/lib/components/Forms/TimeField.js +76 -45
  15. package/lib/components/Forms/index.js +3 -5
  16. package/lib/components/Groups/CreateEditCopySaveButtons.js +109 -14
  17. package/lib/components/Groups/ExternalGroups/Attach.js +206 -151
  18. package/lib/components/Groups/ExternalGroups/Table.js +176 -48
  19. package/lib/components/Groups/GroupCreateOrEditCommonProps.js +2 -2
  20. package/lib/components/Groups/RosterSyncInfo.js +142 -23
  21. package/lib/components/HOC/AccessibleAppComponent.js +88 -72
  22. package/lib/components/HOC/ActivityRequiredComponent.js +68 -33
  23. package/lib/components/HOC/AsyncComponent.js +49 -41
  24. package/lib/components/HOC/AuthenticatedComponent.js +55 -44
  25. package/lib/components/HOC/CollectionComponent.js +154 -104
  26. package/lib/components/HOC/CollectionFirstItemComponent.js +45 -40
  27. package/lib/components/HOC/CollectionItemComponent.js +152 -100
  28. package/lib/components/HOC/ConnectedModalComponent.js +87 -69
  29. package/lib/components/HOC/DataDependentComponent.js +26 -27
  30. package/lib/components/HOC/EntityComponent.js +57 -53
  31. package/lib/components/HOC/FullscreenModalComponent.js +139 -108
  32. package/lib/components/HOC/GroupActivityRequiredComponent.js +27 -20
  33. package/lib/components/HOC/GuidComponent.js +20 -20
  34. package/lib/components/HOC/ModelContextDependencyVerifyComponent.js +32 -29
  35. package/lib/components/HOC/ModelErrorRedirectComponent.js +37 -39
  36. package/lib/components/HOC/SearchPersistorComponent.js +237 -173
  37. package/lib/components/HOC/UnauthenticatedComponent.js +32 -30
  38. package/lib/components/HOC/UserComponent.js +6 -8
  39. package/lib/components/Icons/IconAlphaList.js +28 -8
  40. package/lib/components/Icons/IconExternalUser.js +28 -8
  41. package/lib/components/Icons/IconImpersonation.js +28 -8
  42. package/lib/components/Icons/IconStopImpersonating.js +28 -8
  43. package/lib/components/Icons/IconTable.js +29 -9
  44. package/lib/components/Icons/IconTableDeleteCol.js +28 -8
  45. package/lib/components/Icons/IconTableDeleteRow.js +28 -8
  46. package/lib/components/Icons/IconTableInsertCol.js +28 -8
  47. package/lib/components/Icons/IconTableInsertRow.js +28 -8
  48. package/lib/components/Impersonation/Button.js +71 -16
  49. package/lib/components/Impersonation/Link.js +72 -16
  50. package/lib/components/Impersonation/UserDetail.js +60 -11
  51. package/lib/components/Loading.js +23 -8
  52. package/lib/components/LockDownBrowser/Check.js +188 -51
  53. package/lib/components/LockDownBrowser/ExitButton.js +22 -13
  54. package/lib/components/LockDownBrowser/Launch.js +64 -64
  55. package/lib/components/Lti/Confirm.js +147 -14
  56. package/lib/components/Lti/CreateNonLtiGroupAlertDialog.js +165 -36
  57. package/lib/components/Lti/Launch.js +99 -25
  58. package/lib/components/Lti/LaunchGroup.js +81 -16
  59. package/lib/components/ManageTable.js +304 -90
  60. package/lib/components/ManageTableNoDataComponent.js +38 -7
  61. package/lib/components/NewVersionAlert.js +76 -49
  62. package/lib/components/NotFound.js +81 -11
  63. package/lib/components/Notifications.js +179 -129
  64. package/lib/components/PaginationNextButton.js +28 -9
  65. package/lib/components/PaginationPreviousButton.js +28 -9
  66. package/lib/components/Quill/CustomToolbar.js +427 -222
  67. package/lib/components/Quill/Formats/Image.js +67 -67
  68. package/lib/components/Quill/Formats/List.js +38 -47
  69. package/lib/components/Quill/Formats/Video.js +23 -26
  70. package/lib/components/Quill/ImageDropModule.js +136 -114
  71. package/lib/components/Quill/ImageWarning.js +41 -12
  72. package/lib/components/Quill/ImageWithAltTextModal.js +420 -89
  73. package/lib/components/Quill/Specs/CustomImageSpec.js +32 -31
  74. package/lib/components/Quill/Specs/CustomVideoSpec.js +22 -23
  75. package/lib/components/Quill/TableModule/Blots/BaseTableBlot.js +89 -97
  76. package/lib/components/Quill/TableModule/Blots/TableBlot.js +47 -50
  77. package/lib/components/Quill/TableModule/Blots/TableBodyBlot.js +48 -51
  78. package/lib/components/Quill/TableModule/Blots/TableCellBlot.js +219 -224
  79. package/lib/components/Quill/TableModule/Blots/TableContainer.js +75 -86
  80. package/lib/components/Quill/TableModule/Blots/TableRowBlot.js +70 -73
  81. package/lib/components/Quill/TableModule/constants.js +40 -42
  82. package/lib/components/Quill/TableModule/index.js +357 -305
  83. package/lib/components/Quill/TableModule/utils.js +39 -48
  84. package/lib/components/Quill/accessibilityFix.js +219 -223
  85. package/lib/components/Quill/index.js +30 -33
  86. package/lib/components/RefreshIndicator/Bordered.js +44 -10
  87. package/lib/components/RefreshIndicator/Inline.js +43 -12
  88. package/lib/components/RefreshIndicator/index.js +257 -62
  89. package/lib/components/SearchControls.js +211 -14
  90. package/lib/components/SentryRoute.js +5 -7
  91. package/lib/components/Tables/RoleFilter.js +66 -38
  92. package/lib/components/Tables/TextFilter.js +58 -18
  93. package/lib/components/UserRoles/Add.js +193 -99
  94. package/lib/components/UserRoles/Context.js +3 -6
  95. package/lib/components/UserRoles/RoleCell.js +176 -75
  96. package/lib/components/UserRoles/Select.js +151 -20
  97. package/lib/components/UserRoles/Table.js +215 -82
  98. package/lib/components/UserRoles/index.js +526 -386
  99. package/lib/config/eslint/index.js +26 -29
  100. package/lib/config/eslint/lib/order.js +21 -28
  101. package/lib/config/eslint/lib/prettier.js +15 -19
  102. package/lib/config/eslint/lib/typescript.js +87 -113
  103. package/lib/config/eslint/react.js +18 -15
  104. package/lib/constants/baseActivity.js +26 -28
  105. package/lib/constants/baseRole.js +10 -12
  106. package/lib/constants/configuration.js +43 -55
  107. package/lib/constants/externalProviderType.js +6 -8
  108. package/lib/constants/fetchErrorData.js +10 -12
  109. package/lib/constants/index.js +13 -15
  110. package/lib/constants/lockDownBrowser.js +23 -25
  111. package/lib/constants/mockData.js +370 -300
  112. package/lib/constants/modelStatus.js +11 -13
  113. package/lib/constants/notificationType.js +8 -10
  114. package/lib/constants/operatingSystem.js +8 -10
  115. package/lib/constants/shard.js +7 -9
  116. package/lib/constants/table.js +18 -22
  117. package/lib/constants/tier.js +8 -10
  118. package/lib/constants/userRole.js +11 -8
  119. package/lib/endpointMappings.js +191 -182
  120. package/lib/hooks/useCollection.js +79 -65
  121. package/lib/hooks/useCollectionConfiguration.js +220 -80
  122. package/lib/hooks/useCollectionItem.js +151 -57
  123. package/lib/hooks/useGuid.js +16 -9
  124. package/lib/hooks/usePrevious.js +14 -13
  125. package/lib/index.js +11 -26
  126. package/lib/redux/actionCreator.js +44 -35
  127. package/lib/redux/actions/AuthAction.js +45 -32
  128. package/lib/redux/actions/ModalAction.js +6 -8
  129. package/lib/redux/actions/ModelAction.js +95 -43
  130. package/lib/redux/actions/NotificationAction.js +6 -8
  131. package/lib/redux/actions/SearchAction.js +5 -7
  132. package/lib/redux/actions/index.js +6 -8
  133. package/lib/redux/configureReducers.js +48 -46
  134. package/lib/redux/configureStore.js +77 -91
  135. package/lib/redux/helpers.js +2 -5
  136. package/lib/redux/reducers/authReducer.js +44 -43
  137. package/lib/redux/reducers/index.js +7 -14
  138. package/lib/redux/reducers/modalsReducer.js +43 -31
  139. package/lib/redux/reducers/modelsReducer.js +131 -137
  140. package/lib/redux/reducers/notificationsReducer.js +20 -20
  141. package/lib/redux/reducers/searchReducer.js +13 -13
  142. package/lib/redux/sagas/appInsightsSaga.js +19 -21
  143. package/lib/redux/sagas/authSaga.js +248 -234
  144. package/lib/redux/sagas/caliperSaga.js +142 -131
  145. package/lib/redux/sagas/clockOffsetSaga.js +29 -32
  146. package/lib/redux/sagas/configurationSaga.js +8 -10
  147. package/lib/redux/sagas/downtimeApiErrorSaga.js +16 -19
  148. package/lib/redux/sagas/errorSaga.js +23 -24
  149. package/lib/redux/sagas/googleAnalyticsSaga.js +24 -27
  150. package/lib/redux/sagas/identityProviderSaga.js +19 -21
  151. package/lib/redux/sagas/initialDataLoadSaga.js +34 -31
  152. package/lib/redux/sagas/lockDownBrowserErrorSaga.js +25 -22
  153. package/lib/redux/sagas/modelFetchSaga.js +302 -286
  154. package/lib/redux/sagas/noStoreSaga.js +60 -61
  155. package/lib/redux/sagas/postLoginDataSaga.js +37 -32
  156. package/lib/redux/sagas/postLoginRedirectSaga.js +22 -27
  157. package/lib/redux/sagas/rootSaga.js +77 -60
  158. package/lib/redux/sagas/sentrySaga.js +25 -28
  159. package/lib/redux/sagas/userIdSaga.js +13 -15
  160. package/lib/services/codeProviderService.js +21 -21
  161. package/lib/services/dateService.js +6 -8
  162. package/lib/services/documentService.js +10 -11
  163. package/lib/services/fetchService.js +103 -95
  164. package/lib/services/persistenceService.js +27 -30
  165. package/lib/services/ticketProviderService.js +25 -25
  166. package/lib/services/tokenPersistenceService.js +8 -10
  167. package/lib/services/windowService.js +14 -16
  168. package/lib/startup.js +110 -101
  169. package/lib/types/AppConfiguration.js +2 -2
  170. package/lib/types/Artifact.js +7 -9
  171. package/lib/types/BaseReduxState.js +2 -2
  172. package/lib/types/Client.js +2 -2
  173. package/lib/types/Collection.js +2 -2
  174. package/lib/types/Configuration.js +2 -2
  175. package/lib/types/DeepLinkingResponseRequest.js +2 -2
  176. package/lib/types/DeletableModel.js +2 -2
  177. package/lib/types/Event.js +2 -2
  178. package/lib/types/ExternalGroup.js +2 -2
  179. package/lib/types/ExternalProvider.js +2 -2
  180. package/lib/types/ExternalTerm.js +2 -2
  181. package/lib/types/Group.js +2 -2
  182. package/lib/types/IdentityProvider.js +2 -2
  183. package/lib/types/LtiLaunch.js +2 -2
  184. package/lib/types/NameOnlyEntity.js +2 -2
  185. package/lib/types/Notification.js +2 -2
  186. package/lib/types/OptionalRecord.js +2 -2
  187. package/lib/types/OwnerSchedule.js +2 -2
  188. package/lib/types/PropertyOfType.js +2 -2
  189. package/lib/types/Quill.js +2 -2
  190. package/lib/types/RoleDescription.js +2 -2
  191. package/lib/types/Search.js +2 -2
  192. package/lib/types/SimpleLocation.js +2 -2
  193. package/lib/types/UniTime.js +2 -2
  194. package/lib/types/User.js +2 -2
  195. package/lib/types/UserRole.js +2 -2
  196. package/lib/types/auth/AuthState.js +2 -2
  197. package/lib/types/auth/CasV1LoginRequestBody.js +2 -2
  198. package/lib/types/auth/ClientCredentials.js +2 -2
  199. package/lib/types/auth/CodeProviderService.js +2 -2
  200. package/lib/types/auth/LocalLoginRequestBody.js +2 -2
  201. package/lib/types/auth/TicketProviderService.js +2 -2
  202. package/lib/types/auth/TokenPersistenceService.js +2 -2
  203. package/lib/types/auth/index.js +8 -10
  204. package/lib/types/externals.d.js +2 -0
  205. package/lib/types/index.js +29 -31
  206. package/lib/types/net/EndpointConfig.js +2 -2
  207. package/lib/types/net/EndpointMapping.js +2 -2
  208. package/lib/types/net/EndpointMappings.js +2 -2
  209. package/lib/types/net/ErrorHandler.js +2 -2
  210. package/lib/types/net/FetchConfig.js +2 -2
  211. package/lib/types/net/FetchErrorData.js +6 -8
  212. package/lib/types/net/FetchResult.js +2 -2
  213. package/lib/types/net/HTTPMethod.js +2 -2
  214. package/lib/types/net/HTTPStatusCode.js +12 -14
  215. package/lib/types/net/Metadata.js +2 -2
  216. package/lib/types/net/Model.js +2 -2
  217. package/lib/types/net/ModelCollection.js +2 -2
  218. package/lib/types/net/ModelsState.js +2 -2
  219. package/lib/types/net/OAuthToken.js +2 -2
  220. package/lib/types/net/OAuthTokenOrNull.js +2 -2
  221. package/lib/types/net/TokenAccessFunction.js +2 -2
  222. package/lib/types/net/index.js +17 -19
  223. package/lib/utils/baseActivity.js +83 -85
  224. package/lib/utils/baseRole.js +32 -36
  225. package/lib/utils/collection.js +403 -297
  226. package/lib/utils/cookies.js +19 -23
  227. package/lib/utils/date.js +188 -205
  228. package/lib/utils/dom.js +130 -131
  229. package/lib/utils/domainIdentifier.js +4 -8
  230. package/lib/utils/entityUserRole.js +2 -5
  231. package/lib/utils/error.js +14 -19
  232. package/lib/utils/events.js +32 -31
  233. package/lib/utils/externalGroup.js +20 -25
  234. package/lib/utils/externalProviders.js +4 -7
  235. package/lib/utils/externalTerms.js +6 -6
  236. package/lib/utils/fetch.js +168 -176
  237. package/lib/utils/group.js +14 -11
  238. package/lib/utils/groupDates.js +38 -46
  239. package/lib/utils/groupRoles.js +23 -32
  240. package/lib/utils/lockDownBrowser.js +12 -15
  241. package/lib/utils/logger.js +23 -28
  242. package/lib/utils/lti.js +4 -7
  243. package/lib/utils/model.js +28 -43
  244. package/lib/utils/number.js +9 -13
  245. package/lib/utils/promise.js +23 -26
  246. package/lib/utils/quill.js +55 -60
  247. package/lib/utils/route.js +52 -60
  248. package/lib/utils/search.js +72 -87
  249. package/lib/utils/shard.js +33 -42
  250. package/lib/utils/sort.js +47 -50
  251. package/lib/utils/string.js +10 -12
  252. package/lib/utils/table.js +29 -33
  253. package/lib/utils/timezone.js +7 -12
  254. package/lib/utils/url.js +130 -144
  255. package/lib/utils/user.js +54 -64
  256. package/lib/utils/userAgent.js +7 -14
  257. package/lib/utils/userRole.js +36 -39
  258. package/package.json +17 -3
@@ -1,36 +1,33 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildFileSelector = exports.supportedFileExtensions = exports.registerQuill = void 0;
4
- const tslib_1 = require("tslib");
5
- const quill_blot_formatter_1 = tslib_1.__importDefault(require("quill-blot-formatter"));
6
- const react_quill_1 = require("react-quill");
7
- const accessibilityFix_1 = require("./accessibilityFix");
8
- const Image_1 = require("./Formats/Image");
9
- const List_1 = require("./Formats/List");
10
- const Video_1 = require("./Formats/Video");
11
- const ImageDropModule_1 = require("./ImageDropModule");
12
- const TableModule_1 = require("./TableModule");
13
- const registerQuill = () => {
14
- react_quill_1.Quill.register('modules/blotFormatter', quill_blot_formatter_1.default);
15
- // replace image format
16
- react_quill_1.Quill.register('formats/image', Image_1.Image, true);
17
- // replace list format with new extended version
18
- react_quill_1.Quill.register('formats/list/item', List_1.ListItem, true);
19
- react_quill_1.Quill.register('formats/list', List_1.List, true);
20
- // replace image format
21
- react_quill_1.Quill.register('formats/video', Video_1.Video, true);
22
- react_quill_1.Quill.register('modules/table', TableModule_1.TableModule);
23
- react_quill_1.Quill.register('modules/imageDrop', ImageDropModule_1.ImageDropModule);
24
- // apply the accessibility label issues to each icons
25
- (0, accessibilityFix_1.applyAccessibilityToIcons)(react_quill_1.Quill.import('ui/icons'));
1
+ import BlotFormatter from 'quill-blot-formatter';
2
+ import { Quill } from 'react-quill';
3
+ import { applyAccessibilityToIcons } from './accessibilityFix';
4
+ import { Image } from './Formats/Image';
5
+ import { List, ListItem } from './Formats/List';
6
+ import { Video } from './Formats/Video';
7
+ import { ImageDropModule } from './ImageDropModule';
8
+ import { TableModule } from './TableModule';
9
+ export const registerQuill = () => {
10
+ Quill.register('modules/blotFormatter', BlotFormatter);
11
+ // replace image format
12
+ Quill.register('formats/image', Image, true);
13
+ // replace list format with new extended version
14
+ Quill.register('formats/list/item', ListItem, true);
15
+ Quill.register('formats/list', List, true);
16
+ // replace image format
17
+ Quill.register('formats/video', Video, true);
18
+ Quill.register('modules/table', TableModule);
19
+ Quill.register('modules/imageDrop', ImageDropModule);
20
+
21
+ // apply the accessibility label issues to each icons
22
+ applyAccessibilityToIcons(Quill.import('ui/icons'));
26
23
  };
27
- exports.registerQuill = registerQuill;
28
- exports.supportedFileExtensions = ['.png', '.jpeg', '.jpg', '.gif', '.bmp'];
24
+ export const supportedFileExtensions = ['.png', '.jpeg', '.jpg', '.gif', '.bmp'];
25
+
29
26
  // Get the file dialog upload programmatically
30
- const buildFileSelector = () => {
31
- const fileSelector = document.createElement('input');
32
- fileSelector.setAttribute('type', 'file');
33
- fileSelector.setAttribute('accept', exports.supportedFileExtensions.join(', '));
34
- return fileSelector;
27
+ export const buildFileSelector = () => {
28
+ const fileSelector = document.createElement('input');
29
+ fileSelector.setAttribute('type', 'file');
30
+ fileSelector.setAttribute('accept', supportedFileExtensions.join(', '));
31
+ return fileSelector;
35
32
  };
36
- exports.buildFileSelector = buildFileSelector;
33
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCbG90Rm9ybWF0dGVyIiwiUXVpbGwiLCJhcHBseUFjY2Vzc2liaWxpdHlUb0ljb25zIiwiSW1hZ2UiLCJMaXN0IiwiTGlzdEl0ZW0iLCJWaWRlbyIsIkltYWdlRHJvcE1vZHVsZSIsIlRhYmxlTW9kdWxlIiwicmVnaXN0ZXJRdWlsbCIsInJlZ2lzdGVyIiwiaW1wb3J0Iiwic3VwcG9ydGVkRmlsZUV4dGVuc2lvbnMiLCJidWlsZEZpbGVTZWxlY3RvciIsImZpbGVTZWxlY3RvciIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInNldEF0dHJpYnV0ZSIsImpvaW4iXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9RdWlsbC9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmxvdEZvcm1hdHRlciBmcm9tICdxdWlsbC1ibG90LWZvcm1hdHRlcidcbmltcG9ydCB7IFF1aWxsIH0gZnJvbSAncmVhY3QtcXVpbGwnXG5pbXBvcnQgeyBhcHBseUFjY2Vzc2liaWxpdHlUb0ljb25zIH0gZnJvbSAnLi9hY2Nlc3NpYmlsaXR5Rml4J1xuaW1wb3J0IHsgSW1hZ2UgfSBmcm9tICcuL0Zvcm1hdHMvSW1hZ2UnXG5pbXBvcnQgeyBMaXN0LCBMaXN0SXRlbSB9IGZyb20gJy4vRm9ybWF0cy9MaXN0J1xuaW1wb3J0IHsgVmlkZW8gfSBmcm9tICcuL0Zvcm1hdHMvVmlkZW8nXG5pbXBvcnQgeyBJbWFnZURyb3BNb2R1bGUgfSBmcm9tICcuL0ltYWdlRHJvcE1vZHVsZSdcbmltcG9ydCB7IFRhYmxlTW9kdWxlIH0gZnJvbSAnLi9UYWJsZU1vZHVsZSdcblxuZXhwb3J0IGNvbnN0IHJlZ2lzdGVyUXVpbGwgPSAoKSA9PiB7XG5cdFF1aWxsLnJlZ2lzdGVyKCdtb2R1bGVzL2Jsb3RGb3JtYXR0ZXInLCBCbG90Rm9ybWF0dGVyKVxuXHQvLyByZXBsYWNlIGltYWdlIGZvcm1hdFxuXHRRdWlsbC5yZWdpc3RlcignZm9ybWF0cy9pbWFnZScsIEltYWdlLCB0cnVlKVxuXHQvLyByZXBsYWNlIGxpc3QgZm9ybWF0IHdpdGggbmV3IGV4dGVuZGVkIHZlcnNpb25cblx0UXVpbGwucmVnaXN0ZXIoJ2Zvcm1hdHMvbGlzdC9pdGVtJywgTGlzdEl0ZW0sIHRydWUpXG5cdFF1aWxsLnJlZ2lzdGVyKCdmb3JtYXRzL2xpc3QnLCBMaXN0LCB0cnVlKVxuXHQvLyByZXBsYWNlIGltYWdlIGZvcm1hdFxuXHRRdWlsbC5yZWdpc3RlcignZm9ybWF0cy92aWRlbycsIFZpZGVvLCB0cnVlKVxuXHRRdWlsbC5yZWdpc3RlcignbW9kdWxlcy90YWJsZScsIFRhYmxlTW9kdWxlKVxuXHRRdWlsbC5yZWdpc3RlcignbW9kdWxlcy9pbWFnZURyb3AnLCBJbWFnZURyb3BNb2R1bGUpXG5cblx0Ly8gYXBwbHkgdGhlIGFjY2Vzc2liaWxpdHkgbGFiZWwgaXNzdWVzIHRvIGVhY2ggaWNvbnNcblx0YXBwbHlBY2Nlc3NpYmlsaXR5VG9JY29ucyhRdWlsbC5pbXBvcnQoJ3VpL2ljb25zJykpXG59XG5cbmV4cG9ydCBjb25zdCBzdXBwb3J0ZWRGaWxlRXh0ZW5zaW9ucyA9IFsnLnBuZycsICcuanBlZycsICcuanBnJywgJy5naWYnLCAnLmJtcCddXG5cbi8vIEdldCB0aGUgZmlsZSBkaWFsb2cgdXBsb2FkIHByb2dyYW1tYXRpY2FsbHlcbmV4cG9ydCBjb25zdCBidWlsZEZpbGVTZWxlY3RvciA9ICgpID0+IHtcblx0Y29uc3QgZmlsZVNlbGVjdG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKVxuXHRmaWxlU2VsZWN0b3Iuc2V0QXR0cmlidXRlKCd0eXBlJywgJ2ZpbGUnKVxuXHRmaWxlU2VsZWN0b3Iuc2V0QXR0cmlidXRlKCdhY2NlcHQnLCBzdXBwb3J0ZWRGaWxlRXh0ZW5zaW9ucy5qb2luKCcsICcpKVxuXHRyZXR1cm4gZmlsZVNlbGVjdG9yXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLGFBQWEsTUFBTSxzQkFBc0I7QUFDaEQsU0FBU0MsS0FBSyxRQUFRLGFBQWE7QUFDbkMsU0FBU0MseUJBQXlCLFFBQVEsb0JBQW9CO0FBQzlELFNBQVNDLEtBQUssUUFBUSxpQkFBaUI7QUFDdkMsU0FBU0MsSUFBSSxFQUFFQyxRQUFRLFFBQVEsZ0JBQWdCO0FBQy9DLFNBQVNDLEtBQUssUUFBUSxpQkFBaUI7QUFDdkMsU0FBU0MsZUFBZSxRQUFRLG1CQUFtQjtBQUNuRCxTQUFTQyxXQUFXLFFBQVEsZUFBZTtBQUUzQyxPQUFPLE1BQU1DLGFBQWEsR0FBR0EsQ0FBQSxLQUFNO0VBQ2xDUixLQUFLLENBQUNTLFFBQVEsQ0FBQyx1QkFBdUIsRUFBRVYsYUFBYSxDQUFDO0VBQ3REO0VBQ0FDLEtBQUssQ0FBQ1MsUUFBUSxDQUFDLGVBQWUsRUFBRVAsS0FBSyxFQUFFLElBQUksQ0FBQztFQUM1QztFQUNBRixLQUFLLENBQUNTLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRUwsUUFBUSxFQUFFLElBQUksQ0FBQztFQUNuREosS0FBSyxDQUFDUyxRQUFRLENBQUMsY0FBYyxFQUFFTixJQUFJLEVBQUUsSUFBSSxDQUFDO0VBQzFDO0VBQ0FILEtBQUssQ0FBQ1MsUUFBUSxDQUFDLGVBQWUsRUFBRUosS0FBSyxFQUFFLElBQUksQ0FBQztFQUM1Q0wsS0FBSyxDQUFDUyxRQUFRLENBQUMsZUFBZSxFQUFFRixXQUFXLENBQUM7RUFDNUNQLEtBQUssQ0FBQ1MsUUFBUSxDQUFDLG1CQUFtQixFQUFFSCxlQUFlLENBQUM7O0VBRXBEO0VBQ0FMLHlCQUF5QixDQUFDRCxLQUFLLENBQUNVLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBRUQsT0FBTyxNQUFNQyx1QkFBdUIsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7O0FBRWhGO0FBQ0EsT0FBTyxNQUFNQyxpQkFBaUIsR0FBR0EsQ0FBQSxLQUFNO0VBQ3RDLE1BQU1DLFlBQVksR0FBR0MsUUFBUSxDQUFDQyxhQUFhLENBQUMsT0FBTyxDQUFDO0VBQ3BERixZQUFZLENBQUNHLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDO0VBQ3pDSCxZQUFZLENBQUNHLFlBQVksQ0FBQyxRQUFRLEVBQUVMLHVCQUF1QixDQUFDTSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7RUFDdkUsT0FBT0osWUFBWTtBQUNwQixDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -1,11 +1,45 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RefreshIndicatorBordered = void 0;
4
- const tslib_1 = require("tslib");
5
- const jsx_runtime_1 = require("react/jsx-runtime");
6
- const index_1 = require("./index");
7
- const RefreshIndicatorBordered = props => {
8
- const { borderClassName } = props, rest = tslib_1.__rest(props, ["borderClassName"]);
9
- return ((0, jsx_runtime_1.jsx)("div", { className: `ba b--dashed bw1 b--custom-blue${borderClassName ? ` ${borderClassName}` : ''}`, children: (0, jsx_runtime_1.jsx)(index_1.RefreshIndicator, Object.assign({}, rest)) }));
1
+ import { c as _c } from "react-compiler-runtime";
2
+ import { RefreshIndicator } from './index';
3
+ import { jsx as _jsx } from "react/jsx-runtime";
4
+ export const RefreshIndicatorBordered = props => {
5
+ const $ = _c(8);
6
+ let borderClassName;
7
+ let rest;
8
+ if ($[0] !== props) {
9
+ ({
10
+ borderClassName,
11
+ ...rest
12
+ } = props);
13
+ $[0] = props;
14
+ $[1] = borderClassName;
15
+ $[2] = rest;
16
+ } else {
17
+ borderClassName = $[1];
18
+ rest = $[2];
19
+ }
20
+ const t0 = `ba b--dashed bw1 b--custom-blue${borderClassName ? ` ${borderClassName}` : ""}`;
21
+ let t1;
22
+ if ($[3] !== rest) {
23
+ t1 = /*#__PURE__*/_jsx(RefreshIndicator, {
24
+ ...rest
25
+ });
26
+ $[3] = rest;
27
+ $[4] = t1;
28
+ } else {
29
+ t1 = $[4];
30
+ }
31
+ let t2;
32
+ if ($[5] !== t0 || $[6] !== t1) {
33
+ t2 = /*#__PURE__*/_jsx("div", {
34
+ className: t0,
35
+ children: t1
36
+ });
37
+ $[5] = t0;
38
+ $[6] = t1;
39
+ $[7] = t2;
40
+ } else {
41
+ t2 = $[7];
42
+ }
43
+ return t2;
10
44
  };
11
- exports.RefreshIndicatorBordered = RefreshIndicatorBordered;
45
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWZyZXNoSW5kaWNhdG9yIiwianN4IiwiX2pzeCIsIlJlZnJlc2hJbmRpY2F0b3JCb3JkZXJlZCIsInByb3BzIiwiJCIsIl9jIiwiYm9yZGVyQ2xhc3NOYW1lIiwicmVzdCIsInQwIiwidDEiLCJ0MiIsImNsYXNzTmFtZSIsImNoaWxkcmVuIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvUmVmcmVzaEluZGljYXRvci9Cb3JkZXJlZC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRnVuY3Rpb25Db21wb25lbnQgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IFJlZnJlc2hJbmRpY2F0b3IsIFJlZnJlc2hJbmRpY2F0b3JQcm9wcyB9IGZyb20gJy4vaW5kZXgnXG5cbmludGVyZmFjZSBCb3JkZXJlZFJlZnJlc2hJbmRpY2F0b3JQcm9wcyBleHRlbmRzIFJlZnJlc2hJbmRpY2F0b3JQcm9wcyB7XG5cdGJvcmRlckNsYXNzTmFtZT86IHN0cmluZ1xufVxuXG5leHBvcnQgY29uc3QgUmVmcmVzaEluZGljYXRvckJvcmRlcmVkOiBGdW5jdGlvbkNvbXBvbmVudDxCb3JkZXJlZFJlZnJlc2hJbmRpY2F0b3JQcm9wcz4gPSBwcm9wcyA9PiB7XG5cdGNvbnN0IHsgYm9yZGVyQ2xhc3NOYW1lLCAuLi5yZXN0IH0gPSBwcm9wc1xuXHRyZXR1cm4gKFxuXHRcdDxkaXYgY2xhc3NOYW1lPXtgYmEgYi0tZGFzaGVkIGJ3MSBiLS1jdXN0b20tYmx1ZSR7Ym9yZGVyQ2xhc3NOYW1lID8gYCAke2JvcmRlckNsYXNzTmFtZX1gIDogJyd9YH0+XG5cdFx0XHQ8UmVmcmVzaEluZGljYXRvciB7Li4ucmVzdH0gLz5cblx0XHQ8L2Rpdj5cblx0KVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQ0EsU0FBU0EsZ0JBQWdCLFFBQStCLFNBQVM7QUFBQSxTQUFBQyxHQUFBLElBQUFDLElBQUE7QUFNakUsT0FBTyxNQUFNQyx3QkFBMEUsR0FBR0MsS0FBQTtFQUFBLE1BQUFDLENBQUEsR0FBQUMsRUFBQTtFQUFBLElBQUFDLGVBQUE7RUFBQSxJQUFBQyxJQUFBO0VBQUEsSUFBQUgsQ0FBQSxRQUFBRCxLQUFBO0lBQ3pGO01BQUFHLGVBQUE7TUFBQSxHQUFBQztJQUFBLElBQXFDSixLQUFLO0lBQUFDLENBQUEsTUFBQUQsS0FBQTtJQUFBQyxDQUFBLE1BQUFFLGVBQUE7SUFBQUYsQ0FBQSxNQUFBRyxJQUFBO0VBQUE7SUFBQUQsZUFBQSxHQUFBRixDQUFBO0lBQUFHLElBQUEsR0FBQUgsQ0FBQTtFQUFBO0VBRXpCLE1BQUFJLEVBQUEscUNBQWtDRixlQUFlLEdBQWYsSUFBc0JBLGVBQWUsRUFBTyxHQUE1QyxFQUE0QyxFQUFFO0VBQUEsSUFBQUcsRUFBQTtFQUFBLElBQUFMLENBQUEsUUFBQUcsSUFBQTtJQUMvRkUsRUFBQSxnQkFBQVIsSUFBQSxDQUFDRixnQkFBZ0I7TUFBQSxHQUFLUTtJQUFJLENBQUcsQ0FBQztJQUFBSCxDQUFBLE1BQUFHLElBQUE7SUFBQUgsQ0FBQSxNQUFBSyxFQUFBO0VBQUE7SUFBQUEsRUFBQSxHQUFBTCxDQUFBO0VBQUE7RUFBQSxJQUFBTSxFQUFBO0VBQUEsSUFBQU4sQ0FBQSxRQUFBSSxFQUFBLElBQUFKLENBQUEsUUFBQUssRUFBQTtJQUQvQkMsRUFBQSxnQkFBQVQsSUFBQTtNQUFnQlUsU0FBZ0YsRUFBaEZILEVBQWdGO01BQUFJLFFBQUEsRUFDL0ZIO0lBQThCLENBQzFCLENBQUM7SUFBQUwsQ0FBQSxNQUFBSSxFQUFBO0lBQUFKLENBQUEsTUFBQUssRUFBQTtJQUFBTCxDQUFBLE1BQUFNLEVBQUE7RUFBQTtJQUFBQSxFQUFBLEdBQUFOLENBQUE7RUFBQTtFQUFBLE9BRk5NLEVBRU07QUFBQSxDQUVQIiwiaWdub3JlTGlzdCI6W119
@@ -1,13 +1,44 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RefreshIndicatorInline = void 0;
4
- const tslib_1 = require("tslib");
5
- const jsx_runtime_1 = require("react/jsx-runtime");
6
- const CircularProgress_1 = tslib_1.__importDefault(require("@material-ui/core/CircularProgress"));
7
- const RefreshIndicatorInline = props => {
8
- const { className } = props, rest = tslib_1.__rest(props, ["className"]);
9
- return ((0, jsx_runtime_1.jsx)(CircularProgress_1.default, Object.assign({ size: 35, style: {
10
- position: 'relative'
11
- }, className: `dib${props.className ? ` ${props.className}` : ''}` }, rest)));
1
+ import { c as _c } from "react-compiler-runtime";
2
+ import CircularProgress from '@material-ui/core/CircularProgress';
3
+ import { jsx as _jsx } from "react/jsx-runtime";
4
+ export const RefreshIndicatorInline = props => {
5
+ const $ = _c(6);
6
+ let rest;
7
+ if ($[0] !== props) {
8
+ const {
9
+ className,
10
+ ...t0
11
+ } = props;
12
+ rest = t0;
13
+ $[0] = props;
14
+ $[1] = rest;
15
+ } else {
16
+ rest = $[1];
17
+ }
18
+ let t0;
19
+ if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
20
+ t0 = {
21
+ position: "relative"
22
+ };
23
+ $[2] = t0;
24
+ } else {
25
+ t0 = $[2];
26
+ }
27
+ const t1 = `dib${props.className ? ` ${props.className}` : ""}`;
28
+ let t2;
29
+ if ($[3] !== rest || $[4] !== t1) {
30
+ t2 = /*#__PURE__*/_jsx(CircularProgress, {
31
+ size: 35,
32
+ style: t0,
33
+ className: t1,
34
+ ...rest
35
+ });
36
+ $[3] = rest;
37
+ $[4] = t1;
38
+ $[5] = t2;
39
+ } else {
40
+ t2 = $[5];
41
+ }
42
+ return t2;
12
43
  };
13
- exports.RefreshIndicatorInline = RefreshIndicatorInline;
44
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDaXJjdWxhclByb2dyZXNzIiwianN4IiwiX2pzeCIsIlJlZnJlc2hJbmRpY2F0b3JJbmxpbmUiLCJwcm9wcyIsIiQiLCJfYyIsInJlc3QiLCJjbGFzc05hbWUiLCJ0MCIsIlN5bWJvbCIsImZvciIsInBvc2l0aW9uIiwidDEiLCJ0MiIsInNpemUiLCJzdHlsZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1JlZnJlc2hJbmRpY2F0b3IvSW5saW5lLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ2lyY3VsYXJQcm9ncmVzcywgeyBDaXJjdWxhclByb2dyZXNzUHJvcHMgfSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9DaXJjdWxhclByb2dyZXNzJ1xuaW1wb3J0IHsgRnVuY3Rpb25Db21wb25lbnQgfSBmcm9tICdyZWFjdCdcblxuZXhwb3J0IGNvbnN0IFJlZnJlc2hJbmRpY2F0b3JJbmxpbmU6IEZ1bmN0aW9uQ29tcG9uZW50PENpcmN1bGFyUHJvZ3Jlc3NQcm9wcz4gPSBwcm9wcyA9PiB7XG5cdGNvbnN0IHsgY2xhc3NOYW1lLCAuLi5yZXN0IH0gPSBwcm9wc1xuXHRyZXR1cm4gKFxuXHRcdDxDaXJjdWxhclByb2dyZXNzXG5cdFx0XHRzaXplPXszNX1cblx0XHRcdHN0eWxlPXt7XG5cdFx0XHRcdHBvc2l0aW9uOiAncmVsYXRpdmUnXG5cdFx0XHR9fVxuXHRcdFx0Y2xhc3NOYW1lPXtgZGliJHtwcm9wcy5jbGFzc05hbWUgPyBgICR7cHJvcHMuY2xhc3NOYW1lfWAgOiAnJ31gfVxuXHRcdFx0ey4uLnJlc3R9XG5cdFx0Lz5cblx0KVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUEsT0FBT0EsZ0JBQWdCLE1BQWlDLG9DQUFvQztBQUFBLFNBQUFDLEdBQUEsSUFBQUMsSUFBQTtBQUc1RixPQUFPLE1BQU1DLHNCQUFnRSxHQUFHQyxLQUFBO0VBQUEsTUFBQUMsQ0FBQSxHQUFBQyxFQUFBO0VBQUEsSUFBQUMsSUFBQTtFQUFBLElBQUFGLENBQUEsUUFBQUQsS0FBQTtJQUMvRTtNQUFBSSxTQUFBO01BQUEsR0FBQUM7SUFBQSxJQUErQkwsS0FBSztJQUFwQ0csSUFBQSxHQUFBRSxFQUFBO0lBQW9DSixDQUFBLE1BQUFELEtBQUE7SUFBQUMsQ0FBQSxNQUFBRSxJQUFBO0VBQUE7SUFBQUEsSUFBQSxHQUFBRixDQUFBO0VBQUE7RUFBQSxJQUFBSSxFQUFBO0VBQUEsSUFBQUosQ0FBQSxRQUFBSyxNQUFBLENBQUFDLEdBQUE7SUFJM0JGLEVBQUE7TUFBQUcsUUFBQSxFQUNJO0lBQ1gsQ0FBQztJQUFBUCxDQUFBLE1BQUFJLEVBQUE7RUFBQTtJQUFBQSxFQUFBLEdBQUFKLENBQUE7RUFBQTtFQUNVLE1BQUFRLEVBQUEsU0FBTVQsS0FBSyxDQUFBSSxTQUF1QyxHQUE1QyxJQUFzQkosS0FBSyxDQUFBSSxTQUFVLEVBQU8sR0FBNUMsRUFBNEMsRUFBRTtFQUFBLElBQUFNLEVBQUE7RUFBQSxJQUFBVCxDQUFBLFFBQUFFLElBQUEsSUFBQUYsQ0FBQSxRQUFBUSxFQUFBO0lBTGhFQyxFQUFBLGdCQUFBWixJQUFBLENBQUNGLGdCQUFnQjtNQUNWZSxJQUFFLEVBQUYsRUFBRTtNQUNEQyxLQUVOLEVBRk1QLEVBRU47TUFDVUQsU0FBb0QsRUFBcERLLEVBQW9EO01BQUEsR0FDM0ROO0lBQUksQ0FDUixDQUFDO0lBQUFGLENBQUEsTUFBQUUsSUFBQTtJQUFBRixDQUFBLE1BQUFRLEVBQUE7SUFBQVIsQ0FBQSxNQUFBUyxFQUFBO0VBQUE7SUFBQUEsRUFBQSxHQUFBVCxDQUFBO0VBQUE7RUFBQSxPQVBGUyxFQU9FO0FBQUEsQ0FFSCIsImlnbm9yZUxpc3QiOltdfQ==
@@ -1,68 +1,263 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RefreshIndicator = void 0;
4
- const tslib_1 = require("tslib");
5
- const jsx_runtime_1 = require("react/jsx-runtime");
6
- const CircularProgress_1 = tslib_1.__importDefault(require("@material-ui/core/CircularProgress"));
7
- const Sentry = tslib_1.__importStar(require("@sentry/react"));
8
- const detect_browser_1 = require("detect-browser");
9
- const react_1 = require("react");
10
- const lockDownBrowser_1 = require("../../utils/lockDownBrowser");
11
- const logger_1 = require("../../utils/logger");
12
- const Shortcut = ({ content }) => ((0, jsx_runtime_1.jsx)("span", { className: "tag ma0 mb1", children: content }));
1
+ import { c as _c } from "react-compiler-runtime";
2
+ import CircularProgress from '@material-ui/core/CircularProgress';
3
+ import * as Sentry from '@sentry/react';
4
+ import { detect } from 'detect-browser';
5
+ import React, { useEffect, useState } from 'react';
6
+ import { getLockDownBrowserInfo } from '../../utils/lockDownBrowser';
7
+ import { getLogger } from '../../utils/logger';
8
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
9
+ const Shortcut = t0 => {
10
+ const $ = _c(2);
11
+ const {
12
+ content
13
+ } = t0;
14
+ let t1;
15
+ if ($[0] !== content) {
16
+ t1 = /*#__PURE__*/_jsx("span", {
17
+ className: "tag ma0 mb1",
18
+ children: content
19
+ });
20
+ $[0] = content;
21
+ $[1] = t1;
22
+ } else {
23
+ t1 = $[1];
24
+ }
25
+ return t1;
26
+ };
13
27
  const getRefreshShortcut = () => {
14
- var _a;
15
- const browser = (0, detect_browser_1.detect)();
16
- if ((browser === null || browser === void 0 ? void 0 : browser.os) === 'Mac OS') {
17
- return (0, jsx_runtime_1.jsx)(Shortcut, { content: "command+R" });
18
- }
19
- if ((_a = browser === null || browser === void 0 ? void 0 : browser.os) === null || _a === void 0 ? void 0 : _a.includes('Windows')) {
20
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Shortcut, { content: "control+R" }), " or ", (0, jsx_runtime_1.jsx)(Shortcut, { content: "F5" })] }));
21
- }
28
+ const browser = detect();
29
+ if (browser?.os === 'Mac OS') {
30
+ return /*#__PURE__*/_jsx(Shortcut, {
31
+ content: "command+R"
32
+ });
33
+ }
34
+ if (browser?.os?.includes('Windows')) {
35
+ return /*#__PURE__*/_jsxs(_Fragment, {
36
+ children: [/*#__PURE__*/_jsx(Shortcut, {
37
+ content: "control+R"
38
+ }), " or ", /*#__PURE__*/_jsx(Shortcut, {
39
+ content: "F5"
40
+ })]
41
+ });
42
+ }
22
43
  };
23
44
  const getHardRefreshShortcut = () => {
24
- var _a;
25
- const browser = (0, detect_browser_1.detect)();
26
- if ((browser === null || browser === void 0 ? void 0 : browser.os) === 'Mac OS') {
27
- if (browser.name === 'safari') {
28
- return (0, jsx_runtime_1.jsx)(Shortcut, { content: "command+option+R" });
29
- }
30
- return (0, jsx_runtime_1.jsx)(Shortcut, { content: "command+option+R" });
31
- }
32
- if ((_a = browser === null || browser === void 0 ? void 0 : browser.os) === null || _a === void 0 ? void 0 : _a.includes('Windows')) {
33
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Shortcut, { content: "control+shift+R" }), " or ", (0, jsx_runtime_1.jsx)(Shortcut, { content: "control+F5" })] }));
45
+ const browser = detect();
46
+ if (browser?.os === 'Mac OS') {
47
+ if (browser.name === 'safari') {
48
+ return /*#__PURE__*/_jsx(Shortcut, {
49
+ content: "command+option+R"
50
+ });
34
51
  }
52
+ return /*#__PURE__*/_jsx(Shortcut, {
53
+ content: "command+option+R"
54
+ });
55
+ }
56
+ if (browser?.os?.includes('Windows')) {
57
+ return /*#__PURE__*/_jsxs(_Fragment, {
58
+ children: [/*#__PURE__*/_jsx(Shortcut, {
59
+ content: "control+shift+R"
60
+ }), " or ", /*#__PURE__*/_jsx(Shortcut, {
61
+ content: "control+F5"
62
+ })]
63
+ });
64
+ }
35
65
  };
36
- const RefreshIndicator = ({ hideWarning, logAndWarnAfterSeconds, warningClassName, warningMessage, label, labelClassName, loaderSize, loaderStyle }) => {
37
- const [seconds, setSeconds] = (0, react_1.useState)(0);
38
- const [hasLogged, setHasLogged] = (0, react_1.useState)(false);
39
- const localLogAndWarnAfterSeconds = logAndWarnAfterSeconds !== undefined ? logAndWarnAfterSeconds : 15;
40
- // every time seconds changes, set a 1 sec interval for the next second, a.k.a re-render every second
41
- (0, react_1.useEffect)(() => {
42
- const interval = setInterval(() => {
43
- setSeconds(seconds => seconds + 1);
44
- }, 1000);
45
- return () => clearInterval(interval);
46
- }, [seconds]);
47
- const shouldLog = seconds >= localLogAndWarnAfterSeconds;
48
- const shouldWarn = shouldLog && !hideWarning;
49
- // log an exception one time, if component has been rendered at least `warnAfterSeconds`
50
- (0, react_1.useEffect)(() => {
51
- if (!hasLogged && shouldLog) {
52
- const error = new Error(`Loading for more than ${localLogAndWarnAfterSeconds} seconds`);
53
- const logger = (0, logger_1.getLogger)();
54
- logger.warn(error);
55
- Sentry.captureException(error);
56
- setHasLogged(true);
57
- }
58
- }, [hasLogged, localLogAndWarnAfterSeconds, seconds, shouldLog, shouldWarn]);
59
- const refreshShortcut = getRefreshShortcut();
60
- const hardRefreshShortcut = getHardRefreshShortcut();
61
- const lockDownBrowserInfo = (0, lockDownBrowser_1.getLockDownBrowserInfo)();
62
- return ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(CircularProgress_1.default, { size: loaderSize !== null && loaderSize !== void 0 ? loaderSize : 40, style: loaderStyle !== null && loaderStyle !== void 0 ? loaderStyle : {
63
- display: 'inherit',
64
- position: 'relative',
65
- margin: '2rem auto 1rem'
66
- } }), label && (0, jsx_runtime_1.jsx)("p", { className: `tc i f4${labelClassName ? ` ${labelClassName}` : ''}`, children: label }), shouldWarn && ((0, jsx_runtime_1.jsx)("div", { "aria-live": "polite", children: warningMessage !== null && warningMessage !== void 0 ? warningMessage : ((0, jsx_runtime_1.jsxs)("div", { className: `tl center mw7 ph5${warningClassName ? ` ${warningClassName}` : ''}`, children: [(0, jsx_runtime_1.jsx)("h2", { children: "Stuck loading?" }), (0, jsx_runtime_1.jsx)("p", { className: "mb3", children: "If the page does not finish loading soon, please try one of the following:" }), (0, jsx_runtime_1.jsxs)("ul", { className: "mb3", children: [(0, jsx_runtime_1.jsxs)("li", { className: !refreshShortcut && !!hardRefreshShortcut ? 'mb2' : '', children: ["Refresh the page", refreshShortcut ? (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [", ", refreshShortcut] }) : ''] }), !lockDownBrowserInfo.isClientLockDownBrowser ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [hardRefreshShortcut && (0, jsx_runtime_1.jsxs)("li", { children: ["\"Hard Refresh\" the page, ", hardRefreshShortcut] }), (0, jsx_runtime_1.jsx)("li", { className: !!refreshShortcut || !!hardRefreshShortcut ? 'mb2' : '', children: "Try a different browser" }), (0, jsx_runtime_1.jsx)("li", { children: "Clear your browser cache and then refresh" })] })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("li", { children: "Close and re-open LockDown Browser" }), (0, jsx_runtime_1.jsx)("li", { children: "Restart your computer and then re-open LockDown Browser" })] }))] }), (0, jsx_runtime_1.jsxs)("p", { className: "mb3", children: ["If you are still experiencing loading issues, please contact us at", ' ', (0, jsx_runtime_1.jsx)("a", { href: "mailto:tlt@purdue.edu", children: "tlt@purdue.edu" }), "."] })] })) }))] }));
66
+ export const RefreshIndicator = t0 => {
67
+ const $ = _c(32);
68
+ const {
69
+ hideWarning,
70
+ logAndWarnAfterSeconds,
71
+ warningClassName,
72
+ warningMessage,
73
+ label,
74
+ labelClassName,
75
+ loaderSize,
76
+ loaderStyle
77
+ } = t0;
78
+ const [seconds, setSeconds] = useState(0);
79
+ const [hasLogged, setHasLogged] = useState(false);
80
+ const localLogAndWarnAfterSeconds = logAndWarnAfterSeconds !== undefined ? logAndWarnAfterSeconds : 15;
81
+ let t1;
82
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
83
+ t1 = () => {
84
+ const interval = setInterval(() => {
85
+ setSeconds(_temp);
86
+ }, 1000);
87
+ return () => clearInterval(interval);
88
+ };
89
+ $[0] = t1;
90
+ } else {
91
+ t1 = $[0];
92
+ }
93
+ let t2;
94
+ if ($[1] !== seconds) {
95
+ t2 = [seconds];
96
+ $[1] = seconds;
97
+ $[2] = t2;
98
+ } else {
99
+ t2 = $[2];
100
+ }
101
+ useEffect(t1, t2);
102
+ const shouldLog = seconds >= localLogAndWarnAfterSeconds;
103
+ const shouldWarn = shouldLog && !hideWarning;
104
+ let t3;
105
+ if ($[3] !== hasLogged || $[4] !== localLogAndWarnAfterSeconds || $[5] !== shouldLog) {
106
+ t3 = () => {
107
+ if (!hasLogged && shouldLog) {
108
+ const error = new Error(`Loading for more than ${localLogAndWarnAfterSeconds} seconds`);
109
+ const logger = getLogger();
110
+ logger.warn(error);
111
+ Sentry.captureException(error);
112
+ setHasLogged(true);
113
+ }
114
+ };
115
+ $[3] = hasLogged;
116
+ $[4] = localLogAndWarnAfterSeconds;
117
+ $[5] = shouldLog;
118
+ $[6] = t3;
119
+ } else {
120
+ t3 = $[6];
121
+ }
122
+ let t4;
123
+ if ($[7] !== hasLogged || $[8] !== localLogAndWarnAfterSeconds || $[9] !== seconds || $[10] !== shouldLog || $[11] !== shouldWarn) {
124
+ t4 = [hasLogged, localLogAndWarnAfterSeconds, seconds, shouldLog, shouldWarn];
125
+ $[7] = hasLogged;
126
+ $[8] = localLogAndWarnAfterSeconds;
127
+ $[9] = seconds;
128
+ $[10] = shouldLog;
129
+ $[11] = shouldWarn;
130
+ $[12] = t4;
131
+ } else {
132
+ t4 = $[12];
133
+ }
134
+ useEffect(t3, t4);
135
+ let t5;
136
+ if ($[13] === Symbol.for("react.memo_cache_sentinel")) {
137
+ t5 = getRefreshShortcut();
138
+ $[13] = t5;
139
+ } else {
140
+ t5 = $[13];
141
+ }
142
+ const refreshShortcut = t5;
143
+ let t6;
144
+ if ($[14] === Symbol.for("react.memo_cache_sentinel")) {
145
+ t6 = getHardRefreshShortcut();
146
+ $[14] = t6;
147
+ } else {
148
+ t6 = $[14];
149
+ }
150
+ const hardRefreshShortcut = t6;
151
+ let t7;
152
+ if ($[15] === Symbol.for("react.memo_cache_sentinel")) {
153
+ t7 = getLockDownBrowserInfo();
154
+ $[15] = t7;
155
+ } else {
156
+ t7 = $[15];
157
+ }
158
+ const lockDownBrowserInfo = t7;
159
+ const t8 = loaderSize ?? 40;
160
+ let t9;
161
+ if ($[16] !== loaderStyle) {
162
+ t9 = loaderStyle ?? {
163
+ display: "inherit",
164
+ position: "relative",
165
+ margin: "2rem auto 1rem"
166
+ };
167
+ $[16] = loaderStyle;
168
+ $[17] = t9;
169
+ } else {
170
+ t9 = $[17];
171
+ }
172
+ let t10;
173
+ if ($[18] !== t8 || $[19] !== t9) {
174
+ t10 = /*#__PURE__*/_jsx(CircularProgress, {
175
+ size: t8,
176
+ style: t9
177
+ });
178
+ $[18] = t8;
179
+ $[19] = t9;
180
+ $[20] = t10;
181
+ } else {
182
+ t10 = $[20];
183
+ }
184
+ let t11;
185
+ if ($[21] !== label || $[22] !== labelClassName) {
186
+ t11 = label && /*#__PURE__*/_jsx("p", {
187
+ className: `tc i f4${labelClassName ? ` ${labelClassName}` : ""}`,
188
+ children: label
189
+ });
190
+ $[21] = label;
191
+ $[22] = labelClassName;
192
+ $[23] = t11;
193
+ } else {
194
+ t11 = $[23];
195
+ }
196
+ let t12;
197
+ if ($[24] !== shouldWarn || $[25] !== warningClassName || $[26] !== warningMessage) {
198
+ t12 = shouldWarn && /*#__PURE__*/_jsx("div", {
199
+ "aria-live": "polite",
200
+ children: warningMessage ?? /*#__PURE__*/_jsxs("div", {
201
+ className: `tl center mw7 ph5${warningClassName ? ` ${warningClassName}` : ""}`,
202
+ children: [/*#__PURE__*/_jsx("h2", {
203
+ children: "Stuck loading?"
204
+ }), /*#__PURE__*/_jsx("p", {
205
+ className: "mb3",
206
+ children: "If the page does not finish loading soon, please try one of the following:"
207
+ }), /*#__PURE__*/_jsxs("ul", {
208
+ className: "mb3",
209
+ children: [/*#__PURE__*/_jsxs("li", {
210
+ className: !refreshShortcut && !!hardRefreshShortcut ? "mb2" : "",
211
+ children: ["Refresh the page", refreshShortcut ? /*#__PURE__*/_jsxs(_Fragment, {
212
+ children: [", ", refreshShortcut]
213
+ }) : ""]
214
+ }), !lockDownBrowserInfo.isClientLockDownBrowser ? /*#__PURE__*/_jsxs(_Fragment, {
215
+ children: [hardRefreshShortcut && /*#__PURE__*/_jsxs("li", {
216
+ children: ["\"Hard Refresh\" the page, ", hardRefreshShortcut]
217
+ }), /*#__PURE__*/_jsx("li", {
218
+ className: !!refreshShortcut || !!hardRefreshShortcut ? "mb2" : "",
219
+ children: "Try a different browser"
220
+ }), /*#__PURE__*/_jsx("li", {
221
+ children: "Clear your browser cache and then refresh"
222
+ })]
223
+ }) : /*#__PURE__*/_jsxs(_Fragment, {
224
+ children: [/*#__PURE__*/_jsx("li", {
225
+ children: "Close and re-open LockDown Browser"
226
+ }), /*#__PURE__*/_jsx("li", {
227
+ children: "Restart your computer and then re-open LockDown Browser"
228
+ })]
229
+ })]
230
+ }), /*#__PURE__*/_jsxs("p", {
231
+ className: "mb3",
232
+ children: ["If you are still experiencing loading issues, please contact us at", " ", /*#__PURE__*/_jsx("a", {
233
+ href: "mailto:tlt@purdue.edu",
234
+ children: "tlt@purdue.edu"
235
+ }), "."]
236
+ })]
237
+ })
238
+ });
239
+ $[24] = shouldWarn;
240
+ $[25] = warningClassName;
241
+ $[26] = warningMessage;
242
+ $[27] = t12;
243
+ } else {
244
+ t12 = $[27];
245
+ }
246
+ let t13;
247
+ if ($[28] !== t10 || $[29] !== t11 || $[30] !== t12) {
248
+ t13 = /*#__PURE__*/_jsxs("div", {
249
+ children: [t10, t11, t12]
250
+ });
251
+ $[28] = t10;
252
+ $[29] = t11;
253
+ $[30] = t12;
254
+ $[31] = t13;
255
+ } else {
256
+ t13 = $[31];
257
+ }
258
+ return t13;
67
259
  };
68
- exports.RefreshIndicator = RefreshIndicator;
260
+ function _temp(seconds_0) {
261
+ return seconds_0 + 1;
262
+ }
263
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDaXJjdWxhclByb2dyZXNzIiwiU2VudHJ5IiwiZGV0ZWN0IiwiUmVhY3QiLCJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsImdldExvY2tEb3duQnJvd3NlckluZm8iLCJnZXRMb2dnZXIiLCJqc3giLCJfanN4IiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJqc3hzIiwiX2pzeHMiLCJTaG9ydGN1dCIsInQwIiwiJCIsIl9jIiwiY29udGVudCIsInQxIiwiY2xhc3NOYW1lIiwiY2hpbGRyZW4iLCJnZXRSZWZyZXNoU2hvcnRjdXQiLCJicm93c2VyIiwib3MiLCJpbmNsdWRlcyIsImdldEhhcmRSZWZyZXNoU2hvcnRjdXQiLCJuYW1lIiwiUmVmcmVzaEluZGljYXRvciIsImhpZGVXYXJuaW5nIiwibG9nQW5kV2FybkFmdGVyU2Vjb25kcyIsIndhcm5pbmdDbGFzc05hbWUiLCJ3YXJuaW5nTWVzc2FnZSIsImxhYmVsIiwibGFiZWxDbGFzc05hbWUiLCJsb2FkZXJTaXplIiwibG9hZGVyU3R5bGUiLCJzZWNvbmRzIiwic2V0U2Vjb25kcyIsImhhc0xvZ2dlZCIsInNldEhhc0xvZ2dlZCIsImxvY2FsTG9nQW5kV2FybkFmdGVyU2Vjb25kcyIsInVuZGVmaW5lZCIsIlN5bWJvbCIsImZvciIsImludGVydmFsIiwic2V0SW50ZXJ2YWwiLCJfdGVtcCIsImNsZWFySW50ZXJ2YWwiLCJ0MiIsInNob3VsZExvZyIsInNob3VsZFdhcm4iLCJ0MyIsImVycm9yIiwiRXJyb3IiLCJsb2dnZXIiLCJ3YXJuIiwiY2FwdHVyZUV4Y2VwdGlvbiIsInQ0IiwidDUiLCJyZWZyZXNoU2hvcnRjdXQiLCJ0NiIsImhhcmRSZWZyZXNoU2hvcnRjdXQiLCJ0NyIsImxvY2tEb3duQnJvd3NlckluZm8iLCJ0OCIsInQ5IiwiZGlzcGxheSIsInBvc2l0aW9uIiwibWFyZ2luIiwidDEwIiwic2l6ZSIsInN0eWxlIiwidDExIiwidDEyIiwiaXNDbGllbnRMb2NrRG93bkJyb3dzZXIiLCJocmVmIiwidDEzIiwic2Vjb25kc18wIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvUmVmcmVzaEluZGljYXRvci9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENpcmN1bGFyUHJvZ3Jlc3MgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvQ2lyY3VsYXJQcm9ncmVzcydcbmltcG9ydCAqIGFzIFNlbnRyeSBmcm9tICdAc2VudHJ5L3JlYWN0J1xuaW1wb3J0IHsgZGV0ZWN0IH0gZnJvbSAnZGV0ZWN0LWJyb3dzZXInXG5pbXBvcnQgUmVhY3QsIHsgRnVuY3Rpb25Db21wb25lbnQsIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGdldExvY2tEb3duQnJvd3NlckluZm8gfSBmcm9tICcuLi8uLi91dGlscy9sb2NrRG93bkJyb3dzZXInXG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tICcuLi8uLi91dGlscy9sb2dnZXInXG5cbmNvbnN0IFNob3J0Y3V0ID0gKHsgY29udGVudCB9OiB7IGNvbnRlbnQ6IHN0cmluZyB8IFJlYWN0LkpTWC5FbGVtZW50IH0pID0+IChcblx0PHNwYW4gY2xhc3NOYW1lPVwidGFnIG1hMCBtYjFcIj57Y29udGVudH08L3NwYW4+XG4pXG5cbmNvbnN0IGdldFJlZnJlc2hTaG9ydGN1dCA9ICgpID0+IHtcblx0Y29uc3QgYnJvd3NlciA9IGRldGVjdCgpXG5cdGlmIChicm93c2VyPy5vcyA9PT0gJ01hYyBPUycpIHtcblx0XHRyZXR1cm4gPFNob3J0Y3V0IGNvbnRlbnQ9XCJjb21tYW5kK1JcIiAvPlxuXHR9XG5cdGlmIChicm93c2VyPy5vcz8uaW5jbHVkZXMoJ1dpbmRvd3MnKSkge1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8PlxuXHRcdFx0XHQ8U2hvcnRjdXQgY29udGVudD1cImNvbnRyb2wrUlwiIC8+IG9yIDxTaG9ydGN1dCBjb250ZW50PVwiRjVcIiAvPlxuXHRcdFx0PC8+XG5cdFx0KVxuXHR9XG59XG5cbmNvbnN0IGdldEhhcmRSZWZyZXNoU2hvcnRjdXQgPSAoKSA9PiB7XG5cdGNvbnN0IGJyb3dzZXIgPSBkZXRlY3QoKVxuXHRpZiAoYnJvd3Nlcj8ub3MgPT09ICdNYWMgT1MnKSB7XG5cdFx0aWYgKGJyb3dzZXIubmFtZSA9PT0gJ3NhZmFyaScpIHtcblx0XHRcdHJldHVybiA8U2hvcnRjdXQgY29udGVudD1cImNvbW1hbmQrb3B0aW9uK1JcIiAvPlxuXHRcdH1cblx0XHRyZXR1cm4gPFNob3J0Y3V0IGNvbnRlbnQ9XCJjb21tYW5kK29wdGlvbitSXCIgLz5cblx0fVxuXHRpZiAoYnJvd3Nlcj8ub3M/LmluY2x1ZGVzKCdXaW5kb3dzJykpIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PD5cblx0XHRcdFx0PFNob3J0Y3V0IGNvbnRlbnQ9XCJjb250cm9sK3NoaWZ0K1JcIiAvPiBvciA8U2hvcnRjdXQgY29udGVudD1cImNvbnRyb2wrRjVcIiAvPlxuXHRcdFx0PC8+XG5cdFx0KVxuXHR9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVmcmVzaEluZGljYXRvclByb3BzIHtcblx0LyoqIEFuIGVycm9yIHdpbGwgc3RpbGwgYmUgbG9nZ2VkIHRvIFNlbnRyeSBhZnRlciBgd2FybkFmdGVyU2Vjb25kc2AsIGJ1dCBubyB3YXJuaW5nIHdpbGwgYmUgZGlzYWJsZWQuICovXG5cdGhpZGVXYXJuaW5nPzogYm9vbGVhblxuXHQvKiogQW1vdW50IG9mIHNlY29uZHMgdGhlIGNvbXBvbmVudCBjYW4gYmUgcmVuZGVyZWQgYmVmb3JlIHRoZSB3YXJuaW5nIGlzIHNob3duIGFuZCBhbiBlcnJvciBpcyBsb2dnZWQgdG8gU2VudHJ5LiBEZWZhdWx0IGlzIDE1IHNlY29uZHMuICovXG5cdGxvZ0FuZFdhcm5BZnRlclNlY29uZHM/OiBudW1iZXJcblx0LyoqIEFkZGl0aW9uYWwgY2xhc3NlcyB0byBhZGQgdGhlIHRoZSBkZWZhdWx0IHdhcm5pbmcgY29tcG9uZW50LiBEb2VzIG5vdCBhcHBseSBpZiBgd2FybmluZ01lc3NhZ2VgIGlzIHByb3ZpZGVkLiAqL1xuXHR3YXJuaW5nQ2xhc3NOYW1lPzogc3RyaW5nXG5cdC8qKiBBbiBhbHRlcm5hdGl2ZSBtZXNzYWdlIHRvIGRpc3BsYXkgYWZ0ZXIgYHdhcm5BZnRlclNlY29uZHNgLiAqL1xuXHR3YXJuaW5nTWVzc2FnZT86IHN0cmluZyB8IFJlYWN0LkpTWC5FbGVtZW50XG5cdC8qKiBBIGxhYmVsIHRvIGRpc3BsYXkgdW5kZXIgdGhlIENpcmN1bGFyUHJvZ3Jlc3MgaW5kaWNhdG9yLiAqL1xuXHRsYWJlbD86IHN0cmluZyB8IFJlYWN0LkpTWC5FbGVtZW50XG5cdC8qKiBBZGRpdGlvbmFsIGNsYXNzZXMgdG8gYWRkIHRvIHRoZSBgbGFiZWxgJ3MgY29udGFpbmluZyBgcGAuICovXG5cdGxhYmVsQ2xhc3NOYW1lPzogc3RyaW5nXG5cdC8qKiBPcHRpb25hbCBzaXplIGZvciB0aGUgYENpcmN1bGFyUHJvZ3Jlc3NgIGxvYWRlci4gRGVmYXVsdCBpcyA0MC4gKi9cblx0bG9hZGVyU2l6ZT86IG51bWJlclxuXHQvKiogT3B0aW9uYWwgc3R5bGUgZm9yIHRoZSBgQ2lyY3VsYXJQcm9ncmVzc2AgbG9hZGVyLiAqL1xuXHRsb2FkZXJTdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXNcbn1cblxuZXhwb3J0IGNvbnN0IFJlZnJlc2hJbmRpY2F0b3I6IEZ1bmN0aW9uQ29tcG9uZW50PFJlZnJlc2hJbmRpY2F0b3JQcm9wcz4gPSAoe1xuXHRoaWRlV2FybmluZyxcblx0bG9nQW5kV2FybkFmdGVyU2Vjb25kcyxcblx0d2FybmluZ0NsYXNzTmFtZSxcblx0d2FybmluZ01lc3NhZ2UsXG5cdGxhYmVsLFxuXHRsYWJlbENsYXNzTmFtZSxcblx0bG9hZGVyU2l6ZSxcblx0bG9hZGVyU3R5bGVcbn0pID0+IHtcblx0Y29uc3QgW3NlY29uZHMsIHNldFNlY29uZHNdID0gdXNlU3RhdGUoMClcblx0Y29uc3QgW2hhc0xvZ2dlZCwgc2V0SGFzTG9nZ2VkXSA9IHVzZVN0YXRlKGZhbHNlKVxuXHRjb25zdCBsb2NhbExvZ0FuZFdhcm5BZnRlclNlY29uZHMgPSBsb2dBbmRXYXJuQWZ0ZXJTZWNvbmRzICE9PSB1bmRlZmluZWQgPyBsb2dBbmRXYXJuQWZ0ZXJTZWNvbmRzIDogMTVcblxuXHQvLyBldmVyeSB0aW1lIHNlY29uZHMgY2hhbmdlcywgc2V0IGEgMSBzZWMgaW50ZXJ2YWwgZm9yIHRoZSBuZXh0IHNlY29uZCwgYS5rLmEgcmUtcmVuZGVyIGV2ZXJ5IHNlY29uZFxuXHR1c2VFZmZlY3QoKCkgPT4ge1xuXHRcdGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuXHRcdFx0c2V0U2Vjb25kcyhzZWNvbmRzID0+IHNlY29uZHMgKyAxKVxuXHRcdH0sIDEwMDApXG5cdFx0cmV0dXJuICgpID0+IGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpXG5cdH0sIFtzZWNvbmRzXSlcblxuXHRjb25zdCBzaG91bGRMb2cgPSBzZWNvbmRzID49IGxvY2FsTG9nQW5kV2FybkFmdGVyU2Vjb25kc1xuXHRjb25zdCBzaG91bGRXYXJuID0gc2hvdWxkTG9nICYmICFoaWRlV2FybmluZ1xuXG5cdC8vIGxvZyBhbiBleGNlcHRpb24gb25lIHRpbWUsIGlmIGNvbXBvbmVudCBoYXMgYmVlbiByZW5kZXJlZCBhdCBsZWFzdCBgd2FybkFmdGVyU2Vjb25kc2Bcblx0dXNlRWZmZWN0KCgpID0+IHtcblx0XHRpZiAoIWhhc0xvZ2dlZCAmJiBzaG91bGRMb2cpIHtcblx0XHRcdGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGBMb2FkaW5nIGZvciBtb3JlIHRoYW4gJHtsb2NhbExvZ0FuZFdhcm5BZnRlclNlY29uZHN9IHNlY29uZHNgKVxuXHRcdFx0Y29uc3QgbG9nZ2VyID0gZ2V0TG9nZ2VyKClcblx0XHRcdGxvZ2dlci53YXJuKGVycm9yKVxuXHRcdFx0U2VudHJ5LmNhcHR1cmVFeGNlcHRpb24oZXJyb3IpXG5cdFx0XHRzZXRIYXNMb2dnZWQodHJ1ZSlcblx0XHR9XG5cdH0sIFtoYXNMb2dnZWQsIGxvY2FsTG9nQW5kV2FybkFmdGVyU2Vjb25kcywgc2Vjb25kcywgc2hvdWxkTG9nLCBzaG91bGRXYXJuXSlcblxuXHRjb25zdCByZWZyZXNoU2hvcnRjdXQgPSBnZXRSZWZyZXNoU2hvcnRjdXQoKVxuXHRjb25zdCBoYXJkUmVmcmVzaFNob3J0Y3V0ID0gZ2V0SGFyZFJlZnJlc2hTaG9ydGN1dCgpXG5cdGNvbnN0IGxvY2tEb3duQnJvd3NlckluZm8gPSBnZXRMb2NrRG93bkJyb3dzZXJJbmZvKClcblxuXHRyZXR1cm4gKFxuXHRcdDxkaXY+XG5cdFx0XHQ8Q2lyY3VsYXJQcm9ncmVzc1xuXHRcdFx0XHRzaXplPXtsb2FkZXJTaXplID8/IDQwfVxuXHRcdFx0XHRzdHlsZT17XG5cdFx0XHRcdFx0bG9hZGVyU3R5bGUgPz8ge1xuXHRcdFx0XHRcdFx0ZGlzcGxheTogJ2luaGVyaXQnLFxuXHRcdFx0XHRcdFx0cG9zaXRpb246ICdyZWxhdGl2ZScsXG5cdFx0XHRcdFx0XHRtYXJnaW46ICcycmVtIGF1dG8gMXJlbSdcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdC8+XG5cdFx0XHR7bGFiZWwgJiYgPHAgY2xhc3NOYW1lPXtgdGMgaSBmNCR7bGFiZWxDbGFzc05hbWUgPyBgICR7bGFiZWxDbGFzc05hbWV9YCA6ICcnfWB9PntsYWJlbH08L3A+fVxuXHRcdFx0e3Nob3VsZFdhcm4gJiYgKFxuXHRcdFx0XHQ8ZGl2IGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuXHRcdFx0XHRcdHt3YXJuaW5nTWVzc2FnZSA/PyAoXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT17YHRsIGNlbnRlciBtdzcgcGg1JHt3YXJuaW5nQ2xhc3NOYW1lID8gYCAke3dhcm5pbmdDbGFzc05hbWV9YCA6ICcnfWB9PlxuXHRcdFx0XHRcdFx0XHQ8aDI+U3R1Y2sgbG9hZGluZz88L2gyPlxuXHRcdFx0XHRcdFx0XHQ8cCBjbGFzc05hbWU9XCJtYjNcIj5cblx0XHRcdFx0XHRcdFx0XHRJZiB0aGUgcGFnZSBkb2VzIG5vdCBmaW5pc2ggbG9hZGluZyBzb29uLCBwbGVhc2UgdHJ5IG9uZSBvZiB0aGUgZm9sbG93aW5nOlxuXHRcdFx0XHRcdFx0XHQ8L3A+XG5cdFx0XHRcdFx0XHRcdDx1bCBjbGFzc05hbWU9XCJtYjNcIj5cblx0XHRcdFx0XHRcdFx0XHQ8bGkgY2xhc3NOYW1lPXshcmVmcmVzaFNob3J0Y3V0ICYmICEhaGFyZFJlZnJlc2hTaG9ydGN1dCA/ICdtYjInIDogJyd9PlxuXHRcdFx0XHRcdFx0XHRcdFx0UmVmcmVzaCB0aGUgcGFnZXtyZWZyZXNoU2hvcnRjdXQgPyA8Piwge3JlZnJlc2hTaG9ydGN1dH08Lz4gOiAnJ31cblx0XHRcdFx0XHRcdFx0XHQ8L2xpPlxuXHRcdFx0XHRcdFx0XHRcdHshbG9ja0Rvd25Ccm93c2VySW5mby5pc0NsaWVudExvY2tEb3duQnJvd3NlciA/IChcblx0XHRcdFx0XHRcdFx0XHRcdDw+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHtoYXJkUmVmcmVzaFNob3J0Y3V0ICYmIDxsaT5cIkhhcmQgUmVmcmVzaFwiIHRoZSBwYWdlLCB7aGFyZFJlZnJlc2hTaG9ydGN1dH08L2xpPn1cblx0XHRcdFx0XHRcdFx0XHRcdFx0PGxpIGNsYXNzTmFtZT17ISFyZWZyZXNoU2hvcnRjdXQgfHwgISFoYXJkUmVmcmVzaFNob3J0Y3V0ID8gJ21iMicgOiAnJ30+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0VHJ5IGEgZGlmZmVyZW50IGJyb3dzZXJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9saT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PGxpPkNsZWFyIHlvdXIgYnJvd3NlciBjYWNoZSBhbmQgdGhlbiByZWZyZXNoPC9saT5cblx0XHRcdFx0XHRcdFx0XHRcdDwvPlxuXHRcdFx0XHRcdFx0XHRcdCkgOiAoXG5cdFx0XHRcdFx0XHRcdFx0XHQ8PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8bGk+Q2xvc2UgYW5kIHJlLW9wZW4gTG9ja0Rvd24gQnJvd3NlcjwvbGk+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxsaT5SZXN0YXJ0IHlvdXIgY29tcHV0ZXIgYW5kIHRoZW4gcmUtb3BlbiBMb2NrRG93biBCcm93c2VyPC9saT5cblx0XHRcdFx0XHRcdFx0XHRcdDwvPlxuXHRcdFx0XHRcdFx0XHRcdCl9XG5cdFx0XHRcdFx0XHRcdDwvdWw+XG5cdFx0XHRcdFx0XHRcdDxwIGNsYXNzTmFtZT1cIm1iM1wiPlxuXHRcdFx0XHRcdFx0XHRcdElmIHlvdSBhcmUgc3RpbGwgZXhwZXJpZW5jaW5nIGxvYWRpbmcgaXNzdWVzLCBwbGVhc2UgY29udGFjdCB1cyBhdHsnICd9XG5cdFx0XHRcdFx0XHRcdFx0PGEgaHJlZj1cIm1haWx0bzp0bHRAcHVyZHVlLmVkdVwiPnRsdEBwdXJkdWUuZWR1PC9hPi5cblx0XHRcdFx0XHRcdFx0PC9wPlxuXHRcdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0KX1cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQpfVxuXHRcdDwvZGl2PlxuXHQpXG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPQSxnQkFBZ0IsTUFBTSxvQ0FBb0M7QUFDakUsT0FBTyxLQUFLQyxNQUFNLE1BQU0sZUFBZTtBQUN2QyxTQUFTQyxNQUFNLFFBQVEsZ0JBQWdCO0FBQ3ZDLE9BQU9DLEtBQUssSUFBdUJDLFNBQVMsRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDckUsU0FBU0Msc0JBQXNCLFFBQVEsNkJBQTZCO0FBQ3BFLFNBQVNDLFNBQVMsUUFBUSxvQkFBb0I7QUFBQSxTQUFBQyxHQUFBLElBQUFDLElBQUEsRUFBQUMsUUFBQSxJQUFBQyxTQUFBLEVBQUFDLElBQUEsSUFBQUMsS0FBQTtBQUU5QyxNQUFNQyxRQUFRLEdBQUdDLEVBQUE7RUFBQSxNQUFBQyxDQUFBLEdBQUFDLEVBQUE7RUFBQztJQUFBQztFQUFBLElBQUFILEVBQW9EO0VBQUEsSUFBQUksRUFBQTtFQUFBLElBQUFILENBQUEsUUFBQUUsT0FBQTtJQUNyRUMsRUFBQSxnQkFBQVYsSUFBQTtNQUFnQlcsU0FBYSxFQUFiLGFBQWE7TUFBQUMsUUFBQSxFQUFFSDtJQUFPLENBQU8sQ0FBQztJQUFB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