studiokit-scaffolding-js 4.3.20 → 4.3.21
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/LICENSE +21 -21
- package/README.md +127 -127
- package/lib/components/ActionList.d.ts +20 -20
- package/lib/components/ActionList.js +94 -94
- package/lib/components/AlertDialog.d.ts +18 -18
- package/lib/components/AlertDialog.js +21 -21
- package/lib/components/AlertWithIcon.d.ts +7 -7
- package/lib/components/AlertWithIcon.js +57 -57
- package/lib/components/Blots/CustomImageSpec.d.ts +14 -14
- package/lib/components/Blots/CustomImageSpec.js +45 -45
- package/lib/components/Blots/CustomVideoSpec.d.ts +16 -16
- package/lib/components/Blots/CustomVideoSpec.js +47 -47
- package/lib/components/ConnectedModal.d.ts +6 -6
- package/lib/components/ConnectedModal.js +11 -11
- package/lib/components/Dropdowns/GroupsDropdown.d.ts +18 -18
- package/lib/components/Dropdowns/GroupsDropdown.js +90 -90
- package/lib/components/Dropdowns/ManagedNavDropdown.d.ts +32 -32
- package/lib/components/Dropdowns/ManagedNavDropdown.js +118 -118
- package/lib/components/Dropdowns/UserDropdown.d.ts +6 -6
- package/lib/components/Dropdowns/UserDropdown.js +76 -76
- package/lib/components/Dropdowns/index.d.ts +3 -3
- package/lib/components/Dropdowns/index.js +12 -12
- package/lib/components/EntityOwnerList.d.ts +11 -11
- package/lib/components/EntityOwnerList.js +63 -63
- package/lib/components/ErrorBoundary.d.ts +11 -11
- package/lib/components/ErrorBoundary.js +74 -74
- package/lib/components/Forms/DateField.d.ts +13 -13
- package/lib/components/Forms/DateField.js +99 -99
- package/lib/components/Forms/TimeField.d.ts +11 -11
- package/lib/components/Forms/TimeField.js +112 -112
- package/lib/components/Forms/index.d.ts +2 -2
- package/lib/components/Forms/index.js +14 -14
- package/lib/components/Groups/CreateEditCopySaveButtons.d.ts +10 -10
- package/lib/components/Groups/CreateEditCopySaveButtons.js +18 -18
- package/lib/components/Groups/GroupCreateOrEditCommonProps.d.ts +6 -6
- package/lib/components/Groups/GroupCreateOrEditCommonProps.js +2 -2
- package/lib/components/Groups/RosterSyncInfo.d.ts +5 -5
- package/lib/components/Groups/RosterSyncInfo.js +54 -54
- package/lib/components/HOC/AccessibleAppComponent.d.ts +15 -15
- package/lib/components/HOC/AccessibleAppComponent.js +135 -135
- package/lib/components/HOC/ActivityRequiredComponent.d.ts +105 -105
- package/lib/components/HOC/ActivityRequiredComponent.js +101 -101
- package/lib/components/HOC/AsyncComponent.d.ts +37 -37
- package/lib/components/HOC/AsyncComponent.js +136 -136
- package/lib/components/HOC/AuthenticatedComponent.d.ts +10 -10
- package/lib/components/HOC/AuthenticatedComponent.js +104 -104
- package/lib/components/HOC/CollectionComponent.d.ts +61 -61
- package/lib/components/HOC/CollectionComponent.js +175 -175
- package/lib/components/HOC/CollectionFirstItemComponent.d.ts +67 -67
- package/lib/components/HOC/CollectionFirstItemComponent.js +94 -94
- package/lib/components/HOC/CollectionItemComponent.d.ts +61 -61
- package/lib/components/HOC/CollectionItemComponent.js +172 -172
- package/lib/components/HOC/ConnectedModalComponent.d.ts +26 -26
- package/lib/components/HOC/ConnectedModalComponent.js +110 -110
- package/lib/components/HOC/DataDependentComponent.d.ts +61 -61
- package/lib/components/HOC/DataDependentComponent.js +90 -90
- package/lib/components/HOC/EntityComponent.d.ts +83 -83
- package/lib/components/HOC/EntityComponent.js +120 -120
- package/lib/components/HOC/FullscreenModalComponent.d.ts +74 -74
- package/lib/components/HOC/FullscreenModalComponent.js +173 -173
- package/lib/components/HOC/GroupActivityRequiredComponent.d.ts +29 -29
- package/lib/components/HOC/GroupActivityRequiredComponent.js +49 -49
- package/lib/components/HOC/GuidComponent.d.ts +14 -14
- package/lib/components/HOC/GuidComponent.js +72 -72
- package/lib/components/HOC/ModelContextDependencyVerifyComponent.d.ts +172 -172
- package/lib/components/HOC/ModelContextDependencyVerifyComponent.js +72 -72
- package/lib/components/HOC/ModelErrorRedirectComponent.d.ts +69 -69
- package/lib/components/HOC/ModelErrorRedirectComponent.js +101 -101
- package/lib/components/HOC/SearchPersistorComponent.d.ts +85 -85
- package/lib/components/HOC/SearchPersistorComponent.js +198 -198
- package/lib/components/HOC/UnauthenticatedComponent.d.ts +62 -62
- package/lib/components/HOC/UnauthenticatedComponent.js +90 -90
- package/lib/components/HOC/UserComponent.d.ts +3 -3
- package/lib/components/HOC/UserComponent.js +12 -12
- package/lib/components/Icons/IconExternalUser.d.ts +3 -3
- package/lib/components/Icons/IconExternalUser.js +24 -24
- package/lib/components/Icons/IconImpersonation.d.ts +3 -3
- package/lib/components/Icons/IconImpersonation.js +24 -24
- package/lib/components/Icons/IconStopImpersonating.d.ts +3 -3
- package/lib/components/Icons/IconStopImpersonating.js +24 -24
- package/lib/components/Impersonation/Button.d.ts +7 -7
- package/lib/components/Impersonation/Button.js +61 -61
- package/lib/components/Impersonation/Link.d.ts +7 -7
- package/lib/components/Impersonation/Link.js +58 -58
- package/lib/components/Impersonation/UserDetail.css +22 -22
- package/lib/components/Impersonation/UserDetail.d.ts +22 -22
- package/lib/components/Impersonation/UserDetail.js +23 -23
- package/lib/components/Loading.d.ts +4 -4
- package/lib/components/Loading.js +24 -24
- package/lib/components/Lti/Confirm.d.ts +8 -8
- package/lib/components/Lti/Confirm.js +37 -37
- package/lib/components/Lti/CreateNonLtiGroupAlertDialog.d.ts +15 -15
- package/lib/components/Lti/CreateNonLtiGroupAlertDialog.js +83 -83
- package/lib/components/Lti/Launch.d.ts +21 -21
- package/lib/components/Lti/Launch.js +52 -52
- package/lib/components/Lti/LaunchGroup.d.ts +9 -9
- package/lib/components/Lti/LaunchGroup.js +45 -45
- package/lib/components/NewVersionAlert.d.ts +18 -18
- package/lib/components/NewVersionAlert.js +97 -97
- package/lib/components/NotFound.d.ts +3 -3
- package/lib/components/NotFound.js +28 -28
- package/lib/components/Notifications.d.ts +39 -39
- package/lib/components/Notifications.js +175 -175
- package/lib/components/RefreshIndicator/Bordered.d.ts +7 -7
- package/lib/components/RefreshIndicator/Bordered.js +35 -35
- package/lib/components/RefreshIndicator/Inline.d.ts +4 -4
- package/lib/components/RefreshIndicator/Inline.js +36 -36
- package/lib/components/RefreshIndicator/index.d.ts +21 -21
- package/lib/components/RefreshIndicator/index.js +116 -116
- package/lib/components/SearchControls.d.ts +14 -14
- package/lib/components/SearchControls.js +34 -34
- package/lib/components/SentryRoute.d.ts +3 -3
- package/lib/components/SentryRoute.js +25 -25
- package/lib/components/Tables/RoleFilter.d.ts +14 -14
- package/lib/components/Tables/RoleFilter.js +53 -53
- package/lib/components/Tables/TextFilter.d.ts +7 -7
- package/lib/components/Tables/TextFilter.js +26 -26
- package/lib/components/UserRoles/Add.d.ts +31 -31
- package/lib/components/UserRoles/Add.js +165 -165
- package/lib/components/UserRoles/RoleCell.d.ts +21 -21
- package/lib/components/UserRoles/RoleCell.js +53 -53
- package/lib/components/UserRoles/Select.d.ts +27 -27
- package/lib/components/UserRoles/Select.js +44 -44
- package/lib/components/UserRoles/Table.d.ts +16 -16
- package/lib/components/UserRoles/Table.js +99 -99
- package/lib/components/UserRoles/index.d.ts +76 -76
- package/lib/components/UserRoles/index.js +361 -361
- package/lib/constants/baseActivity.d.ts +25 -25
- package/lib/constants/baseActivity.js +29 -29
- package/lib/constants/baseRole.d.ts +9 -9
- package/lib/constants/baseRole.js +13 -13
- package/lib/constants/configuration.d.ts +8 -8
- package/lib/constants/configuration.js +39 -39
- package/lib/constants/externalProviderType.d.ts +5 -5
- package/lib/constants/externalProviderType.js +9 -9
- package/lib/constants/index.d.ts +8 -8
- package/lib/constants/index.js +20 -20
- package/lib/constants/mockData.d.ts +82 -84
- package/lib/constants/mockData.js +379 -379
- package/lib/constants/modelStatus.d.ts +10 -10
- package/lib/constants/modelStatus.js +14 -14
- package/lib/constants/notificationType.d.ts +7 -7
- package/lib/constants/notificationType.js +11 -11
- package/lib/constants/shard.d.ts +6 -6
- package/lib/constants/shard.js +10 -10
- package/lib/constants/tier.d.ts +6 -6
- package/lib/constants/tier.js +10 -10
- package/lib/constants/userRole.d.ts +2 -2
- package/lib/constants/userRole.js +21 -21
- package/lib/css/base/_base.css +98 -98
- package/lib/css/base/_typography.css +130 -130
- package/lib/css/components/_alert.css +85 -85
- package/lib/css/components/_bootstrap-grid.css +28 -28
- package/lib/css/components/_buttons.css +325 -325
- package/lib/css/components/_forms.css +91 -91
- package/lib/css/components/_menu.css +56 -56
- package/lib/css/components/_modals.css +41 -41
- package/lib/css/components/_tables.css +426 -426
- package/lib/css/components/_tags.css +12 -12
- package/lib/css/index-with-variables.css +14 -14
- package/lib/css/index.css +13 -13
- package/lib/css/utils/_border.css +463 -463
- package/lib/css/utils/_color.css +271 -271
- package/lib/css/utils/_display.css +312 -312
- package/lib/css/utils/_general.css +48 -48
- package/lib/css/utils/_icon.css +16 -16
- package/lib/css/utils/_text.css +24 -24
- package/lib/css/utils/_width.css +60 -60
- package/lib/css/variables.css +70 -70
- package/lib/endpointMappings.d.ts +4 -4
- package/lib/endpointMappings.js +173 -173
- package/lib/hooks/useCollection.d.ts +6 -6
- package/lib/hooks/useCollection.js +61 -61
- package/lib/hooks/useCollectionConfiguration.d.ts +27 -27
- package/lib/hooks/useCollectionConfiguration.js +67 -67
- package/lib/hooks/useCollectionItem.d.ts +6 -6
- package/lib/hooks/useCollectionItem.js +54 -54
- package/lib/hooks/useGuid.d.ts +4 -4
- package/lib/hooks/useGuid.js +14 -14
- package/lib/hooks/usePrevious.d.ts +5 -5
- package/lib/hooks/usePrevious.js +18 -18
- package/lib/index.d.ts +8 -8
- package/lib/index.js +30 -30
- package/lib/redux/actionCreator.d.ts +5 -5
- package/lib/redux/actionCreator.js +16 -16
- package/lib/redux/actions.d.ts +12 -12
- package/lib/redux/actions.js +30 -30
- package/lib/redux/configureReducers.d.ts +22 -22
- package/lib/redux/configureReducers.js +94 -94
- package/lib/redux/configureStore.d.ts +14 -14
- package/lib/redux/configureStore.js +118 -118
- package/lib/redux/helpers.d.ts +2 -2
- package/lib/redux/helpers.js +7 -7
- package/lib/redux/reducers/index.d.ts +4 -4
- package/lib/redux/reducers/index.js +12 -12
- package/lib/redux/reducers/modalsReducer.d.ts +8 -8
- package/lib/redux/reducers/modalsReducer.js +54 -54
- package/lib/redux/reducers/notificationsReducer.d.ts +9 -9
- package/lib/redux/reducers/notificationsReducer.js +27 -27
- package/lib/redux/reducers/searchReducer.d.ts +17 -17
- package/lib/redux/reducers/searchReducer.js +26 -26
- package/lib/redux/sagas/caliperSaga.d.ts +2 -2
- package/lib/redux/sagas/caliperSaga.js +296 -296
- package/lib/redux/sagas/clockOffsetSaga.d.ts +10 -10
- package/lib/redux/sagas/clockOffsetSaga.js +81 -81
- package/lib/redux/sagas/configurationSaga.d.ts +1 -1
- package/lib/redux/sagas/configurationSaga.js +48 -48
- package/lib/redux/sagas/errorSaga.d.ts +2 -2
- package/lib/redux/sagas/errorSaga.js +66 -66
- package/lib/redux/sagas/identityProviderSaga.d.ts +2 -2
- package/lib/redux/sagas/identityProviderSaga.js +91 -91
- package/lib/redux/sagas/initialDataLoadSaga.d.ts +1 -1
- package/lib/redux/sagas/initialDataLoadSaga.js +33 -33
- package/lib/redux/sagas/postLoginDataSaga.d.ts +9 -9
- package/lib/redux/sagas/postLoginDataSaga.js +87 -87
- package/lib/redux/sagas/postLoginRedirectSaga.d.ts +6 -6
- package/lib/redux/sagas/postLoginRedirectSaga.js +96 -96
- package/lib/redux/sagas/rootSaga.d.ts +5 -5
- package/lib/redux/sagas/rootSaga.js +144 -144
- package/lib/redux/sagas/sentrySaga.d.ts +1 -1
- package/lib/redux/sagas/sentrySaga.js +103 -103
- package/lib/services/codeProviderService.d.ts +3 -3
- package/lib/services/codeProviderService.js +36 -36
- package/lib/services/documentService.d.ts +10 -10
- package/lib/services/documentService.js +17 -17
- package/lib/services/persistenceService.d.ts +13 -13
- package/lib/services/persistenceService.js +45 -45
- package/lib/services/ticketProviderService.d.ts +3 -3
- package/lib/services/ticketProviderService.js +40 -40
- package/lib/services/windowService.d.ts +9 -9
- package/lib/services/windowService.js +15 -15
- package/lib/setupTests.d.ts +1 -1
- package/lib/setupTests.js +25 -25
- package/lib/startup.d.ts +29 -29
- package/lib/startup.js +128 -128
- package/lib/types/AppConfiguration.d.ts +32 -32
- package/lib/types/AppConfiguration.js +2 -2
- package/lib/types/Artifact.d.ts +14 -14
- package/lib/types/Artifact.js +9 -9
- package/lib/types/BaseReduxState.d.ts +57 -57
- package/lib/types/BaseReduxState.js +2 -2
- package/lib/types/Client.d.ts +6 -6
- package/lib/types/Client.js +2 -2
- package/lib/types/Collection.d.ts +175 -175
- package/lib/types/Collection.js +2 -2
- package/lib/types/Configuration.d.ts +12 -12
- package/lib/types/Configuration.js +2 -2
- package/lib/types/DeepLinkingResponseRequest.d.ts +4 -4
- package/lib/types/DeepLinkingResponseRequest.js +2 -2
- package/lib/types/DeletableModel.d.ts +4 -4
- package/lib/types/DeletableModel.js +2 -2
- package/lib/types/External.d.ts +31 -31
- package/lib/types/External.js +2 -2
- package/lib/types/Group.d.ts +19 -19
- package/lib/types/Group.js +2 -2
- package/lib/types/IdentityProvider.d.ts +11 -11
- package/lib/types/IdentityProvider.js +2 -2
- package/lib/types/LtiLaunch.d.ts +20 -20
- package/lib/types/LtiLaunch.js +2 -2
- package/lib/types/NameOnlyEntity.d.ts +3 -3
- package/lib/types/NameOnlyEntity.js +2 -2
- package/lib/types/Notification.d.ts +15 -15
- package/lib/types/Notification.js +2 -2
- package/lib/types/OptionalRecord.d.ts +4 -4
- package/lib/types/OptionalRecord.js +2 -2
- package/lib/types/OwnerSchedule.d.ts +9 -9
- package/lib/types/OwnerSchedule.js +2 -2
- package/lib/types/PropertyOfType.d.ts +12 -12
- package/lib/types/PropertyOfType.js +2 -2
- package/lib/types/RoleDescription.d.ts +4 -4
- package/lib/types/RoleDescription.js +2 -2
- package/lib/types/Search.d.ts +11 -11
- package/lib/types/Search.js +2 -2
- package/lib/types/SimpleLocation.d.ts +46 -46
- package/lib/types/SimpleLocation.js +2 -2
- package/lib/types/UniTime.d.ts +17 -17
- package/lib/types/UniTime.js +2 -2
- package/lib/types/User.d.ts +68 -68
- package/lib/types/User.js +2 -2
- package/lib/types/UserRole.d.ts +19 -19
- package/lib/types/UserRole.js +2 -2
- package/lib/types/index.d.ts +21 -21
- package/lib/types/index.js +33 -33
- package/lib/utils/baseActivity.d.ts +63 -63
- package/lib/utils/baseActivity.js +155 -155
- package/lib/utils/baseRole.d.ts +2 -2
- package/lib/utils/baseRole.js +38 -38
- package/lib/utils/collection.d.ts +43 -43
- package/lib/utils/collection.js +337 -337
- package/lib/utils/date.d.ts +162 -162
- package/lib/utils/date.js +401 -401
- package/lib/utils/domainIdentifier.d.ts +2 -2
- package/lib/utils/domainIdentifier.js +12 -12
- package/lib/utils/entityUserRole.d.ts +3 -3
- package/lib/utils/entityUserRole.js +7 -7
- package/lib/utils/externalGroup.d.ts +4 -4
- package/lib/utils/externalGroup.js +32 -32
- package/lib/utils/externalProviders.d.ts +2 -2
- package/lib/utils/externalProviders.js +11 -11
- package/lib/utils/externalTerms.d.ts +2 -2
- package/lib/utils/externalTerms.js +10 -10
- package/lib/utils/group.d.ts +15 -15
- package/lib/utils/group.js +15 -15
- package/lib/utils/groupDates.d.ts +9 -9
- package/lib/utils/groupDates.js +52 -52
- package/lib/utils/groupRoles.d.ts +8 -8
- package/lib/utils/groupRoles.js +42 -42
- package/lib/utils/logger.d.ts +10 -10
- package/lib/utils/logger.js +34 -34
- package/lib/utils/lti.d.ts +3 -3
- package/lib/utils/lti.js +9 -9
- package/lib/utils/model.d.ts +15 -15
- package/lib/utils/model.js +58 -58
- package/lib/utils/number.d.ts +13 -13
- package/lib/utils/number.js +32 -32
- package/lib/utils/promise.d.ts +5 -5
- package/lib/utils/promise.js +17 -17
- package/lib/utils/route.d.ts +5 -5
- package/lib/utils/route.js +69 -69
- package/lib/utils/shard.d.ts +3 -3
- package/lib/utils/shard.js +45 -45
- package/lib/utils/sort.d.ts +11 -11
- package/lib/utils/sort.js +69 -69
- package/lib/utils/string.d.ts +2 -2
- package/lib/utils/string.js +16 -16
- package/lib/utils/timezone.d.ts +2 -2
- package/lib/utils/timezone.js +32 -32
- package/lib/utils/url.d.ts +23 -23
- package/lib/utils/url.js +163 -163
- package/lib/utils/user.d.ts +8 -8
- package/lib/utils/user.js +73 -73
- package/lib/utils/userRole.d.ts +21 -21
- package/lib/utils/userRole.js +48 -48
- package/package.json +192 -192
package/lib/utils/date.js
CHANGED
|
@@ -1,401 +1,401 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.isDateTimeValid = exports.isTimeInputSupported = exports.isDateInputSupported = exports.getFormattedTimeZone = exports.getFullFormattedTimeZone = exports.getFormattedNumberedTimeWithoutZoneOrMeridian = exports.getFormattedNumberedTimeWithoutZone = exports.getFormattedNumberedTimeWithFullZone = exports.getFormattedNumberedTime = exports.getFormattedNumberedDateWithoutYear = exports.getFormattedNumberedDateForInput = exports.getFormattedNumberedDateWithFullYear = exports.getFormattedNumberedDate = exports.getFormattedSimplifiedDateWithYearIfNotCurrent = exports.getFormattedSimplifiedDateWithoutYear = exports.getFormattedSimplifiedDate = exports.getFormattedNumberedDateAndTimeWithoutYear = exports.getFormattedNumberedDateAndTime = exports.getFormattedFullDateWithWeek = exports.getFormattedFullDateAndTime = exports.isNowBeforeDate = exports.isNowAfterDate = exports.isNowEqualOrBeforeDate = exports.isNowEqualOrAfterDate = exports.getEndOfMinute = exports.getEndOfDay = exports.getDateMinusTime = exports.getLocalDateTimeFromUtc = exports.getLocalMomentFromUtc = exports.getZonedMomentFromLocalDateTime = exports.getZonedMomentFromUtcInDefaultZone = exports.getZonedMomentFromUtc = exports.getOffsetDate = exports.getServerNowUtc = exports.setClockOffset = void 0;
|
|
7
|
-
var moment_timezone_1 = __importDefault(require("moment-timezone"));
|
|
8
|
-
var moment_timezone_utils_1 = __importDefault(require("moment-timezone/moment-timezone-utils"));
|
|
9
|
-
var timezone_1 = require("./timezone");
|
|
10
|
-
/**
|
|
11
|
-
* This value is used by time-sensitive functions in this module and other date/time utils. Any time
|
|
12
|
-
* a new Date object is constructed, it will use this value to adjust the time by this offset (to
|
|
13
|
-
* make it consistent with a known time)
|
|
14
|
-
*/
|
|
15
|
-
var clockOffset = 0;
|
|
16
|
-
/**
|
|
17
|
-
* When a GroupAssessment comes in the door, it includes the current UTC datetime. This method is
|
|
18
|
-
* used to update the difference between the (accurate) server time and the browser time
|
|
19
|
-
*/
|
|
20
|
-
var setClockOffset = function (offset) {
|
|
21
|
-
clockOffset = offset;
|
|
22
|
-
};
|
|
23
|
-
exports.setClockOffset = setClockOffset;
|
|
24
|
-
/**
|
|
25
|
-
* Get the current UTC time, calibrated to the API server's clock
|
|
26
|
-
*/
|
|
27
|
-
var getServerNowUtc = function () {
|
|
28
|
-
return new Date(Date.now() + clockOffset);
|
|
29
|
-
};
|
|
30
|
-
exports.getServerNowUtc = getServerNowUtc;
|
|
31
|
-
/**
|
|
32
|
-
* Return the provided date, offset by the clockOffset
|
|
33
|
-
*/
|
|
34
|
-
var getOffsetDate = function (date) {
|
|
35
|
-
return new Date(date.getTime() + clockOffset);
|
|
36
|
-
};
|
|
37
|
-
exports.getOffsetDate = getOffsetDate;
|
|
38
|
-
var getZonedMomentFromUtc = function (dateTimeUtc, timeZoneId) {
|
|
39
|
-
if (dateTimeUtc === void 0) { dateTimeUtc = exports.getServerNowUtc().toISOString(); }
|
|
40
|
-
if (timeZoneId === void 0) { timeZoneId = timezone_1.guessTimeZoneId(); }
|
|
41
|
-
return moment_timezone_1.default.utc(dateTimeUtc).tz(timeZoneId);
|
|
42
|
-
};
|
|
43
|
-
exports.getZonedMomentFromUtc = getZonedMomentFromUtc;
|
|
44
|
-
var getZonedMomentFromUtcInDefaultZone = function (dateTimeUtc) {
|
|
45
|
-
if (dateTimeUtc === void 0) { dateTimeUtc = exports.getServerNowUtc().toISOString(); }
|
|
46
|
-
var timeZoneId = timezone_1.getDefaultTimeZoneId();
|
|
47
|
-
return exports.getZonedMomentFromUtc(dateTimeUtc, timeZoneId);
|
|
48
|
-
};
|
|
49
|
-
exports.getZonedMomentFromUtcInDefaultZone = getZonedMomentFromUtcInDefaultZone;
|
|
50
|
-
var getZonedMomentFromLocalDateTime = function (localDateTime, timeZoneId) {
|
|
51
|
-
if (timeZoneId === void 0) { timeZoneId = timezone_1.guessTimeZoneId(); }
|
|
52
|
-
var localMoment = moment_timezone_1.default(localDateTime);
|
|
53
|
-
var zonedMoment = moment_timezone_1.default.tz([
|
|
54
|
-
localMoment.year(),
|
|
55
|
-
localMoment.month(),
|
|
56
|
-
localMoment.date(),
|
|
57
|
-
localMoment.hour(),
|
|
58
|
-
localMoment.minute(),
|
|
59
|
-
localMoment.second(),
|
|
60
|
-
localMoment.millisecond()
|
|
61
|
-
], timeZoneId);
|
|
62
|
-
return zonedMoment;
|
|
63
|
-
};
|
|
64
|
-
exports.getZonedMomentFromLocalDateTime = getZonedMomentFromLocalDateTime;
|
|
65
|
-
var getLocalMomentFromUtc = function (dateTimeUtc, timeZoneId) {
|
|
66
|
-
if (dateTimeUtc === void 0) { dateTimeUtc = exports.getServerNowUtc().toISOString(); }
|
|
67
|
-
if (timeZoneId === void 0) { timeZoneId = timezone_1.guessTimeZoneId(); }
|
|
68
|
-
var zonedMoment = exports.getZonedMomentFromUtc(dateTimeUtc, timeZoneId);
|
|
69
|
-
var localMoment = moment_timezone_1.default([
|
|
70
|
-
zonedMoment.year(),
|
|
71
|
-
zonedMoment.month(),
|
|
72
|
-
zonedMoment.date(),
|
|
73
|
-
zonedMoment.hour(),
|
|
74
|
-
zonedMoment.minute(),
|
|
75
|
-
zonedMoment.second(),
|
|
76
|
-
zonedMoment.millisecond()
|
|
77
|
-
]);
|
|
78
|
-
return localMoment;
|
|
79
|
-
};
|
|
80
|
-
exports.getLocalMomentFromUtc = getLocalMomentFromUtc;
|
|
81
|
-
var getLocalDateTimeFromUtc = function (dateTimeUtc) {
|
|
82
|
-
return exports.getLocalMomentFromUtc(dateTimeUtc).toDate();
|
|
83
|
-
};
|
|
84
|
-
exports.getLocalDateTimeFromUtc = getLocalDateTimeFromUtc;
|
|
85
|
-
var getDateMinusTime = function (dateTime) {
|
|
86
|
-
return new Date(dateTime.getFullYear(), dateTime.getMonth(), dateTime.getDate());
|
|
87
|
-
};
|
|
88
|
-
exports.getDateMinusTime = getDateMinusTime;
|
|
89
|
-
function getEndOfDay(dateTimeUtc) {
|
|
90
|
-
return moment_timezone_1.default(dateTimeUtc)
|
|
91
|
-
.startOf('day')
|
|
92
|
-
.add(1, 'days')
|
|
93
|
-
.subtract(3, 'milliseconds') // must be minus 3 for SQL date
|
|
94
|
-
.toDate();
|
|
95
|
-
}
|
|
96
|
-
exports.getEndOfDay = getEndOfDay;
|
|
97
|
-
function getEndOfMinute(dateTimeUtc) {
|
|
98
|
-
return moment_timezone_1.default(dateTimeUtc)
|
|
99
|
-
.startOf('minute')
|
|
100
|
-
.add(1, 'minute')
|
|
101
|
-
.subtract(3, 'milliseconds') // must be minus 3 for SQL date
|
|
102
|
-
.toDate();
|
|
103
|
-
}
|
|
104
|
-
exports.getEndOfMinute = getEndOfMinute;
|
|
105
|
-
/**
|
|
106
|
-
* Is the current time, "now", **after or equal to** the given date.
|
|
107
|
-
*
|
|
108
|
-
* @param dateTimeUtc The date to compare the current time, "now", as an ISO date string.
|
|
109
|
-
* @param nowUtc Optional. The current time, "now", as an ISO date string.
|
|
110
|
-
*
|
|
111
|
-
* @returns Whether or not "now" is **after or equal to** `dateTimeUtc`
|
|
112
|
-
*/
|
|
113
|
-
function isNowEqualOrAfterDate(dateTimeUtc, nowUtc) {
|
|
114
|
-
if (nowUtc === void 0) { nowUtc = exports.getServerNowUtc().toISOString(); }
|
|
115
|
-
if (!dateTimeUtc) {
|
|
116
|
-
return false;
|
|
117
|
-
}
|
|
118
|
-
var adjustedDateTimeMoment = exports.getLocalMomentFromUtc(dateTimeUtc);
|
|
119
|
-
var currentMoment = exports.getLocalMomentFromUtc(nowUtc);
|
|
120
|
-
return currentMoment.isSameOrAfter(adjustedDateTimeMoment);
|
|
121
|
-
}
|
|
122
|
-
exports.isNowEqualOrAfterDate = isNowEqualOrAfterDate;
|
|
123
|
-
/**
|
|
124
|
-
* Is the current time, "now", **before or equal to** the given date.
|
|
125
|
-
*
|
|
126
|
-
* @param dateTimeUtc The date to compare the current time, "now", as an ISO date string.
|
|
127
|
-
* @param nowUtc Optional. The current time, "now", as an ISO date string.
|
|
128
|
-
*
|
|
129
|
-
* @returns Whether or not "now" is **before or equal to** `dateTimeUtc`.
|
|
130
|
-
*/
|
|
131
|
-
function isNowEqualOrBeforeDate(dateTimeUtc, nowUtc) {
|
|
132
|
-
if (nowUtc === void 0) { nowUtc = exports.getServerNowUtc().toISOString(); }
|
|
133
|
-
if (!dateTimeUtc) {
|
|
134
|
-
return false;
|
|
135
|
-
}
|
|
136
|
-
var adjustedDateTimeMoment = exports.getLocalMomentFromUtc(dateTimeUtc);
|
|
137
|
-
var currentMoment = exports.getLocalMomentFromUtc(nowUtc);
|
|
138
|
-
return currentMoment.isSameOrBefore(adjustedDateTimeMoment);
|
|
139
|
-
}
|
|
140
|
-
exports.isNowEqualOrBeforeDate = isNowEqualOrBeforeDate;
|
|
141
|
-
/**
|
|
142
|
-
* Is the current time, "now", **after** the given date.
|
|
143
|
-
*
|
|
144
|
-
* @param dateTimeUtc The date to compare the current time, "now", as an ISO date string.
|
|
145
|
-
* @param nowUtc Optional. The current time, "now", as an ISO date string.
|
|
146
|
-
*
|
|
147
|
-
* @returns Whether or not "now" is **after** `dateTimeUtc`.
|
|
148
|
-
*/
|
|
149
|
-
function isNowAfterDate(dateTimeUtc, nowUtc) {
|
|
150
|
-
if (nowUtc === void 0) { nowUtc = exports.getServerNowUtc().toISOString(); }
|
|
151
|
-
if (!dateTimeUtc) {
|
|
152
|
-
return false;
|
|
153
|
-
}
|
|
154
|
-
var adjustedDateTimeMoment = exports.getLocalMomentFromUtc(dateTimeUtc);
|
|
155
|
-
var currentMoment = exports.getLocalMomentFromUtc(nowUtc);
|
|
156
|
-
return currentMoment > adjustedDateTimeMoment;
|
|
157
|
-
}
|
|
158
|
-
exports.isNowAfterDate = isNowAfterDate;
|
|
159
|
-
/**
|
|
160
|
-
* Is the current time, "now", **before** the given date.
|
|
161
|
-
*
|
|
162
|
-
* @param dateTimeUtc The date to compare the current time, "now", as an ISO date string.
|
|
163
|
-
* @param nowUtc Optional. The current time, "now", as an ISO date string.
|
|
164
|
-
*
|
|
165
|
-
* @returns Whether or not "now" is **before** `dateTimeUtc`.
|
|
166
|
-
*/
|
|
167
|
-
function isNowBeforeDate(dateTimeUtc, nowUtc) {
|
|
168
|
-
if (nowUtc === void 0) { nowUtc = exports.getServerNowUtc().toISOString(); }
|
|
169
|
-
if (!dateTimeUtc) {
|
|
170
|
-
return false;
|
|
171
|
-
}
|
|
172
|
-
var adjustedDateTimeMoment = exports.getLocalMomentFromUtc(dateTimeUtc);
|
|
173
|
-
var currentMoment = exports.getLocalMomentFromUtc(nowUtc);
|
|
174
|
-
return currentMoment < adjustedDateTimeMoment;
|
|
175
|
-
}
|
|
176
|
-
exports.isNowBeforeDate = isNowBeforeDate;
|
|
177
|
-
/**
|
|
178
|
-
* Returns a date and time string with full date, e.g. `March 5, 2018 @ 4:05 PM EDT`
|
|
179
|
-
* @param dateTimeUtc A UTC date time string
|
|
180
|
-
* @param withTimeZone (optional) Whether to include the time zone abbreviation. Defaults to `true`.
|
|
181
|
-
*/
|
|
182
|
-
function getFormattedFullDateAndTime(dateTimeUtc, withTimeZone) {
|
|
183
|
-
if (withTimeZone === void 0) { withTimeZone = true; }
|
|
184
|
-
return applyFormat(dateTimeUtc, "MMMM D, YYYY @ h:mm\u00A0A" + (withTimeZone ? ' z' : ''));
|
|
185
|
-
}
|
|
186
|
-
exports.getFormattedFullDateAndTime = getFormattedFullDateAndTime;
|
|
187
|
-
/**
|
|
188
|
-
* Returns a date and time string with day of week and American slash dates, e.g. `Mon, 3/5/2018 @ 4:05 PM EDT`
|
|
189
|
-
* @param dateTimeUtc A UTC date time string
|
|
190
|
-
* @param withTimeZone (optional) Whether to include the time zone abbreviation. Defaults to `true`.
|
|
191
|
-
*/
|
|
192
|
-
function getFormattedFullDateWithWeek(dateTimeUtc, withTimeZone) {
|
|
193
|
-
if (withTimeZone === void 0) { withTimeZone = true; }
|
|
194
|
-
return applyFormat(dateTimeUtc, "ddd, M/D/YYYY @ h:mm\u00A0A" + (withTimeZone ? ' z' : ''));
|
|
195
|
-
}
|
|
196
|
-
exports.getFormattedFullDateWithWeek = getFormattedFullDateWithWeek;
|
|
197
|
-
/**
|
|
198
|
-
* Returns a date and time string with American slash dates, and no leading zeroes, e.g. `3/5/18 4:05 PM EDT`
|
|
199
|
-
* @param dateTimeUtc A UTC date time string
|
|
200
|
-
* @param withTimeZone (optional) Whether to include the time zone abbreviation. Defaults to `true`.
|
|
201
|
-
*/
|
|
202
|
-
function getFormattedNumberedDateAndTime(dateTimeUtc, withTimeZone) {
|
|
203
|
-
if (withTimeZone === void 0) { withTimeZone = true; }
|
|
204
|
-
return applyFormat(dateTimeUtc, "M/D/YY h:mm\u00A0A" + (withTimeZone ? ' z' : ''));
|
|
205
|
-
}
|
|
206
|
-
exports.getFormattedNumberedDateAndTime = getFormattedNumberedDateAndTime;
|
|
207
|
-
/**
|
|
208
|
-
* Returns a date and time string with American slash dates, no leading zeroes, and no year, e.g. `3/5 4:05 PM EDT`
|
|
209
|
-
* @param dateTimeUtc A UTC date time string
|
|
210
|
-
* @param withTimeZone (optional) Whether to include the time zone abbreviation. Defaults to `true`.
|
|
211
|
-
*/
|
|
212
|
-
function getFormattedNumberedDateAndTimeWithoutYear(dateTimeUtc, withTimeZone) {
|
|
213
|
-
if (withTimeZone === void 0) { withTimeZone = true; }
|
|
214
|
-
return applyFormat(dateTimeUtc, "M/D h:mm\u00A0A" + (withTimeZone ? ' z' : ''));
|
|
215
|
-
}
|
|
216
|
-
exports.getFormattedNumberedDateAndTimeWithoutYear = getFormattedNumberedDateAndTimeWithoutYear;
|
|
217
|
-
/**
|
|
218
|
-
* Returns a date string with short month and full year, e.g. `Mar 5, 2018`
|
|
219
|
-
* @param dateTimeUtc A UTC date time string
|
|
220
|
-
*/
|
|
221
|
-
function getFormattedSimplifiedDate(dateTimeUtc) {
|
|
222
|
-
return applyFormat(dateTimeUtc, 'MMM D, YYYY');
|
|
223
|
-
}
|
|
224
|
-
exports.getFormattedSimplifiedDate = getFormattedSimplifiedDate;
|
|
225
|
-
/**
|
|
226
|
-
* Returns a date string with short month and no year, e.g. `Mar 5`
|
|
227
|
-
* @param dateTimeUtc A UTC date time string
|
|
228
|
-
*/
|
|
229
|
-
function getFormattedSimplifiedDateWithoutYear(dateTimeUtc) {
|
|
230
|
-
return applyFormat(dateTimeUtc, 'MMM D');
|
|
231
|
-
}
|
|
232
|
-
exports.getFormattedSimplifiedDateWithoutYear = getFormattedSimplifiedDateWithoutYear;
|
|
233
|
-
/**
|
|
234
|
-
* Returns a date string as either 'MMM D, YYYY' or 'MMM D' if the date's year is the same as the current year
|
|
235
|
-
* @param dateTimeUtc A UTC date time string
|
|
236
|
-
* @param nowUtc (optional) A UTC date time string of "now". Used for testing.
|
|
237
|
-
*/
|
|
238
|
-
function getFormattedSimplifiedDateWithYearIfNotCurrent(dateTimeUtc, nowUtc) {
|
|
239
|
-
if (nowUtc === void 0) { nowUtc = exports.getServerNowUtc().toISOString(); }
|
|
240
|
-
var nowUtcMoment = moment_timezone_1.default(nowUtc);
|
|
241
|
-
var dateTimeMoment = moment_timezone_1.default(dateTimeUtc);
|
|
242
|
-
return Math.abs(nowUtcMoment.year() - dateTimeMoment.year()) === 0
|
|
243
|
-
? getFormattedSimplifiedDateWithoutYear(dateTimeUtc)
|
|
244
|
-
: getFormattedSimplifiedDate(dateTimeUtc);
|
|
245
|
-
}
|
|
246
|
-
exports.getFormattedSimplifiedDateWithYearIfNotCurrent = getFormattedSimplifiedDateWithYearIfNotCurrent;
|
|
247
|
-
/**
|
|
248
|
-
* Returns a date string with American slash dates, no leading zeroes, and short year, e.g. `3/5/18`
|
|
249
|
-
* @param dateTimeUtc A UTC date time string
|
|
250
|
-
*/
|
|
251
|
-
function getFormattedNumberedDate(dateTimeUtc) {
|
|
252
|
-
return applyFormat(dateTimeUtc, 'M/D/YY');
|
|
253
|
-
}
|
|
254
|
-
exports.getFormattedNumberedDate = getFormattedNumberedDate;
|
|
255
|
-
/**
|
|
256
|
-
* Returns a date string with American slash dates, no leading zeroes, and full year, e.g. `3/5/2018`
|
|
257
|
-
* @param dateTimeUtc A UTC date time string
|
|
258
|
-
*/
|
|
259
|
-
function getFormattedNumberedDateWithFullYear(dateTimeUtc) {
|
|
260
|
-
return applyFormat(dateTimeUtc, 'M/D/YYYY');
|
|
261
|
-
}
|
|
262
|
-
exports.getFormattedNumberedDateWithFullYear = getFormattedNumberedDateWithFullYear;
|
|
263
|
-
/**
|
|
264
|
-
* Returns a date string for use in HTML inputs, e.g. `2018-03-05`
|
|
265
|
-
* @param dateTimeUtc A UTC date time string
|
|
266
|
-
*/
|
|
267
|
-
function getFormattedNumberedDateForInput(dateTimeUtc) {
|
|
268
|
-
return applyFormat(dateTimeUtc, 'YYYY-MM-DD');
|
|
269
|
-
}
|
|
270
|
-
exports.getFormattedNumberedDateForInput = getFormattedNumberedDateForInput;
|
|
271
|
-
/**
|
|
272
|
-
* Returns a date string with American slash dates and no year and no leading zeroes, e.g. `3/5`
|
|
273
|
-
* @param dateTimeUtc A UTC date time string
|
|
274
|
-
*/
|
|
275
|
-
function getFormattedNumberedDateWithoutYear(dateTimeUtc) {
|
|
276
|
-
return applyFormat(dateTimeUtc, 'M/D');
|
|
277
|
-
}
|
|
278
|
-
exports.getFormattedNumberedDateWithoutYear = getFormattedNumberedDateWithoutYear;
|
|
279
|
-
/**
|
|
280
|
-
* Returns a time string, e.g. `4:05 PM EDT`
|
|
281
|
-
* @param dateTimeUtc A UTC date time string
|
|
282
|
-
* @param withTimeZone (optional) Whether to include the time zone abbreviation. Defaults to `true`.
|
|
283
|
-
*/
|
|
284
|
-
function getFormattedNumberedTime(dateTimeUtc, withTimeZone) {
|
|
285
|
-
if (withTimeZone === void 0) { withTimeZone = true; }
|
|
286
|
-
return applyFormat(dateTimeUtc, "h:mm\u00A0A" + (withTimeZone ? ' z' : ''));
|
|
287
|
-
}
|
|
288
|
-
exports.getFormattedNumberedTime = getFormattedNumberedTime;
|
|
289
|
-
/**
|
|
290
|
-
* Returns a time string with possibly full time zone name, e.g. `4:05 PM EDT` or `4:05 PM CST (Asia/Taipei)`
|
|
291
|
-
* @param dateTimeUtc A UTC date time string
|
|
292
|
-
* @param showEasternZoneId (optional) Whether or not to include the timeZoneId in the result for EST/EDT. Defaults to `false`.
|
|
293
|
-
* @param timeZoneId (optional) A time zone Id. Defaults to the current time zone id, using `guessTimeZoneId()`.
|
|
294
|
-
*/
|
|
295
|
-
function getFormattedNumberedTimeWithFullZone(dateTimeUtc, showEasternZoneId, timeZoneId) {
|
|
296
|
-
if (showEasternZoneId === void 0) { showEasternZoneId = false; }
|
|
297
|
-
if (timeZoneId === void 0) { timeZoneId = timezone_1.guessTimeZoneId(); }
|
|
298
|
-
var zonedMoment = exports.getZonedMomentFromUtc(dateTimeUtc, timeZoneId);
|
|
299
|
-
var time = applyFormat(dateTimeUtc, 'h:mm\u00a0A', timeZoneId);
|
|
300
|
-
var timezoneAbbreviation = zonedMoment ? zonedMoment.zoneAbbr() : '';
|
|
301
|
-
return (timezoneAbbreviation === 'EDT' || timezoneAbbreviation === 'EST') && !showEasternZoneId
|
|
302
|
-
? // Don't show the full zone name if in EDT or EST, unless told to
|
|
303
|
-
time + " " + timezoneAbbreviation
|
|
304
|
-
: // If not EDT or EST, show the zone name, replacing underscores with spaces
|
|
305
|
-
// Ex: "Asia/Taipei"
|
|
306
|
-
time + " " + timezoneAbbreviation + " (" + timeZoneId.replace('_', ' ') + ")";
|
|
307
|
-
}
|
|
308
|
-
exports.getFormattedNumberedTimeWithFullZone = getFormattedNumberedTimeWithFullZone;
|
|
309
|
-
/**
|
|
310
|
-
* Returns a time string without time zone, e.g. `4:05 PM`
|
|
311
|
-
* @param dateTimeUtc A UTC date time string
|
|
312
|
-
*/
|
|
313
|
-
function getFormattedNumberedTimeWithoutZone(dateTimeUtc) {
|
|
314
|
-
return applyFormat(dateTimeUtc, 'h:mm\u00a0A');
|
|
315
|
-
}
|
|
316
|
-
exports.getFormattedNumberedTimeWithoutZone = getFormattedNumberedTimeWithoutZone;
|
|
317
|
-
/**
|
|
318
|
-
* Returns a time string without time zone, in 24 hr time, e.g. `16:05`
|
|
319
|
-
* @param dateTimeUtc A UTC date time string
|
|
320
|
-
*/
|
|
321
|
-
function getFormattedNumberedTimeWithoutZoneOrMeridian(dateTimeUtc) {
|
|
322
|
-
return applyFormat(dateTimeUtc, 'HH:mm');
|
|
323
|
-
}
|
|
324
|
-
exports.getFormattedNumberedTimeWithoutZoneOrMeridian = getFormattedNumberedTimeWithoutZoneOrMeridian;
|
|
325
|
-
/**
|
|
326
|
-
* Returns a full formatted time zone string for the given `timeZoneId`.
|
|
327
|
-
*
|
|
328
|
-
* Combines all possible abbreviations for the zone and the timeZoneId, e.g. `EST/EDT`, `PST/PDT (America/Los Angeles)` or `CST (Asia/Taipei)`
|
|
329
|
-
*
|
|
330
|
-
* If abbreviations are not alpha characters, e.g. `-04`, then only the timeZoneId is returned.
|
|
331
|
-
*
|
|
332
|
-
* @param timeZoneId (optional) A time zone Id. Defaults to the current time zone id, using `guessTimeZoneId()`.
|
|
333
|
-
* @param showEasternZoneId (optional) Whether or not to include the timeZoneId in the result for EST/EDT. Defaults to `false`.
|
|
334
|
-
* @param nowUtc (optional) The current time, "now", as an ISO date string.
|
|
335
|
-
*/
|
|
336
|
-
function getFullFormattedTimeZone(timeZoneId, showEasternZoneId, nowUtc) {
|
|
337
|
-
if (timeZoneId === void 0) { timeZoneId = timezone_1.guessTimeZoneId(); }
|
|
338
|
-
if (showEasternZoneId === void 0) { showEasternZoneId = false; }
|
|
339
|
-
if (nowUtc === void 0) { nowUtc = exports.getServerNowUtc().toISOString(); }
|
|
340
|
-
var zone = moment_timezone_1.default.tz.zone(timeZoneId);
|
|
341
|
-
if (!zone)
|
|
342
|
-
return '';
|
|
343
|
-
var zonedMoment = exports.getZonedMomentFromUtc(nowUtc, timeZoneId);
|
|
344
|
-
// filter the zone data down to just recent years, instead of the default of 1900 to 2038
|
|
345
|
-
var filteredZone = moment_timezone_utils_1.default.tz.filterYears(zone, zonedMoment.year() - 1, zonedMoment.year() + 1);
|
|
346
|
-
// find all unique abbreviations for the zone, combined into a string
|
|
347
|
-
var abbreviations = filteredZone.abbrs
|
|
348
|
-
// filter out non-alpha abbreviations
|
|
349
|
-
.filter(function (abbr) { return /[a-zA-Z]+/g.test(abbr); })
|
|
350
|
-
.reduce(function (uniqueAbbrs, abbr) {
|
|
351
|
-
if (!uniqueAbbrs.includes(abbr)) {
|
|
352
|
-
uniqueAbbrs.push(abbr);
|
|
353
|
-
}
|
|
354
|
-
return uniqueAbbrs;
|
|
355
|
-
}, []);
|
|
356
|
-
var abbreviationsString = abbreviations.length > 0 ? abbreviations.join('/') : null;
|
|
357
|
-
var readableZoneId = timeZoneId.replace('_', ' ');
|
|
358
|
-
return !abbreviationsString
|
|
359
|
-
? readableZoneId
|
|
360
|
-
: abbreviationsString === 'EST/EDT' && !showEasternZoneId
|
|
361
|
-
? // Don't show the zoneId if in Eastern, unless told to
|
|
362
|
-
abbreviationsString
|
|
363
|
-
: // Show the combined abbreviations plus the friendly zoneId
|
|
364
|
-
abbreviationsString + " (" + readableZoneId + ")";
|
|
365
|
-
}
|
|
366
|
-
exports.getFullFormattedTimeZone = getFullFormattedTimeZone;
|
|
367
|
-
/**
|
|
368
|
-
* Returns the basic time zone abbreviation for the given date, e.g. `EDT`.
|
|
369
|
-
*
|
|
370
|
-
* @param dateTimeUtc The date to format.
|
|
371
|
-
*/
|
|
372
|
-
function getFormattedTimeZone(dateTimeUtc) {
|
|
373
|
-
return applyFormat(dateTimeUtc, 'z');
|
|
374
|
-
}
|
|
375
|
-
exports.getFormattedTimeZone = getFormattedTimeZone;
|
|
376
|
-
/**
|
|
377
|
-
* Formats a date using the given format. Parses the date as UTC, then converts to the current time zone, then formats.
|
|
378
|
-
* @param {*} dateTimeUtc The date to format. Any valid input for `moment.utc(...)`
|
|
379
|
-
* @param {*} format The format to use
|
|
380
|
-
*/
|
|
381
|
-
function applyFormat(dateTimeUtc, format, timeZoneId) {
|
|
382
|
-
if (timeZoneId === void 0) { timeZoneId = timezone_1.guessTimeZoneId(); }
|
|
383
|
-
return exports.getZonedMomentFromUtc(dateTimeUtc, timeZoneId).format(format);
|
|
384
|
-
}
|
|
385
|
-
var isInputTypeSupported = function (type) {
|
|
386
|
-
try {
|
|
387
|
-
var test_1 = document.createElement('input');
|
|
388
|
-
test_1.type = type;
|
|
389
|
-
var isSupported = test_1.type === type;
|
|
390
|
-
return isSupported;
|
|
391
|
-
}
|
|
392
|
-
catch (e) {
|
|
393
|
-
return false;
|
|
394
|
-
}
|
|
395
|
-
};
|
|
396
|
-
exports.isDateInputSupported = isInputTypeSupported('date');
|
|
397
|
-
exports.isTimeInputSupported = isInputTypeSupported('time');
|
|
398
|
-
function isDateTimeValid(dateTime) {
|
|
399
|
-
return !!dateTime && moment_timezone_1.default(dateTime).isValid();
|
|
400
|
-
}
|
|
401
|
-
exports.isDateTimeValid = isDateTimeValid;
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.isDateTimeValid = exports.isTimeInputSupported = exports.isDateInputSupported = exports.getFormattedTimeZone = exports.getFullFormattedTimeZone = exports.getFormattedNumberedTimeWithoutZoneOrMeridian = exports.getFormattedNumberedTimeWithoutZone = exports.getFormattedNumberedTimeWithFullZone = exports.getFormattedNumberedTime = exports.getFormattedNumberedDateWithoutYear = exports.getFormattedNumberedDateForInput = exports.getFormattedNumberedDateWithFullYear = exports.getFormattedNumberedDate = exports.getFormattedSimplifiedDateWithYearIfNotCurrent = exports.getFormattedSimplifiedDateWithoutYear = exports.getFormattedSimplifiedDate = exports.getFormattedNumberedDateAndTimeWithoutYear = exports.getFormattedNumberedDateAndTime = exports.getFormattedFullDateWithWeek = exports.getFormattedFullDateAndTime = exports.isNowBeforeDate = exports.isNowAfterDate = exports.isNowEqualOrBeforeDate = exports.isNowEqualOrAfterDate = exports.getEndOfMinute = exports.getEndOfDay = exports.getDateMinusTime = exports.getLocalDateTimeFromUtc = exports.getLocalMomentFromUtc = exports.getZonedMomentFromLocalDateTime = exports.getZonedMomentFromUtcInDefaultZone = exports.getZonedMomentFromUtc = exports.getOffsetDate = exports.getServerNowUtc = exports.setClockOffset = void 0;
|
|
7
|
+
var moment_timezone_1 = __importDefault(require("moment-timezone"));
|
|
8
|
+
var moment_timezone_utils_1 = __importDefault(require("moment-timezone/moment-timezone-utils"));
|
|
9
|
+
var timezone_1 = require("./timezone");
|
|
10
|
+
/**
|
|
11
|
+
* This value is used by time-sensitive functions in this module and other date/time utils. Any time
|
|
12
|
+
* a new Date object is constructed, it will use this value to adjust the time by this offset (to
|
|
13
|
+
* make it consistent with a known time)
|
|
14
|
+
*/
|
|
15
|
+
var clockOffset = 0;
|
|
16
|
+
/**
|
|
17
|
+
* When a GroupAssessment comes in the door, it includes the current UTC datetime. This method is
|
|
18
|
+
* used to update the difference between the (accurate) server time and the browser time
|
|
19
|
+
*/
|
|
20
|
+
var setClockOffset = function (offset) {
|
|
21
|
+
clockOffset = offset;
|
|
22
|
+
};
|
|
23
|
+
exports.setClockOffset = setClockOffset;
|
|
24
|
+
/**
|
|
25
|
+
* Get the current UTC time, calibrated to the API server's clock
|
|
26
|
+
*/
|
|
27
|
+
var getServerNowUtc = function () {
|
|
28
|
+
return new Date(Date.now() + clockOffset);
|
|
29
|
+
};
|
|
30
|
+
exports.getServerNowUtc = getServerNowUtc;
|
|
31
|
+
/**
|
|
32
|
+
* Return the provided date, offset by the clockOffset
|
|
33
|
+
*/
|
|
34
|
+
var getOffsetDate = function (date) {
|
|
35
|
+
return new Date(date.getTime() + clockOffset);
|
|
36
|
+
};
|
|
37
|
+
exports.getOffsetDate = getOffsetDate;
|
|
38
|
+
var getZonedMomentFromUtc = function (dateTimeUtc, timeZoneId) {
|
|
39
|
+
if (dateTimeUtc === void 0) { dateTimeUtc = exports.getServerNowUtc().toISOString(); }
|
|
40
|
+
if (timeZoneId === void 0) { timeZoneId = timezone_1.guessTimeZoneId(); }
|
|
41
|
+
return moment_timezone_1.default.utc(dateTimeUtc).tz(timeZoneId);
|
|
42
|
+
};
|
|
43
|
+
exports.getZonedMomentFromUtc = getZonedMomentFromUtc;
|
|
44
|
+
var getZonedMomentFromUtcInDefaultZone = function (dateTimeUtc) {
|
|
45
|
+
if (dateTimeUtc === void 0) { dateTimeUtc = exports.getServerNowUtc().toISOString(); }
|
|
46
|
+
var timeZoneId = timezone_1.getDefaultTimeZoneId();
|
|
47
|
+
return exports.getZonedMomentFromUtc(dateTimeUtc, timeZoneId);
|
|
48
|
+
};
|
|
49
|
+
exports.getZonedMomentFromUtcInDefaultZone = getZonedMomentFromUtcInDefaultZone;
|
|
50
|
+
var getZonedMomentFromLocalDateTime = function (localDateTime, timeZoneId) {
|
|
51
|
+
if (timeZoneId === void 0) { timeZoneId = timezone_1.guessTimeZoneId(); }
|
|
52
|
+
var localMoment = moment_timezone_1.default(localDateTime);
|
|
53
|
+
var zonedMoment = moment_timezone_1.default.tz([
|
|
54
|
+
localMoment.year(),
|
|
55
|
+
localMoment.month(),
|
|
56
|
+
localMoment.date(),
|
|
57
|
+
localMoment.hour(),
|
|
58
|
+
localMoment.minute(),
|
|
59
|
+
localMoment.second(),
|
|
60
|
+
localMoment.millisecond()
|
|
61
|
+
], timeZoneId);
|
|
62
|
+
return zonedMoment;
|
|
63
|
+
};
|
|
64
|
+
exports.getZonedMomentFromLocalDateTime = getZonedMomentFromLocalDateTime;
|
|
65
|
+
var getLocalMomentFromUtc = function (dateTimeUtc, timeZoneId) {
|
|
66
|
+
if (dateTimeUtc === void 0) { dateTimeUtc = exports.getServerNowUtc().toISOString(); }
|
|
67
|
+
if (timeZoneId === void 0) { timeZoneId = timezone_1.guessTimeZoneId(); }
|
|
68
|
+
var zonedMoment = exports.getZonedMomentFromUtc(dateTimeUtc, timeZoneId);
|
|
69
|
+
var localMoment = moment_timezone_1.default([
|
|
70
|
+
zonedMoment.year(),
|
|
71
|
+
zonedMoment.month(),
|
|
72
|
+
zonedMoment.date(),
|
|
73
|
+
zonedMoment.hour(),
|
|
74
|
+
zonedMoment.minute(),
|
|
75
|
+
zonedMoment.second(),
|
|
76
|
+
zonedMoment.millisecond()
|
|
77
|
+
]);
|
|
78
|
+
return localMoment;
|
|
79
|
+
};
|
|
80
|
+
exports.getLocalMomentFromUtc = getLocalMomentFromUtc;
|
|
81
|
+
var getLocalDateTimeFromUtc = function (dateTimeUtc) {
|
|
82
|
+
return exports.getLocalMomentFromUtc(dateTimeUtc).toDate();
|
|
83
|
+
};
|
|
84
|
+
exports.getLocalDateTimeFromUtc = getLocalDateTimeFromUtc;
|
|
85
|
+
var getDateMinusTime = function (dateTime) {
|
|
86
|
+
return new Date(dateTime.getFullYear(), dateTime.getMonth(), dateTime.getDate());
|
|
87
|
+
};
|
|
88
|
+
exports.getDateMinusTime = getDateMinusTime;
|
|
89
|
+
function getEndOfDay(dateTimeUtc) {
|
|
90
|
+
return moment_timezone_1.default(dateTimeUtc)
|
|
91
|
+
.startOf('day')
|
|
92
|
+
.add(1, 'days')
|
|
93
|
+
.subtract(3, 'milliseconds') // must be minus 3 for SQL date
|
|
94
|
+
.toDate();
|
|
95
|
+
}
|
|
96
|
+
exports.getEndOfDay = getEndOfDay;
|
|
97
|
+
function getEndOfMinute(dateTimeUtc) {
|
|
98
|
+
return moment_timezone_1.default(dateTimeUtc)
|
|
99
|
+
.startOf('minute')
|
|
100
|
+
.add(1, 'minute')
|
|
101
|
+
.subtract(3, 'milliseconds') // must be minus 3 for SQL date
|
|
102
|
+
.toDate();
|
|
103
|
+
}
|
|
104
|
+
exports.getEndOfMinute = getEndOfMinute;
|
|
105
|
+
/**
|
|
106
|
+
* Is the current time, "now", **after or equal to** the given date.
|
|
107
|
+
*
|
|
108
|
+
* @param dateTimeUtc The date to compare the current time, "now", as an ISO date string.
|
|
109
|
+
* @param nowUtc Optional. The current time, "now", as an ISO date string.
|
|
110
|
+
*
|
|
111
|
+
* @returns Whether or not "now" is **after or equal to** `dateTimeUtc`
|
|
112
|
+
*/
|
|
113
|
+
function isNowEqualOrAfterDate(dateTimeUtc, nowUtc) {
|
|
114
|
+
if (nowUtc === void 0) { nowUtc = exports.getServerNowUtc().toISOString(); }
|
|
115
|
+
if (!dateTimeUtc) {
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
var adjustedDateTimeMoment = exports.getLocalMomentFromUtc(dateTimeUtc);
|
|
119
|
+
var currentMoment = exports.getLocalMomentFromUtc(nowUtc);
|
|
120
|
+
return currentMoment.isSameOrAfter(adjustedDateTimeMoment);
|
|
121
|
+
}
|
|
122
|
+
exports.isNowEqualOrAfterDate = isNowEqualOrAfterDate;
|
|
123
|
+
/**
|
|
124
|
+
* Is the current time, "now", **before or equal to** the given date.
|
|
125
|
+
*
|
|
126
|
+
* @param dateTimeUtc The date to compare the current time, "now", as an ISO date string.
|
|
127
|
+
* @param nowUtc Optional. The current time, "now", as an ISO date string.
|
|
128
|
+
*
|
|
129
|
+
* @returns Whether or not "now" is **before or equal to** `dateTimeUtc`.
|
|
130
|
+
*/
|
|
131
|
+
function isNowEqualOrBeforeDate(dateTimeUtc, nowUtc) {
|
|
132
|
+
if (nowUtc === void 0) { nowUtc = exports.getServerNowUtc().toISOString(); }
|
|
133
|
+
if (!dateTimeUtc) {
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
var adjustedDateTimeMoment = exports.getLocalMomentFromUtc(dateTimeUtc);
|
|
137
|
+
var currentMoment = exports.getLocalMomentFromUtc(nowUtc);
|
|
138
|
+
return currentMoment.isSameOrBefore(adjustedDateTimeMoment);
|
|
139
|
+
}
|
|
140
|
+
exports.isNowEqualOrBeforeDate = isNowEqualOrBeforeDate;
|
|
141
|
+
/**
|
|
142
|
+
* Is the current time, "now", **after** the given date.
|
|
143
|
+
*
|
|
144
|
+
* @param dateTimeUtc The date to compare the current time, "now", as an ISO date string.
|
|
145
|
+
* @param nowUtc Optional. The current time, "now", as an ISO date string.
|
|
146
|
+
*
|
|
147
|
+
* @returns Whether or not "now" is **after** `dateTimeUtc`.
|
|
148
|
+
*/
|
|
149
|
+
function isNowAfterDate(dateTimeUtc, nowUtc) {
|
|
150
|
+
if (nowUtc === void 0) { nowUtc = exports.getServerNowUtc().toISOString(); }
|
|
151
|
+
if (!dateTimeUtc) {
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
var adjustedDateTimeMoment = exports.getLocalMomentFromUtc(dateTimeUtc);
|
|
155
|
+
var currentMoment = exports.getLocalMomentFromUtc(nowUtc);
|
|
156
|
+
return currentMoment > adjustedDateTimeMoment;
|
|
157
|
+
}
|
|
158
|
+
exports.isNowAfterDate = isNowAfterDate;
|
|
159
|
+
/**
|
|
160
|
+
* Is the current time, "now", **before** the given date.
|
|
161
|
+
*
|
|
162
|
+
* @param dateTimeUtc The date to compare the current time, "now", as an ISO date string.
|
|
163
|
+
* @param nowUtc Optional. The current time, "now", as an ISO date string.
|
|
164
|
+
*
|
|
165
|
+
* @returns Whether or not "now" is **before** `dateTimeUtc`.
|
|
166
|
+
*/
|
|
167
|
+
function isNowBeforeDate(dateTimeUtc, nowUtc) {
|
|
168
|
+
if (nowUtc === void 0) { nowUtc = exports.getServerNowUtc().toISOString(); }
|
|
169
|
+
if (!dateTimeUtc) {
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
var adjustedDateTimeMoment = exports.getLocalMomentFromUtc(dateTimeUtc);
|
|
173
|
+
var currentMoment = exports.getLocalMomentFromUtc(nowUtc);
|
|
174
|
+
return currentMoment < adjustedDateTimeMoment;
|
|
175
|
+
}
|
|
176
|
+
exports.isNowBeforeDate = isNowBeforeDate;
|
|
177
|
+
/**
|
|
178
|
+
* Returns a date and time string with full date, e.g. `March 5, 2018 @ 4:05 PM EDT`
|
|
179
|
+
* @param dateTimeUtc A UTC date time string
|
|
180
|
+
* @param withTimeZone (optional) Whether to include the time zone abbreviation. Defaults to `true`.
|
|
181
|
+
*/
|
|
182
|
+
function getFormattedFullDateAndTime(dateTimeUtc, withTimeZone) {
|
|
183
|
+
if (withTimeZone === void 0) { withTimeZone = true; }
|
|
184
|
+
return applyFormat(dateTimeUtc, "MMMM D, YYYY @ h:mm\u00A0A" + (withTimeZone ? ' z' : ''));
|
|
185
|
+
}
|
|
186
|
+
exports.getFormattedFullDateAndTime = getFormattedFullDateAndTime;
|
|
187
|
+
/**
|
|
188
|
+
* Returns a date and time string with day of week and American slash dates, e.g. `Mon, 3/5/2018 @ 4:05 PM EDT`
|
|
189
|
+
* @param dateTimeUtc A UTC date time string
|
|
190
|
+
* @param withTimeZone (optional) Whether to include the time zone abbreviation. Defaults to `true`.
|
|
191
|
+
*/
|
|
192
|
+
function getFormattedFullDateWithWeek(dateTimeUtc, withTimeZone) {
|
|
193
|
+
if (withTimeZone === void 0) { withTimeZone = true; }
|
|
194
|
+
return applyFormat(dateTimeUtc, "ddd, M/D/YYYY @ h:mm\u00A0A" + (withTimeZone ? ' z' : ''));
|
|
195
|
+
}
|
|
196
|
+
exports.getFormattedFullDateWithWeek = getFormattedFullDateWithWeek;
|
|
197
|
+
/**
|
|
198
|
+
* Returns a date and time string with American slash dates, and no leading zeroes, e.g. `3/5/18 4:05 PM EDT`
|
|
199
|
+
* @param dateTimeUtc A UTC date time string
|
|
200
|
+
* @param withTimeZone (optional) Whether to include the time zone abbreviation. Defaults to `true`.
|
|
201
|
+
*/
|
|
202
|
+
function getFormattedNumberedDateAndTime(dateTimeUtc, withTimeZone) {
|
|
203
|
+
if (withTimeZone === void 0) { withTimeZone = true; }
|
|
204
|
+
return applyFormat(dateTimeUtc, "M/D/YY h:mm\u00A0A" + (withTimeZone ? ' z' : ''));
|
|
205
|
+
}
|
|
206
|
+
exports.getFormattedNumberedDateAndTime = getFormattedNumberedDateAndTime;
|
|
207
|
+
/**
|
|
208
|
+
* Returns a date and time string with American slash dates, no leading zeroes, and no year, e.g. `3/5 4:05 PM EDT`
|
|
209
|
+
* @param dateTimeUtc A UTC date time string
|
|
210
|
+
* @param withTimeZone (optional) Whether to include the time zone abbreviation. Defaults to `true`.
|
|
211
|
+
*/
|
|
212
|
+
function getFormattedNumberedDateAndTimeWithoutYear(dateTimeUtc, withTimeZone) {
|
|
213
|
+
if (withTimeZone === void 0) { withTimeZone = true; }
|
|
214
|
+
return applyFormat(dateTimeUtc, "M/D h:mm\u00A0A" + (withTimeZone ? ' z' : ''));
|
|
215
|
+
}
|
|
216
|
+
exports.getFormattedNumberedDateAndTimeWithoutYear = getFormattedNumberedDateAndTimeWithoutYear;
|
|
217
|
+
/**
|
|
218
|
+
* Returns a date string with short month and full year, e.g. `Mar 5, 2018`
|
|
219
|
+
* @param dateTimeUtc A UTC date time string
|
|
220
|
+
*/
|
|
221
|
+
function getFormattedSimplifiedDate(dateTimeUtc) {
|
|
222
|
+
return applyFormat(dateTimeUtc, 'MMM D, YYYY');
|
|
223
|
+
}
|
|
224
|
+
exports.getFormattedSimplifiedDate = getFormattedSimplifiedDate;
|
|
225
|
+
/**
|
|
226
|
+
* Returns a date string with short month and no year, e.g. `Mar 5`
|
|
227
|
+
* @param dateTimeUtc A UTC date time string
|
|
228
|
+
*/
|
|
229
|
+
function getFormattedSimplifiedDateWithoutYear(dateTimeUtc) {
|
|
230
|
+
return applyFormat(dateTimeUtc, 'MMM D');
|
|
231
|
+
}
|
|
232
|
+
exports.getFormattedSimplifiedDateWithoutYear = getFormattedSimplifiedDateWithoutYear;
|
|
233
|
+
/**
|
|
234
|
+
* Returns a date string as either 'MMM D, YYYY' or 'MMM D' if the date's year is the same as the current year
|
|
235
|
+
* @param dateTimeUtc A UTC date time string
|
|
236
|
+
* @param nowUtc (optional) A UTC date time string of "now". Used for testing.
|
|
237
|
+
*/
|
|
238
|
+
function getFormattedSimplifiedDateWithYearIfNotCurrent(dateTimeUtc, nowUtc) {
|
|
239
|
+
if (nowUtc === void 0) { nowUtc = exports.getServerNowUtc().toISOString(); }
|
|
240
|
+
var nowUtcMoment = moment_timezone_1.default(nowUtc);
|
|
241
|
+
var dateTimeMoment = moment_timezone_1.default(dateTimeUtc);
|
|
242
|
+
return Math.abs(nowUtcMoment.year() - dateTimeMoment.year()) === 0
|
|
243
|
+
? getFormattedSimplifiedDateWithoutYear(dateTimeUtc)
|
|
244
|
+
: getFormattedSimplifiedDate(dateTimeUtc);
|
|
245
|
+
}
|
|
246
|
+
exports.getFormattedSimplifiedDateWithYearIfNotCurrent = getFormattedSimplifiedDateWithYearIfNotCurrent;
|
|
247
|
+
/**
|
|
248
|
+
* Returns a date string with American slash dates, no leading zeroes, and short year, e.g. `3/5/18`
|
|
249
|
+
* @param dateTimeUtc A UTC date time string
|
|
250
|
+
*/
|
|
251
|
+
function getFormattedNumberedDate(dateTimeUtc) {
|
|
252
|
+
return applyFormat(dateTimeUtc, 'M/D/YY');
|
|
253
|
+
}
|
|
254
|
+
exports.getFormattedNumberedDate = getFormattedNumberedDate;
|
|
255
|
+
/**
|
|
256
|
+
* Returns a date string with American slash dates, no leading zeroes, and full year, e.g. `3/5/2018`
|
|
257
|
+
* @param dateTimeUtc A UTC date time string
|
|
258
|
+
*/
|
|
259
|
+
function getFormattedNumberedDateWithFullYear(dateTimeUtc) {
|
|
260
|
+
return applyFormat(dateTimeUtc, 'M/D/YYYY');
|
|
261
|
+
}
|
|
262
|
+
exports.getFormattedNumberedDateWithFullYear = getFormattedNumberedDateWithFullYear;
|
|
263
|
+
/**
|
|
264
|
+
* Returns a date string for use in HTML inputs, e.g. `2018-03-05`
|
|
265
|
+
* @param dateTimeUtc A UTC date time string
|
|
266
|
+
*/
|
|
267
|
+
function getFormattedNumberedDateForInput(dateTimeUtc) {
|
|
268
|
+
return applyFormat(dateTimeUtc, 'YYYY-MM-DD');
|
|
269
|
+
}
|
|
270
|
+
exports.getFormattedNumberedDateForInput = getFormattedNumberedDateForInput;
|
|
271
|
+
/**
|
|
272
|
+
* Returns a date string with American slash dates and no year and no leading zeroes, e.g. `3/5`
|
|
273
|
+
* @param dateTimeUtc A UTC date time string
|
|
274
|
+
*/
|
|
275
|
+
function getFormattedNumberedDateWithoutYear(dateTimeUtc) {
|
|
276
|
+
return applyFormat(dateTimeUtc, 'M/D');
|
|
277
|
+
}
|
|
278
|
+
exports.getFormattedNumberedDateWithoutYear = getFormattedNumberedDateWithoutYear;
|
|
279
|
+
/**
|
|
280
|
+
* Returns a time string, e.g. `4:05 PM EDT`
|
|
281
|
+
* @param dateTimeUtc A UTC date time string
|
|
282
|
+
* @param withTimeZone (optional) Whether to include the time zone abbreviation. Defaults to `true`.
|
|
283
|
+
*/
|
|
284
|
+
function getFormattedNumberedTime(dateTimeUtc, withTimeZone) {
|
|
285
|
+
if (withTimeZone === void 0) { withTimeZone = true; }
|
|
286
|
+
return applyFormat(dateTimeUtc, "h:mm\u00A0A" + (withTimeZone ? ' z' : ''));
|
|
287
|
+
}
|
|
288
|
+
exports.getFormattedNumberedTime = getFormattedNumberedTime;
|
|
289
|
+
/**
|
|
290
|
+
* Returns a time string with possibly full time zone name, e.g. `4:05 PM EDT` or `4:05 PM CST (Asia/Taipei)`
|
|
291
|
+
* @param dateTimeUtc A UTC date time string
|
|
292
|
+
* @param showEasternZoneId (optional) Whether or not to include the timeZoneId in the result for EST/EDT. Defaults to `false`.
|
|
293
|
+
* @param timeZoneId (optional) A time zone Id. Defaults to the current time zone id, using `guessTimeZoneId()`.
|
|
294
|
+
*/
|
|
295
|
+
function getFormattedNumberedTimeWithFullZone(dateTimeUtc, showEasternZoneId, timeZoneId) {
|
|
296
|
+
if (showEasternZoneId === void 0) { showEasternZoneId = false; }
|
|
297
|
+
if (timeZoneId === void 0) { timeZoneId = timezone_1.guessTimeZoneId(); }
|
|
298
|
+
var zonedMoment = exports.getZonedMomentFromUtc(dateTimeUtc, timeZoneId);
|
|
299
|
+
var time = applyFormat(dateTimeUtc, 'h:mm\u00a0A', timeZoneId);
|
|
300
|
+
var timezoneAbbreviation = zonedMoment ? zonedMoment.zoneAbbr() : '';
|
|
301
|
+
return (timezoneAbbreviation === 'EDT' || timezoneAbbreviation === 'EST') && !showEasternZoneId
|
|
302
|
+
? // Don't show the full zone name if in EDT or EST, unless told to
|
|
303
|
+
time + " " + timezoneAbbreviation
|
|
304
|
+
: // If not EDT or EST, show the zone name, replacing underscores with spaces
|
|
305
|
+
// Ex: "Asia/Taipei"
|
|
306
|
+
time + " " + timezoneAbbreviation + " (" + timeZoneId.replace('_', ' ') + ")";
|
|
307
|
+
}
|
|
308
|
+
exports.getFormattedNumberedTimeWithFullZone = getFormattedNumberedTimeWithFullZone;
|
|
309
|
+
/**
|
|
310
|
+
* Returns a time string without time zone, e.g. `4:05 PM`
|
|
311
|
+
* @param dateTimeUtc A UTC date time string
|
|
312
|
+
*/
|
|
313
|
+
function getFormattedNumberedTimeWithoutZone(dateTimeUtc) {
|
|
314
|
+
return applyFormat(dateTimeUtc, 'h:mm\u00a0A');
|
|
315
|
+
}
|
|
316
|
+
exports.getFormattedNumberedTimeWithoutZone = getFormattedNumberedTimeWithoutZone;
|
|
317
|
+
/**
|
|
318
|
+
* Returns a time string without time zone, in 24 hr time, e.g. `16:05`
|
|
319
|
+
* @param dateTimeUtc A UTC date time string
|
|
320
|
+
*/
|
|
321
|
+
function getFormattedNumberedTimeWithoutZoneOrMeridian(dateTimeUtc) {
|
|
322
|
+
return applyFormat(dateTimeUtc, 'HH:mm');
|
|
323
|
+
}
|
|
324
|
+
exports.getFormattedNumberedTimeWithoutZoneOrMeridian = getFormattedNumberedTimeWithoutZoneOrMeridian;
|
|
325
|
+
/**
|
|
326
|
+
* Returns a full formatted time zone string for the given `timeZoneId`.
|
|
327
|
+
*
|
|
328
|
+
* Combines all possible abbreviations for the zone and the timeZoneId, e.g. `EST/EDT`, `PST/PDT (America/Los Angeles)` or `CST (Asia/Taipei)`
|
|
329
|
+
*
|
|
330
|
+
* If abbreviations are not alpha characters, e.g. `-04`, then only the timeZoneId is returned.
|
|
331
|
+
*
|
|
332
|
+
* @param timeZoneId (optional) A time zone Id. Defaults to the current time zone id, using `guessTimeZoneId()`.
|
|
333
|
+
* @param showEasternZoneId (optional) Whether or not to include the timeZoneId in the result for EST/EDT. Defaults to `false`.
|
|
334
|
+
* @param nowUtc (optional) The current time, "now", as an ISO date string.
|
|
335
|
+
*/
|
|
336
|
+
function getFullFormattedTimeZone(timeZoneId, showEasternZoneId, nowUtc) {
|
|
337
|
+
if (timeZoneId === void 0) { timeZoneId = timezone_1.guessTimeZoneId(); }
|
|
338
|
+
if (showEasternZoneId === void 0) { showEasternZoneId = false; }
|
|
339
|
+
if (nowUtc === void 0) { nowUtc = exports.getServerNowUtc().toISOString(); }
|
|
340
|
+
var zone = moment_timezone_1.default.tz.zone(timeZoneId);
|
|
341
|
+
if (!zone)
|
|
342
|
+
return '';
|
|
343
|
+
var zonedMoment = exports.getZonedMomentFromUtc(nowUtc, timeZoneId);
|
|
344
|
+
// filter the zone data down to just recent years, instead of the default of 1900 to 2038
|
|
345
|
+
var filteredZone = moment_timezone_utils_1.default.tz.filterYears(zone, zonedMoment.year() - 1, zonedMoment.year() + 1);
|
|
346
|
+
// find all unique abbreviations for the zone, combined into a string
|
|
347
|
+
var abbreviations = filteredZone.abbrs
|
|
348
|
+
// filter out non-alpha abbreviations
|
|
349
|
+
.filter(function (abbr) { return /[a-zA-Z]+/g.test(abbr); })
|
|
350
|
+
.reduce(function (uniqueAbbrs, abbr) {
|
|
351
|
+
if (!uniqueAbbrs.includes(abbr)) {
|
|
352
|
+
uniqueAbbrs.push(abbr);
|
|
353
|
+
}
|
|
354
|
+
return uniqueAbbrs;
|
|
355
|
+
}, []);
|
|
356
|
+
var abbreviationsString = abbreviations.length > 0 ? abbreviations.join('/') : null;
|
|
357
|
+
var readableZoneId = timeZoneId.replace('_', ' ');
|
|
358
|
+
return !abbreviationsString
|
|
359
|
+
? readableZoneId
|
|
360
|
+
: abbreviationsString === 'EST/EDT' && !showEasternZoneId
|
|
361
|
+
? // Don't show the zoneId if in Eastern, unless told to
|
|
362
|
+
abbreviationsString
|
|
363
|
+
: // Show the combined abbreviations plus the friendly zoneId
|
|
364
|
+
abbreviationsString + " (" + readableZoneId + ")";
|
|
365
|
+
}
|
|
366
|
+
exports.getFullFormattedTimeZone = getFullFormattedTimeZone;
|
|
367
|
+
/**
|
|
368
|
+
* Returns the basic time zone abbreviation for the given date, e.g. `EDT`.
|
|
369
|
+
*
|
|
370
|
+
* @param dateTimeUtc The date to format.
|
|
371
|
+
*/
|
|
372
|
+
function getFormattedTimeZone(dateTimeUtc) {
|
|
373
|
+
return applyFormat(dateTimeUtc, 'z');
|
|
374
|
+
}
|
|
375
|
+
exports.getFormattedTimeZone = getFormattedTimeZone;
|
|
376
|
+
/**
|
|
377
|
+
* Formats a date using the given format. Parses the date as UTC, then converts to the current time zone, then formats.
|
|
378
|
+
* @param {*} dateTimeUtc The date to format. Any valid input for `moment.utc(...)`
|
|
379
|
+
* @param {*} format The format to use
|
|
380
|
+
*/
|
|
381
|
+
function applyFormat(dateTimeUtc, format, timeZoneId) {
|
|
382
|
+
if (timeZoneId === void 0) { timeZoneId = timezone_1.guessTimeZoneId(); }
|
|
383
|
+
return exports.getZonedMomentFromUtc(dateTimeUtc, timeZoneId).format(format);
|
|
384
|
+
}
|
|
385
|
+
var isInputTypeSupported = function (type) {
|
|
386
|
+
try {
|
|
387
|
+
var test_1 = document.createElement('input');
|
|
388
|
+
test_1.type = type;
|
|
389
|
+
var isSupported = test_1.type === type;
|
|
390
|
+
return isSupported;
|
|
391
|
+
}
|
|
392
|
+
catch (e) {
|
|
393
|
+
return false;
|
|
394
|
+
}
|
|
395
|
+
};
|
|
396
|
+
exports.isDateInputSupported = isInputTypeSupported('date');
|
|
397
|
+
exports.isTimeInputSupported = isInputTypeSupported('time');
|
|
398
|
+
function isDateTimeValid(dateTime) {
|
|
399
|
+
return !!dateTime && moment_timezone_1.default(dateTime).isValid();
|
|
400
|
+
}
|
|
401
|
+
exports.isDateTimeValid = isDateTimeValid;
|