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.
Files changed (334) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +127 -127
  3. package/lib/components/ActionList.d.ts +20 -20
  4. package/lib/components/ActionList.js +94 -94
  5. package/lib/components/AlertDialog.d.ts +18 -18
  6. package/lib/components/AlertDialog.js +21 -21
  7. package/lib/components/AlertWithIcon.d.ts +7 -7
  8. package/lib/components/AlertWithIcon.js +57 -57
  9. package/lib/components/Blots/CustomImageSpec.d.ts +14 -14
  10. package/lib/components/Blots/CustomImageSpec.js +45 -45
  11. package/lib/components/Blots/CustomVideoSpec.d.ts +16 -16
  12. package/lib/components/Blots/CustomVideoSpec.js +47 -47
  13. package/lib/components/ConnectedModal.d.ts +6 -6
  14. package/lib/components/ConnectedModal.js +11 -11
  15. package/lib/components/Dropdowns/GroupsDropdown.d.ts +18 -18
  16. package/lib/components/Dropdowns/GroupsDropdown.js +90 -90
  17. package/lib/components/Dropdowns/ManagedNavDropdown.d.ts +32 -32
  18. package/lib/components/Dropdowns/ManagedNavDropdown.js +118 -118
  19. package/lib/components/Dropdowns/UserDropdown.d.ts +6 -6
  20. package/lib/components/Dropdowns/UserDropdown.js +76 -76
  21. package/lib/components/Dropdowns/index.d.ts +3 -3
  22. package/lib/components/Dropdowns/index.js +12 -12
  23. package/lib/components/EntityOwnerList.d.ts +11 -11
  24. package/lib/components/EntityOwnerList.js +63 -63
  25. package/lib/components/ErrorBoundary.d.ts +11 -11
  26. package/lib/components/ErrorBoundary.js +74 -74
  27. package/lib/components/Forms/DateField.d.ts +13 -13
  28. package/lib/components/Forms/DateField.js +99 -99
  29. package/lib/components/Forms/TimeField.d.ts +11 -11
  30. package/lib/components/Forms/TimeField.js +112 -112
  31. package/lib/components/Forms/index.d.ts +2 -2
  32. package/lib/components/Forms/index.js +14 -14
  33. package/lib/components/Groups/CreateEditCopySaveButtons.d.ts +10 -10
  34. package/lib/components/Groups/CreateEditCopySaveButtons.js +18 -18
  35. package/lib/components/Groups/GroupCreateOrEditCommonProps.d.ts +6 -6
  36. package/lib/components/Groups/GroupCreateOrEditCommonProps.js +2 -2
  37. package/lib/components/Groups/RosterSyncInfo.d.ts +5 -5
  38. package/lib/components/Groups/RosterSyncInfo.js +54 -54
  39. package/lib/components/HOC/AccessibleAppComponent.d.ts +15 -15
  40. package/lib/components/HOC/AccessibleAppComponent.js +135 -135
  41. package/lib/components/HOC/ActivityRequiredComponent.d.ts +105 -105
  42. package/lib/components/HOC/ActivityRequiredComponent.js +101 -101
  43. package/lib/components/HOC/AsyncComponent.d.ts +37 -37
  44. package/lib/components/HOC/AsyncComponent.js +136 -136
  45. package/lib/components/HOC/AuthenticatedComponent.d.ts +10 -10
  46. package/lib/components/HOC/AuthenticatedComponent.js +104 -104
  47. package/lib/components/HOC/CollectionComponent.d.ts +61 -61
  48. package/lib/components/HOC/CollectionComponent.js +175 -175
  49. package/lib/components/HOC/CollectionFirstItemComponent.d.ts +67 -67
  50. package/lib/components/HOC/CollectionFirstItemComponent.js +94 -94
  51. package/lib/components/HOC/CollectionItemComponent.d.ts +61 -61
  52. package/lib/components/HOC/CollectionItemComponent.js +172 -172
  53. package/lib/components/HOC/ConnectedModalComponent.d.ts +26 -26
  54. package/lib/components/HOC/ConnectedModalComponent.js +110 -110
  55. package/lib/components/HOC/DataDependentComponent.d.ts +61 -61
  56. package/lib/components/HOC/DataDependentComponent.js +90 -90
  57. package/lib/components/HOC/EntityComponent.d.ts +83 -83
  58. package/lib/components/HOC/EntityComponent.js +120 -120
  59. package/lib/components/HOC/FullscreenModalComponent.d.ts +74 -74
  60. package/lib/components/HOC/FullscreenModalComponent.js +173 -173
  61. package/lib/components/HOC/GroupActivityRequiredComponent.d.ts +29 -29
  62. package/lib/components/HOC/GroupActivityRequiredComponent.js +49 -49
  63. package/lib/components/HOC/GuidComponent.d.ts +14 -14
  64. package/lib/components/HOC/GuidComponent.js +72 -72
  65. package/lib/components/HOC/ModelContextDependencyVerifyComponent.d.ts +172 -172
  66. package/lib/components/HOC/ModelContextDependencyVerifyComponent.js +72 -72
  67. package/lib/components/HOC/ModelErrorRedirectComponent.d.ts +69 -69
  68. package/lib/components/HOC/ModelErrorRedirectComponent.js +101 -101
  69. package/lib/components/HOC/SearchPersistorComponent.d.ts +85 -85
  70. package/lib/components/HOC/SearchPersistorComponent.js +198 -198
  71. package/lib/components/HOC/UnauthenticatedComponent.d.ts +62 -62
  72. package/lib/components/HOC/UnauthenticatedComponent.js +90 -90
  73. package/lib/components/HOC/UserComponent.d.ts +3 -3
  74. package/lib/components/HOC/UserComponent.js +12 -12
  75. package/lib/components/Icons/IconExternalUser.d.ts +3 -3
  76. package/lib/components/Icons/IconExternalUser.js +24 -24
  77. package/lib/components/Icons/IconImpersonation.d.ts +3 -3
  78. package/lib/components/Icons/IconImpersonation.js +24 -24
  79. package/lib/components/Icons/IconStopImpersonating.d.ts +3 -3
  80. package/lib/components/Icons/IconStopImpersonating.js +24 -24
  81. package/lib/components/Impersonation/Button.d.ts +7 -7
  82. package/lib/components/Impersonation/Button.js +61 -61
  83. package/lib/components/Impersonation/Link.d.ts +7 -7
  84. package/lib/components/Impersonation/Link.js +58 -58
  85. package/lib/components/Impersonation/UserDetail.css +22 -22
  86. package/lib/components/Impersonation/UserDetail.d.ts +22 -22
  87. package/lib/components/Impersonation/UserDetail.js +23 -23
  88. package/lib/components/Loading.d.ts +4 -4
  89. package/lib/components/Loading.js +24 -24
  90. package/lib/components/Lti/Confirm.d.ts +8 -8
  91. package/lib/components/Lti/Confirm.js +37 -37
  92. package/lib/components/Lti/CreateNonLtiGroupAlertDialog.d.ts +15 -15
  93. package/lib/components/Lti/CreateNonLtiGroupAlertDialog.js +83 -83
  94. package/lib/components/Lti/Launch.d.ts +21 -21
  95. package/lib/components/Lti/Launch.js +52 -52
  96. package/lib/components/Lti/LaunchGroup.d.ts +9 -9
  97. package/lib/components/Lti/LaunchGroup.js +45 -45
  98. package/lib/components/NewVersionAlert.d.ts +18 -18
  99. package/lib/components/NewVersionAlert.js +97 -97
  100. package/lib/components/NotFound.d.ts +3 -3
  101. package/lib/components/NotFound.js +28 -28
  102. package/lib/components/Notifications.d.ts +39 -39
  103. package/lib/components/Notifications.js +175 -175
  104. package/lib/components/RefreshIndicator/Bordered.d.ts +7 -7
  105. package/lib/components/RefreshIndicator/Bordered.js +35 -35
  106. package/lib/components/RefreshIndicator/Inline.d.ts +4 -4
  107. package/lib/components/RefreshIndicator/Inline.js +36 -36
  108. package/lib/components/RefreshIndicator/index.d.ts +21 -21
  109. package/lib/components/RefreshIndicator/index.js +116 -116
  110. package/lib/components/SearchControls.d.ts +14 -14
  111. package/lib/components/SearchControls.js +34 -34
  112. package/lib/components/SentryRoute.d.ts +3 -3
  113. package/lib/components/SentryRoute.js +25 -25
  114. package/lib/components/Tables/RoleFilter.d.ts +14 -14
  115. package/lib/components/Tables/RoleFilter.js +53 -53
  116. package/lib/components/Tables/TextFilter.d.ts +7 -7
  117. package/lib/components/Tables/TextFilter.js +26 -26
  118. package/lib/components/UserRoles/Add.d.ts +31 -31
  119. package/lib/components/UserRoles/Add.js +165 -165
  120. package/lib/components/UserRoles/RoleCell.d.ts +21 -21
  121. package/lib/components/UserRoles/RoleCell.js +53 -53
  122. package/lib/components/UserRoles/Select.d.ts +27 -27
  123. package/lib/components/UserRoles/Select.js +44 -44
  124. package/lib/components/UserRoles/Table.d.ts +16 -16
  125. package/lib/components/UserRoles/Table.js +99 -99
  126. package/lib/components/UserRoles/index.d.ts +76 -76
  127. package/lib/components/UserRoles/index.js +361 -361
  128. package/lib/constants/baseActivity.d.ts +25 -25
  129. package/lib/constants/baseActivity.js +29 -29
  130. package/lib/constants/baseRole.d.ts +9 -9
  131. package/lib/constants/baseRole.js +13 -13
  132. package/lib/constants/configuration.d.ts +8 -8
  133. package/lib/constants/configuration.js +39 -39
  134. package/lib/constants/externalProviderType.d.ts +5 -5
  135. package/lib/constants/externalProviderType.js +9 -9
  136. package/lib/constants/index.d.ts +8 -8
  137. package/lib/constants/index.js +20 -20
  138. package/lib/constants/mockData.d.ts +82 -84
  139. package/lib/constants/mockData.js +379 -379
  140. package/lib/constants/modelStatus.d.ts +10 -10
  141. package/lib/constants/modelStatus.js +14 -14
  142. package/lib/constants/notificationType.d.ts +7 -7
  143. package/lib/constants/notificationType.js +11 -11
  144. package/lib/constants/shard.d.ts +6 -6
  145. package/lib/constants/shard.js +10 -10
  146. package/lib/constants/tier.d.ts +6 -6
  147. package/lib/constants/tier.js +10 -10
  148. package/lib/constants/userRole.d.ts +2 -2
  149. package/lib/constants/userRole.js +21 -21
  150. package/lib/css/base/_base.css +98 -98
  151. package/lib/css/base/_typography.css +130 -130
  152. package/lib/css/components/_alert.css +85 -85
  153. package/lib/css/components/_bootstrap-grid.css +28 -28
  154. package/lib/css/components/_buttons.css +325 -325
  155. package/lib/css/components/_forms.css +91 -91
  156. package/lib/css/components/_menu.css +56 -56
  157. package/lib/css/components/_modals.css +41 -41
  158. package/lib/css/components/_tables.css +426 -426
  159. package/lib/css/components/_tags.css +12 -12
  160. package/lib/css/index-with-variables.css +14 -14
  161. package/lib/css/index.css +13 -13
  162. package/lib/css/utils/_border.css +463 -463
  163. package/lib/css/utils/_color.css +271 -271
  164. package/lib/css/utils/_display.css +312 -312
  165. package/lib/css/utils/_general.css +48 -48
  166. package/lib/css/utils/_icon.css +16 -16
  167. package/lib/css/utils/_text.css +24 -24
  168. package/lib/css/utils/_width.css +60 -60
  169. package/lib/css/variables.css +70 -70
  170. package/lib/endpointMappings.d.ts +4 -4
  171. package/lib/endpointMappings.js +173 -173
  172. package/lib/hooks/useCollection.d.ts +6 -6
  173. package/lib/hooks/useCollection.js +61 -61
  174. package/lib/hooks/useCollectionConfiguration.d.ts +27 -27
  175. package/lib/hooks/useCollectionConfiguration.js +67 -67
  176. package/lib/hooks/useCollectionItem.d.ts +6 -6
  177. package/lib/hooks/useCollectionItem.js +54 -54
  178. package/lib/hooks/useGuid.d.ts +4 -4
  179. package/lib/hooks/useGuid.js +14 -14
  180. package/lib/hooks/usePrevious.d.ts +5 -5
  181. package/lib/hooks/usePrevious.js +18 -18
  182. package/lib/index.d.ts +8 -8
  183. package/lib/index.js +30 -30
  184. package/lib/redux/actionCreator.d.ts +5 -5
  185. package/lib/redux/actionCreator.js +16 -16
  186. package/lib/redux/actions.d.ts +12 -12
  187. package/lib/redux/actions.js +30 -30
  188. package/lib/redux/configureReducers.d.ts +22 -22
  189. package/lib/redux/configureReducers.js +94 -94
  190. package/lib/redux/configureStore.d.ts +14 -14
  191. package/lib/redux/configureStore.js +118 -118
  192. package/lib/redux/helpers.d.ts +2 -2
  193. package/lib/redux/helpers.js +7 -7
  194. package/lib/redux/reducers/index.d.ts +4 -4
  195. package/lib/redux/reducers/index.js +12 -12
  196. package/lib/redux/reducers/modalsReducer.d.ts +8 -8
  197. package/lib/redux/reducers/modalsReducer.js +54 -54
  198. package/lib/redux/reducers/notificationsReducer.d.ts +9 -9
  199. package/lib/redux/reducers/notificationsReducer.js +27 -27
  200. package/lib/redux/reducers/searchReducer.d.ts +17 -17
  201. package/lib/redux/reducers/searchReducer.js +26 -26
  202. package/lib/redux/sagas/caliperSaga.d.ts +2 -2
  203. package/lib/redux/sagas/caliperSaga.js +296 -296
  204. package/lib/redux/sagas/clockOffsetSaga.d.ts +10 -10
  205. package/lib/redux/sagas/clockOffsetSaga.js +81 -81
  206. package/lib/redux/sagas/configurationSaga.d.ts +1 -1
  207. package/lib/redux/sagas/configurationSaga.js +48 -48
  208. package/lib/redux/sagas/errorSaga.d.ts +2 -2
  209. package/lib/redux/sagas/errorSaga.js +66 -66
  210. package/lib/redux/sagas/identityProviderSaga.d.ts +2 -2
  211. package/lib/redux/sagas/identityProviderSaga.js +91 -91
  212. package/lib/redux/sagas/initialDataLoadSaga.d.ts +1 -1
  213. package/lib/redux/sagas/initialDataLoadSaga.js +33 -33
  214. package/lib/redux/sagas/postLoginDataSaga.d.ts +9 -9
  215. package/lib/redux/sagas/postLoginDataSaga.js +87 -87
  216. package/lib/redux/sagas/postLoginRedirectSaga.d.ts +6 -6
  217. package/lib/redux/sagas/postLoginRedirectSaga.js +96 -96
  218. package/lib/redux/sagas/rootSaga.d.ts +5 -5
  219. package/lib/redux/sagas/rootSaga.js +144 -144
  220. package/lib/redux/sagas/sentrySaga.d.ts +1 -1
  221. package/lib/redux/sagas/sentrySaga.js +103 -103
  222. package/lib/services/codeProviderService.d.ts +3 -3
  223. package/lib/services/codeProviderService.js +36 -36
  224. package/lib/services/documentService.d.ts +10 -10
  225. package/lib/services/documentService.js +17 -17
  226. package/lib/services/persistenceService.d.ts +13 -13
  227. package/lib/services/persistenceService.js +45 -45
  228. package/lib/services/ticketProviderService.d.ts +3 -3
  229. package/lib/services/ticketProviderService.js +40 -40
  230. package/lib/services/windowService.d.ts +9 -9
  231. package/lib/services/windowService.js +15 -15
  232. package/lib/setupTests.d.ts +1 -1
  233. package/lib/setupTests.js +25 -25
  234. package/lib/startup.d.ts +29 -29
  235. package/lib/startup.js +128 -128
  236. package/lib/types/AppConfiguration.d.ts +32 -32
  237. package/lib/types/AppConfiguration.js +2 -2
  238. package/lib/types/Artifact.d.ts +14 -14
  239. package/lib/types/Artifact.js +9 -9
  240. package/lib/types/BaseReduxState.d.ts +57 -57
  241. package/lib/types/BaseReduxState.js +2 -2
  242. package/lib/types/Client.d.ts +6 -6
  243. package/lib/types/Client.js +2 -2
  244. package/lib/types/Collection.d.ts +175 -175
  245. package/lib/types/Collection.js +2 -2
  246. package/lib/types/Configuration.d.ts +12 -12
  247. package/lib/types/Configuration.js +2 -2
  248. package/lib/types/DeepLinkingResponseRequest.d.ts +4 -4
  249. package/lib/types/DeepLinkingResponseRequest.js +2 -2
  250. package/lib/types/DeletableModel.d.ts +4 -4
  251. package/lib/types/DeletableModel.js +2 -2
  252. package/lib/types/External.d.ts +31 -31
  253. package/lib/types/External.js +2 -2
  254. package/lib/types/Group.d.ts +19 -19
  255. package/lib/types/Group.js +2 -2
  256. package/lib/types/IdentityProvider.d.ts +11 -11
  257. package/lib/types/IdentityProvider.js +2 -2
  258. package/lib/types/LtiLaunch.d.ts +20 -20
  259. package/lib/types/LtiLaunch.js +2 -2
  260. package/lib/types/NameOnlyEntity.d.ts +3 -3
  261. package/lib/types/NameOnlyEntity.js +2 -2
  262. package/lib/types/Notification.d.ts +15 -15
  263. package/lib/types/Notification.js +2 -2
  264. package/lib/types/OptionalRecord.d.ts +4 -4
  265. package/lib/types/OptionalRecord.js +2 -2
  266. package/lib/types/OwnerSchedule.d.ts +9 -9
  267. package/lib/types/OwnerSchedule.js +2 -2
  268. package/lib/types/PropertyOfType.d.ts +12 -12
  269. package/lib/types/PropertyOfType.js +2 -2
  270. package/lib/types/RoleDescription.d.ts +4 -4
  271. package/lib/types/RoleDescription.js +2 -2
  272. package/lib/types/Search.d.ts +11 -11
  273. package/lib/types/Search.js +2 -2
  274. package/lib/types/SimpleLocation.d.ts +46 -46
  275. package/lib/types/SimpleLocation.js +2 -2
  276. package/lib/types/UniTime.d.ts +17 -17
  277. package/lib/types/UniTime.js +2 -2
  278. package/lib/types/User.d.ts +68 -68
  279. package/lib/types/User.js +2 -2
  280. package/lib/types/UserRole.d.ts +19 -19
  281. package/lib/types/UserRole.js +2 -2
  282. package/lib/types/index.d.ts +21 -21
  283. package/lib/types/index.js +33 -33
  284. package/lib/utils/baseActivity.d.ts +63 -63
  285. package/lib/utils/baseActivity.js +155 -155
  286. package/lib/utils/baseRole.d.ts +2 -2
  287. package/lib/utils/baseRole.js +38 -38
  288. package/lib/utils/collection.d.ts +43 -43
  289. package/lib/utils/collection.js +337 -337
  290. package/lib/utils/date.d.ts +162 -162
  291. package/lib/utils/date.js +401 -401
  292. package/lib/utils/domainIdentifier.d.ts +2 -2
  293. package/lib/utils/domainIdentifier.js +12 -12
  294. package/lib/utils/entityUserRole.d.ts +3 -3
  295. package/lib/utils/entityUserRole.js +7 -7
  296. package/lib/utils/externalGroup.d.ts +4 -4
  297. package/lib/utils/externalGroup.js +32 -32
  298. package/lib/utils/externalProviders.d.ts +2 -2
  299. package/lib/utils/externalProviders.js +11 -11
  300. package/lib/utils/externalTerms.d.ts +2 -2
  301. package/lib/utils/externalTerms.js +10 -10
  302. package/lib/utils/group.d.ts +15 -15
  303. package/lib/utils/group.js +15 -15
  304. package/lib/utils/groupDates.d.ts +9 -9
  305. package/lib/utils/groupDates.js +52 -52
  306. package/lib/utils/groupRoles.d.ts +8 -8
  307. package/lib/utils/groupRoles.js +42 -42
  308. package/lib/utils/logger.d.ts +10 -10
  309. package/lib/utils/logger.js +34 -34
  310. package/lib/utils/lti.d.ts +3 -3
  311. package/lib/utils/lti.js +9 -9
  312. package/lib/utils/model.d.ts +15 -15
  313. package/lib/utils/model.js +58 -58
  314. package/lib/utils/number.d.ts +13 -13
  315. package/lib/utils/number.js +32 -32
  316. package/lib/utils/promise.d.ts +5 -5
  317. package/lib/utils/promise.js +17 -17
  318. package/lib/utils/route.d.ts +5 -5
  319. package/lib/utils/route.js +69 -69
  320. package/lib/utils/shard.d.ts +3 -3
  321. package/lib/utils/shard.js +45 -45
  322. package/lib/utils/sort.d.ts +11 -11
  323. package/lib/utils/sort.js +69 -69
  324. package/lib/utils/string.d.ts +2 -2
  325. package/lib/utils/string.js +16 -16
  326. package/lib/utils/timezone.d.ts +2 -2
  327. package/lib/utils/timezone.js +32 -32
  328. package/lib/utils/url.d.ts +23 -23
  329. package/lib/utils/url.js +163 -163
  330. package/lib/utils/user.d.ts +8 -8
  331. package/lib/utils/user.js +73 -73
  332. package/lib/utils/userRole.d.ts +21 -21
  333. package/lib/utils/userRole.js +48 -48
  334. 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;