mis-crystal-design-system 14.0.55-test-v4 → 14.0.55-test-v6

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 (460) hide show
  1. package/datepicker/base/bs-datepicker-container.d.ts +44 -0
  2. package/datepicker/bs-datepicker-inline.component.d.ts +64 -0
  3. package/datepicker/bs-datepicker-inline.config.d.ts +6 -0
  4. package/datepicker/bs-datepicker-input.directive.d.ts +33 -0
  5. package/datepicker/bs-datepicker.component.d.ts +126 -0
  6. package/datepicker/bs-datepicker.config.d.ts +143 -0
  7. package/datepicker/bs-datepicker.module.d.ts +29 -0
  8. package/datepicker/bs-daterangepicker-inline.component.d.ts +64 -0
  9. package/datepicker/bs-daterangepicker-inline.config.d.ts +9 -0
  10. package/datepicker/bs-daterangepicker-input.directive.d.ts +33 -0
  11. package/datepicker/bs-daterangepicker.component.d.ts +118 -0
  12. package/datepicker/bs-daterangepicker.config.d.ts +7 -0
  13. package/datepicker/bs-locale.service.d.ts +13 -0
  14. package/datepicker/chronos/create/check-overflow.d.ts +2 -0
  15. package/datepicker/chronos/create/clone.d.ts +1 -0
  16. package/datepicker/chronos/create/date-from-array.d.ts +2 -0
  17. package/datepicker/chronos/create/from-anything.d.ts +4 -0
  18. package/datepicker/chronos/create/from-array.d.ts +2 -0
  19. package/datepicker/chronos/create/from-object.d.ts +2 -0
  20. package/datepicker/chronos/create/from-string-and-array.d.ts +2 -0
  21. package/datepicker/chronos/create/from-string-and-format.d.ts +4 -0
  22. package/datepicker/chronos/create/from-string.d.ts +4 -0
  23. package/datepicker/chronos/create/local.d.ts +3 -0
  24. package/datepicker/chronos/create/parsing-flags.d.ts +2 -0
  25. package/datepicker/chronos/create/parsing.types.d.ts +64 -0
  26. package/datepicker/chronos/create/valid.d.ts +6 -0
  27. package/datepicker/chronos/duration/bubble.d.ts +4 -0
  28. package/datepicker/chronos/duration/constructor.d.ts +21 -0
  29. package/datepicker/chronos/duration/create.d.ts +8 -0
  30. package/datepicker/chronos/duration/humanize.d.ts +5 -0
  31. package/datepicker/chronos/duration/valid.d.ts +2 -0
  32. package/datepicker/chronos/format/format.d.ts +11 -0
  33. package/datepicker/chronos/format.d.ts +5 -0
  34. package/datepicker/chronos/i18n/ar.d.ts +2 -0
  35. package/datepicker/chronos/i18n/bg.d.ts +2 -0
  36. package/datepicker/chronos/i18n/ca.d.ts +2 -0
  37. package/datepicker/chronos/i18n/cs.d.ts +2 -0
  38. package/datepicker/chronos/i18n/da.d.ts +2 -0
  39. package/datepicker/chronos/i18n/de.d.ts +2 -0
  40. package/datepicker/chronos/i18n/en-gb.d.ts +2 -0
  41. package/datepicker/chronos/i18n/es-do.d.ts +2 -0
  42. package/datepicker/chronos/i18n/es-us.d.ts +2 -0
  43. package/datepicker/chronos/i18n/es.d.ts +2 -0
  44. package/datepicker/chronos/i18n/et.d.ts +2 -0
  45. package/datepicker/chronos/i18n/fi.d.ts +2 -0
  46. package/datepicker/chronos/i18n/fr.d.ts +2 -0
  47. package/datepicker/chronos/i18n/gl.d.ts +2 -0
  48. package/datepicker/chronos/i18n/he.d.ts +2 -0
  49. package/datepicker/chronos/i18n/hi.d.ts +2 -0
  50. package/datepicker/chronos/i18n/hr.d.ts +2 -0
  51. package/datepicker/chronos/i18n/hu.d.ts +2 -0
  52. package/datepicker/chronos/i18n/id.d.ts +2 -0
  53. package/datepicker/chronos/i18n/it.d.ts +2 -0
  54. package/datepicker/chronos/i18n/ja.d.ts +2 -0
  55. package/datepicker/chronos/i18n/ka.d.ts +2 -0
  56. package/datepicker/chronos/i18n/kk.d.ts +2 -0
  57. package/datepicker/chronos/i18n/ko.d.ts +2 -0
  58. package/datepicker/chronos/i18n/lt.d.ts +2 -0
  59. package/datepicker/chronos/i18n/lv.d.ts +2 -0
  60. package/datepicker/chronos/i18n/mn.d.ts +2 -0
  61. package/datepicker/chronos/i18n/nb.d.ts +2 -0
  62. package/datepicker/chronos/i18n/nl-be.d.ts +2 -0
  63. package/datepicker/chronos/i18n/nl.d.ts +2 -0
  64. package/datepicker/chronos/i18n/pl.d.ts +2 -0
  65. package/datepicker/chronos/i18n/pt-br.d.ts +2 -0
  66. package/datepicker/chronos/i18n/ro.d.ts +2 -0
  67. package/datepicker/chronos/i18n/ru.d.ts +2 -0
  68. package/datepicker/chronos/i18n/sk.d.ts +2 -0
  69. package/datepicker/chronos/i18n/sl.d.ts +2 -0
  70. package/datepicker/chronos/i18n/sq.d.ts +2 -0
  71. package/datepicker/chronos/i18n/sv.d.ts +2 -0
  72. package/datepicker/chronos/i18n/th-be.d.ts +2 -0
  73. package/datepicker/chronos/i18n/th.d.ts +2 -0
  74. package/datepicker/chronos/i18n/tr.d.ts +2 -0
  75. package/datepicker/chronos/i18n/uk.d.ts +2 -0
  76. package/datepicker/chronos/i18n/vi.d.ts +2 -0
  77. package/datepicker/chronos/i18n/zh-cn.d.ts +2 -0
  78. package/datepicker/chronos/index.d.ts +1 -0
  79. package/datepicker/chronos/locale/calendar.d.ts +8 -0
  80. package/datepicker/chronos/locale/locale.class.d.ts +143 -0
  81. package/datepicker/chronos/locale/locale.defaults.d.ts +11 -0
  82. package/datepicker/chronos/locale/locales.d.ts +7 -0
  83. package/datepicker/chronos/moment/add-subtract.d.ts +5 -0
  84. package/datepicker/chronos/moment/calendar.d.ts +15 -0
  85. package/datepicker/chronos/moment/diff.d.ts +3 -0
  86. package/datepicker/chronos/moment/min-max.d.ts +2 -0
  87. package/datepicker/chronos/parse/regex.d.ts +22 -0
  88. package/datepicker/chronos/parse/token.d.ts +5 -0
  89. package/datepicker/chronos/public_api.d.ts +57 -0
  90. package/datepicker/chronos/test/chain.d.ts +214 -0
  91. package/datepicker/chronos/types.d.ts +36 -0
  92. package/datepicker/chronos/units/aliases.d.ts +7 -0
  93. package/datepicker/chronos/units/constants.d.ts +9 -0
  94. package/datepicker/chronos/units/day-of-month.d.ts +1 -0
  95. package/datepicker/chronos/units/day-of-week.d.ts +20 -0
  96. package/datepicker/chronos/units/day-of-year.d.ts +3 -0
  97. package/datepicker/chronos/units/hour.d.ts +1 -0
  98. package/datepicker/chronos/units/index.d.ts +18 -0
  99. package/datepicker/chronos/units/millisecond.d.ts +1 -0
  100. package/datepicker/chronos/units/minute.d.ts +1 -0
  101. package/datepicker/chronos/units/month.d.ts +2 -0
  102. package/datepicker/chronos/units/offset.d.ts +10 -0
  103. package/datepicker/chronos/units/priorities.d.ts +1 -0
  104. package/datepicker/chronos/units/quarter.d.ts +3 -0
  105. package/datepicker/chronos/units/second.d.ts +1 -0
  106. package/datepicker/chronos/units/timestamp.d.ts +1 -0
  107. package/datepicker/chronos/units/timezone.d.ts +3 -0
  108. package/datepicker/chronos/units/week-calendar-utils.d.ts +9 -0
  109. package/datepicker/chronos/units/week-year.d.ts +8 -0
  110. package/datepicker/chronos/units/week.d.ts +6 -0
  111. package/datepicker/chronos/units/year.d.ts +4 -0
  112. package/datepicker/chronos/utils/abs-ceil.d.ts +1 -0
  113. package/datepicker/chronos/utils/abs-round.d.ts +1 -0
  114. package/datepicker/chronos/utils/compare-arrays.d.ts +1 -0
  115. package/datepicker/chronos/utils/date-compare.d.ts +9 -0
  116. package/datepicker/chronos/utils/date-getters.d.ts +18 -0
  117. package/datepicker/chronos/utils/date-setters.d.ts +12 -0
  118. package/datepicker/chronos/utils/defaults.d.ts +1 -0
  119. package/datepicker/chronos/utils/start-end-of.d.ts +3 -0
  120. package/datepicker/chronos/utils/type-checks.d.ts +12 -0
  121. package/datepicker/chronos/utils/zero-fill.d.ts +1 -0
  122. package/datepicker/chronos/utils.d.ts +2 -0
  123. package/datepicker/component-loader/bs-component-ref.class.d.ts +5 -0
  124. package/datepicker/component-loader/component-loader.class.d.ts +75 -0
  125. package/datepicker/component-loader/component-loader.factory.d.ts +21 -0
  126. package/datepicker/component-loader/content-ref.class.d.ts +7 -0
  127. package/datepicker/component-loader/index.d.ts +1 -0
  128. package/datepicker/component-loader/listen-options.model.d.ts +11 -0
  129. package/datepicker/component-loader/public_api.d.ts +4 -0
  130. package/datepicker/date-formatter.d.ts +3 -0
  131. package/datepicker/datepicker-animations.d.ts +3 -0
  132. package/datepicker/datepicker-inner.component.d.ts +78 -0
  133. package/datepicker/datepicker.component.d.ts +81 -0
  134. package/datepicker/datepicker.config.d.ts +22 -0
  135. package/datepicker/datepicker.module.d.ts +15 -0
  136. package/datepicker/daypicker.component.d.ts +17 -0
  137. package/datepicker/engine/calc-days-calendar.d.ts +2 -0
  138. package/datepicker/engine/flag-days-calendar.d.ts +17 -0
  139. package/datepicker/engine/flag-months-calendar.d.ts +12 -0
  140. package/datepicker/engine/flag-years-calendar.d.ts +12 -0
  141. package/datepicker/engine/format-days-calendar.d.ts +4 -0
  142. package/datepicker/engine/format-months-calendar.d.ts +2 -0
  143. package/datepicker/engine/format-years-calendar.d.ts +4 -0
  144. package/datepicker/engine/view-mode.d.ts +2 -0
  145. package/datepicker/index.d.ts +1 -0
  146. package/datepicker/mini-ngrx/index.d.ts +1 -0
  147. package/datepicker/mini-ngrx/public_api.d.ts +7 -0
  148. package/datepicker/mini-ngrx/state.class.d.ts +8 -0
  149. package/datepicker/mini-ngrx/store.class.d.ts +16 -0
  150. package/datepicker/models/index.d.ts +102 -0
  151. package/datepicker/monthpicker.component.d.ts +14 -0
  152. package/datepicker/positioning/index.d.ts +1 -0
  153. package/datepicker/positioning/models/index.d.ts +41 -0
  154. package/datepicker/positioning/modifiers/arrow.d.ts +2 -0
  155. package/datepicker/positioning/modifiers/flip.d.ts +2 -0
  156. package/datepicker/positioning/modifiers/index.d.ts +5 -0
  157. package/datepicker/positioning/modifiers/initData.d.ts +2 -0
  158. package/datepicker/positioning/modifiers/preventOverflow.d.ts +2 -0
  159. package/datepicker/positioning/modifiers/shift.d.ts +2 -0
  160. package/datepicker/positioning/ng-positioning.d.ts +8 -0
  161. package/datepicker/positioning/positioning.service.d.ts +48 -0
  162. package/datepicker/positioning/public_api.d.ts +2 -0
  163. package/datepicker/positioning/utils/computeAutoPlacement.d.ts +2 -0
  164. package/datepicker/positioning/utils/findCommonOffsetParent.d.ts +1 -0
  165. package/datepicker/positioning/utils/getBordersSize.d.ts +4 -0
  166. package/datepicker/positioning/utils/getBoundaries.d.ts +1 -0
  167. package/datepicker/positioning/utils/getBoundingClientRect.d.ts +2 -0
  168. package/datepicker/positioning/utils/getClientRect.d.ts +5 -0
  169. package/datepicker/positioning/utils/getFixedPositionOffsetParent.d.ts +4 -0
  170. package/datepicker/positioning/utils/getOffsetParent.d.ts +1 -0
  171. package/datepicker/positioning/utils/getOffsetRectRelativeToArbitraryNode.d.ts +2 -0
  172. package/datepicker/positioning/utils/getOffsets.d.ts +2 -0
  173. package/datepicker/positioning/utils/getOppositePlacement.d.ts +4 -0
  174. package/datepicker/positioning/utils/getOppositeVariation.d.ts +4 -0
  175. package/datepicker/positioning/utils/getOuterSizes.d.ts +7 -0
  176. package/datepicker/positioning/utils/getParentNode.d.ts +4 -0
  177. package/datepicker/positioning/utils/getReferenceOffsets.d.ts +2 -0
  178. package/datepicker/positioning/utils/getRoot.d.ts +4 -0
  179. package/datepicker/positioning/utils/getScroll.d.ts +4 -0
  180. package/datepicker/positioning/utils/getScrollParent.d.ts +1 -0
  181. package/datepicker/positioning/utils/getStyleComputedProperty.d.ts +4 -0
  182. package/datepicker/positioning/utils/getTargetOffsets.d.ts +2 -0
  183. package/datepicker/positioning/utils/getViewportOffsetRectRelativeToArtbitraryNode.d.ts +2 -0
  184. package/datepicker/positioning/utils/getWindowSizes.d.ts +4 -0
  185. package/datepicker/positioning/utils/includeScroll.d.ts +2 -0
  186. package/datepicker/positioning/utils/index.d.ts +23 -0
  187. package/datepicker/positioning/utils/isBrowser.d.ts +1 -0
  188. package/datepicker/positioning/utils/isFixed.d.ts +1 -0
  189. package/datepicker/positioning/utils/isIE.d.ts +1 -0
  190. package/datepicker/positioning/utils/isModifierEnabled.d.ts +4 -0
  191. package/datepicker/positioning/utils/isNumeric.d.ts +4 -0
  192. package/datepicker/positioning/utils/isOffsetContainer.d.ts +1 -0
  193. package/datepicker/positioning/utils/setStyles.d.ts +5 -0
  194. package/datepicker/positioning/utils/updateContainerClass.d.ts +6 -0
  195. package/datepicker/public_api.d.ts +25 -0
  196. package/datepicker/reducer/_defaults.d.ts +2 -0
  197. package/datepicker/reducer/bs-datepicker.actions.d.ts +46 -0
  198. package/datepicker/reducer/bs-datepicker.effects.d.ts +41 -0
  199. package/datepicker/reducer/bs-datepicker.reducer.d.ts +3 -0
  200. package/datepicker/reducer/bs-datepicker.state.d.ts +43 -0
  201. package/datepicker/reducer/bs-datepicker.store.d.ts +8 -0
  202. package/datepicker/themes/bs/bs-calendar-layout.component.d.ts +5 -0
  203. package/datepicker/themes/bs/bs-current-date-view.component.d.ts +6 -0
  204. package/datepicker/themes/bs/bs-custom-dates-view.component.d.ts +17 -0
  205. package/datepicker/themes/bs/bs-datepicker-container.component.d.ts +36 -0
  206. package/datepicker/themes/bs/bs-datepicker-day-decorator.directive.d.ts +14 -0
  207. package/datepicker/themes/bs/bs-datepicker-inline-container.component.d.ts +13 -0
  208. package/datepicker/themes/bs/bs-datepicker-navigation-view.component.d.ts +12 -0
  209. package/datepicker/themes/bs/bs-daterangepicker-container.component.d.ts +40 -0
  210. package/datepicker/themes/bs/bs-daterangepicker-inline-container.component.d.ts +13 -0
  211. package/datepicker/themes/bs/bs-days-calendar-view.component.d.ts +26 -0
  212. package/datepicker/themes/bs/bs-months-calendar-view.component.d.ts +16 -0
  213. package/datepicker/themes/bs/bs-timepicker-view.component.d.ts +8 -0
  214. package/datepicker/themes/bs/bs-years-calendar-view.component.d.ts +16 -0
  215. package/datepicker/utils/bs-calendar-utils.d.ts +10 -0
  216. package/datepicker/utils/matrix-utils.d.ts +9 -0
  217. package/datepicker/utils-v2/decorators.d.ts +1 -0
  218. package/datepicker/utils-v2/facade/browser.d.ts +23 -0
  219. package/datepicker/utils-v2/index.d.ts +1 -0
  220. package/datepicker/utils-v2/linked-list.class.d.ts +26 -0
  221. package/datepicker/utils-v2/public_api.d.ts +10 -0
  222. package/datepicker/utils-v2/theme-provider.d.ts +2 -0
  223. package/datepicker/utils-v2/trigger.class.d.ts +6 -0
  224. package/datepicker/utils-v2/triggers.d.ts +18 -0
  225. package/datepicker/utils-v2/utils.class.d.ts +4 -0
  226. package/datepicker/utils-v2/warn-once.d.ts +1 -0
  227. package/datepicker/yearpicker.component.d.ts +14 -0
  228. package/esm2020/datepicker/base/bs-datepicker-container.mjs +47 -0
  229. package/esm2020/datepicker/bs-datepicker-inline.component.mjs +137 -0
  230. package/esm2020/datepicker/bs-datepicker-inline.config.mjs +14 -0
  231. package/esm2020/datepicker/bs-datepicker-input.directive.mjs +160 -0
  232. package/esm2020/datepicker/bs-datepicker.component.mjs +254 -0
  233. package/esm2020/datepicker/bs-datepicker.config.mjs +87 -0
  234. package/esm2020/datepicker/bs-datepicker.module.mjs +126 -0
  235. package/esm2020/datepicker/bs-daterangepicker-inline.component.mjs +134 -0
  236. package/esm2020/datepicker/bs-daterangepicker-inline.config.mjs +21 -0
  237. package/esm2020/datepicker/bs-daterangepicker-input.directive.mjs +192 -0
  238. package/esm2020/datepicker/bs-daterangepicker.component.mjs +240 -0
  239. package/esm2020/datepicker/bs-daterangepicker.config.mjs +19 -0
  240. package/esm2020/datepicker/bs-locale.service.mjs +32 -0
  241. package/esm2020/datepicker/chronos/create/check-overflow.mjs +30 -0
  242. package/esm2020/datepicker/chronos/create/clone.mjs +6 -0
  243. package/esm2020/datepicker/chronos/create/date-from-array.mjs +17 -0
  244. package/esm2020/datepicker/chronos/create/from-anything.mjs +107 -0
  245. package/esm2020/datepicker/chronos/create/from-array.mjs +136 -0
  246. package/esm2020/datepicker/chronos/create/from-object.mjs +17 -0
  247. package/esm2020/datepicker/chronos/create/from-string-and-array.mjs +38 -0
  248. package/esm2020/datepicker/chronos/create/from-string-and-format.mjs +106 -0
  249. package/esm2020/datepicker/chronos/create/from-string.mjs +227 -0
  250. package/esm2020/datepicker/chronos/create/local.mjs +16 -0
  251. package/esm2020/datepicker/chronos/create/parsing-flags.mjs +26 -0
  252. package/esm2020/datepicker/chronos/create/parsing.types.mjs +2 -0
  253. package/esm2020/datepicker/chronos/create/valid.mjs +42 -0
  254. package/esm2020/datepicker/chronos/duration/bubble.mjs +47 -0
  255. package/esm2020/datepicker/chronos/duration/constructor.mjs +130 -0
  256. package/esm2020/datepicker/chronos/duration/create.mjs +113 -0
  257. package/esm2020/datepicker/chronos/duration/humanize.mjs +80 -0
  258. package/esm2020/datepicker/chronos/duration/valid.mjs +43 -0
  259. package/esm2020/datepicker/chronos/format/format.mjs +51 -0
  260. package/esm2020/datepicker/chronos/format.mjs +46 -0
  261. package/esm2020/datepicker/chronos/i18n/ar.mjs +128 -0
  262. package/esm2020/datepicker/chronos/i18n/bg.mjs +94 -0
  263. package/esm2020/datepicker/chronos/i18n/ca.mjs +91 -0
  264. package/esm2020/datepicker/chronos/i18n/cs.mjs +179 -0
  265. package/esm2020/datepicker/chronos/i18n/da.mjs +50 -0
  266. package/esm2020/datepicker/chronos/i18n/de.mjs +72 -0
  267. package/esm2020/datepicker/chronos/i18n/en-gb.mjs +61 -0
  268. package/esm2020/datepicker/chronos/i18n/es-do.mjs +85 -0
  269. package/esm2020/datepicker/chronos/i18n/es-us.mjs +79 -0
  270. package/esm2020/datepicker/chronos/i18n/es.mjs +84 -0
  271. package/esm2020/datepicker/chronos/i18n/et.mjs +73 -0
  272. package/esm2020/datepicker/chronos/i18n/fi.mjs +100 -0
  273. package/esm2020/datepicker/chronos/i18n/fr.mjs +76 -0
  274. package/esm2020/datepicker/chronos/i18n/gl.mjs +84 -0
  275. package/esm2020/datepicker/chronos/i18n/he.mjs +98 -0
  276. package/esm2020/datepicker/chronos/i18n/hi.mjs +124 -0
  277. package/esm2020/datepicker/chronos/i18n/hr.mjs +62 -0
  278. package/esm2020/datepicker/chronos/i18n/hu.mjs +104 -0
  279. package/esm2020/datepicker/chronos/i18n/id.mjs +83 -0
  280. package/esm2020/datepicker/chronos/i18n/it.mjs +65 -0
  281. package/esm2020/datepicker/chronos/i18n/ja.mjs +75 -0
  282. package/esm2020/datepicker/chronos/i18n/ka.mjs +87 -0
  283. package/esm2020/datepicker/chronos/i18n/kk.mjs +76 -0
  284. package/esm2020/datepicker/chronos/i18n/ko.mjs +77 -0
  285. package/esm2020/datepicker/chronos/i18n/lt.mjs +116 -0
  286. package/esm2020/datepicker/chronos/i18n/lv.mjs +56 -0
  287. package/esm2020/datepicker/chronos/i18n/mn.mjs +99 -0
  288. package/esm2020/datepicker/chronos/i18n/nb.mjs +53 -0
  289. package/esm2020/datepicker/chronos/i18n/nl-be.mjs +81 -0
  290. package/esm2020/datepicker/chronos/i18n/nl.mjs +80 -0
  291. package/esm2020/datepicker/chronos/i18n/pl.mjs +126 -0
  292. package/esm2020/datepicker/chronos/i18n/pt-br.mjs +56 -0
  293. package/esm2020/datepicker/chronos/i18n/ro.mjs +66 -0
  294. package/esm2020/datepicker/chronos/i18n/ru.mjs +181 -0
  295. package/esm2020/datepicker/chronos/i18n/sk.mjs +157 -0
  296. package/esm2020/datepicker/chronos/i18n/sl.mjs +184 -0
  297. package/esm2020/datepicker/chronos/i18n/sq.mjs +54 -0
  298. package/esm2020/datepicker/chronos/i18n/sv.mjs +63 -0
  299. package/esm2020/datepicker/chronos/i18n/th-be.mjs +74 -0
  300. package/esm2020/datepicker/chronos/i18n/th.mjs +59 -0
  301. package/esm2020/datepicker/chronos/i18n/tr.mjs +82 -0
  302. package/esm2020/datepicker/chronos/i18n/uk.mjs +147 -0
  303. package/esm2020/datepicker/chronos/i18n/vi.mjs +74 -0
  304. package/esm2020/datepicker/chronos/i18n/zh-cn.mjs +114 -0
  305. package/esm2020/datepicker/chronos/index.mjs +2 -0
  306. package/esm2020/datepicker/chronos/locale/calendar.mjs +9 -0
  307. package/esm2020/datepicker/chronos/locale/locale.class.mjs +532 -0
  308. package/esm2020/datepicker/chronos/locale/locale.defaults.mjs +40 -0
  309. package/esm2020/datepicker/chronos/locale/locales.mjs +229 -0
  310. package/esm2020/datepicker/chronos/moment/add-subtract.mjs +35 -0
  311. package/esm2020/datepicker/chronos/moment/calendar.mjs +41 -0
  312. package/esm2020/datepicker/chronos/moment/diff.mjs +70 -0
  313. package/esm2020/datepicker/chronos/moment/min-max.mjs +38 -0
  314. package/esm2020/datepicker/chronos/parse/regex.mjs +49 -0
  315. package/esm2020/datepicker/chronos/parse/token.mjs +32 -0
  316. package/esm2020/datepicker/chronos/public_api.mjs +56 -0
  317. package/esm2020/datepicker/chronos/test/chain.mjs +711 -0
  318. package/esm2020/datepicker/chronos/types.mjs +2 -0
  319. package/esm2020/datepicker/chronos/units/aliases.mjs +35 -0
  320. package/esm2020/datepicker/chronos/units/constants.mjs +11 -0
  321. package/esm2020/datepicker/chronos/units/day-of-month.mjs +31 -0
  322. package/esm2020/datepicker/chronos/units/day-of-week.mjs +129 -0
  323. package/esm2020/datepicker/chronos/units/day-of-year.mjs +37 -0
  324. package/esm2020/datepicker/chronos/units/hour.mjs +127 -0
  325. package/esm2020/datepicker/chronos/units/index.mjs +19 -0
  326. package/esm2020/datepicker/chronos/units/millisecond.mjs +60 -0
  327. package/esm2020/datepicker/chronos/units/minute.mjs +23 -0
  328. package/esm2020/datepicker/chronos/units/month.mjs +63 -0
  329. package/esm2020/datepicker/chronos/units/offset.mjs +210 -0
  330. package/esm2020/datepicker/chronos/units/priorities.mjs +21 -0
  331. package/esm2020/datepicker/chronos/units/quarter.mjs +39 -0
  332. package/esm2020/datepicker/chronos/units/second.mjs +23 -0
  333. package/esm2020/datepicker/chronos/units/timestamp.mjs +28 -0
  334. package/esm2020/datepicker/chronos/units/timezone.mjs +19 -0
  335. package/esm2020/datepicker/chronos/units/week-calendar-utils.mjs +70 -0
  336. package/esm2020/datepicker/chronos/units/week-year.mjs +101 -0
  337. package/esm2020/datepicker/chronos/units/week.mjs +58 -0
  338. package/esm2020/datepicker/chronos/units/year.mjs +60 -0
  339. package/esm2020/datepicker/chronos/utils/abs-ceil.mjs +4 -0
  340. package/esm2020/datepicker/chronos/utils/abs-round.mjs +4 -0
  341. package/esm2020/datepicker/chronos/utils/compare-arrays.mjs +16 -0
  342. package/esm2020/datepicker/chronos/utils/date-compare.mjs +55 -0
  343. package/esm2020/datepicker/chronos/utils/date-getters.mjs +67 -0
  344. package/esm2020/datepicker/chronos/utils/date-setters.mjs +75 -0
  345. package/esm2020/datepicker/chronos/utils/defaults.mjs +11 -0
  346. package/esm2020/datepicker/chronos/utils/start-end-of.mjs +57 -0
  347. package/esm2020/datepicker/chronos/utils/type-checks.mjs +56 -0
  348. package/esm2020/datepicker/chronos/utils/zero-fill.mjs +10 -0
  349. package/esm2020/datepicker/chronos/utils.mjs +7 -0
  350. package/esm2020/datepicker/component-loader/bs-component-ref.class.mjs +3 -0
  351. package/esm2020/datepicker/component-loader/component-loader.class.mjs +272 -0
  352. package/esm2020/datepicker/component-loader/component-loader.factory.mjs +29 -0
  353. package/esm2020/datepicker/component-loader/content-ref.class.mjs +12 -0
  354. package/esm2020/datepicker/component-loader/index.mjs +2 -0
  355. package/esm2020/datepicker/component-loader/listen-options.model.mjs +2 -0
  356. package/esm2020/datepicker/component-loader/public_api.mjs +5 -0
  357. package/esm2020/datepicker/date-formatter.mjs +7 -0
  358. package/esm2020/datepicker/datepicker-animations.mjs +16 -0
  359. package/esm2020/datepicker/datepicker-inner.component.mjs +323 -0
  360. package/esm2020/datepicker/datepicker.component.mjs +182 -0
  361. package/esm2020/datepicker/datepicker.config.mjs +32 -0
  362. package/esm2020/datepicker/datepicker.module.mjs +49 -0
  363. package/esm2020/datepicker/daypicker.component.mjs +314 -0
  364. package/esm2020/datepicker/engine/calc-days-calendar.mjs +19 -0
  365. package/esm2020/datepicker/engine/flag-days-calendar.mjs +91 -0
  366. package/esm2020/datepicker/engine/flag-months-calendar.mjs +41 -0
  367. package/esm2020/datepicker/engine/flag-years-calendar.mjs +39 -0
  368. package/esm2020/datepicker/engine/format-days-calendar.mjs +29 -0
  369. package/esm2020/datepicker/engine/format-months-calendar.mjs +19 -0
  370. package/esm2020/datepicker/engine/format-years-calendar.mjs +35 -0
  371. package/esm2020/datepicker/engine/view-mode.mjs +4 -0
  372. package/esm2020/datepicker/index.mjs +2 -0
  373. package/esm2020/datepicker/mini-ngrx/index.mjs +2 -0
  374. package/esm2020/datepicker/mini-ngrx/public_api.mjs +3 -0
  375. package/esm2020/datepicker/mini-ngrx/state.class.mjs +16 -0
  376. package/esm2020/datepicker/mini-ngrx/store.class.mjs +43 -0
  377. package/esm2020/datepicker/mis-crystal-design-system-datepicker.mjs +5 -0
  378. package/esm2020/datepicker/models/index.mjs +9 -0
  379. package/esm2020/datepicker/monthpicker.component.mjs +145 -0
  380. package/esm2020/datepicker/positioning/index.mjs +2 -0
  381. package/esm2020/datepicker/positioning/models/index.mjs +2 -0
  382. package/esm2020/datepicker/positioning/modifiers/arrow.mjs +56 -0
  383. package/esm2020/datepicker/positioning/modifiers/flip.mjs +66 -0
  384. package/esm2020/datepicker/positioning/modifiers/index.mjs +6 -0
  385. package/esm2020/datepicker/positioning/modifiers/initData.mjs +42 -0
  386. package/esm2020/datepicker/positioning/modifiers/preventOverflow.mjs +59 -0
  387. package/esm2020/datepicker/positioning/modifiers/shift.mjs +24 -0
  388. package/esm2020/datepicker/positioning/ng-positioning.mjs +30 -0
  389. package/esm2020/datepicker/positioning/positioning.service.mjs +75 -0
  390. package/esm2020/datepicker/positioning/public_api.mjs +3 -0
  391. package/esm2020/datepicker/positioning/utils/computeAutoPlacement.mjs +57 -0
  392. package/esm2020/datepicker/positioning/utils/findCommonOffsetParent.mjs +40 -0
  393. package/esm2020/datepicker/positioning/utils/getBordersSize.mjs +10 -0
  394. package/esm2020/datepicker/positioning/utils/getBoundaries.mjs +56 -0
  395. package/esm2020/datepicker/positioning/utils/getBoundingClientRect.mjs +55 -0
  396. package/esm2020/datepicker/positioning/utils/getClientRect.mjs +8 -0
  397. package/esm2020/datepicker/positioning/utils/getFixedPositionOffsetParent.mjs +17 -0
  398. package/esm2020/datepicker/positioning/utils/getOffsetParent.mjs +32 -0
  399. package/esm2020/datepicker/positioning/utils/getOffsetRectRelativeToArbitraryNode.mjs +51 -0
  400. package/esm2020/datepicker/positioning/utils/getOffsets.mjs +11 -0
  401. package/esm2020/datepicker/positioning/utils/getOppositePlacement.mjs +8 -0
  402. package/esm2020/datepicker/positioning/utils/getOppositeVariation.mjs +13 -0
  403. package/esm2020/datepicker/positioning/utils/getOuterSizes.mjs +14 -0
  404. package/esm2020/datepicker/positioning/utils/getParentNode.mjs +10 -0
  405. package/esm2020/datepicker/positioning/utils/getReferenceOffsets.mjs +13 -0
  406. package/esm2020/datepicker/positioning/utils/getRoot.mjs +10 -0
  407. package/esm2020/datepicker/positioning/utils/getScroll.mjs +14 -0
  408. package/esm2020/datepicker/positioning/utils/getScrollParent.mjs +26 -0
  409. package/esm2020/datepicker/positioning/utils/getStyleComputedProperty.mjs +13 -0
  410. package/esm2020/datepicker/positioning/utils/getTargetOffsets.mjs +30 -0
  411. package/esm2020/datepicker/positioning/utils/getViewportOffsetRectRelativeToArtbitraryNode.mjs +19 -0
  412. package/esm2020/datepicker/positioning/utils/getWindowSizes.mjs +18 -0
  413. package/esm2020/datepicker/positioning/utils/includeScroll.mjs +15 -0
  414. package/esm2020/datepicker/positioning/utils/index.mjs +24 -0
  415. package/esm2020/datepicker/positioning/utils/isBrowser.mjs +2 -0
  416. package/esm2020/datepicker/positioning/utils/isFixed.mjs +16 -0
  417. package/esm2020/datepicker/positioning/utils/isIE.mjs +16 -0
  418. package/esm2020/datepicker/positioning/utils/isModifierEnabled.mjs +10 -0
  419. package/esm2020/datepicker/positioning/utils/isNumeric.mjs +7 -0
  420. package/esm2020/datepicker/positioning/utils/isOffsetContainer.mjs +9 -0
  421. package/esm2020/datepicker/positioning/utils/setStyles.mjs +17 -0
  422. package/esm2020/datepicker/positioning/utils/updateContainerClass.mjs +22 -0
  423. package/esm2020/datepicker/public_api.mjs +25 -0
  424. package/esm2020/datepicker/reducer/_defaults.mjs +5 -0
  425. package/esm2020/datepicker/reducer/bs-datepicker.actions.mjs +136 -0
  426. package/esm2020/datepicker/reducer/bs-datepicker.effects.mjs +169 -0
  427. package/esm2020/datepicker/reducer/bs-datepicker.reducer.mjs +302 -0
  428. package/esm2020/datepicker/reducer/bs-datepicker.state.mjs +12 -0
  429. package/esm2020/datepicker/reducer/bs-datepicker.store.mjs +21 -0
  430. package/esm2020/datepicker/themes/bs/bs-calendar-layout.component.mjs +54 -0
  431. package/esm2020/datepicker/themes/bs/bs-current-date-view.component.mjs +23 -0
  432. package/esm2020/datepicker/themes/bs/bs-custom-dates-view.component.mjs +78 -0
  433. package/esm2020/datepicker/themes/bs/bs-datepicker-container.component.mjs +319 -0
  434. package/esm2020/datepicker/themes/bs/bs-datepicker-day-decorator.directive.mjs +52 -0
  435. package/esm2020/datepicker/themes/bs/bs-datepicker-inline-container.component.mjs +203 -0
  436. package/esm2020/datepicker/themes/bs/bs-datepicker-navigation-view.component.mjs +111 -0
  437. package/esm2020/datepicker/themes/bs/bs-daterangepicker-container.component.mjs +362 -0
  438. package/esm2020/datepicker/themes/bs/bs-daterangepicker-inline-container.component.mjs +203 -0
  439. package/esm2020/datepicker/themes/bs/bs-days-calendar-view.component.mjs +308 -0
  440. package/esm2020/datepicker/themes/bs/bs-months-calendar-view.component.mjs +106 -0
  441. package/esm2020/datepicker/themes/bs/bs-timepicker-view.component.mjs +64 -0
  442. package/esm2020/datepicker/themes/bs/bs-years-calendar-view.component.mjs +107 -0
  443. package/esm2020/datepicker/utils/bs-calendar-utils.mjs +43 -0
  444. package/esm2020/datepicker/utils/matrix-utils.mjs +14 -0
  445. package/esm2020/datepicker/utils-v2/decorators.mjs +25 -0
  446. package/esm2020/datepicker/utils-v2/facade/browser.mjs +24 -0
  447. package/esm2020/datepicker/utils-v2/index.mjs +2 -0
  448. package/esm2020/datepicker/utils-v2/linked-list.class.mjs +240 -0
  449. package/esm2020/datepicker/utils-v2/public_api.mjs +11 -0
  450. package/esm2020/datepicker/utils-v2/theme-provider.mjs +35 -0
  451. package/esm2020/datepicker/utils-v2/trigger.class.mjs +10 -0
  452. package/esm2020/datepicker/utils-v2/triggers.mjs +110 -0
  453. package/esm2020/datepicker/utils-v2/utils.class.mjs +21 -0
  454. package/esm2020/datepicker/utils-v2/warn-once.mjs +12 -0
  455. package/esm2020/datepicker/yearpicker.component.mjs +147 -0
  456. package/fesm2015/mis-crystal-design-system-datepicker.mjs +14950 -0
  457. package/fesm2015/mis-crystal-design-system-datepicker.mjs.map +1 -0
  458. package/fesm2020/mis-crystal-design-system-datepicker.mjs +14572 -0
  459. package/fesm2020/mis-crystal-design-system-datepicker.mjs.map +1 -0
  460. package/package.json +9 -1
@@ -0,0 +1,63 @@
1
+ import { addFormatToken } from '../format/format';
2
+ import { isLeapYear } from './year';
3
+ import { mod } from '../utils';
4
+ import { getMonth } from '../utils/date-getters';
5
+ import { addRegexToken, match1to2, match2 } from '../parse/regex';
6
+ import { addParseToken } from '../parse/token';
7
+ import { MONTH } from './constants';
8
+ import { toInt } from '../utils/type-checks';
9
+ import { addUnitPriority } from './priorities';
10
+ import { addUnitAlias } from './aliases';
11
+ import { getParsingFlags } from '../create/parsing-flags';
12
+ // todo: this is duplicate, source in date-getters.ts
13
+ export function daysInMonth(year, month) {
14
+ if (isNaN(year) || isNaN(month)) {
15
+ return NaN;
16
+ }
17
+ const modMonth = mod(month, 12);
18
+ const _year = year + (month - modMonth) / 12;
19
+ return modMonth === 1
20
+ ? isLeapYear(_year) ? 29 : 28
21
+ : (31 - modMonth % 7 % 2);
22
+ }
23
+ export function initMonth() {
24
+ // FORMATTING
25
+ addFormatToken('M', ['MM', 2, false], 'Mo', function (date, opts) {
26
+ return (getMonth(date, opts.isUTC) + 1).toString(10);
27
+ });
28
+ addFormatToken('MMM', null, null, function (date, opts) {
29
+ return opts.locale.monthsShort(date, opts.format, opts.isUTC);
30
+ });
31
+ addFormatToken('MMMM', null, null, function (date, opts) {
32
+ return opts.locale.months(date, opts.format, opts.isUTC);
33
+ });
34
+ // ALIASES
35
+ addUnitAlias('month', 'M');
36
+ // PRIORITY
37
+ addUnitPriority('month', 8);
38
+ // PARSING
39
+ addRegexToken('M', match1to2);
40
+ addRegexToken('MM', match1to2, match2);
41
+ addRegexToken('MMM', function (isStrict, locale) {
42
+ return locale.monthsShortRegex(isStrict);
43
+ });
44
+ addRegexToken('MMMM', function (isStrict, locale) {
45
+ return locale.monthsRegex(isStrict);
46
+ });
47
+ addParseToken(['M', 'MM'], function (input, array, config) {
48
+ array[MONTH] = toInt(input) - 1;
49
+ return config;
50
+ });
51
+ addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
52
+ const month = config._locale.monthsParse(input, token, config._strict);
53
+ // if we didn't find a month name, mark the date as invalid.
54
+ if (month != null) {
55
+ array[MONTH] = month;
56
+ }
57
+ else {
58
+ getParsingFlags(config).invalidMonth = !!input;
59
+ }
60
+ return config;
61
+ });
62
+ }
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9kYXRlcGlja2VyL2Nocm9ub3MvdW5pdHMvbW9udGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDcEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMvQixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFJMUQscURBQXFEO0FBQ3JELE1BQU0sVUFBVSxXQUFXLENBQUMsSUFBWSxFQUFFLEtBQWE7SUFDckQsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQy9CLE9BQU8sR0FBRyxDQUFDO0tBQ1o7SUFDRCxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxF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RixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFkZEZvcm1hdFRva2VuIH0gZnJvbSAnLi4vZm9ybWF0L2Zvcm1hdCc7XG5pbXBvcnQgeyBpc0xlYXBZZWFyIH0gZnJvbSAnLi95ZWFyJztcbmltcG9ydCB7IG1vZCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IGdldE1vbnRoIH0gZnJvbSAnLi4vdXRpbHMvZGF0ZS1nZXR0ZXJzJztcbmltcG9ydCB7IGFkZFJlZ2V4VG9rZW4sIG1hdGNoMXRvMiwgbWF0Y2gyIH0gZnJvbSAnLi4vcGFyc2UvcmVnZXgnO1xuaW1wb3J0IHsgYWRkUGFyc2VUb2tlbiB9IGZyb20gJy4uL3BhcnNlL3Rva2VuJztcbmltcG9ydCB7IE1PTlRIIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgdG9JbnQgfSBmcm9tICcuLi91dGlscy90eXBlLWNoZWNrcyc7XG5pbXBvcnQgeyBhZGRVbml0UHJpb3JpdHkgfSBmcm9tICcuL3ByaW9yaXRpZXMnO1xuaW1wb3J0IHsgYWRkVW5pdEFsaWFzIH0gZnJvbSAnLi9hbGlhc2VzJztcbmltcG9ydCB7IGdldFBhcnNpbmdGbGFncyB9IGZyb20gJy4uL2NyZWF0ZS9wYXJzaW5nLWZsYWdzJztcbmltcG9ydCB7IERhdGVQYXJzaW5nQ29uZmlnIH0gZnJvbSAnLi4vY3JlYXRlL3BhcnNpbmcudHlwZXMnO1xuaW1wb3J0IHsgRGF0ZUFycmF5LCBEYXRlRm9ybWF0dGVyT3B0aW9ucyB9IGZyb20gJy4uL3R5cGVzJztcblxuLy8gdG9kbzogdGhpcyBpcyBkdXBsaWNhdGUsIHNvdXJjZSBpbiBkYXRlLWdldHRlcnMudHNcbmV4cG9ydCBmdW5jdGlvbiBkYXlzSW5Nb250aCh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIpOiBudW1iZXIge1xuICBpZiAoaXNOYU4oeWVhcikgfHwgaXNOYU4obW9udGgpKSB7XG4gICAgcmV0dXJuIE5hTjtcbiAgfVxuICBjb25zdCBtb2RNb250aCA9IG1vZChtb250aCwgMTIpO1xuICBjb25zdCBfeWVhciA9IHllYXIgKyAobW9udGggLSBtb2RNb250aCkgLyAxMjtcblxuICByZXR1cm4gbW9kTW9udGggPT09IDFcbiAgICA/IGlzTGVhcFllYXIoX3llYXIpID8gMjkgOiAyOFxuICAgIDogKDMxIC0gbW9kTW9udGggJSA3ICUgMik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0TW9udGgoKSB7XG4vLyBGT1JNQVRUSU5HXG5cbiAgYWRkRm9ybWF0VG9rZW4oJ00nLCBbJ01NJywgMiwgZmFsc2VdLCAnTW8nLFxuICAgIGZ1bmN0aW9uKGRhdGU6IERhdGUsIG9wdHM6IERhdGVGb3JtYXR0ZXJPcHRpb25zKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiAoZ2V0TW9udGgoZGF0ZSwgb3B0cy5pc1VUQykgKyAxKS50b1N0cmluZygxMCk7XG4gICAgfVxuICApO1xuXG4gIGFkZEZvcm1hdFRva2VuKCdNTU0nLCBudWxsLCBudWxsLFxuICAgIGZ1bmN0aW9uKGRhdGU6IERhdGUsIG9wdHM6IERhdGVGb3JtYXR0ZXJPcHRpb25zKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiBvcHRzLmxvY2FsZS5tb250aHNTaG9ydChkYXRlLCBvcHRzLmZvcm1hdCwgb3B0cy5pc1VUQyk7XG4gICAgfVxuICApO1xuXG4gIGFkZEZvcm1hdFRva2VuKCdNTU1NJywgbnVsbCwgbnVsbCxcbiAgICBmdW5jdGlvbihkYXRlOiBEYXRlLCBvcHRzOiBEYXRlRm9ybWF0dGVyT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gb3B0cy5sb2NhbGUubW9udGhzKGRhdGUsIG9wdHMuZm9ybWF0LCBvcHRzLmlzVVRDKTtcbiAgICB9XG4gICk7XG5cblxuLy8gQUxJQVNFU1xuXG4gIGFkZFVuaXRBbGlhcygnbW9udGgnLCAnTScpO1xuXG4vLyBQUklPUklUWVxuXG4gIGFkZFVuaXRQcmlvcml0eSgnbW9udGgnLCA4KTtcblxuLy8gUEFSU0lOR1xuXG4gIGFkZFJlZ2V4VG9rZW4oJ00nLCBtYXRjaDF0bzIpO1xuICBhZGRSZWdleFRva2VuKCdNTScsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgYWRkUmVnZXhUb2tlbignTU1NJywgZnVuY3Rpb24oaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgIHJldHVybiBsb2NhbGUubW9udGhzU2hvcnRSZWdleChpc1N0cmljdCk7XG4gIH0pO1xuICBhZGRSZWdleFRva2VuKCdNTU1NJywgZnVuY3Rpb24oaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgIHJldHVybiBsb2NhbGUubW9udGhzUmVnZXgoaXNTdHJpY3QpO1xuICB9KTtcblxuICBhZGRQYXJzZVRva2VuKFsnTScsICdNTSddLCBmdW5jdGlvbihpbnB1dDogc3RyaW5nLCBhcnJheTogRGF0ZUFycmF5LCBjb25maWc6IERhdGVQYXJzaW5nQ29uZmlnKTogRGF0ZVBhcnNpbmdDb25maWcge1xuICAgIGFycmF5W01PTlRIXSA9IHRvSW50KGlucHV0KSAtIDE7XG5cbiAgICByZXR1cm4gY29uZmlnO1xuICB9KTtcblxuICBhZGRQYXJzZVRva2VuKFxuICAgIFsnTU1NJywgJ01NTU0nXSxcbiAgICBmdW5jdGlvbihpbnB1dDogc3RyaW5nLCBhcnJheTogRGF0ZUFycmF5LCBjb25maWc6IERhdGVQYXJzaW5nQ29uZmlnLCB0b2tlbjogc3RyaW5nKTogRGF0ZVBhcnNpbmdDb25maWcge1xuICAgICAgY29uc3QgbW9udGggPSBjb25maWcuX2xvY2FsZS5tb250aHNQYXJzZShpbnB1dCwgdG9rZW4sIGNvbmZpZy5fc3RyaWN0KTtcbiAgICAgIC8vIGlmIHdlIGRpZG4ndCBmaW5kIGEgbW9udGggbmFtZSwgbWFyayB0aGUgZGF0ZSBhcyBpbnZhbGlkLlxuICAgICAgaWYgKG1vbnRoICE9IG51bGwpIHtcbiAgICAgICAgYXJyYXlbTU9OVEhdID0gbW9udGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5pbnZhbGlkTW9udGggPSAhIWlucHV0O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29uZmlnO1xuICAgIH1cbiAgKTtcbn1cbiJdfQ==
@@ -0,0 +1,210 @@
1
+ // tslint:disable:no-bitwise max-line-length
2
+ // FORMATTING
3
+ import { addFormatToken } from '../format/format';
4
+ import { zeroFill } from '../utils/zero-fill';
5
+ import { isNumber, isString, toInt } from '../utils/type-checks';
6
+ import { addRegexToken, matchOffset, matchShortOffset } from '../parse/regex';
7
+ import { add } from '../moment/add-subtract';
8
+ import { addParseToken } from '../parse/token';
9
+ import { cloneDate } from '../create/clone';
10
+ import { setMonth } from '../utils/date-setters';
11
+ function addOffsetFormatToken(token, separator) {
12
+ addFormatToken(token, null, null, function (date, config) {
13
+ let offset = getUTCOffset(date, { _isUTC: config.isUTC, _offset: config.offset });
14
+ let sign = '+';
15
+ if (offset < 0) {
16
+ offset = -offset;
17
+ sign = '-';
18
+ }
19
+ return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);
20
+ });
21
+ }
22
+ export function initOffset() {
23
+ addOffsetFormatToken('Z', ':');
24
+ addOffsetFormatToken('ZZ', '');
25
+ // PARSING
26
+ addRegexToken('Z', matchShortOffset);
27
+ addRegexToken('ZZ', matchShortOffset);
28
+ addParseToken(['Z', 'ZZ'], function (input, array, config) {
29
+ config._useUTC = true;
30
+ config._tzm = offsetFromString(matchShortOffset, input);
31
+ return config;
32
+ });
33
+ }
34
+ // HELPERS
35
+ // timezone chunker
36
+ // '+10:00' > ['10', '00']
37
+ // '-1530' > ['-15', '30']
38
+ const chunkOffset = /([\+\-]|\d\d)/gi;
39
+ function offsetFromString(matcher, str) {
40
+ const matches = (str || '').match(matcher);
41
+ if (matches === null) {
42
+ return null;
43
+ }
44
+ const chunk = matches[matches.length - 1];
45
+ const parts = chunk.match(chunkOffset) || ['-', '0', '0'];
46
+ const minutes = parseInt(parts[1], 10) * 60 + toInt(parts[2]);
47
+ const _min = parts[0] === '+' ? minutes : -minutes;
48
+ return minutes === 0 ? 0 : _min;
49
+ }
50
+ // Return a moment from input, that is local/utc/zone equivalent to model.
51
+ export function cloneWithOffset(input, date, config = {}) {
52
+ if (!config._isUTC) {
53
+ return input;
54
+ }
55
+ const res = cloneDate(date);
56
+ // todo: input._d - res._d + ((res._offset || 0) - (input._offset || 0))*60000
57
+ const offsetDiff = (config._offset || 0) * 60000;
58
+ const diff = input.valueOf() - res.valueOf() + offsetDiff;
59
+ // Use low-level api, because this fn is low-level api.
60
+ res.setTime(res.valueOf() + diff);
61
+ // todo: add timezone handling
62
+ // hooks.updateOffset(res, false);
63
+ return res;
64
+ }
65
+ export function getDateOffset(date) {
66
+ // On Firefox.24 Date#getTimezoneOffset returns a floating point.
67
+ // https://github.com/moment/moment/pull/1871
68
+ return -Math.round(date.getTimezoneOffset() / 15) * 15;
69
+ }
70
+ // HOOKS
71
+ // This function will be called whenever a moment is mutated.
72
+ // It is intended to keep the offset in sync with the timezone.
73
+ // todo: it's from moment timezones
74
+ // hooks.updateOffset = function () {
75
+ // };
76
+ // MOMENTS
77
+ // keepLocalTime = true means only change the timezone, without
78
+ // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
79
+ // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
80
+ // +0200, so we adjust the time as needed, to be valid.
81
+ //
82
+ // Keeping the time actually adds/subtracts (one hour)
83
+ // from the actual represented time. That is why we call updateOffset
84
+ // a second time. In case it wants us to change the offset again
85
+ // _changeInProgress == true case, then we have to adjust, because
86
+ // there is no such time in the given timezone.
87
+ export function getUTCOffset(date, config = {}) {
88
+ const _offset = config._offset || 0;
89
+ return config._isUTC ? _offset : getDateOffset(date);
90
+ }
91
+ export function setUTCOffset(date, input, keepLocalTime, keepMinutes, config = {}) {
92
+ const offset = config._offset || 0;
93
+ let localAdjust;
94
+ let _input = input;
95
+ let _date = date;
96
+ if (isString(_input)) {
97
+ _input = offsetFromString(matchShortOffset, _input);
98
+ if (_input === null) {
99
+ return _date;
100
+ }
101
+ }
102
+ else if (isNumber(_input) && Math.abs(_input) < 16 && !keepMinutes) {
103
+ _input = _input * 60;
104
+ }
105
+ if (!config._isUTC && keepLocalTime) {
106
+ localAdjust = getDateOffset(_date);
107
+ }
108
+ config._offset = _input;
109
+ config._isUTC = true;
110
+ if (localAdjust != null) {
111
+ _date = add(_date, localAdjust, 'minutes');
112
+ }
113
+ if (offset !== _input) {
114
+ if (!keepLocalTime || config._changeInProgress) {
115
+ _date = add(_date, _input - offset, 'minutes', config._isUTC);
116
+ // addSubtract(this, createDuration(_input - offset, 'm'), 1, false);
117
+ }
118
+ else if (!config._changeInProgress) {
119
+ config._changeInProgress = true;
120
+ // todo: add timezone handling
121
+ // hooks.updateOffset(this, true);
122
+ config._changeInProgress = null;
123
+ }
124
+ }
125
+ return _date;
126
+ }
127
+ /*
128
+ export function getSetZone(input, keepLocalTime) {
129
+ if (input != null) {
130
+ if (typeof input !== 'string') {
131
+ input = -input;
132
+ }
133
+
134
+ this.utcOffset(input, keepLocalTime);
135
+
136
+ return this;
137
+ } else {
138
+ return -this.utcOffset();
139
+ }
140
+ }
141
+ */
142
+ export function setOffsetToUTC(date, keepLocalTime) {
143
+ return setUTCOffset(date, 0, keepLocalTime);
144
+ }
145
+ export function isDaylightSavingTime(date) {
146
+ return (getUTCOffset(date) > getUTCOffset(setMonth(cloneDate(date), 0))
147
+ || getUTCOffset(date) > getUTCOffset(setMonth(cloneDate(date), 5)));
148
+ }
149
+ /*export function setOffsetToLocal(date: Date, isUTC?: boolean, keepLocalTime?: boolean) {
150
+ if (this._isUTC) {
151
+ this.utcOffset(0, keepLocalTime);
152
+ this._isUTC = false;
153
+
154
+ if (keepLocalTime) {
155
+ this.subtract(getDateOffset(this), 'm');
156
+ }
157
+ }
158
+ return this;
159
+ }*/
160
+ export function setOffsetToParsedOffset(date, input, config = {}) {
161
+ if (config._tzm != null) {
162
+ return setUTCOffset(date, config._tzm, false, true, config);
163
+ }
164
+ if (isString(input)) {
165
+ const tZone = offsetFromString(matchOffset, input);
166
+ if (tZone != null) {
167
+ return setUTCOffset(date, tZone, false, false, config);
168
+ }
169
+ return setUTCOffset(date, 0, true, false, config);
170
+ }
171
+ return date;
172
+ }
173
+ export function hasAlignedHourOffset(date, input) {
174
+ const _input = input ? getUTCOffset(input, { _isUTC: false }) : 0;
175
+ return (getUTCOffset(date) - _input) % 60 === 0;
176
+ }
177
+ // DEPRECATED
178
+ /*export function isDaylightSavingTimeShifted() {
179
+ if (!isUndefined(this._isDSTShifted)) {
180
+ return this._isDSTShifted;
181
+ }
182
+
183
+ const c = {};
184
+
185
+ copyConfig(c, this);
186
+ c = prepareConfig(c);
187
+
188
+ if (c._a) {
189
+ const other = c._isUTC ? createUTC(c._a) : createLocal(c._a);
190
+ this._isDSTShifted = this.isValid() &&
191
+ compareArrays(c._a, other.toArray()) > 0;
192
+ } else {
193
+ this._isDSTShifted = false;
194
+ }
195
+
196
+ return this._isDSTShifted;
197
+ }*/
198
+ // in Khronos
199
+ /*export function isLocal() {
200
+ return this.isValid() ? !this._isUTC : false;
201
+ }
202
+
203
+ export function isUtcOffset() {
204
+ return this.isValid() ? this._isUTC : false;
205
+ }
206
+
207
+ export function isUtc() {
208
+ return this.isValid() ? this._isUTC && this._offset === 0 : false;
209
+ }*/
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2Zmc2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvZGF0ZXBpY2tlci9jaHJvbm9zL3VuaXRzL29mZnNldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0Q0FBNEM7QUFDNUMsYUFBYTtBQUViLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFOUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFakQsU0FBUyxvQkFBb0IsQ0FBQyxLQUFhLEVBQUUsU0FBaUI7SUFDNUQsY0FBYyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsSUFBVSxFQUFFLE1BQU07UUFDNUQsSUFBSSxNQUFNLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxFQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFDLENBQUMsQ0FBQztRQUNoRixJQUFJLElBQUksR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDZCxNQUFNLEdBQUcsQ0FBQyxNQUFNLENBQUM7WUFDakIsSUFBSSxHQUFHLEdB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QUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVsRSxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbEQsQ0FBQztBQUdELGFBQWE7QUFDYjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUVILGFBQWE7QUFDYjs7Ozs7Ozs7OztHQVVHIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHNsaW50OmRpc2FibGU6bm8tYml0d2lzZSBtYXgtbGluZS1sZW5ndGhcbi8vIEZPUk1BVFRJTkdcblxuaW1wb3J0IHsgYWRkRm9ybWF0VG9rZW4gfSBmcm9tICcuLi9mb3JtYXQvZm9ybWF0JztcbmltcG9ydCB7IHplcm9GaWxsIH0gZnJvbSAnLi4vdXRpbHMvemVyby1maWxsJztcbmltcG9ydCB7IERhdGVQYXJzaW5nQ29uZmlnIH0gZnJvbSAnLi4vY3JlYXRlL3BhcnNpbmcudHlwZXMnO1xuaW1wb3J0IHsgaXNOdW1iZXIsIGlzU3RyaW5nLCB0b0ludCB9IGZyb20gJy4uL3V0aWxzL3R5cGUtY2hlY2tzJztcbmltcG9ydCB7IGFkZFJlZ2V4VG9rZW4sIG1hdGNoT2Zmc2V0LCBtYXRjaFNob3J0T2Zmc2V0IH0gZnJvbSAnLi4vcGFyc2UvcmVnZXgnO1xuaW1wb3J0IHsgYWRkIH0gZnJvbSAnLi4vbW9tZW50L2FkZC1zdWJ0cmFjdCc7XG5pbXBvcnQgeyBhZGRQYXJzZVRva2VuIH0gZnJvbSAnLi4vcGFyc2UvdG9rZW4nO1xuaW1wb3J0IHsgRGF0ZUFycmF5IH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgY2xvbmVEYXRlIH0gZnJvbSAnLi4vY3JlYXRlL2Nsb25lJztcbmltcG9ydCB7IHNldE1vbnRoIH0gZnJvbSAnLi4vdXRpbHMvZGF0ZS1zZXR0ZXJzJztcblxuZnVuY3Rpb24gYWRkT2Zmc2V0Rm9ybWF0VG9rZW4odG9rZW46IHN0cmluZywgc2VwYXJhdG9yOiBzdHJpbmcpOiB2b2lkIHtcbiAgYWRkRm9ybWF0VG9rZW4odG9rZW4sIG51bGwsIG51bGwsIGZ1bmN0aW9uIChkYXRlOiBEYXRlLCBjb25maWcpOiBzdHJpbmcge1xuICAgIGxldCBvZmZzZXQgPSBnZXRVVENPZmZzZXQoZGF0ZSwge19pc1VUQzogY29uZmlnLmlzVVRDLCBfb2Zmc2V0OiBjb25maWcub2Zmc2V0fSk7XG4gICAgbGV0IHNpZ24gPSAnKyc7XG4gICAgaWYgKG9mZnNldCA8IDApIHtcbiAgICAgIG9mZnNldCA9IC1vZmZzZXQ7XG4gICAgICBzaWduID0gJy0nO1xuICAgIH1cblxuICAgIHJldHVybiBzaWduICsgemVyb0ZpbGwofn4ob2Zmc2V0IC8gNjApLCAyKSArIHNlcGFyYXRvciArIHplcm9GaWxsKH5+KG9mZnNldCkgJSA2MCwgMik7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdE9mZnNldCgpIHtcbiAgYWRkT2Zmc2V0Rm9ybWF0VG9rZW4oJ1onLCAnOicpO1xuICBhZGRPZmZzZXRGb3JtYXRUb2tlbignWlonLCAnJyk7XG5cbi8vIFBBUlNJTkdcblxuICBhZGRSZWdleFRva2VuKCdaJywgbWF0Y2hTaG9ydE9mZnNldCk7XG4gIGFkZFJlZ2V4VG9rZW4oJ1paJywgbWF0Y2hTaG9ydE9mZnNldCk7XG4gIGFkZFBhcnNlVG9rZW4oWydaJywgJ1paJ10sIGZ1bmN0aW9uKGlucHV0OiBzdHJpbmcsIGFycmF5OiBEYXRlQXJyYXksIGNvbmZpZzogRGF0ZVBhcnNpbmdDb25maWcpOiBEYXRlUGFyc2luZ0NvbmZpZyB7XG4gICAgY29uZmlnLl91c2VVVEMgPSB0cnVlO1xuICAgIGNvbmZpZy5fdHptID0gb2Zmc2V0RnJvbVN0cmluZyhtYXRjaFNob3J0T2Zmc2V0LCBpbnB1dCk7XG5cbiAgICByZXR1cm4gY29uZmlnO1xuICB9KTtcbn1cblxuLy8gSEVMUEVSU1xuXG4vLyB0aW1lem9uZSBjaHVua2VyXG4vLyAnKzEwOjAwJyA+IFsnMTAnLCAgJzAwJ11cbi8vICctMTUzMCcgID4gWyctMTUnLCAnMzAnXVxuY29uc3QgY2h1bmtPZmZzZXQgPSAvKFtcXCtcXC1dfFxcZFxcZCkvZ2k7XG5cbmZ1bmN0aW9uIG9mZnNldEZyb21TdHJpbmcobWF0Y2hlcjogUmVnRXhwLCBzdHI6IHN0cmluZyk6IG51bWJlciB7XG4gIGNvbnN0IG1hdGNoZXMgPSAoc3RyIHx8ICcnKS5tYXRjaChtYXRjaGVyKTtcblxuICBpZiAobWF0Y2hlcyA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgY2h1bmsgPSBtYXRjaGVzW21hdGNoZXMubGVuZ3RoIC0gMV07XG4gIGNvbnN0IHBhcnRzID0gY2h1bmsubWF0Y2goY2h1bmtPZmZzZXQpIHx8IFsnLScsICcwJywgJzAnXTtcbiAgY29uc3QgbWludXRlcyA9IHBhcnNlSW50KHBhcnRzWzFdLCAxMCkgKiA2MCArIHRvSW50KHBhcnRzWzJdKTtcbiAgY29uc3QgX21pbiA9IHBhcnRzWzBdID09PSAnKycgPyBtaW51dGVzIDogLW1pbnV0ZXM7XG5cbiAgcmV0dXJuIG1pbnV0ZXMgPT09IDAgPyAwIDogX21pbjtcbn1cblxuLy8gUmV0dXJuIGEgbW9tZW50IGZyb20gaW5wdXQsIHRoYXQgaXMgbG9jYWwvdXRjL3pvbmUgZXF1aXZhbGVudCB0byBtb2RlbC5cbmV4cG9ydCBmdW5jdGlvbiBjbG9uZVdpdGhPZmZzZXQoaW5wdXQ6IERhdGUsIGRhdGU6IERhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZzogRGF0ZVBhcnNpbmdDb25maWcgPSB7fSk6IERhdGUge1xuICBpZiAoIWNvbmZpZy5faXNVVEMpIHtcbiAgICByZXR1cm4gaW5wdXQ7XG4gIH1cblxuICBjb25zdCByZXMgPSBjbG9uZURhdGUoZGF0ZSk7XG4gIC8vIHRvZG86IGlucHV0Ll9kIC0gcmVzLl9kICsgKChyZXMuX29mZnNldCB8fCAwKSAtIChpbnB1dC5fb2Zmc2V0IHx8IDApKSo2MDAwMFxuICBjb25zdCBvZmZzZXREaWZmID0gKGNvbmZpZy5fb2Zmc2V0IHx8IDApICogNjAwMDA7XG4gIGNvbnN0IGRpZmYgPSBpbnB1dC52YWx1ZU9mKCkgLSByZXMudmFsdWVPZigpICsgb2Zmc2V0RGlmZjtcbiAgLy8gVXNlIGxvdy1sZXZlbCBhcGksIGJlY2F1c2UgdGhpcyBmbiBpcyBsb3ctbGV2ZWwgYXBpLlxuICByZXMuc2V0VGltZShyZXMudmFsdWVPZigpICsgZGlmZik7XG4gIC8vIHRvZG86IGFkZCB0aW1lem9uZSBoYW5kbGluZ1xuICAvLyBob29rcy51cGRhdGVPZmZzZXQocmVzLCBmYWxzZSk7XG5cbiAgcmV0dXJuIHJlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERhdGVPZmZzZXQoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gIC8vIE9uIEZpcmVmb3guMjQgRGF0ZSNnZXRUaW1lem9uZU9mZnNldCByZXR1cm5zIGEgZmxvYXRpbmcgcG9pbnQuXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50L3B1bGwvMTg3MVxuICByZXR1cm4gLU1hdGgucm91bmQoZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpIC8gMTUpICogMTU7XG59XG5cbi8vIEhPT0tTXG5cbi8vIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgYSBtb21lbnQgaXMgbXV0YXRlZC5cbi8vIEl0IGlzIGludGVuZGVkIHRvIGtlZXAgdGhlIG9mZnNldCBpbiBzeW5jIHdpdGggdGhlIHRpbWV6b25lLlxuLy8gdG9kbzogaXQncyBmcm9tIG1vbWVudCB0aW1lem9uZXNcbi8vIGhvb2tzLnVwZGF0ZU9mZnNldCA9IGZ1bmN0aW9uICgpIHtcbi8vIH07XG5cbi8vIE1PTUVOVFNcblxuLy8ga2VlcExvY2FsVGltZSA9IHRydWUgbWVhbnMgb25seSBjaGFuZ2UgdGhlIHRpbWV6b25lLCB3aXRob3V0XG4vLyBhZmZlY3RpbmcgdGhlIGxvY2FsIGhvdXIuIFNvIDU6MzE6MjYgKzAzMDAgLS1bdXRjT2Zmc2V0KDIsIHRydWUpXS0tPlxuLy8gNTozMToyNiArMDIwMCBJdCBpcyBwb3NzaWJsZSB0aGF0IDU6MzE6MjYgZG9lc24ndCBleGlzdCB3aXRoIG9mZnNldFxuLy8gKzAyMDAsIHNvIHdlIGFkanVzdCB0aGUgdGltZSBhcyBuZWVkZWQsIHRvIGJlIHZhbGlkLlxuLy9cbi8vIEtlZXBpbmcgdGhlIHRpbWUgYWN0dWFsbHkgYWRkcy9zdWJ0cmFjdHMgKG9uZSBob3VyKVxuLy8gZnJvbSB0aGUgYWN0dWFsIHJlcHJlc2VudGVkIHRpbWUuIFRoYXQgaXMgd2h5IHdlIGNhbGwgdXBkYXRlT2Zmc2V0XG4vLyBhIHNlY29uZCB0aW1lLiBJbiBjYXNlIGl0IHdhbnRzIHVzIHRvIGNoYW5nZSB0aGUgb2Zmc2V0IGFnYWluXG4vLyBfY2hhbmdlSW5Qcm9ncmVzcyA9PSB0cnVlIGNhc2UsIHRoZW4gd2UgaGF2ZSB0byBhZGp1c3QsIGJlY2F1c2Vcbi8vIHRoZXJlIGlzIG5vIHN1Y2ggdGltZSBpbiB0aGUgZ2l2ZW4gdGltZXpvbmUuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VVRDT2Zmc2V0KGRhdGU6IERhdGUsIGNvbmZpZzogRGF0ZVBhcnNpbmdDb25maWcgPSB7fSk6IG51bWJlciB7XG4gIGNvbnN0IF9vZmZzZXQgPSBjb25maWcuX29mZnNldCB8fCAwO1xuXG4gIHJldHVybiBjb25maWcuX2lzVVRDID8gX29mZnNldCA6IGdldERhdGVPZmZzZXQoZGF0ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRVVENPZmZzZXQoZGF0ZTogRGF0ZSwgaW5wdXQ6IG51bWJlciB8IHN0cmluZywga2VlcExvY2FsVGltZT86IGJvb2xlYW4sIGtlZXBNaW51dGVzPzogYm9vbGVhbiwgY29uZmlnOiBEYXRlUGFyc2luZ0NvbmZpZyA9IHt9KTogRGF0ZSB7XG4gIGNvbnN0IG9mZnNldCA9IGNvbmZpZy5fb2Zmc2V0IHx8IDA7XG4gIGxldCBsb2NhbEFkanVzdDtcbiAgbGV0IF9pbnB1dCA9IGlucHV0O1xuICBsZXQgX2RhdGUgPSBkYXRlO1xuXG4gIGlmIChpc1N0cmluZyhfaW5wdXQpKSB7XG4gICAgX2lucHV0ID0gb2Zmc2V0RnJvbVN0cmluZyhtYXRjaFNob3J0T2Zmc2V0LCBfaW5wdXQpO1xuICAgIGlmIChfaW5wdXQgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBfZGF0ZTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNOdW1iZXIoX2lucHV0KSAmJiBNYXRoLmFicyhfaW5wdXQpIDwgMTYgJiYgIWtlZXBNaW51dGVzKSB7XG4gICAgX2lucHV0ID0gX2lucHV0ICogNjA7XG4gIH1cblxuICBpZiAoIWNvbmZpZy5faXNVVEMgJiYga2VlcExvY2FsVGltZSkge1xuICAgIGxvY2FsQWRqdXN0ID0gZ2V0RGF0ZU9mZnNldChfZGF0ZSk7XG4gIH1cbiAgY29uZmlnLl9vZmZzZXQgPSBfaW5wdXQ7XG4gIGNvbmZpZy5faXNVVEMgPSB0cnVlO1xuICBpZiAobG9jYWxBZGp1c3QgIT0gbnVsbCkge1xuICAgIF9kYXRlID0gYWRkKF9kYXRlLCBsb2NhbEFkanVzdCwgJ21pbnV0ZXMnKTtcbiAgfVxuICBpZiAob2Zmc2V0ICE9PSBfaW5wdXQpIHtcbiAgICBpZiAoIWtlZXBMb2NhbFRpbWUgfHwgY29uZmlnLl9jaGFuZ2VJblByb2dyZXNzKSB7XG4gICAgICBfZGF0ZSA9IGFkZChfZGF0ZSwgX2lucHV0IC0gb2Zmc2V0LCAnbWludXRlcycsIGNvbmZpZy5faXNVVEMpO1xuICAgICAgLy8gYWRkU3VidHJhY3QodGhpcywgY3JlYXRlRHVyYXRpb24oX2lucHV0IC0gb2Zmc2V0LCAnbScpLCAxLCBmYWxzZSk7XG4gICAgfSBlbHNlIGlmICghY29uZmlnLl9jaGFuZ2VJblByb2dyZXNzKSB7XG4gICAgICBjb25maWcuX2NoYW5nZUluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgICAgLy8gdG9kbzogYWRkIHRpbWV6b25lIGhhbmRsaW5nXG4gICAgICAvLyBob29rcy51cGRhdGVPZmZzZXQodGhpcywgdHJ1ZSk7XG4gICAgICBjb25maWcuX2NoYW5nZUluUHJvZ3Jlc3MgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBfZGF0ZTtcbn1cblxuLypcbmV4cG9ydCBmdW5jdGlvbiBnZXRTZXRab25lKGlucHV0LCBrZWVwTG9jYWxUaW1lKSB7XG4gIGlmIChpbnB1dCAhPSBudWxsKSB7XG4gICAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIGlucHV0ID0gLWlucHV0O1xuICAgIH1cblxuICAgIHRoaXMudXRjT2Zmc2V0KGlucHV0LCBrZWVwTG9jYWxUaW1lKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAtdGhpcy51dGNPZmZzZXQoKTtcbiAgfVxufVxuKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHNldE9mZnNldFRvVVRDKGRhdGU6IERhdGUsIGtlZXBMb2NhbFRpbWU/OiBib29sZWFuKTogRGF0ZSB7XG4gIHJldHVybiBzZXRVVENPZmZzZXQoZGF0ZSwgMCwga2VlcExvY2FsVGltZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0RheWxpZ2h0U2F2aW5nVGltZShkYXRlOiBEYXRlKTogYm9vbGVhbiB7XG5cbiAgcmV0dXJuIChnZXRVVENPZmZzZXQoZGF0ZSkgPiBnZXRVVENPZmZzZXQoc2V0TW9udGgoY2xvbmVEYXRlKGRhdGUpLCAwKSlcbiAgICB8fCBnZXRVVENPZmZzZXQoZGF0ZSkgPiBnZXRVVENPZmZzZXQoc2V0TW9udGgoY2xvbmVEYXRlKGRhdGUpLCA1KSkpO1xufVxuXG4vKmV4cG9ydCBmdW5jdGlvbiBzZXRPZmZzZXRUb0xvY2FsKGRhdGU6IERhdGUsIGlzVVRDPzogYm9vbGVhbiwga2VlcExvY2FsVGltZT86IGJvb2xlYW4pIHtcbiAgaWYgKHRoaXMuX2lzVVRDKSB7XG4gICAgdGhpcy51dGNPZmZzZXQoMCwga2VlcExvY2FsVGltZSk7XG4gICAgdGhpcy5faXNVVEMgPSBmYWxzZTtcblxuICAgIGlmIChrZWVwTG9jYWxUaW1lKSB7XG4gICAgICB0aGlzLnN1YnRyYWN0KGdldERhdGVPZmZzZXQodGhpcyksICdtJyk7XG4gICAgfVxuICB9XG4gIHJldHVybiB0aGlzO1xufSovXG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRPZmZzZXRUb1BhcnNlZE9mZnNldChkYXRlOiBEYXRlLCBpbnB1dDogc3RyaW5nLCBjb25maWc6IERhdGVQYXJzaW5nQ29uZmlnID0ge30pOiBEYXRlIHtcbiAgaWYgKGNvbmZpZy5fdHptICE9IG51bGwpIHtcbiAgICByZXR1cm4gc2V0VVRDT2Zmc2V0KGRhdGUsIGNvbmZpZy5fdHptLCBmYWxzZSwgdHJ1ZSwgY29uZmlnKTtcbiAgfVxuXG4gIGlmIChpc1N0cmluZyhpbnB1dCkpIHtcbiAgICBjb25zdCB0Wm9uZSA9IG9mZnNldEZyb21TdHJpbmcobWF0Y2hPZmZzZXQsIGlucHV0KTtcbiAgICBpZiAodFpvbmUgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHNldFVUQ09mZnNldChkYXRlLCB0Wm9uZSwgZmFsc2UsIGZhbHNlLCBjb25maWcpO1xuICAgIH1cblxuICAgIHJldHVybiBzZXRVVENPZmZzZXQoZGF0ZSwgMCwgdHJ1ZSwgZmFsc2UsIGNvbmZpZyk7XG4gIH1cblxuICByZXR1cm4gZGF0ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0FsaWduZWRIb3VyT2Zmc2V0KGRhdGU6IERhdGUsIGlucHV0PzogRGF0ZSkge1xuICBjb25zdCBfaW5wdXQgPSBpbnB1dCA/IGdldFVUQ09mZnNldChpbnB1dCwgeyBfaXNVVEM6IGZhbHNlIH0pIDogMDtcblxuICByZXR1cm4gKGdldFVUQ09mZnNldChkYXRlKSAtIF9pbnB1dCkgJSA2MCA9PT0gMDtcbn1cblxuXG4vLyBERVBSRUNBVEVEXG4vKmV4cG9ydCBmdW5jdGlvbiBpc0RheWxpZ2h0U2F2aW5nVGltZVNoaWZ0ZWQoKSB7XG4gIGlmICghaXNVbmRlZmluZWQodGhpcy5faXNEU1RTaGlmdGVkKSkge1xuICAgIHJldHVybiB0aGlzLl9pc0RTVFNoaWZ0ZWQ7XG4gIH1cblxuICBjb25zdCBjID0ge307XG5cbiAgY29weUNvbmZpZyhjLCB0aGlzKTtcbiAgYyA9IHByZXBhcmVDb25maWcoYyk7XG5cbiAgaWYgKGMuX2EpIHtcbiAgICBjb25zdCBvdGhlciA9IGMuX2lzVVRDID8gY3JlYXRlVVRDKGMuX2EpIDogY3JlYXRlTG9jYWwoYy5fYSk7XG4gICAgdGhpcy5faXNEU1RTaGlmdGVkID0gdGhpcy5pc1ZhbGlkKCkgJiZcbiAgICAgIGNvbXBhcmVBcnJheXMoYy5fYSwgb3RoZXIudG9BcnJheSgpKSA+IDA7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5faXNEU1RTaGlmdGVkID0gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdGhpcy5faXNEU1RTaGlmdGVkO1xufSovXG5cbi8vIGluIEtocm9ub3Ncbi8qZXhwb3J0IGZ1bmN0aW9uIGlzTG9jYWwoKSB7XG4gIHJldHVybiB0aGlzLmlzVmFsaWQoKSA/ICF0aGlzLl9pc1VUQyA6IGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNVdGNPZmZzZXQoKSB7XG4gIHJldHVybiB0aGlzLmlzVmFsaWQoKSA/IHRoaXMuX2lzVVRDIDogZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1V0YygpIHtcbiAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpID8gdGhpcy5faXNVVEMgJiYgdGhpcy5fb2Zmc2V0ID09PSAwIDogZmFsc2U7XG59Ki9cbiJdfQ==
@@ -0,0 +1,21 @@
1
+ const priorities = {};
2
+ export function addUnitPriority(unit, priority) {
3
+ priorities[unit] = priority;
4
+ }
5
+ /*
6
+ export function getPrioritizedUnits(unitsObj) {
7
+ const units = [];
8
+ let unit;
9
+ for (unit in unitsObj) {
10
+ if (unitsObj.hasOwnProperty(unit)) {
11
+ units.push({ unit, priority: priorities[unit] });
12
+ }
13
+ }
14
+ units.sort(function (a, b) {
15
+ return a.priority - b.priority;
16
+ });
17
+
18
+ return units;
19
+ }
20
+ */
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpb3JpdGllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2RhdGVwaWNrZXIvY2hyb25vcy91bml0cy9wcmlvcml0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxHQUE0QixFQUFFLENBQUM7QUFFL0MsTUFBTSxVQUFVLGVBQWUsQ0FBQyxJQUFZLEVBQUUsUUFBZ0I7SUFDNUQsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQztBQUM5QixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7OztFQWVFIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgcHJpb3JpdGllczoge1trZXk6IHN0cmluZ106IG51bWJlcn0gPSB7fTtcblxuZXhwb3J0IGZ1bmN0aW9uIGFkZFVuaXRQcmlvcml0eSh1bml0OiBzdHJpbmcsIHByaW9yaXR5OiBudW1iZXIpOiB2b2lkIHtcbiAgcHJpb3JpdGllc1t1bml0XSA9IHByaW9yaXR5O1xufVxuXG4vKlxuZXhwb3J0IGZ1bmN0aW9uIGdldFByaW9yaXRpemVkVW5pdHModW5pdHNPYmopIHtcbiAgY29uc3QgdW5pdHMgPSBbXTtcbiAgbGV0IHVuaXQ7XG4gIGZvciAodW5pdCBpbiB1bml0c09iaikge1xuICAgIGlmICh1bml0c09iai5oYXNPd25Qcm9wZXJ0eSh1bml0KSkge1xuICAgICAgdW5pdHMucHVzaCh7IHVuaXQsIHByaW9yaXR5OiBwcmlvcml0aWVzW3VuaXRdIH0pO1xuICAgIH1cbiAgfVxuICB1bml0cy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIGEucHJpb3JpdHkgLSBiLnByaW9yaXR5O1xuICB9KTtcblxuICByZXR1cm4gdW5pdHM7XG59XG4qL1xuIl19
@@ -0,0 +1,39 @@
1
+ import { addFormatToken } from '../format/format';
2
+ import { addRegexToken, match1 } from '../parse/regex';
3
+ import { addParseToken } from '../parse/token';
4
+ import { MONTH } from './constants';
5
+ import { toInt } from '../utils/type-checks';
6
+ import { getMonth } from '../utils/date-getters';
7
+ import { addUnitPriority } from './priorities';
8
+ import { addUnitAlias } from './aliases';
9
+ import { setMonth } from '../utils/date-setters';
10
+ export function initQuarter() {
11
+ // FORMATTING
12
+ addFormatToken('Q', null, 'Qo', function (date, opts) {
13
+ return getQuarter(date, opts.isUTC)
14
+ .toString(10);
15
+ });
16
+ // ALIASES
17
+ addUnitAlias('quarter', 'Q');
18
+ // PRIORITY
19
+ addUnitPriority('quarter', 7);
20
+ // PARSING
21
+ addRegexToken('Q', match1);
22
+ addParseToken('Q', function (input, array, config) {
23
+ array[MONTH] = (toInt(input) - 1) * 3;
24
+ return config;
25
+ });
26
+ }
27
+ // MOMENTS
28
+ export function getQuarter(date, isUTC = false) {
29
+ return Math.ceil((getMonth(date, isUTC) + 1) / 3);
30
+ }
31
+ export function setQuarter(date, quarter, isUTC) {
32
+ return setMonth(date, (quarter - 1) * 3 + getMonth(date, isUTC) % 3, isUTC);
33
+ }
34
+ // export function getSetQuarter(input) {
35
+ // return input == null
36
+ // ? Math.ceil((this.month() + 1) / 3)
37
+ // : this.month((input - 1) * 3 + this.month() % 3);
38
+ // }
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVhcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2RhdGVwaWNrZXIvY2hyb25vcy91bml0cy9xdWFydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXpDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUdqRCxNQUFNLFVBQVUsV0FBVztJQUMzQixhQUFhO0lBRVgsY0FBYyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUM1QixVQUFTLElBQVUsRUFBRSxJQUEwQjtRQUM3QyxPQUFPLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQzthQUNoQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUNGLENBQUM7SUFFSixVQUFVO0lBRVIsWUFBWSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUUvQixXQUFXO0lBRVQsZUFBZSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVoQyxVQUFVO0lBRVIsYUFBYSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMzQixhQUFhLENBQUMsR0FBRyxFQUFFLFVBQVMsS0FBYSxFQUFFLEtBQWdCLEVBQUUsTUFBeUI7UUFDcEYsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUV0QyxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxVQUFVO0FBRVYsTUFBTSxVQUFVLFVBQVUsQ0FBQyxJQUFVLEVBQUUsS0FBSyxHQUFHLEtBQUs7SUFDbEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxJQUFVLEVBQUUsT0FBZSxFQUFFLEtBQWU7SUFDckUsT0FBTyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM5RSxDQUFDO0FBRUQseUNBQXlDO0FBQ3pDLHlCQUF5QjtBQUN6QiwwQ0FBMEM7QUFDMUMsd0RBQXdEO0FBQ3hELElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZGRGb3JtYXRUb2tlbiB9IGZyb20gJy4uL2Zvcm1hdC9mb3JtYXQnO1xuaW1wb3J0IHsgYWRkUmVnZXhUb2tlbiwgbWF0Y2gxIH0gZnJvbSAnLi4vcGFyc2UvcmVnZXgnO1xuaW1wb3J0IHsgYWRkUGFyc2VUb2tlbiB9IGZyb20gJy4uL3BhcnNlL3Rva2VuJztcbmltcG9ydCB7IE1PTlRIIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgdG9JbnQgfSBmcm9tICcuLi91dGlscy90eXBlLWNoZWNrcyc7XG5pbXBvcnQgeyBnZXRNb250aCB9IGZyb20gJy4uL3V0aWxzL2RhdGUtZ2V0dGVycyc7XG5pbXBvcnQgeyBEYXRlQXJyYXksIERhdGVGb3JtYXR0ZXJPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgYWRkVW5pdFByaW9yaXR5IH0gZnJvbSAnLi9wcmlvcml0aWVzJztcbmltcG9ydCB7IGFkZFVuaXRBbGlhcyB9IGZyb20gJy4vYWxpYXNlcyc7XG5pbXBvcnQgeyBEYXRlUGFyc2luZ0NvbmZpZyB9IGZyb20gJy4uL2NyZWF0ZS9wYXJzaW5nLnR5cGVzJztcbmltcG9ydCB7IHNldE1vbnRoIH0gZnJvbSAnLi4vdXRpbHMvZGF0ZS1zZXR0ZXJzJztcblxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdFF1YXJ0ZXIoKSB7XG4vLyBGT1JNQVRUSU5HXG5cbiAgYWRkRm9ybWF0VG9rZW4oJ1EnLCBudWxsLCAnUW8nLFxuICAgIGZ1bmN0aW9uKGRhdGU6IERhdGUsIG9wdHM6IERhdGVGb3JtYXR0ZXJPcHRpb25zKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiBnZXRRdWFydGVyKGRhdGUsIG9wdHMuaXNVVEMpXG4gICAgICAgIC50b1N0cmluZygxMCk7XG4gICAgfVxuICApO1xuXG4vLyBBTElBU0VTXG5cbiAgYWRkVW5pdEFsaWFzKCdxdWFydGVyJywgJ1EnKTtcblxuLy8gUFJJT1JJVFlcblxuICBhZGRVbml0UHJpb3JpdHkoJ3F1YXJ0ZXInLCA3KTtcblxuLy8gUEFSU0lOR1xuXG4gIGFkZFJlZ2V4VG9rZW4oJ1EnLCBtYXRjaDEpO1xuICBhZGRQYXJzZVRva2VuKCdRJywgZnVuY3Rpb24oaW5wdXQ6IHN0cmluZywgYXJyYXk6IERhdGVBcnJheSwgY29uZmlnOiBEYXRlUGFyc2luZ0NvbmZpZyk6IERhdGVQYXJzaW5nQ29uZmlnIHtcbiAgICBhcnJheVtNT05USF0gPSAodG9JbnQoaW5wdXQpIC0gMSkgKiAzO1xuXG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfSk7XG59XG5cbi8vIE1PTUVOVFNcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFF1YXJ0ZXIoZGF0ZTogRGF0ZSwgaXNVVEMgPSBmYWxzZSk6IG51bWJlciB7XG4gIHJldHVybiBNYXRoLmNlaWwoKGdldE1vbnRoKGRhdGUsIGlzVVRDKSArIDEpIC8gMyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRRdWFydGVyKGRhdGU6IERhdGUsIHF1YXJ0ZXI6IG51bWJlciwgaXNVVEM/OiBib29sZWFuKTogRGF0ZSB7XG4gIHJldHVybiBzZXRNb250aChkYXRlLCAocXVhcnRlciAtIDEpICogMyArIGdldE1vbnRoKGRhdGUsIGlzVVRDKSAlIDMsIGlzVVRDKTtcbn1cblxuLy8gZXhwb3J0IGZ1bmN0aW9uIGdldFNldFF1YXJ0ZXIoaW5wdXQpIHtcbi8vICAgcmV0dXJuIGlucHV0ID09IG51bGxcbi8vICAgICA/IE1hdGguY2VpbCgodGhpcy5tb250aCgpICsgMSkgLyAzKVxuLy8gICAgIDogdGhpcy5tb250aCgoaW5wdXQgLSAxKSAqIDMgKyB0aGlzLm1vbnRoKCkgJSAzKTtcbi8vIH1cbiJdfQ==
@@ -0,0 +1,23 @@
1
+ import { addFormatToken } from '../format/format';
2
+ import { getSeconds } from '../utils/date-getters';
3
+ import { addRegexToken, match1to2, match2 } from '../parse/regex';
4
+ import { addParseToken } from '../parse/token';
5
+ import { SECOND } from './constants';
6
+ import { addUnitAlias } from './aliases';
7
+ import { addUnitPriority } from './priorities';
8
+ export function initSecond() {
9
+ // FORMATTING
10
+ addFormatToken('s', ['ss', 2, false], null, function (date, opts) {
11
+ return getSeconds(date, opts.isUTC)
12
+ .toString(10);
13
+ });
14
+ // ALIASES
15
+ addUnitAlias('second', 's');
16
+ // PRIORITY
17
+ addUnitPriority('second', 15);
18
+ // PARSING
19
+ addRegexToken('s', match1to2);
20
+ addRegexToken('ss', match1to2, match2);
21
+ addParseToken(['s', 'ss'], SECOND);
22
+ }
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vjb25kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvZGF0ZXBpY2tlci9jaHJvbm9zL3VuaXRzL3NlY29uZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUkvQyxNQUFNLFVBQVUsVUFBVTtJQUMxQixhQUFhO0lBRVgsY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUN4QyxVQUFTLElBQVUsRUFBRSxJQUEwQjtRQUM3QyxPQUFPLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQzthQUNoQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUNGLENBQUM7SUFFSixVQUFVO0lBRVIsWUFBWSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUU5QixXQUFXO0lBRVQsZUFBZSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUVoQyxVQUFVO0lBRVIsYUFBYSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM5QixhQUFhLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN2QyxhQUFhLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDckMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFkZEZvcm1hdFRva2VuIH0gZnJvbSAnLi4vZm9ybWF0L2Zvcm1hdCc7XG5pbXBvcnQgeyBnZXRTZWNvbmRzIH0gZnJvbSAnLi4vdXRpbHMvZGF0ZS1nZXR0ZXJzJztcbmltcG9ydCB7IGFkZFJlZ2V4VG9rZW4sIG1hdGNoMXRvMiwgbWF0Y2gyIH0gZnJvbSAnLi4vcGFyc2UvcmVnZXgnO1xuaW1wb3J0IHsgYWRkUGFyc2VUb2tlbiB9IGZyb20gJy4uL3BhcnNlL3Rva2VuJztcbmltcG9ydCB7IFNFQ09ORCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGFkZFVuaXRBbGlhcyB9IGZyb20gJy4vYWxpYXNlcyc7XG5pbXBvcnQgeyBhZGRVbml0UHJpb3JpdHkgfSBmcm9tICcuL3ByaW9yaXRpZXMnO1xuaW1wb3J0IHsgRGF0ZUZvcm1hdHRlck9wdGlvbnMgfSBmcm9tICcuLi90eXBlcyc7XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRTZWNvbmQoKSB7XG4vLyBGT1JNQVRUSU5HXG5cbiAgYWRkRm9ybWF0VG9rZW4oJ3MnLCBbJ3NzJywgMiwgZmFsc2VdLCBudWxsLFxuICAgIGZ1bmN0aW9uKGRhdGU6IERhdGUsIG9wdHM6IERhdGVGb3JtYXR0ZXJPcHRpb25zKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiBnZXRTZWNvbmRzKGRhdGUsIG9wdHMuaXNVVEMpXG4gICAgICAgIC50b1N0cmluZygxMCk7XG4gICAgfVxuICApO1xuXG4vLyBBTElBU0VTXG5cbiAgYWRkVW5pdEFsaWFzKCdzZWNvbmQnLCAncycpO1xuXG4vLyBQUklPUklUWVxuXG4gIGFkZFVuaXRQcmlvcml0eSgnc2Vjb25kJywgMTUpO1xuXG4vLyBQQVJTSU5HXG5cbiAgYWRkUmVnZXhUb2tlbigncycsIG1hdGNoMXRvMik7XG4gIGFkZFJlZ2V4VG9rZW4oJ3NzJywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICBhZGRQYXJzZVRva2VuKFsncycsICdzcyddLCBTRUNPTkQpO1xufVxuIl19
@@ -0,0 +1,28 @@
1
+ import { addFormatToken } from '../format/format';
2
+ import { unix } from '../utils/date-getters';
3
+ import { addRegexToken, matchSigned, matchTimestamp } from '../parse/regex';
4
+ import { addParseToken } from '../parse/token';
5
+ import { toInt } from '../utils/type-checks';
6
+ export function initTimestamp() {
7
+ // FORMATTING
8
+ addFormatToken('X', null, null, function (date) {
9
+ return unix(date)
10
+ .toString(10);
11
+ });
12
+ addFormatToken('x', null, null, function (date) {
13
+ return date.valueOf()
14
+ .toString(10);
15
+ });
16
+ // PARSING
17
+ addRegexToken('x', matchSigned);
18
+ addRegexToken('X', matchTimestamp);
19
+ addParseToken('X', function (input, array, config) {
20
+ config._d = new Date(parseFloat(input) * 1000);
21
+ return config;
22
+ });
23
+ addParseToken('x', function (input, array, config) {
24
+ config._d = new Date(toInt(input));
25
+ return config;
26
+ });
27
+ }
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXN0YW1wLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvZGF0ZXBpY2tlci9jaHJvbm9zL3VuaXRzL3RpbWVzdGFtcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxhQUFhLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFLN0MsTUFBTSxVQUFVLGFBQWE7SUFDN0IsYUFBYTtJQUVYLGNBQWMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFTLElBQVU7UUFDakQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ2QsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBQ0gsY0FBYyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVMsSUFBVTtRQUNqRCxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUU7YUFDbEIsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBRUwsVUFBVTtJQUVSLGFBQWEsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDaEMsYUFBYSxDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUVuQyxhQUFhLENBQUMsR0FBRyxFQUFFLFVBQVMsS0FBYSxFQUFFLEtBQWdCLEVBQUUsTUFBeUI7UUFDcEYsTUFBTSxDQUFDLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFFL0MsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFDSCxhQUFhLENBQUMsR0FBRyxFQUFFLFVBQVMsS0FBYSxFQUFFLEtBQWdCLEVBQUUsTUFBeUI7UUFDcEYsTUFBTSxDQUFDLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUVuQyxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZGRGb3JtYXRUb2tlbiB9IGZyb20gJy4uL2Zvcm1hdC9mb3JtYXQnO1xuaW1wb3J0IHsgdW5peCB9IGZyb20gJy4uL3V0aWxzL2RhdGUtZ2V0dGVycyc7XG5pbXBvcnQgeyBhZGRSZWdleFRva2VuLCBtYXRjaFNpZ25lZCwgbWF0Y2hUaW1lc3RhbXAgfSBmcm9tICcuLi9wYXJzZS9yZWdleCc7XG5pbXBvcnQgeyBhZGRQYXJzZVRva2VufSBmcm9tICcuLi9wYXJzZS90b2tlbic7XG5pbXBvcnQgeyB0b0ludCB9IGZyb20gJy4uL3V0aWxzL3R5cGUtY2hlY2tzJztcbmltcG9ydCB7IERhdGVBcnJheSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IERhdGVQYXJzaW5nQ29uZmlnIH0gZnJvbSAnLi4vY3JlYXRlL3BhcnNpbmcudHlwZXMnO1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0VGltZXN0YW1wKCkge1xuLy8gRk9STUFUVElOR1xuXG4gIGFkZEZvcm1hdFRva2VuKCdYJywgbnVsbCwgbnVsbCwgZnVuY3Rpb24oZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHVuaXgoZGF0ZSlcbiAgICAgIC50b1N0cmluZygxMCk7XG4gIH0pO1xuICBhZGRGb3JtYXRUb2tlbigneCcsIG51bGwsIG51bGwsIGZ1bmN0aW9uKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBkYXRlLnZhbHVlT2YoKVxuICAgICAgLnRvU3RyaW5nKDEwKTtcbiAgfSk7XG5cbi8vIFBBUlNJTkdcblxuICBhZGRSZWdleFRva2VuKCd4JywgbWF0Y2hTaWduZWQpO1xuICBhZGRSZWdleFRva2VuKCdYJywgbWF0Y2hUaW1lc3RhbXApO1xuXG4gIGFkZFBhcnNlVG9rZW4oJ1gnLCBmdW5jdGlvbihpbnB1dDogc3RyaW5nLCBhcnJheTogRGF0ZUFycmF5LCBjb25maWc6IERhdGVQYXJzaW5nQ29uZmlnKTogRGF0ZVBhcnNpbmdDb25maWcge1xuICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKHBhcnNlRmxvYXQoaW5wdXQpICogMTAwMCk7XG5cbiAgICByZXR1cm4gY29uZmlnO1xuICB9KTtcbiAgYWRkUGFyc2VUb2tlbigneCcsIGZ1bmN0aW9uKGlucHV0OiBzdHJpbmcsIGFycmF5OiBEYXRlQXJyYXksIGNvbmZpZzogRGF0ZVBhcnNpbmdDb25maWcpOiBEYXRlUGFyc2luZ0NvbmZpZyB7XG4gICAgY29uZmlnLl9kID0gbmV3IERhdGUodG9JbnQoaW5wdXQpKTtcblxuICAgIHJldHVybiBjb25maWc7XG4gIH0pO1xufVxuIl19
@@ -0,0 +1,19 @@
1
+ import { addFormatToken } from '../format/format';
2
+ // todo: add support for timezones
3
+ export function initTimezone() {
4
+ // FORMATTING
5
+ addFormatToken('z', null, null, function (date, opts) {
6
+ return opts.isUTC ? 'UTC' : '';
7
+ });
8
+ addFormatToken('zz', null, null, function (date, opts) {
9
+ return opts.isUTC ? 'Coordinated Universal Time' : '';
10
+ });
11
+ }
12
+ // MOMENTS
13
+ export function getZoneAbbr(isUTC) {
14
+ return isUTC ? 'UTC' : '';
15
+ }
16
+ export function getZoneName(isUTC) {
17
+ return isUTC ? 'Coordinated Universal Time' : '';
18
+ }
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXpvbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9kYXRlcGlja2VyL2Nocm9ub3MvdW5pdHMvdGltZXpvbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2xELGtDQUFrQztBQUVsQyxNQUFNLFVBQVUsWUFBWTtJQUMxQixhQUFhO0lBQ2IsY0FBYyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUM1QixVQUFTLElBQVUsRUFBRSxJQUEwQjtRQUM3QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2pDLENBQUMsQ0FDRixDQUFDO0lBQ0YsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUM3QixVQUFTLElBQVUsRUFBRSxJQUEwQjtRQUM3QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDeEQsQ0FBQyxDQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsVUFBVTtBQUVWLE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBYztJQUN4QyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDNUIsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBYztJQUN4QyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNuRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWRkRm9ybWF0VG9rZW4gfSBmcm9tICcuLi9mb3JtYXQvZm9ybWF0JztcbmltcG9ydCB7IERhdGVGb3JtYXR0ZXJPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vLyB0b2RvOiBhZGQgc3VwcG9ydCBmb3IgdGltZXpvbmVzXG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0VGltZXpvbmUoKSB7XG4gIC8vIEZPUk1BVFRJTkdcbiAgYWRkRm9ybWF0VG9rZW4oJ3onLCBudWxsLCBudWxsLFxuICAgIGZ1bmN0aW9uKGRhdGU6IERhdGUsIG9wdHM6IERhdGVGb3JtYXR0ZXJPcHRpb25zKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiBvcHRzLmlzVVRDID8gJ1VUQycgOiAnJztcbiAgICB9XG4gICk7XG4gIGFkZEZvcm1hdFRva2VuKCd6eicsIG51bGwsIG51bGwsXG4gICAgZnVuY3Rpb24oZGF0ZTogRGF0ZSwgb3B0czogRGF0ZUZvcm1hdHRlck9wdGlvbnMpOiBzdHJpbmcge1xuICAgICAgcmV0dXJuIG9wdHMuaXNVVEMgPyAnQ29vcmRpbmF0ZWQgVW5pdmVyc2FsIFRpbWUnIDogJyc7XG4gICAgfVxuICApO1xufVxuXG4vLyBNT01FTlRTXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRab25lQWJicihpc1VUQzogYm9vbGVhbikge1xuICByZXR1cm4gaXNVVEMgPyAnVVRDJyA6ICcnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Wm9uZU5hbWUoaXNVVEM6IGJvb2xlYW4pIHtcbiAgcmV0dXJuIGlzVVRDID8gJ0Nvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lJyA6ICcnO1xufVxuIl19
@@ -0,0 +1,70 @@
1
+ /**
2
+ *
3
+ * @param {number} year
4
+ * @param {number} dow - start-of-first-week
5
+ * @param {number} doy - start-of-year
6
+ * @returns {number}
7
+ */
8
+ import { createUTCDate } from '../create/date-from-array';
9
+ import { daysInYear } from './year';
10
+ import { getDayOfYear } from './day-of-year';
11
+ import { getFullYear } from '../utils/date-getters';
12
+ function firstWeekOffset(year, dow, doy) {
13
+ // first-week day -- which january is always in the first week (4 for iso, 1 for other)
14
+ const fwd = dow - doy + 7;
15
+ // first-week day local weekday -- which local weekday is fwd
16
+ const fwdlw = (createUTCDate(year, 0, fwd).getUTCDay() - dow + 7) % 7;
17
+ return -fwdlw + fwd - 1;
18
+ }
19
+ // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
20
+ export function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
21
+ const localWeekday = (7 + weekday - dow) % 7;
22
+ const weekOffset = firstWeekOffset(year, dow, doy);
23
+ const dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset;
24
+ let resYear;
25
+ let resDayOfYear;
26
+ if (dayOfYear <= 0) {
27
+ resYear = year - 1;
28
+ resDayOfYear = daysInYear(resYear) + dayOfYear;
29
+ }
30
+ else if (dayOfYear > daysInYear(year)) {
31
+ resYear = year + 1;
32
+ resDayOfYear = dayOfYear - daysInYear(year);
33
+ }
34
+ else {
35
+ resYear = year;
36
+ resDayOfYear = dayOfYear;
37
+ }
38
+ return {
39
+ year: resYear,
40
+ dayOfYear: resDayOfYear
41
+ };
42
+ }
43
+ export function weekOfYear(date, dow, doy, isUTC) {
44
+ const weekOffset = firstWeekOffset(getFullYear(date, isUTC), dow, doy);
45
+ const week = Math.floor((getDayOfYear(date, isUTC) - weekOffset - 1) / 7) + 1;
46
+ let resWeek;
47
+ let resYear;
48
+ if (week < 1) {
49
+ resYear = getFullYear(date, isUTC) - 1;
50
+ resWeek = week + weeksInYear(resYear, dow, doy);
51
+ }
52
+ else if (week > weeksInYear(getFullYear(date, isUTC), dow, doy)) {
53
+ resWeek = week - weeksInYear(getFullYear(date, isUTC), dow, doy);
54
+ resYear = getFullYear(date, isUTC) + 1;
55
+ }
56
+ else {
57
+ resYear = getFullYear(date, isUTC);
58
+ resWeek = week;
59
+ }
60
+ return {
61
+ week: resWeek,
62
+ year: resYear
63
+ };
64
+ }
65
+ export function weeksInYear(year, dow, doy) {
66
+ const weekOffset = firstWeekOffset(year, dow, doy);
67
+ const weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
68
+ return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;
69
+ }
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vlay1jYWxlbmRhci11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2RhdGVwaWNrZXIvY2hyb25vcy91bml0cy93ZWVrLWNhbGVuZGFyLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXBELFNBQVMsZUFBZSxDQUFDLElBQVksRUFBRSxHQUFXLEVBQUUsR0FBVztJQUM3RCx1RkFBdUY7SUFDdkYsTUFBTSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDMUIsNkRBQTZEO0lBQzdELE1BQU0sS0FBSyxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUV0RSxPQUFPLENBQUMsS0FBSyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUVELDJHQUEyRztBQUMzRyxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLElBQVksRUFDWixJQUFZLEVBQ1osT0FBZSxFQUNmLEdBQVcsRUFDWCxHQUFXO0lBRVgsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFDLEdBQUcsT0FBTyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QyxNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNuRCxNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLFlBQVksR0FBRyxVQUFVLENBQUM7SUFDakUsSUFBSSxPQUFlLENBQUM7SUFDcEIsSUFBSSxZQUFvQixDQUFDO0lBRXpCLElBQUksU0FBUyxJQUFJLENBQUMsRUFBRTtRQUNsQixPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNuQixZQUFZLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLFNBQVMsQ0FBQztLQUNoRDtTQUFNLElBQUksU0FBUyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUN2QyxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNuQixZQUFZLEdBQUcsU0FBUyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUM3QztTQUFNO1FBQ0wsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNmLFlBQVksR0FBRyxTQUFTLENBQUM7S0FDMUI7SUFFRCxPQUFPO1FBQ0wsSUFBSSxFQUFFLE9BQU87UUFDYixTQUFTLEVBQUUsWUFBWTtLQUN4QixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsSUFBVSxFQUFFLEdBQVcsRUFBRSxHQUFXLEVBQUUsS0FBZTtJQUM5RSxNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdkUsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUcsVUFBVSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5RSxJQUFJLE9BQWUsQ0FBQztJQUNwQixJQUFJLE9BQWUsQ0FBQztJQUVwQixJQUFJLElBQUksR0FBRyxDQUFDLEVBQUU7UUFDWixPQUFPLEdBQUcsV0FBVyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkMsT0FBTyxHQUFHLElBQUksR0FBRyxXQUFXLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztLQUNqRDtTQUFNLElBQUksSUFBSSxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRTtRQUNqRSxPQUFPLEdBQUcsSUFBSSxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNqRSxPQUFPLEdBQUcsV0FBVyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDeEM7U0FBTTtRQUNMLE9BQU8sR0FBRyxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ25DLE9BQU8sR0FBRyxJQUFJLENBQUM7S0FDaEI7SUFFRCxPQUFPO1FBQ0wsSUFBSSxFQUFFLE9BQU87UUFDYixJQUFJLEVBQUUsT0FBTztLQUNkLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxJQUFZLEVBQUUsR0FBVyxFQUFFLEdBQVc7SUFDaEUsTUFBTSxVQUFVLEdBQUcsZUFBZSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbkQsTUFBTSxjQUFjLEdBQUcsZUFBZSxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBRTNELE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsVUFBVSxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM5RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IHllYXJcbiAqIEBwYXJhbSB7bnVtYmVyfSBkb3cgLSBzdGFydC1vZi1maXJzdC13ZWVrXG4gKiBAcGFyYW0ge251bWJlcn0gZG95IC0gc3RhcnQtb2YteWVhclxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuaW1wb3J0IHsgY3JlYXRlVVRDRGF0ZSB9IGZyb20gJy4uL2NyZWF0ZS9kYXRlLWZyb20tYXJyYXknO1xuaW1wb3J0IHsgZGF5c0luWWVhciB9IGZyb20gJy4veWVhcic7XG5pbXBvcnQgeyBnZXREYXlPZlllYXIgfSBmcm9tICcuL2RheS1vZi15ZWFyJztcbmltcG9ydCB7IGdldEZ1bGxZZWFyIH0gZnJvbSAnLi4vdXRpbHMvZGF0ZS1nZXR0ZXJzJztcblxuZnVuY3Rpb24gZmlyc3RXZWVrT2Zmc2V0KHllYXI6IG51bWJlciwgZG93OiBudW1iZXIsIGRveTogbnVtYmVyKTogbnVtYmVyIHtcbiAgLy8gZmlyc3Qtd2VlayBkYXkgLS0gd2hpY2ggamFudWFyeSBpcyBhbHdheXMgaW4gdGhlIGZpcnN0IHdlZWsgKDQgZm9yIGlzbywgMSBmb3Igb3RoZXIpXG4gIGNvbnN0IGZ3ZCA9IGRvdyAtIGRveSArIDc7XG4gIC8vIGZpcnN0LXdlZWsgZGF5IGxvY2FsIHdlZWtkYXkgLS0gd2hpY2ggbG9jYWwgd2Vla2RheSBpcyBmd2RcbiAgY29uc3QgZndkbHcgPSAoY3JlYXRlVVRDRGF0ZSh5ZWFyLCAwLCBmd2QpLmdldFVUQ0RheSgpIC0gZG93ICsgNykgJSA3O1xuXG4gIHJldHVybiAtZndkbHcgKyBmd2QgLSAxO1xufVxuXG4vLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlI0NhbGN1bGF0aW5nX2FfZGF0ZV9naXZlbl90aGVfeWVhci4yQ193ZWVrX251bWJlcl9hbmRfd2Vla2RheVxuZXhwb3J0IGZ1bmN0aW9uIGRheU9mWWVhckZyb21XZWVrcyhcbiAgeWVhcjogbnVtYmVyLFxuICB3ZWVrOiBudW1iZXIsXG4gIHdlZWtkYXk6IG51bWJlcixcbiAgZG93OiBudW1iZXIsXG4gIGRveTogbnVtYmVyXG4pOiB7IHllYXI6IG51bWJlcjsgZGF5T2ZZZWFyOiBudW1iZXIgfSB7XG4gIGNvbnN0IGxvY2FsV2Vla2RheSA9ICg3ICsgd2Vla2RheSAtIGRvdykgJSA3O1xuICBjb25zdCB3ZWVrT2Zmc2V0ID0gZmlyc3RXZWVrT2Zmc2V0KHllYXIsIGRvdywgZG95KTtcbiAgY29uc3QgZGF5T2ZZZWFyID0gMSArIDcgKiAod2VlayAtIDEpICsgbG9jYWxXZWVrZGF5ICsgd2Vla09mZnNldDtcbiAgbGV0IHJlc1llYXI6IG51bWJlcjtcbiAgbGV0IHJlc0RheU9mWWVhcjogbnVtYmVyO1xuXG4gIGlmIChkYXlPZlllYXIgPD0gMCkge1xuICAgIHJlc1llYXIgPSB5ZWFyIC0gMTtcbiAgICByZXNEYXlPZlllYXIgPSBkYXlzSW5ZZWFyKHJlc1llYXIpICsgZGF5T2ZZZWFyO1xuICB9IGVsc2UgaWYgKGRheU9mWWVhciA+IGRheXNJblllYXIoeWVhcikpIHtcbiAgICByZXNZZWFyID0geWVhciArIDE7XG4gICAgcmVzRGF5T2ZZZWFyID0gZGF5T2ZZZWFyIC0gZGF5c0luWWVhcih5ZWFyKTtcbiAgfSBlbHNlIHtcbiAgICByZXNZZWFyID0geWVhcjtcbiAgICByZXNEYXlPZlllYXIgPSBkYXlPZlllYXI7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHllYXI6IHJlc1llYXIsXG4gICAgZGF5T2ZZZWFyOiByZXNEYXlPZlllYXJcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlZWtPZlllYXIoZGF0ZTogRGF0ZSwgZG93OiBudW1iZXIsIGRveTogbnVtYmVyLCBpc1VUQz86IGJvb2xlYW4pOiB7IHdlZWs6IG51bWJlcjsgeWVhcjogbnVtYmVyIH0ge1xuICBjb25zdCB3ZWVrT2Zmc2V0ID0gZmlyc3RXZWVrT2Zmc2V0KGdldEZ1bGxZZWFyKGRhdGUsIGlzVVRDKSwgZG93LCBkb3kpO1xuICBjb25zdCB3ZWVrID0gTWF0aC5mbG9vcigoZ2V0RGF5T2ZZZWFyKGRhdGUsIGlzVVRDKSAtIHdlZWtPZmZzZXQgLSAxKSAvIDcpICsgMTtcbiAgbGV0IHJlc1dlZWs6IG51bWJlcjtcbiAgbGV0IHJlc1llYXI6IG51bWJlcjtcblxuICBpZiAod2VlayA8IDEpIHtcbiAgICByZXNZZWFyID0gZ2V0RnVsbFllYXIoZGF0ZSwgaXNVVEMpIC0gMTtcbiAgICByZXNXZWVrID0gd2VlayArIHdlZWtzSW5ZZWFyKHJlc1llYXIsIGRvdywgZG95KTtcbiAgfSBlbHNlIGlmICh3ZWVrID4gd2Vla3NJblllYXIoZ2V0RnVsbFllYXIoZGF0ZSwgaXNVVEMpLCBkb3csIGRveSkpIHtcbiAgICByZXNXZWVrID0gd2VlayAtIHdlZWtzSW5ZZWFyKGdldEZ1bGxZZWFyKGRhdGUsIGlzVVRDKSwgZG93LCBkb3kpO1xuICAgIHJlc1llYXIgPSBnZXRGdWxsWWVhcihkYXRlLCBpc1VUQykgKyAxO1xuICB9IGVsc2Uge1xuICAgIHJlc1llYXIgPSBnZXRGdWxsWWVhcihkYXRlLCBpc1VUQyk7XG4gICAgcmVzV2VlayA9IHdlZWs7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHdlZWs6IHJlc1dlZWssXG4gICAgeWVhcjogcmVzWWVhclxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2Vla3NJblllYXIoeWVhcjogbnVtYmVyLCBkb3c6IG51bWJlciwgZG95OiBudW1iZXIpOiBudW1iZXIge1xuICBjb25zdCB3ZWVrT2Zmc2V0ID0gZmlyc3RXZWVrT2Zmc2V0KHllYXIsIGRvdywgZG95KTtcbiAgY29uc3Qgd2Vla09mZnNldE5leHQgPSBmaXJzdFdlZWtPZmZzZXQoeWVhciArIDEsIGRvdywgZG95KTtcblxuICByZXR1cm4gKGRheXNJblllYXIoeWVhcikgLSB3ZWVrT2Zmc2V0ICsgd2Vla09mZnNldE5leHQpIC8gNztcbn1cbiJdfQ==