studiokit-scaffolding-js 7.0.14-alpha.1 → 7.1.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.
- package/lib/components/ActionList.d.ts +2 -2
- package/lib/components/ActionList.js +166 -87
- package/lib/components/AlertDialog.d.ts +3 -3
- package/lib/components/AlertDialog.js +133 -18
- package/lib/components/AlertWithIcon.js +93 -52
- package/lib/components/ConnectedModal.d.ts +1 -2
- package/lib/components/ConnectedModal.js +41 -35
- package/lib/components/Dropdowns/GroupsDropdown.d.ts +4 -4
- package/lib/components/Dropdowns/GroupsDropdown.js +69 -82
- package/lib/components/Dropdowns/ManagedNavDropdown.d.ts +2 -2
- package/lib/components/Dropdowns/ManagedNavDropdown.js +96 -108
- package/lib/components/Dropdowns/UserDropdown.js +109 -70
- package/lib/components/Dropdowns/index.js +27 -11
- package/lib/components/EntityOwnerList.d.ts +3 -3
- package/lib/components/EntityOwnerList.js +52 -60
- package/lib/components/Error.js +107 -27
- package/lib/components/ErrorBoundary.js +133 -94
- package/lib/components/ErrorMessage.d.ts +2 -2
- package/lib/components/ErrorMessage.js +44 -14
- package/lib/components/Forms/DateField.d.ts +2 -2
- package/lib/components/Forms/DateField.js +63 -95
- package/lib/components/Forms/TimeField.d.ts +2 -2
- package/lib/components/Forms/TimeField.js +84 -108
- package/lib/components/Forms/index.js +27 -13
- package/lib/components/Groups/CreateEditCopySaveButtons.d.ts +2 -2
- package/lib/components/Groups/CreateEditCopySaveButtons.js +102 -14
- package/lib/components/Groups/ExternalGroups/Attach.d.ts +6 -7
- package/lib/components/Groups/ExternalGroups/Attach.js +213 -188
- package/lib/components/Groups/ExternalGroups/Table.js +183 -76
- package/lib/components/Groups/GroupCreateOrEditCommonProps.js +5 -1
- package/lib/components/Groups/RosterSyncInfo.js +140 -49
- package/lib/components/HOC/AccessibleAppComponent.d.ts +2 -2
- package/lib/components/HOC/AccessibleAppComponent.js +96 -119
- package/lib/components/HOC/ActivityRequiredComponent.d.ts +14 -14
- package/lib/components/HOC/ActivityRequiredComponent.js +72 -86
- package/lib/components/HOC/AsyncComponent.d.ts +9 -9
- package/lib/components/HOC/AsyncComponent.js +53 -129
- package/lib/components/HOC/AuthenticatedComponent.d.ts +4 -4
- package/lib/components/HOC/AuthenticatedComponent.js +59 -96
- package/lib/components/HOC/CollectionComponent.d.ts +12 -12
- package/lib/components/HOC/CollectionComponent.js +161 -161
- package/lib/components/HOC/CollectionFirstItemComponent.d.ts +13 -13
- package/lib/components/HOC/CollectionFirstItemComponent.js +49 -91
- package/lib/components/HOC/CollectionItemComponent.d.ts +9 -9
- package/lib/components/HOC/CollectionItemComponent.js +159 -158
- package/lib/components/HOC/ConnectedModalComponent.d.ts +9 -9
- package/lib/components/HOC/ConnectedModalComponent.js +96 -126
- package/lib/components/HOC/DataDependentComponent.d.ts +3 -55
- package/lib/components/HOC/DataDependentComponent.js +30 -79
- package/lib/components/HOC/EntityComponent.d.ts +13 -13
- package/lib/components/HOC/EntityComponent.js +63 -101
- package/lib/components/HOC/FullscreenModalComponent.d.ts +9 -9
- package/lib/components/HOC/FullscreenModalComponent.js +145 -165
- package/lib/components/HOC/GroupActivityRequiredComponent.d.ts +2 -2
- package/lib/components/HOC/GroupActivityRequiredComponent.js +32 -31
- package/lib/components/HOC/GuidComponent.d.ts +1 -1
- package/lib/components/HOC/GuidComponent.js +25 -64
- package/lib/components/HOC/ModelContextDependencyVerifyComponent.d.ts +28 -29
- package/lib/components/HOC/ModelContextDependencyVerifyComponent.js +36 -59
- package/lib/components/HOC/ModelErrorRedirectComponent.d.ts +10 -10
- package/lib/components/HOC/ModelErrorRedirectComponent.js +40 -83
- package/lib/components/HOC/SearchPersistorComponent.d.ts +4 -4
- package/lib/components/HOC/SearchPersistorComponent.js +243 -216
- package/lib/components/HOC/UnauthenticatedComponent.d.ts +12 -12
- package/lib/components/HOC/UnauthenticatedComponent.js +37 -82
- package/lib/components/HOC/UserComponent.d.ts +1 -1
- package/lib/components/HOC/UserComponent.js +12 -11
- package/lib/components/Icons/IconAlphaList.js +34 -20
- package/lib/components/Icons/IconExternalUser.js +34 -20
- package/lib/components/Icons/IconImpersonation.js +34 -20
- package/lib/components/Icons/IconStopImpersonating.js +34 -20
- package/lib/components/Icons/IconTable.js +35 -21
- package/lib/components/Icons/IconTableDeleteCol.js +34 -20
- package/lib/components/Icons/IconTableDeleteRow.js +34 -20
- package/lib/components/Icons/IconTableInsertCol.js +34 -20
- package/lib/components/Icons/IconTableInsertRow.js +34 -20
- package/lib/components/Impersonation/Button.d.ts +2 -2
- package/lib/components/Impersonation/Button.js +76 -56
- package/lib/components/Impersonation/Link.d.ts +2 -2
- package/lib/components/Impersonation/Link.js +76 -53
- package/lib/components/Impersonation/UserDetail.d.ts +2 -2
- package/lib/components/Impersonation/UserDetail.js +64 -15
- package/lib/components/Loading.js +27 -21
- package/lib/components/LockDownBrowser/Check.js +194 -107
- package/lib/components/LockDownBrowser/ExitButton.js +27 -14
- package/lib/components/LockDownBrowser/Launch.js +70 -85
- package/lib/components/Lti/Confirm.js +152 -33
- package/lib/components/Lti/CreateNonLtiGroupAlertDialog.d.ts +4 -2
- package/lib/components/Lti/CreateNonLtiGroupAlertDialog.js +170 -78
- package/lib/components/Lti/Launch.js +105 -49
- package/lib/components/Lti/LaunchGroup.js +85 -39
- package/lib/components/ManageTable.d.ts +1 -2
- package/lib/components/ManageTable.js +309 -104
- package/lib/components/ManageTableNoDataComponent.js +42 -22
- package/lib/components/NewVersionAlert.d.ts +2 -2
- package/lib/components/NewVersionAlert.js +82 -91
- package/lib/components/NotFound.js +87 -28
- package/lib/components/Notifications.d.ts +4 -4
- package/lib/components/Notifications.js +187 -169
- package/lib/components/PaginationNextButton.js +33 -21
- package/lib/components/PaginationPreviousButton.js +33 -21
- package/lib/components/Quill/CustomToolbar.d.ts +2 -2
- package/lib/components/Quill/CustomToolbar.js +432 -257
- package/lib/components/Quill/Formats/Image.d.ts +10 -25
- package/lib/components/Quill/Formats/Image.js +76 -82
- package/lib/components/Quill/Formats/List.d.ts +6 -3
- package/lib/components/Quill/Formats/List.js +50 -72
- package/lib/components/Quill/Formats/Video.d.ts +2 -1
- package/lib/components/Quill/Formats/Video.js +29 -43
- package/lib/components/Quill/ImageDropModule.d.ts +1 -1
- package/lib/components/Quill/ImageDropModule.js +142 -115
- package/lib/components/Quill/ImageWarning.d.ts +2 -2
- package/lib/components/Quill/ImageWarning.js +45 -32
- package/lib/components/Quill/ImageWithAltTextModal.d.ts +0 -1
- package/lib/components/Quill/ImageWithAltTextModal.js +425 -141
- package/lib/components/Quill/Specs/CustomImageSpec.d.ts +1 -1
- package/lib/components/Quill/Specs/CustomImageSpec.js +37 -45
- package/lib/components/Quill/Specs/CustomVideoSpec.d.ts +1 -1
- package/lib/components/Quill/Specs/CustomVideoSpec.js +27 -36
- package/lib/components/Quill/TableModule/Blots/BaseTableBlot.d.ts +2 -1
- package/lib/components/Quill/TableModule/Blots/BaseTableBlot.js +100 -116
- package/lib/components/Quill/TableModule/Blots/TableBlot.js +53 -66
- package/lib/components/Quill/TableModule/Blots/TableBodyBlot.js +54 -67
- package/lib/components/Quill/TableModule/Blots/TableCellBlot.d.ts +1 -1
- package/lib/components/Quill/TableModule/Blots/TableCellBlot.js +225 -241
- package/lib/components/Quill/TableModule/Blots/TableContainer.js +82 -99
- package/lib/components/Quill/TableModule/Blots/TableRowBlot.js +76 -87
- package/lib/components/Quill/TableModule/constants.js +45 -41
- package/lib/components/Quill/TableModule/index.css +25 -25
- package/lib/components/Quill/TableModule/index.d.ts +14 -5
- package/lib/components/Quill/TableModule/index.js +373 -313
- package/lib/components/Quill/TableModule/utils.js +45 -45
- package/lib/components/Quill/accessibilityFix.d.ts +0 -1
- package/lib/components/Quill/accessibilityFix.js +222 -238
- package/lib/components/Quill/index.js +36 -32
- package/lib/components/RefreshIndicator/Bordered.js +48 -32
- package/lib/components/RefreshIndicator/Inline.js +48 -33
- package/lib/components/RefreshIndicator/index.d.ts +2 -2
- package/lib/components/RefreshIndicator/index.js +263 -113
- package/lib/components/SearchControls.js +216 -31
- package/lib/components/SentryRoute.js +10 -23
- package/lib/components/Tables/RoleFilter.d.ts +3 -4
- package/lib/components/Tables/RoleFilter.js +71 -46
- package/lib/components/Tables/TextFilter.d.ts +2 -3
- package/lib/components/Tables/TextFilter.js +62 -20
- package/lib/components/UserRoles/Add.d.ts +3 -3
- package/lib/components/UserRoles/Add.js +199 -161
- package/lib/components/UserRoles/Context.js +8 -6
- package/lib/components/UserRoles/RoleCell.js +181 -100
- package/lib/components/UserRoles/Select.js +168 -54
- package/lib/components/UserRoles/Table.js +221 -102
- package/lib/components/UserRoles/index.d.ts +6 -6
- package/lib/components/UserRoles/index.js +535 -464
- package/lib/config/eslint/index.d.ts +2 -0
- package/lib/config/eslint/index.js +36 -0
- package/lib/config/eslint/lib/order.d.ts +3 -0
- package/lib/config/eslint/lib/order.js +30 -0
- package/lib/config/eslint/lib/prettier.d.ts +3 -0
- package/lib/config/eslint/lib/prettier.js +23 -0
- package/lib/config/eslint/lib/typescript.d.ts +2 -0
- package/lib/config/eslint/lib/typescript.js +98 -0
- package/lib/config/eslint/react.d.ts +2 -0
- package/lib/config/eslint/react.js +30 -0
- package/lib/constants/baseActivity.js +30 -26
- package/lib/constants/baseRole.js +14 -10
- package/lib/constants/configuration.d.ts +1 -1
- package/lib/constants/configuration.js +43 -39
- package/lib/constants/externalProviderType.js +10 -6
- package/lib/constants/fetchErrorData.js +15 -11
- package/lib/constants/index.js +137 -23
- package/lib/constants/lockDownBrowser.js +28 -24
- package/lib/constants/mockData.d.ts +4 -6
- package/lib/constants/mockData.js +383 -324
- package/lib/constants/modelStatus.js +15 -11
- package/lib/constants/notificationType.js +12 -8
- package/lib/constants/operatingSystem.js +12 -8
- package/lib/constants/shard.js +11 -7
- package/lib/constants/table.js +21 -21
- package/lib/constants/tier.js +12 -8
- package/lib/constants/userRole.d.ts +1 -2
- package/lib/constants/userRole.js +15 -17
- package/lib/css/components/_buttons.css +11 -3
- package/lib/css/components/_quill.css +3 -3
- package/lib/css/components/_tables.css +6 -5
- package/lib/css/utils/_display.css +12 -19
- package/lib/css/utils/_general.css +1 -1
- package/lib/css/utils/_text.css +2 -1
- package/lib/css/variables.css +0 -4
- package/lib/endpointMappings.js +197 -193
- package/lib/hooks/useCollection.js +83 -65
- package/lib/hooks/useCollectionConfiguration.d.ts +0 -1
- package/lib/hooks/useCollectionConfiguration.js +179 -82
- package/lib/hooks/useCollectionItem.js +155 -58
- package/lib/hooks/useEventCalback.d.ts +14 -0
- package/lib/hooks/useEventCalback.js +51 -0
- package/lib/hooks/useGuid.js +19 -8
- package/lib/hooks/usePrevious.d.ts +24 -1
- package/lib/hooks/usePrevious.js +82 -12
- package/lib/index.js +156 -36
- package/lib/redux/actionCreator.d.ts +6 -6
- package/lib/redux/actionCreator.js +51 -40
- package/lib/redux/actions/AuthAction.js +44 -31
- package/lib/redux/actions/ModalAction.d.ts +1 -1
- package/lib/redux/actions/ModalAction.js +10 -6
- package/lib/redux/actions/ModelAction.d.ts +1 -1
- package/lib/redux/actions/ModelAction.js +77 -49
- package/lib/redux/actions/NotificationAction.js +10 -6
- package/lib/redux/actions/SearchAction.js +9 -5
- package/lib/redux/actions/index.js +60 -16
- package/lib/redux/configureReducers.d.ts +2 -5
- package/lib/redux/configureReducers.js +61 -72
- package/lib/redux/configureStore.d.ts +2 -2
- package/lib/redux/configureStore.js +83 -115
- package/lib/redux/helpers.js +7 -2
- package/lib/redux/reducers/authReducer.js +50 -44
- package/lib/redux/reducers/index.js +41 -15
- package/lib/redux/reducers/modalsReducer.js +49 -52
- package/lib/redux/reducers/modelsReducer.d.ts +2 -2
- package/lib/redux/reducers/modelsReducer.js +136 -135
- package/lib/redux/reducers/notificationsReducer.js +26 -21
- package/lib/redux/reducers/searchReducer.js +18 -12
- package/lib/redux/sagas/appInsightsSaga.js +24 -62
- package/lib/redux/sagas/authSaga.js +287 -414
- package/lib/redux/sagas/caliperSaga.js +154 -248
- package/lib/redux/sagas/clockOffsetSaga.js +35 -76
- package/lib/redux/sagas/configurationSaga.js +13 -46
- package/lib/redux/sagas/downtimeApiErrorSaga.d.ts +0 -1
- package/lib/redux/sagas/downtimeApiErrorSaga.js +23 -64
- package/lib/redux/sagas/errorSaga.d.ts +0 -1
- package/lib/redux/sagas/errorSaga.js +29 -63
- package/lib/redux/sagas/googleAnalyticsSaga.js +29 -69
- package/lib/redux/sagas/identityProviderSaga.js +24 -69
- package/lib/redux/sagas/initialDataLoadSaga.js +38 -29
- package/lib/redux/sagas/lockDownBrowserErrorSaga.d.ts +0 -1
- package/lib/redux/sagas/lockDownBrowserErrorSaga.js +32 -81
- package/lib/redux/sagas/modelFetchSaga.js +331 -411
- package/lib/redux/sagas/noStoreSaga.d.ts +1 -1
- package/lib/redux/sagas/noStoreSaga.js +68 -101
- package/lib/redux/sagas/postLoginDataSaga.js +42 -74
- package/lib/redux/sagas/postLoginRedirectSaga.js +27 -68
- package/lib/redux/sagas/rootSaga.js +85 -137
- package/lib/redux/sagas/sentrySaga.js +29 -85
- package/lib/redux/sagas/userIdSaga.js +18 -54
- package/lib/services/codeProviderService.js +25 -29
- package/lib/services/dateService.js +12 -10
- package/lib/services/documentService.js +15 -10
- package/lib/services/fetchService.js +110 -144
- package/lib/services/persistenceService.d.ts +4 -4
- package/lib/services/persistenceService.js +45 -43
- package/lib/services/ticketProviderService.js +29 -33
- package/lib/services/tokenPersistenceService.js +13 -9
- package/lib/services/windowService.js +21 -17
- package/lib/startup.d.ts +1 -1
- package/lib/startup.js +115 -118
- package/lib/types/AppConfiguration.js +5 -1
- package/lib/types/Artifact.js +11 -7
- package/lib/types/BaseReduxState.js +5 -1
- package/lib/types/Client.js +5 -1
- package/lib/types/Collection.d.ts +3 -3
- package/lib/types/Collection.js +5 -1
- package/lib/types/Configuration.js +5 -1
- package/lib/types/DeepLinkingResponseRequest.js +5 -1
- package/lib/types/DeletableModel.js +5 -1
- package/lib/types/Event.js +5 -1
- package/lib/types/ExternalGroup.js +5 -1
- package/lib/types/ExternalProvider.js +5 -1
- package/lib/types/ExternalTerm.js +5 -1
- package/lib/types/Group.js +5 -1
- package/lib/types/IdentityProvider.js +5 -1
- package/lib/types/LtiLaunch.js +5 -1
- package/lib/types/NameOnlyEntity.js +5 -1
- package/lib/types/Notification.d.ts +2 -2
- package/lib/types/Notification.js +5 -1
- package/lib/types/OptionalRecord.d.ts +1 -1
- package/lib/types/OptionalRecord.js +5 -1
- package/lib/types/OwnerSchedule.d.ts +3 -1
- package/lib/types/OwnerSchedule.js +5 -1
- package/lib/types/PropertyOfType.d.ts +3 -3
- package/lib/types/PropertyOfType.js +5 -1
- package/lib/types/Quill.js +5 -1
- package/lib/types/RoleDescription.d.ts +0 -1
- package/lib/types/RoleDescription.js +5 -1
- package/lib/types/Search.js +5 -1
- package/lib/types/SimpleLocation.js +5 -1
- package/lib/types/UniTime.js +5 -1
- package/lib/types/User.js +5 -1
- package/lib/types/UserRole.js +5 -1
- package/lib/types/auth/AuthState.js +5 -1
- package/lib/types/auth/CasV1LoginRequestBody.js +5 -1
- package/lib/types/auth/ClientCredentials.js +5 -1
- package/lib/types/auth/CodeProviderService.js +5 -1
- package/lib/types/auth/LocalLoginRequestBody.js +5 -1
- package/lib/types/auth/TicketProviderService.js +5 -1
- package/lib/types/auth/TokenPersistenceService.js +5 -1
- package/lib/types/auth/index.js +82 -18
- package/lib/types/externals.d.js +2 -0
- package/lib/types/index.js +313 -39
- package/lib/types/net/EndpointConfig.js +5 -1
- package/lib/types/net/EndpointMapping.js +5 -1
- package/lib/types/net/EndpointMappings.js +5 -1
- package/lib/types/net/ErrorHandler.d.ts +1 -1
- package/lib/types/net/ErrorHandler.js +5 -1
- package/lib/types/net/FetchConfig.d.ts +1 -1
- package/lib/types/net/FetchConfig.js +5 -1
- package/lib/types/net/FetchErrorData.js +10 -6
- package/lib/types/net/FetchResult.d.ts +2 -2
- package/lib/types/net/FetchResult.js +5 -1
- package/lib/types/net/HTTPMethod.d.ts +1 -1
- package/lib/types/net/HTTPMethod.js +5 -1
- package/lib/types/net/HTTPStatusCode.js +16 -12
- package/lib/types/net/Metadata.js +5 -1
- package/lib/types/net/Model.js +5 -1
- package/lib/types/net/ModelCollection.js +5 -1
- package/lib/types/net/ModelsState.js +5 -1
- package/lib/types/net/OAuthToken.js +5 -1
- package/lib/types/net/OAuthTokenOrNull.d.ts +1 -1
- package/lib/types/net/OAuthTokenOrNull.js +5 -1
- package/lib/types/net/TokenAccessFunction.d.ts +1 -1
- package/lib/types/net/TokenAccessFunction.js +5 -1
- package/lib/types/net/index.js +181 -27
- package/lib/utils/baseActivity.d.ts +2 -2
- package/lib/utils/baseActivity.js +93 -91
- package/lib/utils/baseRole.js +37 -33
- package/lib/utils/collection.js +413 -291
- package/lib/utils/cookies.js +22 -37
- package/lib/utils/date.js +210 -210
- package/lib/utils/dom.js +145 -133
- package/lib/utils/domainIdentifier.js +9 -9
- package/lib/utils/entityUserRole.js +6 -2
- package/lib/utils/error.d.ts +1 -1
- package/lib/utils/error.js +18 -16
- package/lib/utils/events.js +37 -30
- package/lib/utils/externalGroup.js +25 -21
- package/lib/utils/externalProviders.js +8 -4
- package/lib/utils/externalTerms.js +9 -6
- package/lib/utils/fetch.d.ts +1 -1
- package/lib/utils/fetch.js +179 -176
- package/lib/utils/group.js +17 -9
- package/lib/utils/groupDates.d.ts +1 -1
- package/lib/utils/groupDates.js +43 -39
- package/lib/utils/groupRoles.js +28 -28
- package/lib/utils/lockDownBrowser.js +16 -12
- package/lib/utils/logger.js +30 -25
- package/lib/utils/lti.js +10 -5
- package/lib/utils/model.d.ts +2 -2
- package/lib/utils/model.js +35 -44
- package/lib/utils/number.js +13 -16
- package/lib/utils/promise.d.ts +6 -1
- package/lib/utils/promise.js +34 -15
- package/lib/utils/quill.js +60 -71
- package/lib/utils/route.d.ts +2 -2
- package/lib/utils/route.js +61 -60
- package/lib/utils/search.d.ts +1 -1
- package/lib/utils/search.js +78 -85
- package/lib/utils/shard.js +38 -41
- package/lib/utils/sort.d.ts +3 -3
- package/lib/utils/sort.js +62 -58
- package/lib/utils/string.js +14 -10
- package/lib/utils/table.d.ts +3 -3
- package/lib/utils/table.js +36 -33
- package/lib/utils/timezone.js +12 -26
- package/lib/utils/url.d.ts +2 -1
- package/lib/utils/url.js +139 -193
- package/lib/utils/user.js +59 -61
- package/lib/utils/userAgent.js +11 -11
- package/lib/utils/userRole.d.ts +3 -3
- package/lib/utils/userRole.js +46 -44
- package/package.json +90 -73
- package/lib/config/eslint/index.cjs +0 -21
- package/lib/config/eslint/lib/order.cjs +0 -22
- package/lib/config/eslint/lib/prettier.cjs +0 -18
- package/lib/config/eslint/lib/typescript.cjs +0 -86
- package/lib/config/eslint/react.cjs +0 -9
- package/lib/css/utils/_focus.css +0 -4
package/lib/utils/dom.js
CHANGED
|
@@ -1,59 +1,64 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.setupMobileEventListeners = exports.isTextInput = exports.isMobileDevice = exports.hasExternalKeyboard = exports.getVerticallyScrollableParent = exports.getFirstParentElementWithClassName = void 0;
|
|
7
|
+
var _logger = require("./logger");
|
|
8
|
+
const KEYBOARD_ANIMATION_MS = 250;
|
|
9
|
+
|
|
6
10
|
/**
|
|
7
11
|
* Get the nearest vertically scrollable parent of an element
|
|
8
12
|
* @param { HTMLElement } element - The element to start with
|
|
9
13
|
* @returns The nearest vertically scrollable parent element
|
|
10
14
|
*/
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
return document.scrollingElement;
|
|
15
|
+
const getVerticallyScrollableParent = element => {
|
|
16
|
+
let style = getComputedStyle(element);
|
|
17
|
+
const excludeStaticParent = style.position === 'absolute';
|
|
18
|
+
const overflowRegex = /(auto|scroll|hidden)/;
|
|
19
|
+
for (let parent = element; parent = parent.parentElement;) {
|
|
20
|
+
style = getComputedStyle(parent);
|
|
21
|
+
if (excludeStaticParent && style.position === 'static') continue;
|
|
22
|
+
if (overflowRegex.test(style.overflow + style.overflowY) && parent.scrollHeight > parent.clientHeight) return parent;
|
|
23
|
+
}
|
|
24
|
+
return document.scrollingElement;
|
|
23
25
|
};
|
|
24
|
-
|
|
26
|
+
|
|
25
27
|
/**
|
|
26
28
|
* Get the first parent that has the given className in its classList
|
|
27
29
|
* @param element The target element
|
|
28
30
|
* @param className The className to match
|
|
29
31
|
*/
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
exports.getVerticallyScrollableParent = getVerticallyScrollableParent;
|
|
33
|
+
const getFirstParentElementWithClassName = (element, className) => {
|
|
34
|
+
for (let parent = element; parent = parent.parentElement;) {
|
|
35
|
+
if (parent.classList.contains(className)) return parent;
|
|
36
|
+
}
|
|
37
|
+
return undefined;
|
|
36
38
|
};
|
|
37
|
-
|
|
39
|
+
|
|
38
40
|
/**
|
|
39
41
|
* Return whether the device being used is one of several mainstream mobile devices
|
|
40
42
|
*/
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
43
|
+
exports.getFirstParentElementWithClassName = getFirstParentElementWithClassName;
|
|
44
|
+
const isMobileDevice = () => {
|
|
45
|
+
return /android|ipad|ipod|iphone/i.test(navigator.userAgent) || /macintosh/i.test(navigator.userAgent) && navigator.maxTouchPoints;
|
|
44
46
|
};
|
|
45
|
-
|
|
47
|
+
|
|
46
48
|
/** Return whether the device is using an external keyboard vs. the native on-screen OS keyboard. */
|
|
47
|
-
|
|
48
|
-
|
|
49
|
+
exports.isMobileDevice = isMobileDevice;
|
|
50
|
+
const hasExternalKeyboard = () => window.hasExternalKeyboard;
|
|
51
|
+
|
|
49
52
|
/**
|
|
50
53
|
* Sets `window.hasExternalKeyboard`, returned by `hasExternalKeyboard`.
|
|
51
54
|
*/
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
55
|
+
exports.hasExternalKeyboard = hasExternalKeyboard;
|
|
56
|
+
const setHasExternalKeyboard = hasExternalKeyboard => {
|
|
57
|
+
(0, _logger.getLogger)().debug('hasExternalKeyboard', hasExternalKeyboard);
|
|
58
|
+
const windowWithoutType = window;
|
|
59
|
+
windowWithoutType.hasExternalKeyboard = hasExternalKeyboard;
|
|
56
60
|
};
|
|
61
|
+
|
|
57
62
|
/**
|
|
58
63
|
* 100vh is kind of b⊘rked on mobile safari, we have to set it programmatically here
|
|
59
64
|
* so we can calculate device-independent viewport heights
|
|
@@ -62,72 +67,75 @@ var setHasExternalKeyboard = function (hasExternalKeyboard) {
|
|
|
62
67
|
* Sets the CSS variable `--visual-viewport-height` on the `documentElement`/<html>.
|
|
63
68
|
*
|
|
64
69
|
*/
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
70
|
+
const setVisualViewportHeightVar = () => {
|
|
71
|
+
const height = visualViewport ? visualViewport.height : 0;
|
|
72
|
+
document.documentElement.style.setProperty('--visual-viewport-height', `${height}px`);
|
|
68
73
|
};
|
|
74
|
+
|
|
69
75
|
/**
|
|
70
76
|
* Is the given element capable of text input?
|
|
71
77
|
*
|
|
72
78
|
* @param el An HTML element
|
|
73
79
|
*/
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
return tagName === 'div' && el.className.includes('ql-editor') && el.contentEditable === 'true';
|
|
80
|
+
const isTextInput = el => {
|
|
81
|
+
const tagName = el.tagName && el.tagName.toLowerCase();
|
|
82
|
+
if (tagName === 'textarea') return true;
|
|
83
|
+
if (tagName === 'input') {
|
|
84
|
+
const inputEl = el;
|
|
85
|
+
return inputEl.type !== 'button' && inputEl.type !== 'radio' && inputEl.type !== 'checkbox';
|
|
86
|
+
}
|
|
87
|
+
// Quill editor
|
|
88
|
+
return tagName === 'div' && el.className.includes('ql-editor') && el.contentEditable === 'true';
|
|
84
89
|
};
|
|
85
90
|
exports.isTextInput = isTextInput;
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
}, KEYBOARD_ANIMATION_MS);
|
|
91
|
+
let updateHasExternalKeyboardAfterFocusTimeout = undefined;
|
|
92
|
+
let scrollToElementAfterFocusTimeout = undefined;
|
|
93
|
+
const updateHasExternalKeyboardAfterFocus = () => {
|
|
94
|
+
const closedVisualViewportHeight = visualViewport ? visualViewport.height : 0;
|
|
95
|
+
// wait for the keyboard animation
|
|
96
|
+
updateHasExternalKeyboardAfterFocusTimeout = window.setTimeout(() => {
|
|
97
|
+
// find the keyboard height based on the difference in viewport height
|
|
98
|
+
const keyboardHeight = closedVisualViewportHeight - (visualViewport ? visualViewport.height : 0);
|
|
99
|
+
// on first-load the input focus can fail
|
|
100
|
+
// when this happens the height is 0, and this ONLY happens when there is NOT an external keyboard
|
|
101
|
+
if (keyboardHeight === 0 && hasExternalKeyboard() === undefined) {
|
|
102
|
+
setHasExternalKeyboard(false);
|
|
103
|
+
} else {
|
|
104
|
+
// if the keyboard height is greater than 100, that means the full onscreen keyboard displayed
|
|
105
|
+
// otherwise, only the small context menu displayed, meaning there is an external keyboard
|
|
106
|
+
setHasExternalKeyboard(keyboardHeight < 100);
|
|
107
|
+
}
|
|
108
|
+
updateHasExternalKeyboardAfterFocusTimeout = undefined;
|
|
109
|
+
}, KEYBOARD_ANIMATION_MS);
|
|
106
110
|
};
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
111
|
+
const scrollToElementAfterFocus = el => {
|
|
112
|
+
// wait for the keyboard animation
|
|
113
|
+
scrollToElementAfterFocusTimeout = window.setTimeout(() => {
|
|
114
|
+
// after the keyboard is open, check for the el’s scrollable parent, as it could have just become scrollable
|
|
115
|
+
const scrollParent = getVerticallyScrollableParent(el);
|
|
116
|
+
// if the el has a scrollable parent other than the document, scroll it back into view
|
|
117
|
+
if (scrollParent && scrollParent !== document.documentElement) {
|
|
118
|
+
const scrollRect = scrollParent.getBoundingClientRect();
|
|
119
|
+
const rect = el.getBoundingClientRect();
|
|
120
|
+
// only scroll into view if outside of the scroll parent bounds
|
|
121
|
+
if (rect.bottom < scrollRect.top || rect.top > scrollRect.bottom) {
|
|
122
|
+
const newScrollTop = scrollParent.scrollTop + rect.top - scrollRect.top - 10;
|
|
123
|
+
(0, _logger.getLogger)().debug('scrollToEl', newScrollTop);
|
|
124
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
125
|
+
if (scrollParent.scrollTo) {
|
|
126
|
+
scrollParent.scrollTo({
|
|
127
|
+
top: newScrollTop,
|
|
128
|
+
behavior: 'smooth'
|
|
129
|
+
});
|
|
130
|
+
} else {
|
|
131
|
+
scrollParent.scrollTop = newScrollTop;
|
|
127
132
|
}
|
|
128
|
-
|
|
129
|
-
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
scrollToElementAfterFocusTimeout = undefined;
|
|
136
|
+
}, KEYBOARD_ANIMATION_MS);
|
|
130
137
|
};
|
|
138
|
+
|
|
131
139
|
/**
|
|
132
140
|
* Event handler for "focusin" event.
|
|
133
141
|
*
|
|
@@ -136,12 +144,12 @@ var scrollToElementAfterFocus = function (el) {
|
|
|
136
144
|
* Checks for external keyboard and scrolls to the focused element after any animations, e.g. keyboard open.
|
|
137
145
|
*
|
|
138
146
|
*/
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
scrollToElementAfterFocus(e.target);
|
|
147
|
+
const onFocusIn = e => {
|
|
148
|
+
if (!e.target || !isTextInput(e.target)) return;
|
|
149
|
+
updateHasExternalKeyboardAfterFocus();
|
|
150
|
+
scrollToElementAfterFocus(e.target);
|
|
144
151
|
};
|
|
152
|
+
|
|
145
153
|
/**
|
|
146
154
|
* Event handler for "focusout" event.
|
|
147
155
|
*
|
|
@@ -150,52 +158,56 @@ var onFocusIn = function (e) {
|
|
|
150
158
|
* Clears any pending timeouts from "focusin" events.
|
|
151
159
|
*
|
|
152
160
|
*/
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
}
|
|
161
|
+
const onFocusOut = e => {
|
|
162
|
+
if (!e.target || !isTextInput(e.target)) return;
|
|
163
|
+
if (updateHasExternalKeyboardAfterFocusTimeout) {
|
|
164
|
+
window.clearTimeout(updateHasExternalKeyboardAfterFocusTimeout);
|
|
165
|
+
updateHasExternalKeyboardAfterFocusTimeout = undefined;
|
|
166
|
+
}
|
|
167
|
+
if (scrollToElementAfterFocusTimeout) {
|
|
168
|
+
window.clearTimeout(scrollToElementAfterFocusTimeout);
|
|
169
|
+
scrollToElementAfterFocusTimeout = undefined;
|
|
170
|
+
}
|
|
164
171
|
};
|
|
172
|
+
|
|
165
173
|
/**
|
|
166
174
|
* Check if the device is using an external keyboard by appending an `input` and focusing it.
|
|
167
175
|
*
|
|
168
176
|
* This will trigger the `onFocusIn` event handler, which updates the `hasExternalKeyboard` global.
|
|
169
177
|
*/
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
178
|
+
const checkForExternalKeyboard = () => {
|
|
179
|
+
const el = document.createElement('input');
|
|
180
|
+
el.type = 'text';
|
|
181
|
+
el.autofocus = true;
|
|
182
|
+
el.addEventListener('focusin', () => {
|
|
183
|
+
// remove the input after the keyboard has displayed, plus a small buffer
|
|
184
|
+
window.setTimeout(() => {
|
|
185
|
+
el.blur();
|
|
186
|
+
el.remove();
|
|
187
|
+
}, KEYBOARD_ANIMATION_MS + 100);
|
|
188
|
+
});
|
|
189
|
+
document.documentElement.append(el);
|
|
182
190
|
};
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
191
|
+
const setupMobileEventListeners = () => {
|
|
192
|
+
if (!isMobileDevice() || !visualViewport) return;
|
|
193
|
+
|
|
194
|
+
// set viewport height var at setup
|
|
195
|
+
setVisualViewportHeightVar();
|
|
196
|
+
|
|
197
|
+
// add event listeners
|
|
198
|
+
visualViewport.addEventListener('resize', () => {
|
|
187
199
|
setVisualViewportHeightVar();
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
checkForExternalKeyboard();
|
|
200
|
+
|
|
201
|
+
// keep the document element scrolled to the top if a ReactModal is open
|
|
202
|
+
if (document.body.classList.contains('ReactModal__Body--open')) {
|
|
203
|
+
document.documentElement.scrollTop = 0;
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
window.addEventListener('focusin', onFocusIn);
|
|
207
|
+
window.addEventListener('focusout', onFocusOut);
|
|
208
|
+
|
|
209
|
+
// check for external keyboard at setup
|
|
210
|
+
checkForExternalKeyboard();
|
|
200
211
|
};
|
|
201
212
|
exports.setupMobileEventListeners = setupMobileEventListeners;
|
|
213
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9nZ2VyIiwicmVxdWlyZSIsIktFWUJPQVJEX0FOSU1BVElPTl9NUyIsImdldFZlcnRpY2FsbHlTY3JvbGxhYmxlUGFyZW50IiwiZWxlbWVudCIsInN0eWxlIiwiZ2V0Q29tcHV0ZWRTdHlsZSIsImV4Y2x1ZGVTdGF0aWNQYXJlbnQiLCJwb3NpdGlvbiIsIm92ZXJmbG93UmVnZXgiLCJwYXJlbnQiLCJwYXJlbnRFbGVtZW50IiwidGVzdCIsIm92ZXJmbG93Iiwib3ZlcmZsb3dZIiwic2Nyb2xsSGVpZ2h0IiwiY2xpZW50SGVpZ2h0IiwiZG9jdW1lbnQiLCJzY3JvbGxpbmdFbGVtZW50IiwiZXhwb3J0cyIsImdldEZpcnN0UGFyZW50RWxlbWVudFdpdGhDbGFzc05hbWUiLCJjbGFzc05hbWUiLCJjbGFzc0xpc3QiLCJjb250YWlucyIsInVuZGVmaW5lZCIsImlzTW9iaWxlRGV2aWNlIiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwibWF4VG91Y2hQb2ludHMiLCJoYXNFeHRlcm5hbEtleWJvYXJkIiwid2luZG93Iiwic2V0SGFzRXh0ZXJuYWxLZXlib2FyZCIsImdldExvZ2dlciIsImRlYnVnIiwid2luZG93V2l0aG91dFR5cGUiLCJzZXRWaXN1YWxWaWV3cG9ydEhlaWdodFZhciIsImhlaWdodCIsInZpc3VhbFZpZXdwb3J0IiwiZG9jdW1lbnRFbGVtZW50Iiwic2V0UHJvcGVydHkiLCJpc1RleHRJbnB1dCIsImVsIiwidGFnTmFtZSIsInRvTG93ZXJDYXNlIiwiaW5wdXRFbCIsInR5cGUiLCJpbmNsdWRlcyIsImNvbnRlbnRFZGl0YWJsZSIsInVwZGF0ZUhhc0V4dGVybmFsS2V5Ym9hcmRBZnRlckZvY3VzVGltZW91dCIsInNjcm9sbFRvRWxlbWVudEFmdGVyRm9jdXNUaW1lb3V0IiwidXBkYXRlSGFzRXh0ZXJuYWxLZXlib2FyZEFmdGVyRm9jdXMiLCJjbG9zZWRWaXN1YWxWaWV3cG9ydEhlaWdodCIsInNldFRpbWVvdXQiLCJrZXlib2FyZEhlaWdodCIsInNjcm9sbFRvRWxlbWVudEFmdGVyRm9jdXMiLCJzY3JvbGxQYXJlbnQiLCJzY3JvbGxSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwicmVjdCIsImJvdHRvbSIsInRvcCIsIm5ld1Njcm9sbFRvcCIsInNjcm9sbFRvcCIsInNjcm9sbFRvIiwiYmVoYXZpb3IiLCJvbkZvY3VzSW4iLCJlIiwidGFyZ2V0Iiwib25Gb2N1c091dCIsImNsZWFyVGltZW91dCIsImNoZWNrRm9yRXh0ZXJuYWxLZXlib2FyZCIsImNyZWF0ZUVsZW1lbnQiLCJhdXRvZm9jdXMiLCJhZGRFdmVudExpc3RlbmVyIiwiYmx1ciIsInJlbW92ZSIsImFwcGVuZCIsInNldHVwTW9iaWxlRXZlbnRMaXN0ZW5lcnMiLCJib2R5Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2RvbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tICcuL2xvZ2dlcidcblxuY29uc3QgS0VZQk9BUkRfQU5JTUFUSU9OX01TID0gMjUwXG5cbi8qKlxuICogR2V0IHRoZSBuZWFyZXN0IHZlcnRpY2FsbHkgc2Nyb2xsYWJsZSBwYXJlbnQgb2YgYW4gZWxlbWVudFxuICogQHBhcmFtIHsgSFRNTEVsZW1lbnQgfSBlbGVtZW50IC0gVGhlIGVsZW1lbnQgdG8gc3RhcnQgd2l0aFxuICogQHJldHVybnMgVGhlIG5lYXJlc3QgdmVydGljYWxseSBzY3JvbGxhYmxlIHBhcmVudCBlbGVtZW50XG4gKi9cbmV4cG9ydCBjb25zdCBnZXRWZXJ0aWNhbGx5U2Nyb2xsYWJsZVBhcmVudCA9IChlbGVtZW50OiBIVE1MRWxlbWVudCkgPT4ge1xuXHRsZXQgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpXG5cdGNvbnN0IGV4Y2x1ZGVTdGF0aWNQYXJlbnQgPSBzdHlsZS5wb3NpdGlvbiA9PT0gJ2Fic29sdXRlJ1xuXHRjb25zdCBvdmVyZmxvd1JlZ2V4ID0gLyhhdXRvfHNjcm9sbHxoaWRkZW4pL1xuXG5cdGZvciAobGV0IHBhcmVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gZWxlbWVudDsgKHBhcmVudCA9IHBhcmVudC5wYXJlbnRFbGVtZW50KTsgKSB7XG5cdFx0c3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKHBhcmVudClcblx0XHRpZiAoZXhjbHVkZVN0YXRpY1BhcmVudCAmJiBzdHlsZS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycpIGNvbnRpbnVlXG5cdFx0aWYgKG92ZXJmbG93UmVnZXgudGVzdChzdHlsZS5vdmVyZmxvdyArIHN0eWxlLm92ZXJmbG93WSkgJiYgcGFyZW50LnNjcm9sbEhlaWdodCA+IHBhcmVudC5jbGllbnRIZWlnaHQpXG5cdFx0XHRyZXR1cm4gcGFyZW50XG5cdH1cblx0cmV0dXJuIGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnRcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGZpcnN0IHBhcmVudCB0aGF0IGhhcyB0aGUgZ2l2ZW4gY2xhc3NOYW1lIGluIGl0cyBjbGFzc0xpc3RcbiAqIEBwYXJhbSBlbGVtZW50IFRoZSB0YXJnZXQgZWxlbWVudFxuICogQHBhcmFtIGNsYXNzTmFtZSBUaGUgY2xhc3NOYW1lIHRvIG1hdGNoXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRGaXJzdFBhcmVudEVsZW1lbnRXaXRoQ2xhc3NOYW1lID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBjbGFzc05hbWU6IHN0cmluZykgPT4ge1xuXHRmb3IgKGxldCBwYXJlbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IGVsZW1lbnQ7IChwYXJlbnQgPSBwYXJlbnQucGFyZW50RWxlbWVudCk7ICkge1xuXHRcdGlmIChwYXJlbnQuY2xhc3NMaXN0LmNvbnRhaW5zKGNsYXNzTmFtZSkpIHJldHVybiBwYXJlbnRcblx0fVxuXHRyZXR1cm4gdW5kZWZpbmVkXG59XG5cbi8qKlxuICogUmV0dXJuIHdoZXRoZXIgdGhlIGRldmljZSBiZWluZyB1c2VkIGlzIG9uZSBvZiBzZXZlcmFsIG1haW5zdHJlYW0gbW9iaWxlIGRldmljZXNcbiAqL1xuZXhwb3J0IGNvbnN0IGlzTW9iaWxlRGV2aWNlID0gKCkgPT4ge1xuXHRyZXR1cm4gKFxuXHRcdC9hbmRyb2lkfGlwYWR8aXBvZHxpcGhvbmUvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpIHx8XG5cdFx0KC9tYWNpbnRvc2gvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpICYmIG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cylcblx0KVxufVxuXG4vKiogUmV0dXJuIHdoZXRoZXIgdGhlIGRldmljZSBpcyB1c2luZyBhbiBleHRlcm5hbCBrZXlib2FyZCB2cy4gdGhlIG5hdGl2ZSBvbi1zY3JlZW4gT1Mga2V5Ym9hcmQuICovXG5leHBvcnQgY29uc3QgaGFzRXh0ZXJuYWxLZXlib2FyZCA9ICgpOiBib29sZWFuIHwgdW5kZWZpbmVkID0+ICh3aW5kb3cgYXMgYW55KS5oYXNFeHRlcm5hbEtleWJvYXJkXG5cbi8qKlxuICogU2V0cyBgd2luZG93Lmhhc0V4dGVybmFsS2V5Ym9hcmRgLCByZXR1cm5lZCBieSBgaGFzRXh0ZXJuYWxLZXlib2FyZGAuXG4gKi9cbmNvbnN0IHNldEhhc0V4dGVybmFsS2V5Ym9hcmQgPSAoaGFzRXh0ZXJuYWxLZXlib2FyZDogYm9vbGVhbikgPT4ge1xuXHRnZXRMb2dnZXIoKS5kZWJ1ZygnaGFzRXh0ZXJuYWxLZXlib2FyZCcsIGhhc0V4dGVybmFsS2V5Ym9hcmQpXG5cdGNvbnN0IHdpbmRvd1dpdGhvdXRUeXBlID0gd2luZG93IGFzIGFueVxuXHR3aW5kb3dXaXRob3V0VHlwZS5oYXNFeHRlcm5hbEtleWJvYXJkID0gaGFzRXh0ZXJuYWxLZXlib2FyZFxufVxuXG4vKipcbiAqIDEwMHZoIGlzIGtpbmQgb2YgYuKKmHJrZWQgb24gbW9iaWxlIHNhZmFyaSwgd2UgaGF2ZSB0byBzZXQgaXQgcHJvZ3JhbW1hdGljYWxseSBoZXJlXG4gKiBzbyB3ZSBjYW4gY2FsY3VsYXRlIGRldmljZS1pbmRlcGVuZGVudCB2aWV3cG9ydCBoZWlnaHRzXG4gKiBodHRwczovL2FsbHRoaW5nc3NtaXR0eS5jb20vMjAyMC8wNS8xMS9jc3MtZml4LWZvci0xMDB2aC1pbi1tb2JpbGUtd2Via2l0L1xuICpcbiAqIFNldHMgdGhlIENTUyB2YXJpYWJsZSBgLS12aXN1YWwtdmlld3BvcnQtaGVpZ2h0YCBvbiB0aGUgYGRvY3VtZW50RWxlbWVudGAvPGh0bWw+LlxuICpcbiAqL1xuY29uc3Qgc2V0VmlzdWFsVmlld3BvcnRIZWlnaHRWYXIgPSAoKSA9PiB7XG5cdGNvbnN0IGhlaWdodCA9IHZpc3VhbFZpZXdwb3J0ID8gdmlzdWFsVmlld3BvcnQuaGVpZ2h0IDogMFxuXHRkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tdmlzdWFsLXZpZXdwb3J0LWhlaWdodCcsIGAke2hlaWdodH1weGApXG59XG5cbi8qKlxuICogSXMgdGhlIGdpdmVuIGVsZW1lbnQgY2FwYWJsZSBvZiB0ZXh0IGlucHV0P1xuICpcbiAqIEBwYXJhbSBlbCBBbiBIVE1MIGVsZW1lbnRcbiAqL1xuZXhwb3J0IGNvbnN0IGlzVGV4dElucHV0ID0gKGVsOiBIVE1MRWxlbWVudCkgPT4ge1xuXHRjb25zdCB0YWdOYW1lID0gZWwudGFnTmFtZSAmJiBlbC50YWdOYW1lLnRvTG93ZXJDYXNlKClcblx0aWYgKHRhZ05hbWUgPT09ICd0ZXh0YXJlYScpIHJldHVybiB0cnVlXG5cdGlmICh0YWdOYW1lID09PSAnaW5wdXQnKSB7XG5cdFx0Y29uc3QgaW5wdXRFbCA9IGVsIGFzIEhUTUxJbnB1dEVsZW1lbnRcblx0XHRyZXR1cm4gaW5wdXRFbC50eXBlICE9PSAnYnV0dG9uJyAmJiBpbnB1dEVsLnR5cGUgIT09ICdyYWRpbycgJiYgaW5wdXRFbC50eXBlICE9PSAnY2hlY2tib3gnXG5cdH1cblx0Ly8gUXVpbGwgZWRpdG9yXG5cdHJldHVybiB0YWdOYW1lID09PSAnZGl2JyAmJiBlbC5jbGFzc05hbWUuaW5jbHVkZXMoJ3FsLWVkaXRvcicpICYmIGVsLmNvbnRlbnRFZGl0YWJsZSA9PT0gJ3RydWUnXG59XG5cbmxldCB1cGRhdGVIYXNFeHRlcm5hbEtleWJvYXJkQWZ0ZXJGb2N1c1RpbWVvdXQ6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxubGV0IHNjcm9sbFRvRWxlbWVudEFmdGVyRm9jdXNUaW1lb3V0OiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWRcblxuY29uc3QgdXBkYXRlSGFzRXh0ZXJuYWxLZXlib2FyZEFmdGVyRm9jdXMgPSAoKSA9PiB7XG5cdGNvbnN0IGNsb3NlZFZpc3VhbFZpZXdwb3J0SGVpZ2h0ID0gdmlzdWFsVmlld3BvcnQgPyB2aXN1YWxWaWV3cG9ydC5oZWlnaHQgOiAwXG5cdC8vIHdhaXQgZm9yIHRoZSBrZXlib2FyZCBhbmltYXRpb25cblx0dXBkYXRlSGFzRXh0ZXJuYWxLZXlib2FyZEFmdGVyRm9jdXNUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdC8vIGZpbmQgdGhlIGtleWJvYXJkIGhlaWdodCBiYXNlZCBvbiB0aGUgZGlmZmVyZW5jZSBpbiB2aWV3cG9ydCBoZWlnaHRcblx0XHRjb25zdCBrZXlib2FyZEhlaWdodCA9IGNsb3NlZFZpc3VhbFZpZXdwb3J0SGVpZ2h0IC0gKHZpc3VhbFZpZXdwb3J0ID8gdmlzdWFsVmlld3BvcnQuaGVpZ2h0IDogMClcblx0XHQvLyBvbiBmaXJzdC1sb2FkIHRoZSBpbnB1dCBmb2N1cyBjYW4gZmFpbFxuXHRcdC8vIHdoZW4gdGhpcyBoYXBwZW5zIHRoZSBoZWlnaHQgaXMgMCwgYW5kIHRoaXMgT05MWSBoYXBwZW5zIHdoZW4gdGhlcmUgaXMgTk9UIGFuIGV4dGVybmFsIGtleWJvYXJkXG5cdFx0aWYgKGtleWJvYXJkSGVpZ2h0ID09PSAwICYmIGhhc0V4dGVybmFsS2V5Ym9hcmQoKSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRzZXRIYXNFeHRlcm5hbEtleWJvYXJkKGZhbHNlKVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBpZiB0aGUga2V5Ym9hcmQgaGVpZ2h0IGlzIGdyZWF0ZXIgdGhhbiAxMDAsIHRoYXQgbWVhbnMgdGhlIGZ1bGwgb25zY3JlZW4ga2V5Ym9hcmQgZGlzcGxheWVkXG5cdFx0XHQvLyBvdGhlcndpc2UsIG9ubHkgdGhlIHNtYWxsIGNvbnRleHQgbWVudSBkaXNwbGF5ZWQsIG1lYW5pbmcgdGhlcmUgaXMgYW4gZXh0ZXJuYWwga2V5Ym9hcmRcblx0XHRcdHNldEhhc0V4dGVybmFsS2V5Ym9hcmQoa2V5Ym9hcmRIZWlnaHQgPCAxMDApXG5cdFx0fVxuXG5cdFx0dXBkYXRlSGFzRXh0ZXJuYWxLZXlib2FyZEFmdGVyRm9jdXNUaW1lb3V0ID0gdW5kZWZpbmVkXG5cdH0sIEtFWUJPQVJEX0FOSU1BVElPTl9NUylcbn1cblxuY29uc3Qgc2Nyb2xsVG9FbGVtZW50QWZ0ZXJGb2N1cyA9IChlbDogSFRNTEVsZW1lbnQpID0+IHtcblx0Ly8gd2FpdCBmb3IgdGhlIGtleWJvYXJkIGFuaW1hdGlvblxuXHRzY3JvbGxUb0VsZW1lbnRBZnRlckZvY3VzVGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcblx0XHQvLyBhZnRlciB0aGUga2V5Ym9hcmQgaXMgb3BlbiwgY2hlY2sgZm9yIHRoZSBlbOKAmXMgc2Nyb2xsYWJsZSBwYXJlbnQsIGFzIGl0IGNvdWxkIGhhdmUganVzdCBiZWNvbWUgc2Nyb2xsYWJsZVxuXHRcdGNvbnN0IHNjcm9sbFBhcmVudCA9IGdldFZlcnRpY2FsbHlTY3JvbGxhYmxlUGFyZW50KGVsKVxuXHRcdC8vIGlmIHRoZSBlbCBoYXMgYSBzY3JvbGxhYmxlIHBhcmVudCBvdGhlciB0aGFuIHRoZSBkb2N1bWVudCwgc2Nyb2xsIGl0IGJhY2sgaW50byB2aWV3XG5cdFx0aWYgKHNjcm9sbFBhcmVudCAmJiBzY3JvbGxQYXJlbnQgIT09IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkge1xuXHRcdFx0Y29uc3Qgc2Nyb2xsUmVjdCA9IHNjcm9sbFBhcmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuXHRcdFx0Y29uc3QgcmVjdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG5cdFx0XHQvLyBvbmx5IHNjcm9sbCBpbnRvIHZpZXcgaWYgb3V0c2lkZSBvZiB0aGUgc2Nyb2xsIHBhcmVudCBib3VuZHNcblx0XHRcdGlmIChyZWN0LmJvdHRvbSA8IHNjcm9sbFJlY3QudG9wIHx8IHJlY3QudG9wID4gc2Nyb2xsUmVjdC5ib3R0b20pIHtcblx0XHRcdFx0Y29uc3QgbmV3U2Nyb2xsVG9wID0gc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCArIHJlY3QudG9wIC0gc2Nyb2xsUmVjdC50b3AgLSAxMFxuXHRcdFx0XHRnZXRMb2dnZXIoKS5kZWJ1Zygnc2Nyb2xsVG9FbCcsIG5ld1Njcm9sbFRvcClcblx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb25cblx0XHRcdFx0aWYgKHNjcm9sbFBhcmVudC5zY3JvbGxUbykge1xuXHRcdFx0XHRcdHNjcm9sbFBhcmVudC5zY3JvbGxUbyh7IHRvcDogbmV3U2Nyb2xsVG9wLCBiZWhhdmlvcjogJ3Ntb290aCcgfSlcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzY3JvbGxQYXJlbnQuc2Nyb2xsVG9wID0gbmV3U2Nyb2xsVG9wXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRzY3JvbGxUb0VsZW1lbnRBZnRlckZvY3VzVGltZW91dCA9IHVuZGVmaW5lZFxuXHR9LCBLRVlCT0FSRF9BTklNQVRJT05fTVMpXG59XG5cbi8qKlxuICogRXZlbnQgaGFuZGxlciBmb3IgXCJmb2N1c2luXCIgZXZlbnQuXG4gKlxuICogXCJmb2N1c2luXCIgYnViYmxlcyB1cCBmcm9tIGFsbCBmb2N1cyBldmVudHMsIHNvIHVzZXMgYGlzVGV4dElucHV0YCB0byBvbmx5IHJlYWN0IHRvIFwia2V5Ym9hcmRcIiBmb2N1cyBldmVudHMuXG4gKlxuICogQ2hlY2tzIGZvciBleHRlcm5hbCBrZXlib2FyZCBhbmQgc2Nyb2xscyB0byB0aGUgZm9jdXNlZCBlbGVtZW50IGFmdGVyIGFueSBhbmltYXRpb25zLCBlLmcuIGtleWJvYXJkIG9wZW4uXG4gKlxuICovXG5jb25zdCBvbkZvY3VzSW4gPSAoZTogRXZlbnQpID0+IHtcblx0aWYgKCFlLnRhcmdldCB8fCAhaXNUZXh0SW5wdXQoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKSByZXR1cm5cblx0dXBkYXRlSGFzRXh0ZXJuYWxLZXlib2FyZEFmdGVyRm9jdXMoKVxuXHRzY3JvbGxUb0VsZW1lbnRBZnRlckZvY3VzKGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50KVxufVxuXG4vKipcbiAqIEV2ZW50IGhhbmRsZXIgZm9yIFwiZm9jdXNvdXRcIiBldmVudC5cbiAqXG4gKiBcImZvY3Vzb3V0XCIgYnViYmxlcyB1cCBmcm9tIGFsbCBmb2N1cyBldmVudHMsIHNvIHVzZXMgYGlzVGV4dElucHV0YCB0byBvbmx5IHJlYWN0IHRvIFwia2V5Ym9hcmRcIiBmb2N1cyBldmVudHMuXG4gKlxuICogQ2xlYXJzIGFueSBwZW5kaW5nIHRpbWVvdXRzIGZyb20gXCJmb2N1c2luXCIgZXZlbnRzLlxuICpcbiAqL1xuY29uc3Qgb25Gb2N1c091dCA9IChlOiBFdmVudCkgPT4ge1xuXHRpZiAoIWUudGFyZ2V0IHx8ICFpc1RleHRJbnB1dChlLnRhcmdldCBhcyBIVE1MRWxlbWVudCkpIHJldHVyblxuXHRpZiAodXBkYXRlSGFzRXh0ZXJuYWxLZXlib2FyZEFmdGVyRm9jdXNUaW1lb3V0KSB7XG5cdFx0d2luZG93LmNsZWFyVGltZW91dCh1cGRhdGVIYXNFeHRlcm5hbEtleWJvYXJkQWZ0ZXJGb2N1c1RpbWVvdXQpXG5cdFx0dXBkYXRlSGFzRXh0ZXJuYWxLZXlib2FyZEFmdGVyRm9jdXNUaW1lb3V0ID0gdW5kZWZpbmVkXG5cdH1cblx0aWYgKHNjcm9sbFRvRWxlbWVudEFmdGVyRm9jdXNUaW1lb3V0KSB7XG5cdFx0d2luZG93LmNsZWFyVGltZW91dChzY3JvbGxUb0VsZW1lbnRBZnRlckZvY3VzVGltZW91dClcblx0XHRzY3JvbGxUb0VsZW1lbnRBZnRlckZvY3VzVGltZW91dCA9IHVuZGVmaW5lZFxuXHR9XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGRldmljZSBpcyB1c2luZyBhbiBleHRlcm5hbCBrZXlib2FyZCBieSBhcHBlbmRpbmcgYW4gYGlucHV0YCBhbmQgZm9jdXNpbmcgaXQuXG4gKlxuICogVGhpcyB3aWxsIHRyaWdnZXIgdGhlIGBvbkZvY3VzSW5gIGV2ZW50IGhhbmRsZXIsIHdoaWNoIHVwZGF0ZXMgdGhlIGBoYXNFeHRlcm5hbEtleWJvYXJkYCBnbG9iYWwuXG4gKi9cbmNvbnN0IGNoZWNrRm9yRXh0ZXJuYWxLZXlib2FyZCA9ICgpID0+IHtcblx0Y29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpXG5cdGVsLnR5cGUgPSAndGV4dCdcblx0ZWwuYXV0b2ZvY3VzID0gdHJ1ZVxuXHRlbC5hZGRFdmVudExpc3RlbmVyKCdmb2N1c2luJywgKCkgPT4ge1xuXHRcdC8vIHJlbW92ZSB0aGUgaW5wdXQgYWZ0ZXIgdGhlIGtleWJvYXJkIGhhcyBkaXNwbGF5ZWQsIHBsdXMgYSBzbWFsbCBidWZmZXJcblx0XHR3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRlbC5ibHVyKClcblx0XHRcdGVsLnJlbW92ZSgpXG5cdFx0fSwgS0VZQk9BUkRfQU5JTUFUSU9OX01TICsgMTAwKVxuXHR9KVxuXHRkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kKGVsKVxufVxuXG5leHBvcnQgY29uc3Qgc2V0dXBNb2JpbGVFdmVudExpc3RlbmVycyA9ICgpID0+IHtcblx0aWYgKCFpc01vYmlsZURldmljZSgpIHx8ICF2aXN1YWxWaWV3cG9ydCkgcmV0dXJuXG5cblx0Ly8gc2V0IHZpZXdwb3J0IGhlaWdodCB2YXIgYXQgc2V0dXBcblx0c2V0VmlzdWFsVmlld3BvcnRIZWlnaHRWYXIoKVxuXG5cdC8vIGFkZCBldmVudCBsaXN0ZW5lcnNcblx0dmlzdWFsVmlld3BvcnQuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgKCkgPT4ge1xuXHRcdHNldFZpc3VhbFZpZXdwb3J0SGVpZ2h0VmFyKClcblxuXHRcdC8vIGtlZXAgdGhlIGRvY3VtZW50IGVsZW1lbnQgc2Nyb2xsZWQgdG8gdGhlIHRvcCBpZiBhIFJlYWN0TW9kYWwgaXMgb3BlblxuXHRcdGlmIChkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucygnUmVhY3RNb2RhbF9fQm9keS0tb3BlbicpKSB7XG5cdFx0XHRkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wID0gMFxuXHRcdH1cblx0fSlcblx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzaW4nLCBvbkZvY3VzSW4pXG5cdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdmb2N1c291dCcsIG9uRm9jdXNPdXQpXG5cblx0Ly8gY2hlY2sgZm9yIGV4dGVybmFsIGtleWJvYXJkIGF0IHNldHVwXG5cdGNoZWNrRm9yRXh0ZXJuYWxLZXlib2FyZCgpXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsT0FBQTtBQUVBLE1BQU1DLHFCQUFxQixHQUFHLEdBQUc7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxNQUFNQyw2QkFBNkIsR0FBSUMsT0FBb0IsSUFBSztFQUN0RSxJQUFJQyxLQUFLLEdBQUdDLGdCQUFnQixDQUFDRixPQUFPLENBQUM7RUFDckMsTUFBTUcsbUJBQW1CLEdBQUdGLEtBQUssQ0FBQ0csUUFBUSxLQUFLLFVBQVU7RUFDekQsTUFBTUMsYUFBYSxHQUFHLHNCQUFzQjtFQUU1QyxLQUFLLElBQUlDLE1BQTBCLEdBQUdOLE9BQU8sRUFBR00sTUFBTSxHQUFHQSxNQUFNLENBQUNDLGFBQWEsR0FBSztJQUNqRk4sS0FBSyxHQUFHQyxnQkFBZ0IsQ0FBQ0ksTUFBTSxDQUFDO0lBQ2hDLElBQUlILG1CQUFtQixJQUFJRixLQUFLLENBQUNHLFFBQVEsS0FBSyxRQUFRLEVBQUU7SUFDeEQsSUFBSUMsYUFBYSxD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U0FBUztFQUN2RDtFQUNBLElBQUl5QixnQ0FBZ0MsRUFBRTtJQUNyQ25CLE1BQU0sQ0FBQ3VDLFlBQVksQ0FBQ3BCLGdDQUFnQyxDQUFDO0lBQ3JEQSxnQ0FBZ0MsR0FBR3pCLFNBQVM7RUFDN0M7QUFDRCxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOEMsd0JBQXdCLEdBQUdBLENBQUEsS0FBTTtFQUN0QyxNQUFNN0IsRUFBRSxHQUFHeEIsUUFBUSxDQUFDc0QsYUFBYSxDQUFDLE9BQU8sQ0FBQztFQUMxQzlCLEVBQUUsQ0FBQ0ksSUFBSSxHQUFHLE1BQU07RUFDaEJKLEVBQUUsQ0FBQytCLFNBQVMsR0FBRyxJQUFJO0VBQ25CL0IsRUFBRSxDQUFDZ0MsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLE1BQU07SUFDcEM7SUFDQTNDLE1BQU0sQ0FBQ3NCLFVBQVUsQ0FBQyxNQUFNO01BQ3ZCWCxFQUFFLENBQUNpQyxJQUFJLENBQUMsQ0FBQztNQUNUakMsRUFBRSxDQUFDa0MsTUFBTSxDQUFDLENBQUM7SUFDWixDQUFDLEVBQUV6RSxxQkFBcUIsR0FBRyxHQUFHLENBQUM7RUFDaEMsQ0FBQyxDQUFDO0VBQ0ZlLFFBQVEsQ0FBQ3FCLGVBQWUsQ0FBQ3NDLE1BQU0sQ0FBQ25DLEVBQUUsQ0FBQztBQUNwQyxDQUFDO0FBRU0sTUFBTW9DLHlCQUF5QixHQUFHQSxDQUFBLEtBQU07RUFDOUMsSUFBSSxDQUFDcEQsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDWSxjQUFjLEVBQUU7O0VBRTFDO0VBQ0FGLDBCQUEwQixDQUFDLENBQUM7O0VBRTVCO0VBQ0FFLGNBQWMsQ0FBQ29DLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxNQUFNO0lBQy9DdEMsMEJBQTBCLENBQUMsQ0FBQzs7SUFFNUI7SUFDQSxJQUFJbEIsUUFBUSxDQUFDNkQsSUFBSSxDQUFDeEQsU0FBUyxDQUFDQyxRQUFRLENBQUMsd0JBQXdCLENBQUMsRUFBRTtNQUMvRE4sUUFBUSxDQUFDcUIsZUFBZSxDQUFDd0IsU0FBUyxHQUFHLENBQUM7SUFDdkM7RUFDRCxDQUFDLENBQUM7RUFDRmhDLE1BQU0sQ0FBQzJDLGdCQUFnQixDQUFDLFNBQVMsRUFBRVIsU0FBUyxDQUFDO0VBQzdDbkMsTUFBTSxDQUFDMkMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFTCxVQUFVLENBQUM7O0VBRS9DO0VBQ0FFLHdCQUF3QixDQUFDLENBQUM7QUFDM0IsQ0FBQztBQUFBbkQsT0FBQSxDQUFBMEQseUJBQUEsR0FBQUEseUJBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getDomainIdentifierTypeString = exports.getDomainIdentifierTypePluralString = void 0;
|
|
7
|
+
var _shard = require("./shard");
|
|
8
|
+
const getDomainIdentifierTypeString = () => (0, _shard.isPurdueShard)() ? 'Purdue career account alias or PUID' : 'Email Address';
|
|
8
9
|
exports.getDomainIdentifierTypeString = getDomainIdentifierTypeString;
|
|
9
|
-
|
|
10
|
-
return shard_1.isPurdueShard() ? 'Purdue career account aliases or PUIDs' : 'Email Addresses';
|
|
11
|
-
};
|
|
10
|
+
const getDomainIdentifierTypePluralString = () => (0, _shard.isPurdueShard)() ? 'Purdue career account aliases or PUIDs' : 'Email Addresses';
|
|
12
11
|
exports.getDomainIdentifierTypePluralString = getDomainIdentifierTypePluralString;
|
|
12
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc2hhcmQiLCJyZXF1aXJlIiwiZ2V0RG9tYWluSWRlbnRpZmllclR5cGVTdHJpbmciLCJpc1B1cmR1ZVNoYXJkIiwiZXhwb3J0cyIsImdldERvbWFpbklkZW50aWZpZXJUeXBlUGx1cmFsU3RyaW5nIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2RvbWFpbklkZW50aWZpZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQdXJkdWVTaGFyZCB9IGZyb20gJy4vc2hhcmQnXG5cbmV4cG9ydCBjb25zdCBnZXREb21haW5JZGVudGlmaWVyVHlwZVN0cmluZyA9ICgpID0+XG5cdGlzUHVyZHVlU2hhcmQoKSA/ICdQdXJkdWUgY2FyZWVyIGFjY291bnQgYWxpYXMgb3IgUFVJRCcgOiAnRW1haWwgQWRkcmVzcydcblxuZXhwb3J0IGNvbnN0IGdldERvbWFpbklkZW50aWZpZXJUeXBlUGx1cmFsU3RyaW5nID0gKCkgPT5cblx0aXNQdXJkdWVTaGFyZCgpID8gJ1B1cmR1ZSBjYXJlZXIgYWNjb3VudCBhbGlhc2VzIG9yIFBVSURzJyA6ICdFbWFpbCBBZGRyZXNzZXMnXG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUVPLE1BQU1DLDZCQUE2QixHQUFHQSxDQUFBLEtBQzVDLElBQUFDLG9CQUFhLEVBQUMsQ0FBQyxHQUFHLHFDQUFxQyxHQUFHLGVBQWU7QUFBQUMsT0FBQSxDQUFBRiw2QkFBQSxHQUFBQSw2QkFBQTtBQUVuRSxNQUFNRyxtQ0FBbUMsR0FBR0EsQ0FBQSxLQUNsRCxJQUFBRixvQkFBYSxFQUFDLENBQUMsR0FBRyx3Q0FBd0MsR0FBRyxpQkFBaUI7QUFBQUMsT0FBQSxDQUFBQyxtQ0FBQSxHQUFBQSxtQ0FBQSIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
3
6
|
exports.getRootModelName = void 0;
|
|
4
|
-
|
|
7
|
+
const getRootModelName = props => props.modelName.split('.').slice(0, -1).join('.');
|
|
5
8
|
exports.getRootModelName = getRootModelName;
|
|
9
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRSb290TW9kZWxOYW1lIiwicHJvcHMiLCJtb2RlbE5hbWUiLCJzcGxpdCIsInNsaWNlIiwiam9pbiIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvZW50aXR5VXNlclJvbGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGdldFJvb3RNb2RlbE5hbWUgPSAocHJvcHM6IHsgbW9kZWxOYW1lOiBzdHJpbmcgfSkgPT4gcHJvcHMubW9kZWxOYW1lLnNwbGl0KCcuJykuc2xpY2UoMCwgLTEpLmpvaW4oJy4nKVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBTyxNQUFNQSxnQkFBZ0IsR0FBSUMsS0FBNEIsSUFBS0EsS0FBSyxDQUFDQyxTQUFTLENBQUNDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQ0MsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDQyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQUFDLE9BQUEsQ0FBQU4sZ0JBQUEsR0FBQUEsZ0JBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
|
package/lib/utils/error.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const constructErrorFromCaughtError: (caughtError: unknown, name: string, message?: string
|
|
1
|
+
export declare const constructErrorFromCaughtError: (caughtError: unknown, name: string, message?: string) => Error;
|
package/lib/utils/error.js
CHANGED
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
3
6
|
exports.constructErrorFromCaughtError = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
return error;
|
|
7
|
+
const constructErrorFromCaughtError = (caughtError, name, message) => {
|
|
8
|
+
const error = new Error(message);
|
|
9
|
+
error.name = name;
|
|
10
|
+
if (caughtError instanceof Error) {
|
|
11
|
+
error.message += `${message ? '.\n' : ''}${caughtError.name !== 'Error' ? `${caughtError.name}: ` : ''}${caughtError.message}`;
|
|
12
|
+
error.stack = caughtError.stack;
|
|
13
|
+
// TODO: use `new Error(message, { cause: caughtError })` once we upgrade TS to allow es2022
|
|
14
|
+
} else if (typeof caughtError === 'string') {
|
|
15
|
+
error.message += `${message ? '.\n' : ''}${caughtError}`;
|
|
16
|
+
} else if (caughtError && typeof caughtError === 'object') {
|
|
17
|
+
error.message += `${message ? '.\n' : ''}${JSON.stringify(caughtError)}`;
|
|
18
|
+
}
|
|
19
|
+
return error;
|
|
19
20
|
};
|
|
20
21
|
exports.constructErrorFromCaughtError = constructErrorFromCaughtError;
|
|
22
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb25zdHJ1Y3RFcnJvckZyb21DYXVnaHRFcnJvciIsImNhdWdodEVycm9yIiwibmFtZSIsIm1lc3NhZ2UiLCJlcnJvciIsIkVycm9yIiwic3RhY2siLCJKU09OIiwic3RyaW5naWZ5IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9lcnJvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgY29uc3RydWN0RXJyb3JGcm9tQ2F1Z2h0RXJyb3IgPSAoY2F1Z2h0RXJyb3I6IHVua25vd24sIG5hbWU6IHN0cmluZywgbWVzc2FnZT86IHN0cmluZykgPT4ge1xuXHRjb25zdCBlcnJvciA9IG5ldyBFcnJvcihtZXNzYWdlKVxuXHRlcnJvci5uYW1lID0gbmFtZVxuXHRpZiAoY2F1Z2h0RXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuXHRcdGVycm9yLm1lc3NhZ2UgKz0gYCR7bWVzc2FnZSA/ICcuXFxuJyA6ICcnfSR7Y2F1Z2h0RXJyb3IubmFtZSAhPT0gJ0Vycm9yJyA/IGAke2NhdWdodEVycm9yLm5hbWV9OiBgIDogJyd9JHtcblx0XHRcdGNhdWdodEVycm9yLm1lc3NhZ2Vcblx0XHR9YFxuXHRcdGVycm9yLnN0YWNrID0gY2F1Z2h0RXJyb3Iuc3RhY2tcblx0XHQvLyBUT0RPOiB1c2UgYG5ldyBFcnJvcihtZXNzYWdlLCB7IGNhdXNlOiBjYXVnaHRFcnJvciB9KWAgb25jZSB3ZSB1cGdyYWRlIFRTIHRvIGFsbG93IGVzMjAyMlxuXHR9IGVsc2UgaWYgKHR5cGVvZiBjYXVnaHRFcnJvciA9PT0gJ3N0cmluZycpIHtcblx0XHRlcnJvci5tZXNzYWdlICs9IGAke21lc3NhZ2UgPyAnLlxcbicgOiAnJ30ke2NhdWdodEVycm9yfWBcblx0fSBlbHNlIGlmIChjYXVnaHRFcnJvciAmJiB0eXBlb2YgY2F1Z2h0RXJyb3IgPT09ICdvYmplY3QnKSB7XG5cdFx0ZXJyb3IubWVzc2FnZSArPSBgJHttZXNzYWdlID8gJy5cXG4nIDogJyd9JHtKU09OLnN0cmluZ2lmeShjYXVnaHRFcnJvcil9YFxuXHR9XG5cdHJldHVybiBlcnJvclxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBTyxNQUFNQSw2QkFBNkIsR0FBR0EsQ0FBQ0MsV0FBb0IsRUFBRUMsSUFBWSxFQUFFQyxPQUFnQixLQUFLO0VBQ3RHLE1BQU1DLEtBQUssR0FBRyxJQUFJQyxLQUFLLENBQUNGLE9BQU8sQ0FBQztFQUNoQ0MsS0FBSyxDQUFDRixJQUFJLEdBQUdBLElBQUk7RUFDakIsSUFBSUQsV0FBVyxZQUFZSSxLQUFLLEVBQUU7SUFDakNELEtBQUssQ0FBQ0QsT0FBTyxJQUFJLEdBQUdBLE9BQU8sR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHRixXQUFXLENBQUNDLElBQUksS0FBSyxPQUFPLEdBQUcsR0FBR0QsV0FBVyxDQUFDQyxJQUFJLElBQUksR0FBRyxFQUFFLEdBQ3JHRCxXQUFXLENBQUNFLE9BQU8sRUFDbEI7SUFDRkMsS0FBSyxDQUFDRSxLQUFLLEdBQUdMLFdBQVcsQ0FBQ0ssS0FBSztJQUMvQjtFQUNELENBQUMsTUFBTSxJQUFJLE9BQU9MLFdBQVcsS0FBSyxRQUFRLEVBQUU7SUFDM0NHLEtBQUssQ0FBQ0QsT0FBTyxJQUFJLEdBQUdBLE9BQU8sR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHRixXQUFXLEVBQUU7RUFDekQsQ0FBQyxNQUFNLElBQUlBLFdBQVcsSUFBSSxPQUFPQSxXQUFXLEtBQUssUUFBUSxFQUFFO0lBQzFERyxLQUFLLENBQUNELE9BQU8sSUFBSSxHQUFHQSxPQUFPLEdBQUcsS0FBSyxHQUFHLEVBQUUsR0FBR0ksSUFBSSxDQUFDQyxTQUFTLENBQUNQLFdBQVcsQ0FBQyxFQUFFO0VBQ3pFO0VBQ0EsT0FBT0csS0FBSztBQUNiLENBQUM7QUFBQUssT0FBQSxDQUFBVCw2QkFBQSxHQUFBQSw2QkFBQSIsImlnbm9yZUxpc3QiOltdfQ==
|
package/lib/utils/events.js
CHANGED
|
@@ -1,38 +1,45 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
6
7
|
exports.trackCustomEvent = void 0;
|
|
7
|
-
var
|
|
8
|
-
var
|
|
8
|
+
var _reactGa = _interopRequireDefault(require("react-ga4"));
|
|
9
|
+
var _constants = require("../constants");
|
|
9
10
|
/**
|
|
10
11
|
* Send an event to Google Analytics and App Insights
|
|
11
12
|
* @param event
|
|
12
13
|
*/
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
14
|
+
const trackCustomEvent = event => {
|
|
15
|
+
const {
|
|
16
|
+
eventName,
|
|
17
|
+
category,
|
|
18
|
+
action,
|
|
19
|
+
label
|
|
20
|
+
} = event;
|
|
21
|
+
const userId = (0, _constants.getUserId)();
|
|
22
|
+
const appConfig = (0, _constants.getAppConfig)();
|
|
23
|
+
if (appConfig.GOOGLE_ANALYTICS_TRACKING_ID) {
|
|
24
|
+
_reactGa.default.event(eventName, {
|
|
25
|
+
event_category: category,
|
|
26
|
+
action: action,
|
|
27
|
+
event_label: label,
|
|
28
|
+
user_id: userId
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
if (appConfig.APP_INSIGHTS_CONNECTION_STRING) {
|
|
32
|
+
const appInsights = (0, _constants.getAppInsights)();
|
|
33
|
+
appInsights.trackEvent({
|
|
34
|
+
name: eventName,
|
|
35
|
+
properties: {
|
|
36
|
+
category: category,
|
|
37
|
+
action: action,
|
|
38
|
+
label: label,
|
|
39
|
+
userId: userId
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
37
43
|
};
|
|
38
44
|
exports.trackCustomEvent = trackCustomEvent;
|
|
45
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3RHYSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2NvbnN0YW50cyIsInRyYWNrQ3VzdG9tRXZlbnQiLCJldmVudCIsImV2ZW50TmFtZSIsImNhdGVnb3J5IiwiYWN0aW9uIiwibGFiZWwiLCJ1c2VySWQiLCJnZXRVc2VySWQiLCJhcHBDb25maWciLCJnZXRBcHBDb25maWciLCJHT09HTEVfQU5BTFlUSUNTX1RSQUNLSU5HX0lEIiwiZ2EiLCJldmVudF9jYXRlZ29yeSIsImV2ZW50X2xhYmVsIiwidXNlcl9pZCIsIkFQUF9JTlNJR0hUU19DT05ORUNUSU9OX1NUUklORyIsImFwcEluc2lnaHRzIiwiZ2V0QXBwSW5zaWdodHMiLCJ0cmFja0V2ZW50IiwibmFtZSIsInByb3BlcnRpZXMiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2V2ZW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2EgZnJvbSAncmVhY3QtZ2E0J1xuaW1wb3J0IHsgZ2V0QXBwQ29uZmlnLCBnZXRBcHBJbnNpZ2h0cywgZ2V0VXNlcklkIH0gZnJvbSAnLi4vY29uc3RhbnRzJ1xuaW1wb3J0IHsgQ3VzdG9tRXZlbnQgfSBmcm9tICcuLi90eXBlcy9FdmVudCdcblxuLyoqXG4gKiBTZW5kIGFuIGV2ZW50IHRvIEdvb2dsZSBBbmFseXRpY3MgYW5kIEFwcCBJbnNpZ2h0c1xuICogQHBhcmFtIGV2ZW50XG4gKi9cbmV4cG9ydCBjb25zdCB0cmFja0N1c3RvbUV2ZW50ID0gKGV2ZW50OiBDdXN0b21FdmVudCkgPT4ge1xuXHRjb25zdCB7IGV2ZW50TmFtZSwgY2F0ZWdvcnksIGFjdGlvbiwgbGFiZWwgfSA9IGV2ZW50XG5cdGNvbnN0IHVzZXJJZCA9IGdldFVzZXJJZCgpXG5cdGNvbnN0IGFwcENvbmZpZyA9IGdldEFwcENvbmZpZygpXG5cdGlmIChhcHBDb25maWcuR09PR0xFX0FOQUxZVElDU19UUkFDS0lOR19JRCkge1xuXHRcdGdhLmV2ZW50KGV2ZW50TmFtZSwge1xuXHRcdFx0ZXZlbnRfY2F0ZWdvcnk6IGNhdGVnb3J5LFxuXHRcdFx0YWN0aW9uOiBhY3Rpb24sXG5cdFx0XHRldmVudF9sYWJlbDogbGFiZWwsXG5cdFx0XHR1c2VyX2lkOiB1c2VySWRcblx0XHR9KVxuXHR9XG5cdGlmIChhcHBDb25maWcuQVBQX0lOU0lHSFRTX0NPTk5FQ1RJT05fU1RSSU5HKSB7XG5cdFx0Y29uc3QgYXBwSW5zaWdodHMgPSBnZXRBcHBJbnNpZ2h0cygpXG5cdFx0YXBwSW5zaWdodHMudHJhY2tFdmVudCh7XG5cdFx0XHRuYW1lOiBldmVudE5hbWUsXG5cdFx0XHRwcm9wZXJ0aWVzOiB7XG5cdFx0XHRcdGNhdGVnb3J5OiBjYXRlZ29yeSxcblx0XHRcdFx0YWN0aW9uOiBhY3Rpb24sXG5cdFx0XHRcdGxhYmVsOiBsYWJlbCxcblx0XHRcdFx0dXNlcklkOiB1c2VySWRcblx0XHRcdH1cblx0XHR9KVxuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxRQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxVQUFBLEdBQUFELE9BQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLE1BQU1FLGdCQUFnQixHQUFJQyxLQUFrQixJQUFLO0VBQ3ZELE1BQU07SUFBRUMsU0FBUztJQUFFQyxRQUFRO0lBQUVDLE1BQU07SUFBRUM7RUFBTSxDQUFDLEdBQUdKLEtBQUs7RUFDcEQsTUFBTUssTUFBTSxHQUFHLElBQUFDLG9CQUFTLEVBQUMsQ0FBQztFQUMxQixNQUFNQyxTQUFTLEdBQUcsSUFBQUMsdUJBQVksRUFBQyxDQUFDO0VBQ2hDLElBQUlELFNBQVMsQ0FBQ0UsNEJBQTRCLEVBQUU7SUFDM0NDLGdCQUFFLENBQUNWLEtBQUssQ0FBQ0MsU0FBUyxFQUFFO01BQ25CVSxjQUFjLEVBQUVULFFBQVE7TUFDeEJDLE1BQU0sRUFBRUEsTUFBTTtNQUNkUyxXQUFXLEVBQUVSLEtBQUs7TUFDbEJTLE9BQU8sRUFBRVI7SUFDVixDQUFDLENBQUM7RUFDSDtFQUNBLElBQUlFLFNBQVMsQ0FBQ08sOEJBQThCLEVBQUU7SUFDN0MsTUFBTUMsV0FBVyxHQUFHLElBQUFDLHlCQUFjLEVBQUMsQ0FBQztJQUNwQ0QsV0FBVyxDQUFDRSxVQUFVLENBQUM7TUFDdEJDLElBQUksRUFBRWpCLFNBQVM7TUFDZmtCLFVBQVUsRUFBRTtRQUNYakIsUUFBUSxFQUFFQSxRQUFRO1FBQ2xCQyxNQUFNLEVBQUVBLE1BQU07UUFDZEMsS0FBSyxFQUFFQSxLQUFLO1FBQ1pDLE1BQU0sRUFBRUE7TUFDVDtJQUNELENBQUMsQ0FBQztFQUNIO0FBQ0QsQ0FBQztBQUFBZSxPQUFBLENBQUFyQixnQkFBQSxHQUFBQSxnQkFBQSIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -1,28 +1,32 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.hasGradePushEnabled = exports.hasAnyUniTimeExternalGroup = exports.hasAnyLtiExternalGroup = void 0;
|
|
7
|
+
var _externalProviderType = require("../constants/externalProviderType");
|
|
8
|
+
const hasAnyUniTimeExternalGroup = (externalGroups, externalProviders) => {
|
|
9
|
+
const uniTimeExternalProvider = externalProviders.find(ep => ep.typename === _externalProviderType.EXTERNAL_PROVIDER_TYPE.UNITIME);
|
|
10
|
+
if (!uniTimeExternalProvider) {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
return externalGroups.some(eg => eg.externalProviderId === uniTimeExternalProvider.id);
|
|
11
14
|
};
|
|
12
15
|
exports.hasAnyUniTimeExternalGroup = hasAnyUniTimeExternalGroup;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
const hasAnyLtiExternalGroup = (externalGroups, externalProviders) => {
|
|
17
|
+
const ltiExternalProvider = externalProviders.find(ep => ep.typename === _externalProviderType.EXTERNAL_PROVIDER_TYPE.LTI);
|
|
18
|
+
if (!ltiExternalProvider) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
return externalGroups.some(eg => eg.externalProviderId === ltiExternalProvider.id);
|
|
19
22
|
};
|
|
20
23
|
exports.hasAnyLtiExternalGroup = hasAnyLtiExternalGroup;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
const hasGradePushEnabled = (externalGroups, externalProviders) => {
|
|
25
|
+
const ltiExternalProvider = externalProviders.find(ep => ep.gradePushEnabled);
|
|
26
|
+
if (!ltiExternalProvider) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
return externalGroups.some(eg => eg.externalProviderId === ltiExternalProvider.id && !!eg.gradesUrl);
|
|
27
30
|
};
|
|
28
31
|
exports.hasGradePushEnabled = hasGradePushEnabled;
|
|
32
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXh0ZXJuYWxQcm92aWRlclR5cGUiLCJyZXF1aXJlIiwiaGFzQW55VW5pVGltZUV4dGVybmFsR3JvdXAiLCJleHRlcm5hbEdyb3VwcyIsImV4dGVybmFsUHJvdmlkZXJzIiwidW5pVGltZUV4dGVybmFsUHJvdmlkZXIiLCJmaW5kIiwiZXAiLCJ0eXBlbmFtZSIsIkVYVEVSTkFMX1BST1ZJREVSX1RZUEUiLCJVTklUSU1FIiwic29tZSIsImVnIiwiZXh0ZXJuYWxQcm92aWRlcklkIiwiaWQiLCJleHBvcnRzIiwiaGFzQW55THRpRXh0ZXJuYWxHcm91cCIsImx0aUV4dGVybmFsUHJvdmlkZXIiLCJMVEkiLCJoYXNHcmFkZVB1c2hFbmFibGVkIiwiZ3JhZGVQdXNoRW5hYmxlZCIsImdyYWRlc1VybCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9leHRlcm5hbEdyb3VwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVYVEVSTkFMX1BST1ZJREVSX1RZUEUgfSBmcm9tICcuLi9jb25zdGFudHMvZXh0ZXJuYWxQcm92aWRlclR5cGUnXG5pbXBvcnQgeyBFeHRlcm5hbEdyb3VwIH0gZnJvbSAnLi4vdHlwZXMvRXh0ZXJuYWxHcm91cCdcbmltcG9ydCB7IEV4dGVybmFsUHJvdmlkZXIgfSBmcm9tICcuLi90eXBlcy9FeHRlcm5hbFByb3ZpZGVyJ1xuXG5leHBvcnQgY29uc3QgaGFzQW55VW5pVGltZUV4dGVybmFsR3JvdXAgPSAoZXh0ZXJuYWxHcm91cHM6IEV4dGVybmFsR3JvdXBbXSwgZXh0ZXJuYWxQcm92aWRlcnM6IEV4dGVybmFsUHJvdmlkZXJbXSkgPT4ge1xuXHRjb25zdCB1bmlUaW1lRXh0ZXJuYWxQcm92aWRlciA9IGV4dGVybmFsUHJvdmlkZXJzLmZpbmQoZXAgPT4gZXAudHlwZW5hbWUgPT09IEVYVEVSTkFMX1BST1ZJREVSX1RZUEUuVU5JVElNRSlcblxuXHRpZiAoIXVuaVRpbWVFeHRlcm5hbFByb3ZpZGVyKSB7XG5cdFx0cmV0dXJuIGZhbHNlXG5cdH1cblxuXHRyZXR1cm4gZXh0ZXJuYWxHcm91cHMuc29tZShlZyA9PiBlZy5leHRlcm5hbFByb3ZpZGVySWQgPT09IHVuaVRpbWVFeHRlcm5hbFByb3ZpZGVyLmlkKVxufVxuXG5leHBvcnQgY29uc3QgaGFzQW55THRpRXh0ZXJuYWxHcm91cCA9IChleHRlcm5hbEdyb3VwczogRXh0ZXJuYWxHcm91cFtdLCBleHRlcm5hbFByb3ZpZGVyczogRXh0ZXJuYWxQcm92aWRlcltdKSA9PiB7XG5cdGNvbnN0IGx0aUV4dGVybmFsUHJvdmlkZXIgPSBleHRlcm5hbFByb3ZpZGVycy5maW5kKGVwID0+IGVwLnR5cGVuYW1lID09PSBFWFRFUk5BTF9QUk9WSURFUl9UWVBFLkxUSSlcblxuXHRpZiAoIWx0aUV4dGVybmFsUHJvdmlkZXIpIHtcblx0XHRyZXR1cm4gZmFsc2Vcblx0fVxuXG5cdHJldHVybiBleHRlcm5hbEdyb3Vwcy5zb21lKGVnID0+IGVnLmV4dGVybmFsUHJvdmlkZXJJZCA9PT0gbHRpRXh0ZXJuYWxQcm92aWRlci5pZClcbn1cblxuZXhwb3J0IGNvbnN0IGhhc0dyYWRlUHVzaEVuYWJsZWQgPSAoZXh0ZXJuYWxHcm91cHM6IEV4dGVybmFsR3JvdXBbXSwgZXh0ZXJuYWxQcm92aWRlcnM6IEV4dGVybmFsUHJvdmlkZXJbXSkgPT4ge1xuXHRjb25zdCBsdGlFeHRlcm5hbFByb3ZpZGVyID0gZXh0ZXJuYWxQcm92aWRlcnMuZmluZChlcCA9PiBlcC5ncmFkZVB1c2hFbmFibGVkKVxuXG5cdGlmICghbHRpRXh0ZXJuYWxQcm92aWRlcikge1xuXHRcdHJldHVybiBmYWxzZVxuXHR9XG5cblx0cmV0dXJuIGV4dGVybmFsR3JvdXBzLnNvbWUoZWcgPT4gZWcuZXh0ZXJuYWxQcm92aWRlcklkID09PSBsdGlFeHRlcm5hbFByb3ZpZGVyLmlkICYmICEhZWcuZ3JhZGVzVXJsKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxxQkFBQSxHQUFBQyxPQUFBO0FBSU8sTUFBTUMsMEJBQTBCLEdBQUdBLENBQUNDLGNBQStCLEVBQUVDLGlCQUFxQyxLQUFLO0VBQ3JILE1BQU1DLHVCQUF1QixHQUFHRCxpQkFBaUIsQ0FBQ0UsSUFBSSxDQUFDQyxFQUFFLElBQUlBLEVBQUUsQ0FBQ0MsUUFBUSxLQUFLQyw0Q0FBc0IsQ0FBQ0MsT0FBTyxDQUFDO0VBRTVHLElBQUksQ0FBQ0wsdUJBQXVCLEVBQUU7SUFDN0IsT0FBTyxLQUFLO0VBQ2I7RUFFQSxPQUFPRixjQUFjLENBQUNRLElBQUksQ0FBQ0MsRUFBRSxJQUFJQSxFQUFFLENBQUNDLGtCQUFrQixLQUFLUix1QkFBdUIsQ0FBQ1MsRUFBRSxDQUFDO0FBQ3ZGLENBQUM7QUFBQUMsT0FBQSxDQUFBYiwwQkFBQSxHQUFBQSwwQkFBQTtBQUVNLE1BQU1jLHNCQUFzQixHQUFHQSxDQUFDYixjQUErQixFQUFFQyxpQkFBcUMsS0FBSztFQUNqSCxNQUFNYSxtQkFBbUIsR0FBR2IsaUJBQWlCLENBQUNFLElBQUksQ0FBQ0MsRUFBRSxJQUFJQSxFQUFFLENBQUNDLFFBQVEsS0FBS0MsNENBQXNCLENBQUNTLEdBQUcsQ0FBQztFQUVwRyxJQUFJLENBQUNELG1CQUFtQixFQUFFO0lBQ3pCLE9BQU8sS0FBSztFQUNiO0VBRUEsT0FBT2QsY0FBYyxDQUFDUSxJQUFJLENBQUNDLEVBQUUsSUFBSUEsRUFBRSxDQUFDQyxrQkFBa0IsS0FBS0ksbUJBQW1CLENBQUNILEVBQUUsQ0FBQztBQUNuRixDQUFDO0FBQUFDLE9BQUEsQ0FBQUMsc0JBQUEsR0FBQUEsc0JBQUE7QUFFTSxNQUFNRyxtQkFBbUIsR0FBR0EsQ0FBQ2hCLGNBQStCLEVBQUVDLGlCQUFxQyxLQUFLO0VBQzlHLE1BQU1hLG1CQUFtQixHQUFHYixpQkFBaUIsQ0FBQ0UsSUFBSSxDQUFDQyxFQUFFLElBQUlBLEVBQUUsQ0FBQ2EsZ0JBQWdCLENBQUM7RUFFN0UsSUFBSSxDQUFDSCxtQkFBbUIsRUFBRTtJQUN6QixPQUFPLEtBQUs7RUFDYjtFQUVBLE9BQU9kLGNBQWMsQ0FBQ1EsSUFBSSxDQUFDQyxFQUFFLElBQUlBLEVBQUUsQ0FBQ0Msa0JBQWtCLEtBQUtJLG1CQUFtQixDQUFDSCxFQUFFLElBQUksQ0FBQyxDQUFDRixFQUFFLENBQUNTLFNBQVMsQ0FBQztBQUNyRyxDQUFDO0FBQUFOLE9BQUEsQ0FBQUksbUJBQUEsR0FBQUEsbUJBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
|