mis-crystal-design-system 2.0.2 → 2.1.2

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 (930) hide show
  1. package/bundles/mis-crystal-design-system-button.umd.js +76 -0
  2. package/bundles/mis-crystal-design-system-button.umd.js.map +1 -0
  3. package/bundles/mis-crystal-design-system-button.umd.min.js +2 -0
  4. package/bundles/mis-crystal-design-system-button.umd.min.js.map +1 -0
  5. package/bundles/mis-crystal-design-system-checkbox.umd.js +128 -0
  6. package/bundles/mis-crystal-design-system-checkbox.umd.js.map +1 -0
  7. package/bundles/mis-crystal-design-system-checkbox.umd.min.js +2 -0
  8. package/bundles/mis-crystal-design-system-checkbox.umd.min.js.map +1 -0
  9. package/bundles/mis-crystal-design-system-chip.umd.js +65 -0
  10. package/bundles/mis-crystal-design-system-chip.umd.js.map +1 -0
  11. package/bundles/mis-crystal-design-system-chip.umd.min.js +2 -0
  12. package/bundles/mis-crystal-design-system-chip.umd.min.js.map +1 -0
  13. package/bundles/{mis-crystal-design-system-src-datepicker.umd.js → mis-crystal-design-system-datepicker.umd.js} +3 -3
  14. package/bundles/mis-crystal-design-system-datepicker.umd.js.map +1 -0
  15. package/bundles/{mis-crystal-design-system-src-datepicker.umd.min.js → mis-crystal-design-system-datepicker.umd.min.js} +2 -2
  16. package/bundles/{mis-crystal-design-system-src-datepicker.umd.min.js.map → mis-crystal-design-system-datepicker.umd.min.js.map} +1 -1
  17. package/bundles/mis-crystal-design-system-drawer.umd.js +172 -0
  18. package/bundles/mis-crystal-design-system-drawer.umd.js.map +1 -0
  19. package/bundles/mis-crystal-design-system-drawer.umd.min.js +2 -0
  20. package/bundles/mis-crystal-design-system-drawer.umd.min.js.map +1 -0
  21. package/bundles/mis-crystal-design-system-dropdown.umd.js +119 -0
  22. package/bundles/mis-crystal-design-system-dropdown.umd.js.map +1 -0
  23. package/bundles/mis-crystal-design-system-dropdown.umd.min.js +2 -0
  24. package/bundles/mis-crystal-design-system-dropdown.umd.min.js.map +1 -0
  25. package/bundles/mis-crystal-design-system-fab.umd.js +98 -0
  26. package/bundles/mis-crystal-design-system-fab.umd.js.map +1 -0
  27. package/bundles/mis-crystal-design-system-fab.umd.min.js +2 -0
  28. package/bundles/mis-crystal-design-system-fab.umd.min.js.map +1 -0
  29. package/bundles/mis-crystal-design-system-loader.umd.js +54 -0
  30. package/bundles/mis-crystal-design-system-loader.umd.js.map +1 -0
  31. package/bundles/mis-crystal-design-system-loader.umd.min.js +2 -0
  32. package/bundles/mis-crystal-design-system-loader.umd.min.js.map +1 -0
  33. package/bundles/mis-crystal-design-system-multi-select-dropdown.umd.js +523 -0
  34. package/bundles/mis-crystal-design-system-multi-select-dropdown.umd.js.map +1 -0
  35. package/bundles/mis-crystal-design-system-multi-select-dropdown.umd.min.js +16 -0
  36. package/bundles/mis-crystal-design-system-multi-select-dropdown.umd.min.js.map +1 -0
  37. package/bundles/mis-crystal-design-system-nested-multi-select-dropdown.umd.js +597 -0
  38. package/bundles/mis-crystal-design-system-nested-multi-select-dropdown.umd.js.map +1 -0
  39. package/bundles/mis-crystal-design-system-nested-multi-select-dropdown.umd.min.js +16 -0
  40. package/bundles/mis-crystal-design-system-nested-multi-select-dropdown.umd.min.js.map +1 -0
  41. package/bundles/mis-crystal-design-system-radio-button.umd.js +78 -0
  42. package/bundles/mis-crystal-design-system-radio-button.umd.js.map +1 -0
  43. package/bundles/mis-crystal-design-system-radio-button.umd.min.js +2 -0
  44. package/bundles/mis-crystal-design-system-radio-button.umd.min.js.map +1 -0
  45. package/bundles/mis-crystal-design-system-switch.umd.js +80 -0
  46. package/bundles/mis-crystal-design-system-switch.umd.js.map +1 -0
  47. package/bundles/mis-crystal-design-system-switch.umd.min.js +2 -0
  48. package/bundles/mis-crystal-design-system-switch.umd.min.js.map +1 -0
  49. package/bundles/mis-crystal-design-system-table.umd.js +807 -0
  50. package/bundles/mis-crystal-design-system-table.umd.js.map +1 -0
  51. package/bundles/mis-crystal-design-system-table.umd.min.js +16 -0
  52. package/bundles/mis-crystal-design-system-table.umd.min.js.map +1 -0
  53. package/bundles/mis-crystal-design-system-toast.umd.js +207 -0
  54. package/bundles/mis-crystal-design-system-toast.umd.js.map +1 -0
  55. package/bundles/mis-crystal-design-system-toast.umd.min.js +2 -0
  56. package/bundles/mis-crystal-design-system-toast.umd.min.js.map +1 -0
  57. package/bundles/mis-crystal-design-system-tooltip.umd.js +228 -0
  58. package/bundles/mis-crystal-design-system-tooltip.umd.js.map +1 -0
  59. package/bundles/mis-crystal-design-system-tooltip.umd.min.js +2 -0
  60. package/bundles/mis-crystal-design-system-tooltip.umd.min.js.map +1 -0
  61. package/bundles/mis-crystal-design-system.umd.js +28 -15960
  62. package/bundles/mis-crystal-design-system.umd.js.map +1 -1
  63. package/bundles/mis-crystal-design-system.umd.min.js +1 -67
  64. package/bundles/mis-crystal-design-system.umd.min.js.map +1 -1
  65. package/button/mis-crystal-design-system-button.d.ts +4 -0
  66. package/button/mis-crystal-design-system-button.metadata.json +1 -0
  67. package/button/package.json +11 -0
  68. package/checkbox/mis-crystal-design-system-checkbox.d.ts +4 -0
  69. package/checkbox/mis-crystal-design-system-checkbox.metadata.json +1 -0
  70. package/checkbox/package.json +11 -0
  71. package/chip/mis-crystal-design-system-chip.d.ts +4 -0
  72. package/chip/mis-crystal-design-system-chip.metadata.json +1 -0
  73. package/chip/package.json +11 -0
  74. package/{src/datepicker/mis-crystal-design-system-src-datepicker.d.ts → datepicker/mis-crystal-design-system-datepicker.d.ts} +1 -1
  75. package/{src/datepicker/mis-crystal-design-system-src-datepicker.metadata.json → datepicker/mis-crystal-design-system-datepicker.metadata.json} +1 -1
  76. package/datepicker/package.json +11 -0
  77. package/drawer/mis-crystal-design-system-drawer.d.ts +5 -0
  78. package/drawer/mis-crystal-design-system-drawer.metadata.json +1 -0
  79. package/drawer/package.json +11 -0
  80. package/dropdown/mis-crystal-design-system-dropdown.d.ts +4 -0
  81. package/dropdown/mis-crystal-design-system-dropdown.metadata.json +1 -0
  82. package/dropdown/package.json +11 -0
  83. package/esm2015/button/button.component.js +1 -1
  84. package/esm2015/button/button.module.js +1 -1
  85. package/esm2015/button/index.js +1 -1
  86. package/esm2015/button/mis-crystal-design-system-button.js +5 -0
  87. package/esm2015/button/public_api.js +1 -1
  88. package/esm2015/checkbox/checkbox.component.js +1 -1
  89. package/esm2015/checkbox/checkbox.module.js +1 -1
  90. package/esm2015/checkbox/index.js +1 -1
  91. package/esm2015/checkbox/mis-crystal-design-system-checkbox.js +5 -0
  92. package/esm2015/checkbox/public_api.js +1 -1
  93. package/esm2015/chip/chip.component.js +1 -1
  94. package/esm2015/chip/chip.module.js +1 -1
  95. package/esm2015/chip/index.js +1 -1
  96. package/esm2015/chip/mis-crystal-design-system-chip.js +5 -0
  97. package/esm2015/chip/public_api.js +1 -1
  98. package/esm2015/datepicker/base/bs-datepicker-container.js +1 -1
  99. package/esm2015/datepicker/bs-datepicker-inline.component.js +1 -1
  100. package/esm2015/datepicker/bs-datepicker-inline.config.js +1 -1
  101. package/esm2015/datepicker/bs-datepicker-input.directive.js +1 -1
  102. package/esm2015/datepicker/bs-datepicker.component.js +1 -1
  103. package/esm2015/datepicker/bs-datepicker.config.js +1 -1
  104. package/esm2015/datepicker/bs-datepicker.module.js +1 -1
  105. package/esm2015/datepicker/bs-daterangepicker-inline.component.js +1 -1
  106. package/esm2015/datepicker/bs-daterangepicker-inline.config.js +1 -1
  107. package/esm2015/datepicker/bs-daterangepicker-input.directive.js +1 -1
  108. package/esm2015/datepicker/bs-daterangepicker.component.js +1 -1
  109. package/esm2015/datepicker/bs-daterangepicker.config.js +1 -1
  110. package/esm2015/datepicker/bs-locale.service.js +1 -1
  111. package/esm2015/datepicker/date-formatter.js +1 -1
  112. package/esm2015/datepicker/datepicker-animations.js +1 -1
  113. package/esm2015/datepicker/datepicker-inner.component.js +1 -1
  114. package/esm2015/datepicker/datepicker.component.js +1 -1
  115. package/esm2015/datepicker/datepicker.config.js +1 -1
  116. package/esm2015/datepicker/datepicker.module.js +1 -1
  117. package/esm2015/datepicker/daypicker.component.js +1 -1
  118. package/esm2015/datepicker/engine/calc-days-calendar.js +1 -1
  119. package/esm2015/datepicker/engine/flag-days-calendar.js +1 -1
  120. package/esm2015/datepicker/engine/flag-months-calendar.js +1 -1
  121. package/esm2015/datepicker/engine/flag-years-calendar.js +1 -1
  122. package/esm2015/datepicker/engine/format-days-calendar.js +1 -1
  123. package/esm2015/datepicker/engine/format-months-calendar.js +1 -1
  124. package/esm2015/datepicker/engine/format-years-calendar.js +1 -1
  125. package/esm2015/datepicker/engine/view-mode.js +1 -1
  126. package/esm2015/datepicker/index.js +1 -1
  127. package/esm2015/datepicker/mis-crystal-design-system-datepicker.js +25 -0
  128. package/esm2015/datepicker/models/index.js +1 -1
  129. package/esm2015/datepicker/monthpicker.component.js +1 -1
  130. package/esm2015/datepicker/public_api.js +1 -1
  131. package/esm2015/datepicker/reducer/_defaults.js +1 -1
  132. package/esm2015/datepicker/reducer/bs-datepicker.actions.js +1 -1
  133. package/esm2015/datepicker/reducer/bs-datepicker.effects.js +1 -1
  134. package/esm2015/datepicker/reducer/bs-datepicker.reducer.js +1 -1
  135. package/esm2015/datepicker/reducer/bs-datepicker.state.js +1 -1
  136. package/esm2015/datepicker/reducer/bs-datepicker.store.js +1 -1
  137. package/esm2015/datepicker/sub-components/chronos/create/check-overflow.js +1 -1
  138. package/esm2015/datepicker/sub-components/chronos/create/clone.js +1 -1
  139. package/esm2015/datepicker/sub-components/chronos/create/date-from-array.js +1 -1
  140. package/esm2015/datepicker/sub-components/chronos/create/from-anything.js +1 -1
  141. package/esm2015/datepicker/sub-components/chronos/create/from-array.js +1 -1
  142. package/esm2015/datepicker/sub-components/chronos/create/from-object.js +1 -1
  143. package/esm2015/datepicker/sub-components/chronos/create/from-string-and-array.js +1 -1
  144. package/esm2015/datepicker/sub-components/chronos/create/from-string-and-format.js +1 -1
  145. package/esm2015/datepicker/sub-components/chronos/create/from-string.js +1 -1
  146. package/esm2015/datepicker/sub-components/chronos/create/local.js +1 -1
  147. package/esm2015/datepicker/sub-components/chronos/create/parsing-flags.js +1 -1
  148. package/esm2015/datepicker/sub-components/chronos/create/parsing.types.js +1 -1
  149. package/esm2015/datepicker/sub-components/chronos/create/valid.js +1 -1
  150. package/esm2015/datepicker/sub-components/chronos/duration/bubble.js +1 -1
  151. package/esm2015/datepicker/sub-components/chronos/duration/constructor.js +1 -1
  152. package/esm2015/datepicker/sub-components/chronos/duration/create.js +1 -1
  153. package/esm2015/datepicker/sub-components/chronos/duration/humanize.js +1 -1
  154. package/esm2015/datepicker/sub-components/chronos/duration/valid.js +1 -1
  155. package/esm2015/datepicker/sub-components/chronos/format/format.js +1 -1
  156. package/esm2015/datepicker/sub-components/chronos/format.js +1 -1
  157. package/esm2015/datepicker/sub-components/chronos/i18n/ar.js +1 -1
  158. package/esm2015/datepicker/sub-components/chronos/i18n/bg.js +1 -1
  159. package/esm2015/datepicker/sub-components/chronos/i18n/ca.js +1 -1
  160. package/esm2015/datepicker/sub-components/chronos/i18n/cs.js +1 -1
  161. package/esm2015/datepicker/sub-components/chronos/i18n/da.js +1 -1
  162. package/esm2015/datepicker/sub-components/chronos/i18n/de.js +1 -1
  163. package/esm2015/datepicker/sub-components/chronos/i18n/en-gb.js +1 -1
  164. package/esm2015/datepicker/sub-components/chronos/i18n/es-do.js +1 -1
  165. package/esm2015/datepicker/sub-components/chronos/i18n/es-us.js +1 -1
  166. package/esm2015/datepicker/sub-components/chronos/i18n/es.js +1 -1
  167. package/esm2015/datepicker/sub-components/chronos/i18n/et.js +1 -1
  168. package/esm2015/datepicker/sub-components/chronos/i18n/fi.js +1 -1
  169. package/esm2015/datepicker/sub-components/chronos/i18n/fr.js +1 -1
  170. package/esm2015/datepicker/sub-components/chronos/i18n/gl.js +1 -1
  171. package/esm2015/datepicker/sub-components/chronos/i18n/he.js +1 -1
  172. package/esm2015/datepicker/sub-components/chronos/i18n/hi.js +1 -1
  173. package/esm2015/datepicker/sub-components/chronos/i18n/hr.js +1 -1
  174. package/esm2015/datepicker/sub-components/chronos/i18n/hu.js +1 -1
  175. package/esm2015/datepicker/sub-components/chronos/i18n/id.js +1 -1
  176. package/esm2015/datepicker/sub-components/chronos/i18n/it.js +1 -1
  177. package/esm2015/datepicker/sub-components/chronos/i18n/ja.js +1 -1
  178. package/esm2015/datepicker/sub-components/chronos/i18n/ka.js +1 -1
  179. package/esm2015/datepicker/sub-components/chronos/i18n/kk.js +1 -1
  180. package/esm2015/datepicker/sub-components/chronos/i18n/ko.js +1 -1
  181. package/esm2015/datepicker/sub-components/chronos/i18n/lt.js +1 -1
  182. package/esm2015/datepicker/sub-components/chronos/i18n/lv.js +1 -1
  183. package/esm2015/datepicker/sub-components/chronos/i18n/mn.js +1 -1
  184. package/esm2015/datepicker/sub-components/chronos/i18n/nb.js +1 -1
  185. package/esm2015/datepicker/sub-components/chronos/i18n/nl-be.js +1 -1
  186. package/esm2015/datepicker/sub-components/chronos/i18n/nl.js +1 -1
  187. package/esm2015/datepicker/sub-components/chronos/i18n/pl.js +1 -1
  188. package/esm2015/datepicker/sub-components/chronos/i18n/pt-br.js +1 -1
  189. package/esm2015/datepicker/sub-components/chronos/i18n/ro.js +1 -1
  190. package/esm2015/datepicker/sub-components/chronos/i18n/ru.js +1 -1
  191. package/esm2015/datepicker/sub-components/chronos/i18n/sk.js +1 -1
  192. package/esm2015/datepicker/sub-components/chronos/i18n/sl.js +1 -1
  193. package/esm2015/datepicker/sub-components/chronos/i18n/sq.js +1 -1
  194. package/esm2015/datepicker/sub-components/chronos/i18n/sv.js +1 -1
  195. package/esm2015/datepicker/sub-components/chronos/i18n/th-be.js +1 -1
  196. package/esm2015/datepicker/sub-components/chronos/i18n/th.js +1 -1
  197. package/esm2015/datepicker/sub-components/chronos/i18n/tr.js +1 -1
  198. package/esm2015/datepicker/sub-components/chronos/i18n/uk.js +1 -1
  199. package/esm2015/datepicker/sub-components/chronos/i18n/vi.js +1 -1
  200. package/esm2015/datepicker/sub-components/chronos/i18n/zh-cn.js +1 -1
  201. package/esm2015/datepicker/sub-components/chronos/index.js +1 -1
  202. package/esm2015/datepicker/sub-components/chronos/locale/calendar.js +1 -1
  203. package/esm2015/datepicker/sub-components/chronos/locale/locale.class.js +1 -1
  204. package/esm2015/datepicker/sub-components/chronos/locale/locale.defaults.js +1 -1
  205. package/esm2015/datepicker/sub-components/chronos/locale/locales.js +1 -1
  206. package/esm2015/datepicker/sub-components/chronos/moment/add-subtract.js +1 -1
  207. package/esm2015/datepicker/sub-components/chronos/moment/calendar.js +1 -1
  208. package/esm2015/datepicker/sub-components/chronos/moment/diff.js +1 -1
  209. package/esm2015/datepicker/sub-components/chronos/moment/min-max.js +1 -1
  210. package/esm2015/datepicker/sub-components/chronos/parse/regex.js +1 -1
  211. package/esm2015/datepicker/sub-components/chronos/parse/token.js +1 -1
  212. package/esm2015/datepicker/sub-components/chronos/public_api.js +1 -1
  213. package/esm2015/datepicker/sub-components/chronos/test/chain.js +1 -1
  214. package/esm2015/datepicker/sub-components/chronos/types.js +1 -1
  215. package/esm2015/datepicker/sub-components/chronos/units/aliases.js +1 -1
  216. package/esm2015/datepicker/sub-components/chronos/units/constants.js +1 -1
  217. package/esm2015/datepicker/sub-components/chronos/units/day-of-month.js +1 -1
  218. package/esm2015/datepicker/sub-components/chronos/units/day-of-week.js +1 -1
  219. package/esm2015/datepicker/sub-components/chronos/units/day-of-year.js +1 -1
  220. package/esm2015/datepicker/sub-components/chronos/units/hour.js +1 -1
  221. package/esm2015/datepicker/sub-components/chronos/units/index.js +1 -1
  222. package/esm2015/datepicker/sub-components/chronos/units/millisecond.js +1 -1
  223. package/esm2015/datepicker/sub-components/chronos/units/minute.js +1 -1
  224. package/esm2015/datepicker/sub-components/chronos/units/month.js +1 -1
  225. package/esm2015/datepicker/sub-components/chronos/units/offset.js +1 -1
  226. package/esm2015/datepicker/sub-components/chronos/units/priorities.js +1 -1
  227. package/esm2015/datepicker/sub-components/chronos/units/quarter.js +1 -1
  228. package/esm2015/datepicker/sub-components/chronos/units/second.js +1 -1
  229. package/esm2015/datepicker/sub-components/chronos/units/timestamp.js +1 -1
  230. package/esm2015/datepicker/sub-components/chronos/units/timezone.js +1 -1
  231. package/esm2015/datepicker/sub-components/chronos/units/week-calendar-utils.js +1 -1
  232. package/esm2015/datepicker/sub-components/chronos/units/week-year.js +1 -1
  233. package/esm2015/datepicker/sub-components/chronos/units/week.js +1 -1
  234. package/esm2015/datepicker/sub-components/chronos/units/year.js +1 -1
  235. package/esm2015/datepicker/sub-components/chronos/utils/abs-ceil.js +1 -1
  236. package/esm2015/datepicker/sub-components/chronos/utils/abs-round.js +1 -1
  237. package/esm2015/datepicker/sub-components/chronos/utils/compare-arrays.js +1 -1
  238. package/esm2015/datepicker/sub-components/chronos/utils/date-compare.js +1 -1
  239. package/esm2015/datepicker/sub-components/chronos/utils/date-getters.js +1 -1
  240. package/esm2015/datepicker/sub-components/chronos/utils/date-setters.js +1 -1
  241. package/esm2015/datepicker/sub-components/chronos/utils/defaults.js +1 -1
  242. package/esm2015/datepicker/sub-components/chronos/utils/start-end-of.js +1 -1
  243. package/esm2015/datepicker/sub-components/chronos/utils/type-checks.js +1 -1
  244. package/esm2015/datepicker/sub-components/chronos/utils/zero-fill.js +1 -1
  245. package/esm2015/datepicker/sub-components/chronos/utils.js +1 -1
  246. package/esm2015/datepicker/sub-components/component-loader/bs-component-ref.class.js +1 -1
  247. package/esm2015/datepicker/sub-components/component-loader/component-loader.class.js +1 -1
  248. package/esm2015/datepicker/sub-components/component-loader/component-loader.factory.js +1 -1
  249. package/esm2015/datepicker/sub-components/component-loader/content-ref.class.js +1 -1
  250. package/esm2015/datepicker/sub-components/component-loader/index.js +1 -1
  251. package/esm2015/datepicker/sub-components/component-loader/listen-options.model.js +1 -1
  252. package/esm2015/datepicker/sub-components/component-loader/public_api.js +1 -1
  253. package/esm2015/datepicker/sub-components/mini-ngrx/index.js +1 -1
  254. package/esm2015/datepicker/sub-components/mini-ngrx/public_api.js +1 -1
  255. package/esm2015/datepicker/sub-components/mini-ngrx/state.class.js +1 -1
  256. package/esm2015/datepicker/sub-components/mini-ngrx/store.class.js +1 -1
  257. package/esm2015/datepicker/sub-components/positioning/index.js +1 -1
  258. package/esm2015/datepicker/sub-components/positioning/models/index.js +1 -1
  259. package/esm2015/datepicker/sub-components/positioning/modifiers/arrow.js +1 -1
  260. package/esm2015/datepicker/sub-components/positioning/modifiers/flip.js +1 -1
  261. package/esm2015/datepicker/sub-components/positioning/modifiers/index.js +1 -1
  262. package/esm2015/datepicker/sub-components/positioning/modifiers/initData.js +1 -1
  263. package/esm2015/datepicker/sub-components/positioning/modifiers/preventOverflow.js +1 -1
  264. package/esm2015/datepicker/sub-components/positioning/modifiers/shift.js +1 -1
  265. package/esm2015/datepicker/sub-components/positioning/ng-positioning.js +1 -1
  266. package/esm2015/datepicker/sub-components/positioning/positioning.service.js +1 -1
  267. package/esm2015/datepicker/sub-components/positioning/public_api.js +1 -1
  268. package/esm2015/datepicker/sub-components/positioning/utils/computeAutoPlacement.js +1 -1
  269. package/esm2015/datepicker/sub-components/positioning/utils/findCommonOffsetParent.js +1 -1
  270. package/esm2015/datepicker/sub-components/positioning/utils/getBordersSize.js +1 -1
  271. package/esm2015/datepicker/sub-components/positioning/utils/getBoundaries.js +1 -1
  272. package/esm2015/datepicker/sub-components/positioning/utils/getBoundingClientRect.js +1 -1
  273. package/esm2015/datepicker/sub-components/positioning/utils/getClientRect.js +1 -1
  274. package/esm2015/datepicker/sub-components/positioning/utils/getFixedPositionOffsetParent.js +1 -1
  275. package/esm2015/datepicker/sub-components/positioning/utils/getOffsetParent.js +1 -1
  276. package/esm2015/datepicker/sub-components/positioning/utils/getOffsetRectRelativeToArbitraryNode.js +1 -1
  277. package/esm2015/datepicker/sub-components/positioning/utils/getOffsets.js +1 -1
  278. package/esm2015/datepicker/sub-components/positioning/utils/getOppositePlacement.js +1 -1
  279. package/esm2015/datepicker/sub-components/positioning/utils/getOppositeVariation.js +1 -1
  280. package/esm2015/datepicker/sub-components/positioning/utils/getOuterSizes.js +1 -1
  281. package/esm2015/datepicker/sub-components/positioning/utils/getParentNode.js +1 -1
  282. package/esm2015/datepicker/sub-components/positioning/utils/getReferenceOffsets.js +1 -1
  283. package/esm2015/datepicker/sub-components/positioning/utils/getRoot.js +1 -1
  284. package/esm2015/datepicker/sub-components/positioning/utils/getScroll.js +1 -1
  285. package/esm2015/datepicker/sub-components/positioning/utils/getScrollParent.js +1 -1
  286. package/esm2015/datepicker/sub-components/positioning/utils/getStyleComputedProperty.js +1 -1
  287. package/esm2015/datepicker/sub-components/positioning/utils/getTargetOffsets.js +1 -1
  288. package/esm2015/datepicker/sub-components/positioning/utils/getViewportOffsetRectRelativeToArtbitraryNode.js +1 -1
  289. package/esm2015/datepicker/sub-components/positioning/utils/getWindowSizes.js +1 -1
  290. package/esm2015/datepicker/sub-components/positioning/utils/includeScroll.js +1 -1
  291. package/esm2015/datepicker/sub-components/positioning/utils/index.js +1 -1
  292. package/esm2015/datepicker/sub-components/positioning/utils/isBrowser.js +1 -1
  293. package/esm2015/datepicker/sub-components/positioning/utils/isFixed.js +1 -1
  294. package/esm2015/datepicker/sub-components/positioning/utils/isIE.js +1 -1
  295. package/esm2015/datepicker/sub-components/positioning/utils/isModifierEnabled.js +1 -1
  296. package/esm2015/datepicker/sub-components/positioning/utils/isNumeric.js +1 -1
  297. package/esm2015/datepicker/sub-components/positioning/utils/isOffsetContainer.js +1 -1
  298. package/esm2015/datepicker/sub-components/positioning/utils/setStyles.js +1 -1
  299. package/esm2015/datepicker/sub-components/positioning/utils/updateContainerClass.js +1 -1
  300. package/esm2015/datepicker/sub-components/tooltip/index.js +1 -1
  301. package/esm2015/datepicker/sub-components/tooltip/public_api.js +1 -1
  302. package/esm2015/datepicker/sub-components/tooltip/tooltip-container.component.js +1 -1
  303. package/esm2015/datepicker/sub-components/tooltip/tooltip.config.js +1 -1
  304. package/esm2015/datepicker/sub-components/tooltip/tooltip.directive.js +1 -1
  305. package/esm2015/datepicker/sub-components/tooltip/tooltip.module.js +1 -1
  306. package/esm2015/datepicker/sub-components/utils/decorators.js +1 -1
  307. package/esm2015/datepicker/sub-components/utils/facade/browser.js +1 -1
  308. package/esm2015/datepicker/sub-components/utils/index.js +1 -1
  309. package/esm2015/datepicker/sub-components/utils/linked-list.class.js +1 -1
  310. package/esm2015/datepicker/sub-components/utils/public_api.js +1 -1
  311. package/esm2015/datepicker/sub-components/utils/theme-provider.js +1 -1
  312. package/esm2015/datepicker/sub-components/utils/trigger.class.js +1 -1
  313. package/esm2015/datepicker/sub-components/utils/triggers.js +1 -1
  314. package/esm2015/datepicker/sub-components/utils/utils.class.js +1 -1
  315. package/esm2015/datepicker/sub-components/utils/warn-once.js +1 -1
  316. package/esm2015/datepicker/themes/bs/bs-calendar-layout.component.js +1 -1
  317. package/esm2015/datepicker/themes/bs/bs-current-date-view.component.js +1 -1
  318. package/esm2015/datepicker/themes/bs/bs-custom-dates-view.component.js +1 -1
  319. package/esm2015/datepicker/themes/bs/bs-datepicker-container.component.js +1 -1
  320. package/esm2015/datepicker/themes/bs/bs-datepicker-day-decorator.directive.js +1 -1
  321. package/esm2015/datepicker/themes/bs/bs-datepicker-inline-container.component.js +1 -1
  322. package/esm2015/datepicker/themes/bs/bs-datepicker-navigation-view.component.js +1 -1
  323. package/esm2015/datepicker/themes/bs/bs-daterangepicker-container.component.js +1 -1
  324. package/esm2015/datepicker/themes/bs/bs-daterangepicker-inline-container.component.js +1 -1
  325. package/esm2015/datepicker/themes/bs/bs-days-calendar-view.component.js +1 -1
  326. package/esm2015/datepicker/themes/bs/bs-months-calendar-view.component.js +1 -1
  327. package/esm2015/datepicker/themes/bs/bs-timepicker-view.component.js +1 -1
  328. package/esm2015/datepicker/themes/bs/bs-years-calendar-view.component.js +1 -1
  329. package/esm2015/datepicker/utils/bs-calendar-utils.js +1 -1
  330. package/esm2015/datepicker/utils/matrix-utils.js +1 -1
  331. package/esm2015/datepicker/yearpicker.component.js +1 -1
  332. package/esm2015/drawer/drawer-body/drawer-body.component.js +1 -1
  333. package/esm2015/drawer/drawer-constants.js +1 -1
  334. package/esm2015/drawer/drawer-ref.js +1 -1
  335. package/esm2015/drawer/drawer.module.js +1 -1
  336. package/esm2015/drawer/drawer.service.js +1 -1
  337. package/esm2015/drawer/index.js +1 -1
  338. package/esm2015/drawer/mis-crystal-design-system-drawer.js +6 -0
  339. package/esm2015/drawer/public_api.js +1 -1
  340. package/esm2015/dropdown/dropdown.component.js +1 -1
  341. package/esm2015/dropdown/dropdown.module.js +1 -1
  342. package/esm2015/dropdown/index.js +1 -1
  343. package/esm2015/dropdown/mis-crystal-design-system-dropdown.js +5 -0
  344. package/esm2015/dropdown/public_api.js +1 -1
  345. package/esm2015/fab/fab.component.js +1 -1
  346. package/esm2015/fab/fab.module.js +1 -1
  347. package/esm2015/fab/index.js +1 -1
  348. package/esm2015/fab/mis-crystal-design-system-fab.js +5 -0
  349. package/esm2015/fab/public_api.js +1 -1
  350. package/esm2015/index.js +2 -0
  351. package/esm2015/loader/index.js +1 -1
  352. package/esm2015/loader/loader.component.js +1 -1
  353. package/esm2015/loader/loader.module.js +1 -1
  354. package/esm2015/loader/mis-crystal-design-system-loader.js +5 -0
  355. package/esm2015/loader/public_api.js +1 -1
  356. package/esm2015/mis-crystal-design-system.js +2 -2
  357. package/esm2015/multi-select-dropdown/index.js +1 -1
  358. package/esm2015/multi-select-dropdown/mis-crystal-design-system-multi-select-dropdown.js +5 -0
  359. package/esm2015/multi-select-dropdown/multi-select-dropdown.component.js +1 -1
  360. package/esm2015/multi-select-dropdown/multi-select-dropdown.module.js +3 -3
  361. package/esm2015/multi-select-dropdown/public_api.js +1 -1
  362. package/esm2015/nested-multi-select-dropdown/index.js +1 -1
  363. package/esm2015/nested-multi-select-dropdown/mis-crystal-design-system-nested-multi-select-dropdown.js +5 -0
  364. package/esm2015/nested-multi-select-dropdown/nested-multi-select-dropdown.component.js +1 -1
  365. package/esm2015/nested-multi-select-dropdown/nested-multi-select-dropdown.module.js +3 -3
  366. package/esm2015/nested-multi-select-dropdown/public_api.js +1 -1
  367. package/esm2015/public-api.js +17 -16
  368. package/esm2015/radio-button/index.js +1 -1
  369. package/esm2015/radio-button/mis-crystal-design-system-radio-button.js +5 -0
  370. package/esm2015/radio-button/public_api.js +1 -1
  371. package/esm2015/radio-button/radio-button.component.js +1 -1
  372. package/esm2015/radio-button/radio-button.module.js +1 -1
  373. package/esm2015/switch/index.js +1 -1
  374. package/esm2015/switch/mis-crystal-design-system-switch.js +5 -0
  375. package/esm2015/switch/public_api.js +1 -1
  376. package/esm2015/switch/switch.component.js +1 -1
  377. package/esm2015/switch/switch.module.js +1 -1
  378. package/esm2015/table/custom-table-cell.directive.js +1 -1
  379. package/esm2015/table/filter/filter.component.js +1 -1
  380. package/esm2015/table/index.js +1 -1
  381. package/esm2015/table/mis-crystal-design-system-table.js +5 -0
  382. package/esm2015/table/public_api.js +1 -1
  383. package/esm2015/table/sub-table/sub-table.component.js +1 -1
  384. package/esm2015/table/table.component.js +1 -1
  385. package/esm2015/table/table.module.js +3 -3
  386. package/esm2015/toast/index.js +1 -1
  387. package/esm2015/toast/mis-crystal-design-system-toast.js +7 -0
  388. package/esm2015/toast/public_api.js +1 -1
  389. package/esm2015/toast/toast.component.js +1 -1
  390. package/esm2015/toast/toast.data.service.js +1 -1
  391. package/esm2015/toast/toast.module.js +1 -1
  392. package/esm2015/toast/toast.service.js +1 -1
  393. package/esm2015/tooltip/index.js +1 -1
  394. package/esm2015/tooltip/mis-crystal-design-system-tooltip.js +5 -0
  395. package/esm2015/tooltip/public_api.js +1 -1
  396. package/esm2015/tooltip/tooltip.component.js +1 -1
  397. package/esm2015/tooltip/tooltip.directive.js +1 -1
  398. package/esm2015/tooltip/tooltip.module.js +1 -1
  399. package/fab/mis-crystal-design-system-fab.d.ts +4 -0
  400. package/fab/mis-crystal-design-system-fab.metadata.json +1 -0
  401. package/fab/package.json +11 -0
  402. package/fesm2015/mis-crystal-design-system-button.js +64 -0
  403. package/fesm2015/mis-crystal-design-system-button.js.map +1 -0
  404. package/fesm2015/mis-crystal-design-system-checkbox.js +101 -0
  405. package/fesm2015/mis-crystal-design-system-checkbox.js.map +1 -0
  406. package/fesm2015/mis-crystal-design-system-chip.js +53 -0
  407. package/fesm2015/mis-crystal-design-system-chip.js.map +1 -0
  408. package/fesm2015/{mis-crystal-design-system-src-datepicker.js → mis-crystal-design-system-datepicker.js} +1 -1
  409. package/fesm2015/mis-crystal-design-system-datepicker.js.map +1 -0
  410. package/fesm2015/mis-crystal-design-system-drawer.js +156 -0
  411. package/fesm2015/mis-crystal-design-system-drawer.js.map +1 -0
  412. package/fesm2015/mis-crystal-design-system-dropdown.js +108 -0
  413. package/fesm2015/mis-crystal-design-system-dropdown.js.map +1 -0
  414. package/fesm2015/mis-crystal-design-system-fab.js +87 -0
  415. package/fesm2015/mis-crystal-design-system-fab.js.map +1 -0
  416. package/fesm2015/mis-crystal-design-system-loader.js +42 -0
  417. package/fesm2015/mis-crystal-design-system-loader.js.map +1 -0
  418. package/fesm2015/mis-crystal-design-system-multi-select-dropdown.js +192 -0
  419. package/fesm2015/mis-crystal-design-system-multi-select-dropdown.js.map +1 -0
  420. package/fesm2015/mis-crystal-design-system-nested-multi-select-dropdown.js +246 -0
  421. package/fesm2015/mis-crystal-design-system-nested-multi-select-dropdown.js.map +1 -0
  422. package/fesm2015/mis-crystal-design-system-radio-button.js +67 -0
  423. package/fesm2015/mis-crystal-design-system-radio-button.js.map +1 -0
  424. package/fesm2015/mis-crystal-design-system-switch.js +61 -0
  425. package/fesm2015/mis-crystal-design-system-switch.js.map +1 -0
  426. package/fesm2015/mis-crystal-design-system-table.js +419 -0
  427. package/fesm2015/mis-crystal-design-system-table.js.map +1 -0
  428. package/fesm2015/mis-crystal-design-system-toast.js +179 -0
  429. package/fesm2015/mis-crystal-design-system-toast.js.map +1 -0
  430. package/fesm2015/mis-crystal-design-system-tooltip.js +186 -0
  431. package/fesm2015/mis-crystal-design-system-tooltip.js.map +1 -0
  432. package/fesm2015/mis-crystal-design-system.js +16 -15320
  433. package/fesm2015/mis-crystal-design-system.js.map +1 -1
  434. package/index.d.ts +1 -0
  435. package/loader/mis-crystal-design-system-loader.d.ts +4 -0
  436. package/loader/mis-crystal-design-system-loader.metadata.json +1 -0
  437. package/loader/package.json +11 -0
  438. package/mis-crystal-design-system.d.ts +1 -1
  439. package/mis-crystal-design-system.metadata.json +1 -1
  440. package/multi-select-dropdown/mis-crystal-design-system-multi-select-dropdown.d.ts +4 -0
  441. package/multi-select-dropdown/mis-crystal-design-system-multi-select-dropdown.metadata.json +1 -0
  442. package/multi-select-dropdown/package.json +11 -0
  443. package/nested-multi-select-dropdown/mis-crystal-design-system-nested-multi-select-dropdown.d.ts +4 -0
  444. package/nested-multi-select-dropdown/mis-crystal-design-system-nested-multi-select-dropdown.metadata.json +1 -0
  445. package/nested-multi-select-dropdown/package.json +11 -0
  446. package/package.json +1 -1
  447. package/public-api.d.ts +2 -15
  448. package/radio-button/mis-crystal-design-system-radio-button.d.ts +4 -0
  449. package/radio-button/mis-crystal-design-system-radio-button.metadata.json +1 -0
  450. package/radio-button/package.json +11 -0
  451. package/switch/mis-crystal-design-system-switch.d.ts +4 -0
  452. package/switch/mis-crystal-design-system-switch.metadata.json +1 -0
  453. package/switch/package.json +11 -0
  454. package/table/mis-crystal-design-system-table.d.ts +4 -0
  455. package/table/mis-crystal-design-system-table.metadata.json +1 -0
  456. package/table/package.json +11 -0
  457. package/toast/mis-crystal-design-system-toast.d.ts +6 -0
  458. package/toast/mis-crystal-design-system-toast.metadata.json +1 -0
  459. package/toast/package.json +11 -0
  460. package/tooltip/mis-crystal-design-system-tooltip.d.ts +4 -0
  461. package/tooltip/mis-crystal-design-system-tooltip.metadata.json +1 -0
  462. package/tooltip/package.json +11 -0
  463. package/bundles/mis-crystal-design-system-src-datepicker.umd.js.map +0 -1
  464. package/esm2015/src/datepicker/base/bs-datepicker-container.js +0 -47
  465. package/esm2015/src/datepicker/bs-datepicker-inline.component.js +0 -132
  466. package/esm2015/src/datepicker/bs-datepicker-inline.config.js +0 -12
  467. package/esm2015/src/datepicker/bs-datepicker-input.directive.js +0 -159
  468. package/esm2015/src/datepicker/bs-datepicker.component.js +0 -238
  469. package/esm2015/src/datepicker/bs-datepicker.config.js +0 -85
  470. package/esm2015/src/datepicker/bs-datepicker.module.js +0 -97
  471. package/esm2015/src/datepicker/bs-daterangepicker-inline.component.js +0 -129
  472. package/esm2015/src/datepicker/bs-daterangepicker-inline.config.js +0 -19
  473. package/esm2015/src/datepicker/bs-daterangepicker-input.directive.js +0 -191
  474. package/esm2015/src/datepicker/bs-daterangepicker.component.js +0 -227
  475. package/esm2015/src/datepicker/bs-daterangepicker.config.js +0 -17
  476. package/esm2015/src/datepicker/bs-locale.service.js +0 -28
  477. package/esm2015/src/datepicker/date-formatter.js +0 -7
  478. package/esm2015/src/datepicker/datepicker-animations.js +0 -16
  479. package/esm2015/src/datepicker/datepicker-inner.component.js +0 -282
  480. package/esm2015/src/datepicker/datepicker.component.js +0 -140
  481. package/esm2015/src/datepicker/datepicker.config.js +0 -30
  482. package/esm2015/src/datepicker/datepicker.module.js +0 -35
  483. package/esm2015/src/datepicker/daypicker.component.js +0 -174
  484. package/esm2015/src/datepicker/engine/calc-days-calendar.js +0 -19
  485. package/esm2015/src/datepicker/engine/flag-days-calendar.js +0 -91
  486. package/esm2015/src/datepicker/engine/flag-months-calendar.js +0 -41
  487. package/esm2015/src/datepicker/engine/flag-years-calendar.js +0 -39
  488. package/esm2015/src/datepicker/engine/format-days-calendar.js +0 -29
  489. package/esm2015/src/datepicker/engine/format-months-calendar.js +0 -19
  490. package/esm2015/src/datepicker/engine/format-years-calendar.js +0 -35
  491. package/esm2015/src/datepicker/engine/view-mode.js +0 -4
  492. package/esm2015/src/datepicker/mis-crystal-design-system-src-datepicker.js +0 -25
  493. package/esm2015/src/datepicker/models/index.js +0 -9
  494. package/esm2015/src/datepicker/monthpicker.component.js +0 -87
  495. package/esm2015/src/datepicker/public_api.js +0 -26
  496. package/esm2015/src/datepicker/reducer/_defaults.js +0 -5
  497. package/esm2015/src/datepicker/reducer/bs-datepicker.actions.js +0 -132
  498. package/esm2015/src/datepicker/reducer/bs-datepicker.effects.js +0 -170
  499. package/esm2015/src/datepicker/reducer/bs-datepicker.reducer.js +0 -302
  500. package/esm2015/src/datepicker/reducer/bs-datepicker.state.js +0 -12
  501. package/esm2015/src/datepicker/reducer/bs-datepicker.store.js +0 -19
  502. package/esm2015/src/datepicker/sub-components/chronos/create/check-overflow.js +0 -30
  503. package/esm2015/src/datepicker/sub-components/chronos/create/clone.js +0 -6
  504. package/esm2015/src/datepicker/sub-components/chronos/create/date-from-array.js +0 -17
  505. package/esm2015/src/datepicker/sub-components/chronos/create/from-anything.js +0 -107
  506. package/esm2015/src/datepicker/sub-components/chronos/create/from-array.js +0 -136
  507. package/esm2015/src/datepicker/sub-components/chronos/create/from-object.js +0 -17
  508. package/esm2015/src/datepicker/sub-components/chronos/create/from-string-and-array.js +0 -38
  509. package/esm2015/src/datepicker/sub-components/chronos/create/from-string-and-format.js +0 -106
  510. package/esm2015/src/datepicker/sub-components/chronos/create/from-string.js +0 -227
  511. package/esm2015/src/datepicker/sub-components/chronos/create/local.js +0 -16
  512. package/esm2015/src/datepicker/sub-components/chronos/create/parsing-flags.js +0 -26
  513. package/esm2015/src/datepicker/sub-components/chronos/create/parsing.types.js +0 -2
  514. package/esm2015/src/datepicker/sub-components/chronos/create/valid.js +0 -42
  515. package/esm2015/src/datepicker/sub-components/chronos/duration/bubble.js +0 -47
  516. package/esm2015/src/datepicker/sub-components/chronos/duration/constructor.js +0 -130
  517. package/esm2015/src/datepicker/sub-components/chronos/duration/create.js +0 -113
  518. package/esm2015/src/datepicker/sub-components/chronos/duration/humanize.js +0 -80
  519. package/esm2015/src/datepicker/sub-components/chronos/duration/valid.js +0 -45
  520. package/esm2015/src/datepicker/sub-components/chronos/format/format.js +0 -51
  521. package/esm2015/src/datepicker/sub-components/chronos/format.js +0 -46
  522. package/esm2015/src/datepicker/sub-components/chronos/i18n/ar.js +0 -131
  523. package/esm2015/src/datepicker/sub-components/chronos/i18n/bg.js +0 -96
  524. package/esm2015/src/datepicker/sub-components/chronos/i18n/ca.js +0 -91
  525. package/esm2015/src/datepicker/sub-components/chronos/i18n/cs.js +0 -181
  526. package/esm2015/src/datepicker/sub-components/chronos/i18n/da.js +0 -50
  527. package/esm2015/src/datepicker/sub-components/chronos/i18n/de.js +0 -72
  528. package/esm2015/src/datepicker/sub-components/chronos/i18n/en-gb.js +0 -61
  529. package/esm2015/src/datepicker/sub-components/chronos/i18n/es-do.js +0 -85
  530. package/esm2015/src/datepicker/sub-components/chronos/i18n/es-us.js +0 -79
  531. package/esm2015/src/datepicker/sub-components/chronos/i18n/es.js +0 -84
  532. package/esm2015/src/datepicker/sub-components/chronos/i18n/et.js +0 -75
  533. package/esm2015/src/datepicker/sub-components/chronos/i18n/fi.js +0 -100
  534. package/esm2015/src/datepicker/sub-components/chronos/i18n/fr.js +0 -76
  535. package/esm2015/src/datepicker/sub-components/chronos/i18n/gl.js +0 -84
  536. package/esm2015/src/datepicker/sub-components/chronos/i18n/he.js +0 -98
  537. package/esm2015/src/datepicker/sub-components/chronos/i18n/hi.js +0 -124
  538. package/esm2015/src/datepicker/sub-components/chronos/i18n/hr.js +0 -62
  539. package/esm2015/src/datepicker/sub-components/chronos/i18n/hu.js +0 -104
  540. package/esm2015/src/datepicker/sub-components/chronos/i18n/id.js +0 -83
  541. package/esm2015/src/datepicker/sub-components/chronos/i18n/it.js +0 -65
  542. package/esm2015/src/datepicker/sub-components/chronos/i18n/ja.js +0 -75
  543. package/esm2015/src/datepicker/sub-components/chronos/i18n/ka.js +0 -87
  544. package/esm2015/src/datepicker/sub-components/chronos/i18n/kk.js +0 -76
  545. package/esm2015/src/datepicker/sub-components/chronos/i18n/ko.js +0 -77
  546. package/esm2015/src/datepicker/sub-components/chronos/i18n/lt.js +0 -116
  547. package/esm2015/src/datepicker/sub-components/chronos/i18n/lv.js +0 -56
  548. package/esm2015/src/datepicker/sub-components/chronos/i18n/mn.js +0 -99
  549. package/esm2015/src/datepicker/sub-components/chronos/i18n/nb.js +0 -53
  550. package/esm2015/src/datepicker/sub-components/chronos/i18n/nl-be.js +0 -81
  551. package/esm2015/src/datepicker/sub-components/chronos/i18n/nl.js +0 -80
  552. package/esm2015/src/datepicker/sub-components/chronos/i18n/pl.js +0 -126
  553. package/esm2015/src/datepicker/sub-components/chronos/i18n/pt-br.js +0 -56
  554. package/esm2015/src/datepicker/sub-components/chronos/i18n/ro.js +0 -66
  555. package/esm2015/src/datepicker/sub-components/chronos/i18n/ru.js +0 -181
  556. package/esm2015/src/datepicker/sub-components/chronos/i18n/sk.js +0 -157
  557. package/esm2015/src/datepicker/sub-components/chronos/i18n/sl.js +0 -184
  558. package/esm2015/src/datepicker/sub-components/chronos/i18n/sq.js +0 -54
  559. package/esm2015/src/datepicker/sub-components/chronos/i18n/sv.js +0 -63
  560. package/esm2015/src/datepicker/sub-components/chronos/i18n/th-be.js +0 -74
  561. package/esm2015/src/datepicker/sub-components/chronos/i18n/th.js +0 -59
  562. package/esm2015/src/datepicker/sub-components/chronos/i18n/tr.js +0 -82
  563. package/esm2015/src/datepicker/sub-components/chronos/i18n/uk.js +0 -147
  564. package/esm2015/src/datepicker/sub-components/chronos/i18n/vi.js +0 -74
  565. package/esm2015/src/datepicker/sub-components/chronos/i18n/zh-cn.js +0 -114
  566. package/esm2015/src/datepicker/sub-components/chronos/index.js +0 -2
  567. package/esm2015/src/datepicker/sub-components/chronos/locale/calendar.js +0 -9
  568. package/esm2015/src/datepicker/sub-components/chronos/locale/locale.class.js +0 -532
  569. package/esm2015/src/datepicker/sub-components/chronos/locale/locale.defaults.js +0 -40
  570. package/esm2015/src/datepicker/sub-components/chronos/locale/locales.js +0 -229
  571. package/esm2015/src/datepicker/sub-components/chronos/moment/add-subtract.js +0 -35
  572. package/esm2015/src/datepicker/sub-components/chronos/moment/calendar.js +0 -41
  573. package/esm2015/src/datepicker/sub-components/chronos/moment/diff.js +0 -70
  574. package/esm2015/src/datepicker/sub-components/chronos/moment/min-max.js +0 -38
  575. package/esm2015/src/datepicker/sub-components/chronos/parse/regex.js +0 -49
  576. package/esm2015/src/datepicker/sub-components/chronos/parse/token.js +0 -32
  577. package/esm2015/src/datepicker/sub-components/chronos/public_api.js +0 -56
  578. package/esm2015/src/datepicker/sub-components/chronos/test/chain.js +0 -711
  579. package/esm2015/src/datepicker/sub-components/chronos/types.js +0 -2
  580. package/esm2015/src/datepicker/sub-components/chronos/units/aliases.js +0 -35
  581. package/esm2015/src/datepicker/sub-components/chronos/units/constants.js +0 -11
  582. package/esm2015/src/datepicker/sub-components/chronos/units/day-of-month.js +0 -31
  583. package/esm2015/src/datepicker/sub-components/chronos/units/day-of-week.js +0 -129
  584. package/esm2015/src/datepicker/sub-components/chronos/units/day-of-year.js +0 -37
  585. package/esm2015/src/datepicker/sub-components/chronos/units/hour.js +0 -127
  586. package/esm2015/src/datepicker/sub-components/chronos/units/index.js +0 -19
  587. package/esm2015/src/datepicker/sub-components/chronos/units/millisecond.js +0 -60
  588. package/esm2015/src/datepicker/sub-components/chronos/units/minute.js +0 -23
  589. package/esm2015/src/datepicker/sub-components/chronos/units/month.js +0 -63
  590. package/esm2015/src/datepicker/sub-components/chronos/units/offset.js +0 -210
  591. package/esm2015/src/datepicker/sub-components/chronos/units/priorities.js +0 -21
  592. package/esm2015/src/datepicker/sub-components/chronos/units/quarter.js +0 -39
  593. package/esm2015/src/datepicker/sub-components/chronos/units/second.js +0 -23
  594. package/esm2015/src/datepicker/sub-components/chronos/units/timestamp.js +0 -28
  595. package/esm2015/src/datepicker/sub-components/chronos/units/timezone.js +0 -19
  596. package/esm2015/src/datepicker/sub-components/chronos/units/week-calendar-utils.js +0 -70
  597. package/esm2015/src/datepicker/sub-components/chronos/units/week-year.js +0 -101
  598. package/esm2015/src/datepicker/sub-components/chronos/units/week.js +0 -58
  599. package/esm2015/src/datepicker/sub-components/chronos/units/year.js +0 -60
  600. package/esm2015/src/datepicker/sub-components/chronos/utils/abs-ceil.js +0 -4
  601. package/esm2015/src/datepicker/sub-components/chronos/utils/abs-round.js +0 -4
  602. package/esm2015/src/datepicker/sub-components/chronos/utils/compare-arrays.js +0 -16
  603. package/esm2015/src/datepicker/sub-components/chronos/utils/date-compare.js +0 -55
  604. package/esm2015/src/datepicker/sub-components/chronos/utils/date-getters.js +0 -67
  605. package/esm2015/src/datepicker/sub-components/chronos/utils/date-setters.js +0 -75
  606. package/esm2015/src/datepicker/sub-components/chronos/utils/defaults.js +0 -11
  607. package/esm2015/src/datepicker/sub-components/chronos/utils/start-end-of.js +0 -57
  608. package/esm2015/src/datepicker/sub-components/chronos/utils/type-checks.js +0 -56
  609. package/esm2015/src/datepicker/sub-components/chronos/utils/zero-fill.js +0 -10
  610. package/esm2015/src/datepicker/sub-components/chronos/utils.js +0 -7
  611. package/esm2015/src/datepicker/sub-components/component-loader/bs-component-ref.class.js +0 -3
  612. package/esm2015/src/datepicker/sub-components/component-loader/component-loader.class.js +0 -272
  613. package/esm2015/src/datepicker/sub-components/component-loader/component-loader.factory.js +0 -32
  614. package/esm2015/src/datepicker/sub-components/component-loader/content-ref.class.js +0 -12
  615. package/esm2015/src/datepicker/sub-components/component-loader/index.js +0 -2
  616. package/esm2015/src/datepicker/sub-components/component-loader/listen-options.model.js +0 -2
  617. package/esm2015/src/datepicker/sub-components/component-loader/public_api.js +0 -5
  618. package/esm2015/src/datepicker/sub-components/mini-ngrx/index.js +0 -2
  619. package/esm2015/src/datepicker/sub-components/mini-ngrx/public_api.js +0 -3
  620. package/esm2015/src/datepicker/sub-components/mini-ngrx/state.class.js +0 -16
  621. package/esm2015/src/datepicker/sub-components/mini-ngrx/store.class.js +0 -43
  622. package/esm2015/src/datepicker/sub-components/positioning/index.js +0 -2
  623. package/esm2015/src/datepicker/sub-components/positioning/models/index.js +0 -2
  624. package/esm2015/src/datepicker/sub-components/positioning/modifiers/arrow.js +0 -56
  625. package/esm2015/src/datepicker/sub-components/positioning/modifiers/flip.js +0 -60
  626. package/esm2015/src/datepicker/sub-components/positioning/modifiers/index.js +0 -6
  627. package/esm2015/src/datepicker/sub-components/positioning/modifiers/initData.js +0 -42
  628. package/esm2015/src/datepicker/sub-components/positioning/modifiers/preventOverflow.js +0 -56
  629. package/esm2015/src/datepicker/sub-components/positioning/modifiers/shift.js +0 -22
  630. package/esm2015/src/datepicker/sub-components/positioning/ng-positioning.js +0 -30
  631. package/esm2015/src/datepicker/sub-components/positioning/positioning.service.js +0 -71
  632. package/esm2015/src/datepicker/sub-components/positioning/public_api.js +0 -3
  633. package/esm2015/src/datepicker/sub-components/positioning/utils/computeAutoPlacement.js +0 -53
  634. package/esm2015/src/datepicker/sub-components/positioning/utils/findCommonOffsetParent.js +0 -40
  635. package/esm2015/src/datepicker/sub-components/positioning/utils/getBordersSize.js +0 -10
  636. package/esm2015/src/datepicker/sub-components/positioning/utils/getBoundaries.js +0 -56
  637. package/esm2015/src/datepicker/sub-components/positioning/utils/getBoundingClientRect.js +0 -55
  638. package/esm2015/src/datepicker/sub-components/positioning/utils/getClientRect.js +0 -4
  639. package/esm2015/src/datepicker/sub-components/positioning/utils/getFixedPositionOffsetParent.js +0 -17
  640. package/esm2015/src/datepicker/sub-components/positioning/utils/getOffsetParent.js +0 -32
  641. package/esm2015/src/datepicker/sub-components/positioning/utils/getOffsetRectRelativeToArbitraryNode.js +0 -51
  642. package/esm2015/src/datepicker/sub-components/positioning/utils/getOffsets.js +0 -11
  643. package/esm2015/src/datepicker/sub-components/positioning/utils/getOppositePlacement.js +0 -8
  644. package/esm2015/src/datepicker/sub-components/positioning/utils/getOppositeVariation.js +0 -13
  645. package/esm2015/src/datepicker/sub-components/positioning/utils/getOuterSizes.js +0 -14
  646. package/esm2015/src/datepicker/sub-components/positioning/utils/getParentNode.js +0 -10
  647. package/esm2015/src/datepicker/sub-components/positioning/utils/getReferenceOffsets.js +0 -13
  648. package/esm2015/src/datepicker/sub-components/positioning/utils/getRoot.js +0 -10
  649. package/esm2015/src/datepicker/sub-components/positioning/utils/getScroll.js +0 -14
  650. package/esm2015/src/datepicker/sub-components/positioning/utils/getScrollParent.js +0 -26
  651. package/esm2015/src/datepicker/sub-components/positioning/utils/getStyleComputedProperty.js +0 -13
  652. package/esm2015/src/datepicker/sub-components/positioning/utils/getTargetOffsets.js +0 -30
  653. package/esm2015/src/datepicker/sub-components/positioning/utils/getViewportOffsetRectRelativeToArtbitraryNode.js +0 -19
  654. package/esm2015/src/datepicker/sub-components/positioning/utils/getWindowSizes.js +0 -18
  655. package/esm2015/src/datepicker/sub-components/positioning/utils/includeScroll.js +0 -15
  656. package/esm2015/src/datepicker/sub-components/positioning/utils/index.js +0 -24
  657. package/esm2015/src/datepicker/sub-components/positioning/utils/isBrowser.js +0 -2
  658. package/esm2015/src/datepicker/sub-components/positioning/utils/isFixed.js +0 -16
  659. package/esm2015/src/datepicker/sub-components/positioning/utils/isIE.js +0 -16
  660. package/esm2015/src/datepicker/sub-components/positioning/utils/isModifierEnabled.js +0 -10
  661. package/esm2015/src/datepicker/sub-components/positioning/utils/isNumeric.js +0 -7
  662. package/esm2015/src/datepicker/sub-components/positioning/utils/isOffsetContainer.js +0 -9
  663. package/esm2015/src/datepicker/sub-components/positioning/utils/setStyles.js +0 -17
  664. package/esm2015/src/datepicker/sub-components/positioning/utils/updateContainerClass.js +0 -22
  665. package/esm2015/src/datepicker/sub-components/tooltip/index.js +0 -2
  666. package/esm2015/src/datepicker/sub-components/tooltip/public_api.js +0 -5
  667. package/esm2015/src/datepicker/sub-components/tooltip/tooltip-container.component.js +0 -63
  668. package/esm2015/src/datepicker/sub-components/tooltip/tooltip.config.js +0 -23
  669. package/esm2015/src/datepicker/sub-components/tooltip/tooltip.directive.js +0 -282
  670. package/esm2015/src/datepicker/sub-components/tooltip/tooltip.module.js +0 -23
  671. package/esm2015/src/datepicker/sub-components/utils/decorators.js +0 -25
  672. package/esm2015/src/datepicker/sub-components/utils/facade/browser.js +0 -24
  673. package/esm2015/src/datepicker/sub-components/utils/index.js +0 -2
  674. package/esm2015/src/datepicker/sub-components/utils/linked-list.class.js +0 -240
  675. package/esm2015/src/datepicker/sub-components/utils/public_api.js +0 -11
  676. package/esm2015/src/datepicker/sub-components/utils/theme-provider.js +0 -35
  677. package/esm2015/src/datepicker/sub-components/utils/trigger.class.js +0 -10
  678. package/esm2015/src/datepicker/sub-components/utils/triggers.js +0 -110
  679. package/esm2015/src/datepicker/sub-components/utils/utils.class.js +0 -21
  680. package/esm2015/src/datepicker/sub-components/utils/warn-once.js +0 -12
  681. package/esm2015/src/datepicker/themes/bs/bs-calendar-layout.component.js +0 -25
  682. package/esm2015/src/datepicker/themes/bs/bs-current-date-view.component.js +0 -13
  683. package/esm2015/src/datepicker/themes/bs/bs-custom-dates-view.component.js +0 -44
  684. package/esm2015/src/datepicker/themes/bs/bs-datepicker-container.component.js +0 -152
  685. package/esm2015/src/datepicker/themes/bs/bs-datepicker-day-decorator.directive.js +0 -47
  686. package/esm2015/src/datepicker/themes/bs/bs-datepicker-inline-container.component.js +0 -36
  687. package/esm2015/src/datepicker/themes/bs/bs-datepicker-navigation-view.component.js +0 -63
  688. package/esm2015/src/datepicker/themes/bs/bs-daterangepicker-container.component.js +0 -195
  689. package/esm2015/src/datepicker/themes/bs/bs-daterangepicker-inline-container.component.js +0 -36
  690. package/esm2015/src/datepicker/themes/bs/bs-days-calendar-view.component.js +0 -162
  691. package/esm2015/src/datepicker/themes/bs/bs-months-calendar-view.component.js +0 -60
  692. package/esm2015/src/datepicker/themes/bs/bs-timepicker-view.component.js +0 -34
  693. package/esm2015/src/datepicker/themes/bs/bs-years-calendar-view.component.js +0 -61
  694. package/esm2015/src/datepicker/utils/bs-calendar-utils.js +0 -43
  695. package/esm2015/src/datepicker/utils/matrix-utils.js +0 -14
  696. package/esm2015/src/datepicker/yearpicker.component.js +0 -90
  697. package/fesm2015/mis-crystal-design-system-src-datepicker.js.map +0 -1
  698. package/src/datepicker/base/bs-datepicker-container.d.ts +0 -44
  699. package/src/datepicker/bs-datepicker-inline.component.d.ts +0 -61
  700. package/src/datepicker/bs-datepicker-inline.config.d.ts +0 -3
  701. package/src/datepicker/bs-datepicker-input.directive.d.ts +0 -30
  702. package/src/datepicker/bs-datepicker.component.d.ts +0 -123
  703. package/src/datepicker/bs-datepicker.config.d.ts +0 -140
  704. package/src/datepicker/bs-datepicker.module.d.ts +0 -4
  705. package/src/datepicker/bs-daterangepicker-inline.component.d.ts +0 -61
  706. package/src/datepicker/bs-daterangepicker-inline.config.d.ts +0 -6
  707. package/src/datepicker/bs-daterangepicker-input.directive.d.ts +0 -30
  708. package/src/datepicker/bs-daterangepicker.component.d.ts +0 -115
  709. package/src/datepicker/bs-daterangepicker.config.d.ts +0 -4
  710. package/src/datepicker/bs-locale.service.d.ts +0 -10
  711. package/src/datepicker/date-formatter.d.ts +0 -3
  712. package/src/datepicker/datepicker-animations.d.ts +0 -3
  713. package/src/datepicker/datepicker-inner.component.d.ts +0 -75
  714. package/src/datepicker/datepicker.component.d.ts +0 -78
  715. package/src/datepicker/datepicker.config.d.ts +0 -19
  716. package/src/datepicker/datepicker.module.d.ts +0 -4
  717. package/src/datepicker/daypicker.component.d.ts +0 -14
  718. package/src/datepicker/engine/calc-days-calendar.d.ts +0 -2
  719. package/src/datepicker/engine/flag-days-calendar.d.ts +0 -17
  720. package/src/datepicker/engine/flag-months-calendar.d.ts +0 -12
  721. package/src/datepicker/engine/flag-years-calendar.d.ts +0 -12
  722. package/src/datepicker/engine/format-days-calendar.d.ts +0 -4
  723. package/src/datepicker/engine/format-months-calendar.d.ts +0 -2
  724. package/src/datepicker/engine/format-years-calendar.d.ts +0 -4
  725. package/src/datepicker/engine/view-mode.d.ts +0 -2
  726. package/src/datepicker/models/index.d.ts +0 -102
  727. package/src/datepicker/monthpicker.component.d.ts +0 -11
  728. package/src/datepicker/package.json +0 -14
  729. package/src/datepicker/public_api.d.ts +0 -26
  730. package/src/datepicker/reducer/_defaults.d.ts +0 -2
  731. package/src/datepicker/reducer/bs-datepicker.actions.d.ts +0 -43
  732. package/src/datepicker/reducer/bs-datepicker.effects.d.ts +0 -38
  733. package/src/datepicker/reducer/bs-datepicker.reducer.d.ts +0 -3
  734. package/src/datepicker/reducer/bs-datepicker.state.d.ts +0 -43
  735. package/src/datepicker/reducer/bs-datepicker.store.d.ts +0 -5
  736. package/src/datepicker/sub-components/chronos/create/check-overflow.d.ts +0 -2
  737. package/src/datepicker/sub-components/chronos/create/clone.d.ts +0 -1
  738. package/src/datepicker/sub-components/chronos/create/date-from-array.d.ts +0 -2
  739. package/src/datepicker/sub-components/chronos/create/from-anything.d.ts +0 -4
  740. package/src/datepicker/sub-components/chronos/create/from-array.d.ts +0 -2
  741. package/src/datepicker/sub-components/chronos/create/from-object.d.ts +0 -2
  742. package/src/datepicker/sub-components/chronos/create/from-string-and-array.d.ts +0 -2
  743. package/src/datepicker/sub-components/chronos/create/from-string-and-format.d.ts +0 -4
  744. package/src/datepicker/sub-components/chronos/create/from-string.d.ts +0 -4
  745. package/src/datepicker/sub-components/chronos/create/local.d.ts +0 -3
  746. package/src/datepicker/sub-components/chronos/create/parsing-flags.d.ts +0 -2
  747. package/src/datepicker/sub-components/chronos/create/parsing.types.d.ts +0 -64
  748. package/src/datepicker/sub-components/chronos/create/valid.d.ts +0 -6
  749. package/src/datepicker/sub-components/chronos/duration/bubble.d.ts +0 -4
  750. package/src/datepicker/sub-components/chronos/duration/constructor.d.ts +0 -21
  751. package/src/datepicker/sub-components/chronos/duration/create.d.ts +0 -8
  752. package/src/datepicker/sub-components/chronos/duration/humanize.d.ts +0 -5
  753. package/src/datepicker/sub-components/chronos/duration/valid.d.ts +0 -2
  754. package/src/datepicker/sub-components/chronos/format/format.d.ts +0 -11
  755. package/src/datepicker/sub-components/chronos/format.d.ts +0 -5
  756. package/src/datepicker/sub-components/chronos/i18n/ar.d.ts +0 -2
  757. package/src/datepicker/sub-components/chronos/i18n/bg.d.ts +0 -2
  758. package/src/datepicker/sub-components/chronos/i18n/ca.d.ts +0 -2
  759. package/src/datepicker/sub-components/chronos/i18n/cs.d.ts +0 -2
  760. package/src/datepicker/sub-components/chronos/i18n/da.d.ts +0 -2
  761. package/src/datepicker/sub-components/chronos/i18n/de.d.ts +0 -2
  762. package/src/datepicker/sub-components/chronos/i18n/en-gb.d.ts +0 -2
  763. package/src/datepicker/sub-components/chronos/i18n/es-do.d.ts +0 -2
  764. package/src/datepicker/sub-components/chronos/i18n/es-us.d.ts +0 -2
  765. package/src/datepicker/sub-components/chronos/i18n/es.d.ts +0 -2
  766. package/src/datepicker/sub-components/chronos/i18n/et.d.ts +0 -2
  767. package/src/datepicker/sub-components/chronos/i18n/fi.d.ts +0 -2
  768. package/src/datepicker/sub-components/chronos/i18n/fr.d.ts +0 -2
  769. package/src/datepicker/sub-components/chronos/i18n/gl.d.ts +0 -2
  770. package/src/datepicker/sub-components/chronos/i18n/he.d.ts +0 -2
  771. package/src/datepicker/sub-components/chronos/i18n/hi.d.ts +0 -2
  772. package/src/datepicker/sub-components/chronos/i18n/hr.d.ts +0 -2
  773. package/src/datepicker/sub-components/chronos/i18n/hu.d.ts +0 -2
  774. package/src/datepicker/sub-components/chronos/i18n/id.d.ts +0 -2
  775. package/src/datepicker/sub-components/chronos/i18n/it.d.ts +0 -2
  776. package/src/datepicker/sub-components/chronos/i18n/ja.d.ts +0 -2
  777. package/src/datepicker/sub-components/chronos/i18n/ka.d.ts +0 -2
  778. package/src/datepicker/sub-components/chronos/i18n/kk.d.ts +0 -2
  779. package/src/datepicker/sub-components/chronos/i18n/ko.d.ts +0 -2
  780. package/src/datepicker/sub-components/chronos/i18n/lt.d.ts +0 -2
  781. package/src/datepicker/sub-components/chronos/i18n/lv.d.ts +0 -2
  782. package/src/datepicker/sub-components/chronos/i18n/mn.d.ts +0 -2
  783. package/src/datepicker/sub-components/chronos/i18n/nb.d.ts +0 -2
  784. package/src/datepicker/sub-components/chronos/i18n/nl-be.d.ts +0 -2
  785. package/src/datepicker/sub-components/chronos/i18n/nl.d.ts +0 -2
  786. package/src/datepicker/sub-components/chronos/i18n/pl.d.ts +0 -2
  787. package/src/datepicker/sub-components/chronos/i18n/pt-br.d.ts +0 -2
  788. package/src/datepicker/sub-components/chronos/i18n/ro.d.ts +0 -2
  789. package/src/datepicker/sub-components/chronos/i18n/ru.d.ts +0 -2
  790. package/src/datepicker/sub-components/chronos/i18n/sk.d.ts +0 -2
  791. package/src/datepicker/sub-components/chronos/i18n/sl.d.ts +0 -2
  792. package/src/datepicker/sub-components/chronos/i18n/sq.d.ts +0 -2
  793. package/src/datepicker/sub-components/chronos/i18n/sv.d.ts +0 -2
  794. package/src/datepicker/sub-components/chronos/i18n/th-be.d.ts +0 -2
  795. package/src/datepicker/sub-components/chronos/i18n/th.d.ts +0 -2
  796. package/src/datepicker/sub-components/chronos/i18n/tr.d.ts +0 -2
  797. package/src/datepicker/sub-components/chronos/i18n/uk.d.ts +0 -2
  798. package/src/datepicker/sub-components/chronos/i18n/vi.d.ts +0 -2
  799. package/src/datepicker/sub-components/chronos/i18n/zh-cn.d.ts +0 -2
  800. package/src/datepicker/sub-components/chronos/index.d.ts +0 -1
  801. package/src/datepicker/sub-components/chronos/locale/calendar.d.ts +0 -8
  802. package/src/datepicker/sub-components/chronos/locale/locale.class.d.ts +0 -143
  803. package/src/datepicker/sub-components/chronos/locale/locale.defaults.d.ts +0 -11
  804. package/src/datepicker/sub-components/chronos/locale/locales.d.ts +0 -7
  805. package/src/datepicker/sub-components/chronos/moment/add-subtract.d.ts +0 -5
  806. package/src/datepicker/sub-components/chronos/moment/calendar.d.ts +0 -15
  807. package/src/datepicker/sub-components/chronos/moment/diff.d.ts +0 -3
  808. package/src/datepicker/sub-components/chronos/moment/min-max.d.ts +0 -2
  809. package/src/datepicker/sub-components/chronos/parse/regex.d.ts +0 -22
  810. package/src/datepicker/sub-components/chronos/parse/token.d.ts +0 -5
  811. package/src/datepicker/sub-components/chronos/public_api.d.ts +0 -57
  812. package/src/datepicker/sub-components/chronos/test/chain.d.ts +0 -214
  813. package/src/datepicker/sub-components/chronos/types.d.ts +0 -36
  814. package/src/datepicker/sub-components/chronos/units/aliases.d.ts +0 -7
  815. package/src/datepicker/sub-components/chronos/units/constants.d.ts +0 -9
  816. package/src/datepicker/sub-components/chronos/units/day-of-month.d.ts +0 -1
  817. package/src/datepicker/sub-components/chronos/units/day-of-week.d.ts +0 -20
  818. package/src/datepicker/sub-components/chronos/units/day-of-year.d.ts +0 -3
  819. package/src/datepicker/sub-components/chronos/units/hour.d.ts +0 -1
  820. package/src/datepicker/sub-components/chronos/units/index.d.ts +0 -18
  821. package/src/datepicker/sub-components/chronos/units/millisecond.d.ts +0 -1
  822. package/src/datepicker/sub-components/chronos/units/minute.d.ts +0 -1
  823. package/src/datepicker/sub-components/chronos/units/month.d.ts +0 -2
  824. package/src/datepicker/sub-components/chronos/units/offset.d.ts +0 -10
  825. package/src/datepicker/sub-components/chronos/units/priorities.d.ts +0 -1
  826. package/src/datepicker/sub-components/chronos/units/quarter.d.ts +0 -3
  827. package/src/datepicker/sub-components/chronos/units/second.d.ts +0 -1
  828. package/src/datepicker/sub-components/chronos/units/timestamp.d.ts +0 -1
  829. package/src/datepicker/sub-components/chronos/units/timezone.d.ts +0 -3
  830. package/src/datepicker/sub-components/chronos/units/week-calendar-utils.d.ts +0 -9
  831. package/src/datepicker/sub-components/chronos/units/week-year.d.ts +0 -8
  832. package/src/datepicker/sub-components/chronos/units/week.d.ts +0 -6
  833. package/src/datepicker/sub-components/chronos/units/year.d.ts +0 -4
  834. package/src/datepicker/sub-components/chronos/utils/abs-ceil.d.ts +0 -1
  835. package/src/datepicker/sub-components/chronos/utils/abs-round.d.ts +0 -1
  836. package/src/datepicker/sub-components/chronos/utils/compare-arrays.d.ts +0 -1
  837. package/src/datepicker/sub-components/chronos/utils/date-compare.d.ts +0 -9
  838. package/src/datepicker/sub-components/chronos/utils/date-getters.d.ts +0 -18
  839. package/src/datepicker/sub-components/chronos/utils/date-setters.d.ts +0 -12
  840. package/src/datepicker/sub-components/chronos/utils/defaults.d.ts +0 -1
  841. package/src/datepicker/sub-components/chronos/utils/start-end-of.d.ts +0 -3
  842. package/src/datepicker/sub-components/chronos/utils/type-checks.d.ts +0 -12
  843. package/src/datepicker/sub-components/chronos/utils/zero-fill.d.ts +0 -1
  844. package/src/datepicker/sub-components/chronos/utils.d.ts +0 -2
  845. package/src/datepicker/sub-components/component-loader/bs-component-ref.class.d.ts +0 -5
  846. package/src/datepicker/sub-components/component-loader/component-loader.class.d.ts +0 -75
  847. package/src/datepicker/sub-components/component-loader/component-loader.factory.d.ts +0 -18
  848. package/src/datepicker/sub-components/component-loader/content-ref.class.d.ts +0 -7
  849. package/src/datepicker/sub-components/component-loader/index.d.ts +0 -1
  850. package/src/datepicker/sub-components/component-loader/listen-options.model.d.ts +0 -11
  851. package/src/datepicker/sub-components/component-loader/public_api.d.ts +0 -4
  852. package/src/datepicker/sub-components/mini-ngrx/index.d.ts +0 -1
  853. package/src/datepicker/sub-components/mini-ngrx/public_api.d.ts +0 -7
  854. package/src/datepicker/sub-components/mini-ngrx/state.class.d.ts +0 -8
  855. package/src/datepicker/sub-components/mini-ngrx/store.class.d.ts +0 -16
  856. package/src/datepicker/sub-components/positioning/index.d.ts +0 -1
  857. package/src/datepicker/sub-components/positioning/models/index.d.ts +0 -41
  858. package/src/datepicker/sub-components/positioning/modifiers/arrow.d.ts +0 -2
  859. package/src/datepicker/sub-components/positioning/modifiers/flip.d.ts +0 -2
  860. package/src/datepicker/sub-components/positioning/modifiers/index.d.ts +0 -5
  861. package/src/datepicker/sub-components/positioning/modifiers/initData.d.ts +0 -2
  862. package/src/datepicker/sub-components/positioning/modifiers/preventOverflow.d.ts +0 -2
  863. package/src/datepicker/sub-components/positioning/modifiers/shift.d.ts +0 -2
  864. package/src/datepicker/sub-components/positioning/ng-positioning.d.ts +0 -8
  865. package/src/datepicker/sub-components/positioning/positioning.service.d.ts +0 -45
  866. package/src/datepicker/sub-components/positioning/public_api.d.ts +0 -2
  867. package/src/datepicker/sub-components/positioning/utils/computeAutoPlacement.d.ts +0 -2
  868. package/src/datepicker/sub-components/positioning/utils/findCommonOffsetParent.d.ts +0 -1
  869. package/src/datepicker/sub-components/positioning/utils/getBordersSize.d.ts +0 -4
  870. package/src/datepicker/sub-components/positioning/utils/getBoundaries.d.ts +0 -1
  871. package/src/datepicker/sub-components/positioning/utils/getBoundingClientRect.d.ts +0 -2
  872. package/src/datepicker/sub-components/positioning/utils/getClientRect.d.ts +0 -5
  873. package/src/datepicker/sub-components/positioning/utils/getFixedPositionOffsetParent.d.ts +0 -4
  874. package/src/datepicker/sub-components/positioning/utils/getOffsetParent.d.ts +0 -1
  875. package/src/datepicker/sub-components/positioning/utils/getOffsetRectRelativeToArbitraryNode.d.ts +0 -2
  876. package/src/datepicker/sub-components/positioning/utils/getOffsets.d.ts +0 -2
  877. package/src/datepicker/sub-components/positioning/utils/getOppositePlacement.d.ts +0 -4
  878. package/src/datepicker/sub-components/positioning/utils/getOppositeVariation.d.ts +0 -4
  879. package/src/datepicker/sub-components/positioning/utils/getOuterSizes.d.ts +0 -7
  880. package/src/datepicker/sub-components/positioning/utils/getParentNode.d.ts +0 -4
  881. package/src/datepicker/sub-components/positioning/utils/getReferenceOffsets.d.ts +0 -2
  882. package/src/datepicker/sub-components/positioning/utils/getRoot.d.ts +0 -4
  883. package/src/datepicker/sub-components/positioning/utils/getScroll.d.ts +0 -4
  884. package/src/datepicker/sub-components/positioning/utils/getScrollParent.d.ts +0 -1
  885. package/src/datepicker/sub-components/positioning/utils/getStyleComputedProperty.d.ts +0 -4
  886. package/src/datepicker/sub-components/positioning/utils/getTargetOffsets.d.ts +0 -2
  887. package/src/datepicker/sub-components/positioning/utils/getViewportOffsetRectRelativeToArtbitraryNode.d.ts +0 -2
  888. package/src/datepicker/sub-components/positioning/utils/getWindowSizes.d.ts +0 -4
  889. package/src/datepicker/sub-components/positioning/utils/includeScroll.d.ts +0 -2
  890. package/src/datepicker/sub-components/positioning/utils/index.d.ts +0 -23
  891. package/src/datepicker/sub-components/positioning/utils/isBrowser.d.ts +0 -1
  892. package/src/datepicker/sub-components/positioning/utils/isFixed.d.ts +0 -1
  893. package/src/datepicker/sub-components/positioning/utils/isIE.d.ts +0 -1
  894. package/src/datepicker/sub-components/positioning/utils/isModifierEnabled.d.ts +0 -4
  895. package/src/datepicker/sub-components/positioning/utils/isNumeric.d.ts +0 -4
  896. package/src/datepicker/sub-components/positioning/utils/isOffsetContainer.d.ts +0 -1
  897. package/src/datepicker/sub-components/positioning/utils/setStyles.d.ts +0 -5
  898. package/src/datepicker/sub-components/positioning/utils/updateContainerClass.d.ts +0 -6
  899. package/src/datepicker/sub-components/tooltip/index.d.ts +0 -1
  900. package/src/datepicker/sub-components/tooltip/public_api.d.ts +0 -4
  901. package/src/datepicker/sub-components/tooltip/tooltip-container.component.d.ts +0 -14
  902. package/src/datepicker/sub-components/tooltip/tooltip.config.d.ts +0 -13
  903. package/src/datepicker/sub-components/tooltip/tooltip.directive.d.ts +0 -109
  904. package/src/datepicker/sub-components/tooltip/tooltip.module.d.ts +0 -4
  905. package/src/datepicker/sub-components/utils/decorators.d.ts +0 -1
  906. package/src/datepicker/sub-components/utils/facade/browser.d.ts +0 -23
  907. package/src/datepicker/sub-components/utils/index.d.ts +0 -1
  908. package/src/datepicker/sub-components/utils/linked-list.class.d.ts +0 -26
  909. package/src/datepicker/sub-components/utils/public_api.d.ts +0 -10
  910. package/src/datepicker/sub-components/utils/theme-provider.d.ts +0 -2
  911. package/src/datepicker/sub-components/utils/trigger.class.d.ts +0 -6
  912. package/src/datepicker/sub-components/utils/triggers.d.ts +0 -18
  913. package/src/datepicker/sub-components/utils/utils.class.d.ts +0 -4
  914. package/src/datepicker/sub-components/utils/warn-once.d.ts +0 -1
  915. package/src/datepicker/themes/bs/bs-calendar-layout.component.d.ts +0 -2
  916. package/src/datepicker/themes/bs/bs-current-date-view.component.d.ts +0 -3
  917. package/src/datepicker/themes/bs/bs-custom-dates-view.component.d.ts +0 -14
  918. package/src/datepicker/themes/bs/bs-datepicker-container.component.d.ts +0 -33
  919. package/src/datepicker/themes/bs/bs-datepicker-day-decorator.directive.d.ts +0 -11
  920. package/src/datepicker/themes/bs/bs-datepicker-inline-container.component.d.ts +0 -10
  921. package/src/datepicker/themes/bs/bs-datepicker-navigation-view.component.d.ts +0 -9
  922. package/src/datepicker/themes/bs/bs-daterangepicker-container.component.d.ts +0 -37
  923. package/src/datepicker/themes/bs/bs-daterangepicker-inline-container.component.d.ts +0 -10
  924. package/src/datepicker/themes/bs/bs-days-calendar-view.component.d.ts +0 -23
  925. package/src/datepicker/themes/bs/bs-months-calendar-view.component.d.ts +0 -13
  926. package/src/datepicker/themes/bs/bs-timepicker-view.component.d.ts +0 -5
  927. package/src/datepicker/themes/bs/bs-years-calendar-view.component.d.ts +0 -13
  928. package/src/datepicker/utils/bs-calendar-utils.d.ts +0 -10
  929. package/src/datepicker/utils/matrix-utils.d.ts +0 -9
  930. package/src/datepicker/yearpicker.component.d.ts +0 -11
@@ -1 +1 @@
1
- {"version":3,"file":"mis-crystal-design-system.umd.js","sources":["../../../projects/mis-components/src/button/button.component.ts","../../../projects/mis-components/src/button/button.module.ts","../../../projects/mis-components/src/checkbox/checkbox.component.ts","../../../projects/mis-components/src/checkbox/checkbox.module.ts","../../../projects/mis-components/src/chip/chip.component.ts","../../../projects/mis-components/src/chip/chip.module.ts","../../../projects/mis-components/src/drawer/drawer-ref.ts","../../../projects/mis-components/src/drawer/drawer-body/drawer-body.component.ts","../../../projects/mis-components/src/drawer/drawer-constants.ts","../../../projects/mis-components/src/drawer/drawer.service.ts","../../../projects/mis-components/src/drawer/drawer.module.ts","../../../projects/mis-components/src/dropdown/dropdown.component.ts","../../../projects/mis-components/src/dropdown/dropdown.module.ts","../../../projects/mis-components/src/fab/fab.component.ts","../../../projects/mis-components/src/fab/fab.module.ts","../../../projects/mis-components/src/loader/loader.component.ts","../../../projects/mis-components/src/loader/loader.module.ts","../../../node_modules/tslib/tslib.es6.js","../../../projects/mis-components/src/multi-select-dropdown/multi-select-dropdown.component.ts","../../../projects/mis-components/src/multi-select-dropdown/multi-select-dropdown.module.ts","../../../projects/mis-components/src/nested-multi-select-dropdown/nested-multi-select-dropdown.component.ts","../../../projects/mis-components/src/nested-multi-select-dropdown/nested-multi-select-dropdown.module.ts","../../../projects/mis-components/src/radio-button/radio-button.component.ts","../../../projects/mis-components/src/radio-button/radio-button.module.ts","../../../projects/mis-components/src/switch/switch.component.ts","../../../projects/mis-components/src/switch/switch.module.ts","../../../projects/mis-components/src/table/table.component.ts","../../../projects/mis-components/src/table/custom-table-cell.directive.ts","../../../projects/mis-components/src/table/sub-table/sub-table.component.ts","../../../projects/mis-components/src/table/filter/filter.component.ts","../../../projects/mis-components/src/table/table.module.ts","../../../projects/mis-components/src/toast/toast.data.service.ts","../../../projects/mis-components/src/toast/toast.component.ts","../../../projects/mis-components/src/toast/toast.service.ts","../../../projects/mis-components/src/toast/toast.module.ts","../../../projects/mis-components/src/tooltip/tooltip.component.ts","../../../projects/mis-components/src/tooltip/tooltip.directive.ts","../../../projects/mis-components/src/tooltip/tooltip.module.ts","../../../projects/mis-components/src/datepicker/bs-datepicker.config.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/utils.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/utils/type-checks.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/units/aliases.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/units/constants.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/utils/zero-fill.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/format/format.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/create/date-from-array.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/utils/date-getters.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/parse/regex.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/parse/token.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/units/priorities.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/units/day-of-month.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/create/parsing-flags.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/units/year.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/units/month.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/utils/date-setters.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/create/clone.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/utils/start-end-of.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/units/day-of-year.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/units/week-calendar-utils.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/locale/locale.class.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/locale/calendar.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/locale/locale.defaults.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/utils/compare-arrays.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/units/week.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/units/week-year.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/units/timezone.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/units/timestamp.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/units/second.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/units/quarter.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/units/offset.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/units/minute.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/units/millisecond.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/units/hour.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/locale/locales.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/duration/valid.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/utils/abs-ceil.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/duration/bubble.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/duration/humanize.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/duration/constructor.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/create/valid.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/create/from-string.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/format.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/utils/defaults.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/create/from-array.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/create/check-overflow.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/create/from-string-and-format.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/create/from-string-and-array.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/create/from-object.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/create/from-anything.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/create/local.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/utils/abs-round.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/utils/date-compare.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/duration/create.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/moment/add-subtract.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/units/day-of-week.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/ar.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/bg.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/ca.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/cs.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/da.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/de.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/en-gb.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/es-do.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/es.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/es-us.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/et.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/fi.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/fr.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/gl.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/he.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/hi.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/hu.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/hr.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/id.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/it.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/ja.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/ka.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/kk.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/ko.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/lt.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/lv.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/mn.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/nb.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/nl-be.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/nl.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/pl.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/pt-br.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/ro.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/ru.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/sk.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/sl.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/sq.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/sv.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/th.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/th-be.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/tr.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/uk.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/vi.ts","../../../projects/mis-components/src/datepicker/sub-components/chronos/i18n/zh-cn.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/utils/getStyleComputedProperty.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/utils/getParentNode.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/utils/getScrollParent.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/utils/isBrowser.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/utils/isIE.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/utils/getOffsetParent.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/utils/isOffsetContainer.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/utils/getRoot.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/utils/findCommonOffsetParent.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/utils/getBordersSize.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/utils/getWindowSizes.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/utils/getScroll.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/utils/getClientRect.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/utils/getBoundingClientRect.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/utils/includeScroll.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/utils/getOffsetRectRelativeToArbitraryNode.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/utils/getViewportOffsetRectRelativeToArtbitraryNode.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/utils/isFixed.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/utils/getFixedPositionOffsetParent.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/utils/getBoundaries.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/utils/computeAutoPlacement.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/utils/getOffsets.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/utils/getOppositePlacement.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/utils/getOppositeVariation.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/utils/getOuterSizes.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/utils/getReferenceOffsets.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/utils/getTargetOffsets.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/utils/isModifierEnabled.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/utils/isNumeric.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/utils/updateContainerClass.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/utils/setStyles.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/modifiers/arrow.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/modifiers/flip.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/modifiers/initData.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/modifiers/preventOverflow.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/modifiers/shift.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/ng-positioning.ts","../../../projects/mis-components/src/datepicker/sub-components/positioning/positioning.service.ts","../../../projects/mis-components/src/datepicker/datepicker-animations.ts","../../../projects/mis-components/src/datepicker/base/bs-datepicker-container.ts","../../../projects/mis-components/src/datepicker/reducer/bs-datepicker.actions.ts","../../../projects/mis-components/src/datepicker/bs-locale.service.ts","../../../projects/mis-components/src/datepicker/reducer/bs-datepicker.effects.ts","../../../projects/mis-components/src/datepicker/sub-components/mini-ngrx/state.class.ts","../../../projects/mis-components/src/datepicker/sub-components/mini-ngrx/store.class.ts","../../../projects/mis-components/src/datepicker/reducer/_defaults.ts","../../../projects/mis-components/src/datepicker/reducer/bs-datepicker.state.ts","../../../projects/mis-components/src/datepicker/utils/bs-calendar-utils.ts","../../../projects/mis-components/src/datepicker/utils/matrix-utils.ts","../../../projects/mis-components/src/datepicker/engine/calc-days-calendar.ts","../../../projects/mis-components/src/datepicker/engine/format-days-calendar.ts","../../../projects/mis-components/src/datepicker/engine/flag-days-calendar.ts","../../../projects/mis-components/src/datepicker/engine/view-mode.ts","../../../projects/mis-components/src/datepicker/engine/format-months-calendar.ts","../../../projects/mis-components/src/datepicker/engine/flag-months-calendar.ts","../../../projects/mis-components/src/datepicker/engine/format-years-calendar.ts","../../../projects/mis-components/src/datepicker/engine/flag-years-calendar.ts","../../../projects/mis-components/src/datepicker/reducer/bs-datepicker.reducer.ts","../../../projects/mis-components/src/datepicker/reducer/bs-datepicker.store.ts","../../../projects/mis-components/src/datepicker/themes/bs/bs-datepicker-container.component.ts","../../../projects/mis-components/src/datepicker/sub-components/component-loader/bs-component-ref.class.ts","../../../projects/mis-components/src/datepicker/sub-components/utils/trigger.class.ts","../../../projects/mis-components/src/datepicker/sub-components/utils/triggers.ts","../../../projects/mis-components/src/datepicker/sub-components/utils/facade/browser.ts","../../../projects/mis-components/src/datepicker/sub-components/utils/theme-provider.ts","../../../projects/mis-components/src/datepicker/sub-components/utils/linked-list.class.ts","../../../projects/mis-components/src/datepicker/sub-components/utils/decorators.ts","../../../projects/mis-components/src/datepicker/sub-components/utils/utils.class.ts","../../../projects/mis-components/src/datepicker/sub-components/utils/warn-once.ts","../../../projects/mis-components/src/datepicker/sub-components/component-loader/content-ref.class.ts","../../../projects/mis-components/src/datepicker/sub-components/component-loader/component-loader.class.ts","../../../projects/mis-components/src/datepicker/sub-components/component-loader/component-loader.factory.ts","../../../projects/mis-components/src/datepicker/bs-datepicker.component.ts","../../../projects/mis-components/src/datepicker/bs-datepicker-inline.config.ts","../../../projects/mis-components/src/datepicker/themes/bs/bs-datepicker-inline-container.component.ts","../../../projects/mis-components/src/datepicker/bs-datepicker-inline.component.ts","../../../projects/mis-components/src/datepicker/bs-daterangepicker-inline.config.ts","../../../projects/mis-components/src/datepicker/themes/bs/bs-daterangepicker-container.component.ts","../../../projects/mis-components/src/datepicker/themes/bs/bs-daterangepicker-inline-container.component.ts","../../../projects/mis-components/src/datepicker/bs-daterangepicker-inline.component.ts","../../../projects/mis-components/src/datepicker/bs-datepicker-input.directive.ts","../../../projects/mis-components/src/datepicker/bs-daterangepicker.config.ts","../../../projects/mis-components/src/datepicker/bs-daterangepicker.component.ts","../../../projects/mis-components/src/datepicker/bs-daterangepicker-input.directive.ts","../../../projects/mis-components/src/datepicker/sub-components/tooltip/tooltip.config.ts","../../../projects/mis-components/src/datepicker/sub-components/tooltip/tooltip-container.component.ts","../../../projects/mis-components/src/datepicker/sub-components/tooltip/tooltip.directive.ts","../../../projects/mis-components/src/datepicker/sub-components/tooltip/tooltip.module.ts","../../../projects/mis-components/src/datepicker/themes/bs/bs-calendar-layout.component.ts","../../../projects/mis-components/src/datepicker/themes/bs/bs-current-date-view.component.ts","../../../projects/mis-components/src/datepicker/themes/bs/bs-custom-dates-view.component.ts","../../../projects/mis-components/src/datepicker/themes/bs/bs-datepicker-day-decorator.directive.ts","../../../projects/mis-components/src/datepicker/models/index.ts","../../../projects/mis-components/src/datepicker/themes/bs/bs-datepicker-navigation-view.component.ts","../../../projects/mis-components/src/datepicker/themes/bs/bs-days-calendar-view.component.ts","../../../projects/mis-components/src/datepicker/themes/bs/bs-months-calendar-view.component.ts","../../../projects/mis-components/src/datepicker/themes/bs/bs-timepicker-view.component.ts","../../../projects/mis-components/src/datepicker/themes/bs/bs-years-calendar-view.component.ts","../../../projects/mis-components/src/datepicker/bs-datepicker.module.ts","../../../projects/mis-components/src/datepicker/date-formatter.ts","../../../projects/mis-components/src/datepicker/datepicker-inner.component.ts","../../../projects/mis-components/src/datepicker/datepicker.config.ts","../../../projects/mis-components/src/datepicker/datepicker.component.ts","../../../projects/mis-components/src/datepicker/daypicker.component.ts","../../../projects/mis-components/src/datepicker/monthpicker.component.ts","../../../projects/mis-components/src/datepicker/yearpicker.component.ts","../../../projects/mis-components/src/datepicker/datepicker.module.ts","../../../projects/mis-components/src/public-api.ts","../../../projects/mis-components/src/mis-crystal-design-system.ts"],"sourcesContent":["import {Component, Input, OnInit, Output, EventEmitter, ContentChild, TemplateRef} from '@angular/core';\n\n@Component({\n selector: 'mis-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss']\n})\nexport class ButtonComponent implements OnInit{\n\n @Input() name: string = 'Enabled'\n @Input() type: 'Solid' | 'Outline' | 'Text' = 'Solid'\n @Input() size: 'Small' | 'Medium' | 'Large' | 'Small-M' | 'Large-M' = 'Medium'\n @Input() width: string = ''\n\n @Input() showIcon: boolean = false\n @Input() iconUrl: string = ''\n @Input() iconPosition: 'Left' | 'Right' = 'Left'\n\n @Input() disabled: boolean = false\n @Input() disableLeftBorderRadius: boolean = false\n @Input() disableRightBorderRadius: boolean = false\n\n /** Emits event when button is clicked */\n @Output() click = new EventEmitter<any>()\n\n constructor(){}\n\n ngOnInit(){}\n\n onClick(event){\n this.click.emit(event)\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ButtonComponent } from './button.component';\n\n@NgModule({\n declarations: [ButtonComponent],\n imports: [CommonModule],\n exports: [ButtonComponent]\n})\nexport class ButtonModule {\n static forRoot(): ModuleWithProviders<ButtonModule> {\n return { ngModule: ButtonModule, providers: [] };\n }\n}\n","import {Component, OnInit, EventEmitter, Input, Output, ViewChild, ElementRef, Renderer2} from '@angular/core';\nimport {AbstractControl, FormControl} from '@angular/forms';\n\n@Component({\n selector: 'mis-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss']\n})\nexport class CheckboxComponent implements OnInit {\n\n public isError: boolean = false\n public isIndeterminate: boolean = false\n\n @ViewChild('input') inputBox: ElementRef\n @Input() set type(value: 'Default' | 'Error') {\n this.isError = value === 'Error';\n }\n @Input() set indeterminate(value: boolean){\n if(value) {\n this.formControl.setValue(true)\n this.valueChange.emit({\n name: this.name,\n value: true\n })\n }\n else{\n this.formControl.setValue(false)\n this.valueChange.emit({\n name: this.name,\n value: false\n })\n }\n this.isIndeterminate = value\n }\n @Input() set checked(value: boolean){\n if(value)this.formControl.setValue(true)\n else this.formControl.setValue(false)\n }\n @Input() set disabled(value: boolean){\n if(value) this.formControl.disable()\n else this.formControl.enable()\n }\n @Input() name: string = ''\n @Input() formControl: AbstractControl = new FormControl()\n @Output() valueChange = new EventEmitter<{name: string, value: boolean}>()\n\n constructor() {}\n ngOnInit() {\n }\n\n toggleState() {\n if(this.isIndeterminate) {\n this.isIndeterminate = false;\n this.formControl.setValue(true)\n } else {\n if(this.formControl.value) this.formControl.setValue(false)\n else this.formControl.setValue(true)\n }\n this.valueChange.emit({\n name: this.name,\n value: this.formControl.value\n });\n }\n\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\nimport { CheckboxComponent } from './checkbox.component';\n\n\n@NgModule({\n declarations: [CheckboxComponent],\n imports: [CommonModule, ReactiveFormsModule],\n exports: [CheckboxComponent]\n})\nexport class CheckboxModule {\n static forRoot(): ModuleWithProviders<CheckboxModule> {\n return { ngModule: CheckboxModule, providers: [] };\n }\n}\n","import {Component, Input, OnInit, Output, EventEmitter} from '@angular/core';\n\n@Component({\n selector: 'mis-chip',\n templateUrl: 'chip.component.html',\n styleUrls: ['chip.component.scss']\n})\nexport class ChipComponent implements OnInit{\n\n @Input() label: string = ''\n @Input() value: any = ''\n @Input() size: 'Small' | 'Medium' | 'Small-M' | 'Medium-M' = 'Medium'\n @Input() iconUrl: string | null = null\n @Input() count: number | null | undefined = null\n @Input() dismissible: boolean = false\n\n @Output() cancel = new EventEmitter<any>()\n constructor() {\n }\n ngOnInit() {\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ChipComponent } from './chip.component';\n\n@NgModule({\n declarations: [ChipComponent],\n imports: [CommonModule],\n exports: [ChipComponent]\n})\nexport class ChipModule {\n static forRoot(): ModuleWithProviders<ChipModule> {\n return { ngModule: ChipModule, providers: [] };\n }\n}\n","/** @format */\n\nimport { OverlayRef } from \"@angular/cdk/overlay\";\nimport { Injectable } from \"@angular/core\";\nimport { Subject } from \"rxjs\";\n\nexport class DrawerRef {\n private _isExpanded = false;\n private afterClosed$ = new Subject<any>();\n afterClosed = this.afterClosed$.asObservable();\n get isExpanded(): boolean {\n return this._isExpanded;\n }\n constructor(public overlay: OverlayRef) {}\n\n close(data?: any): void {\n this.overlay.detach();\n this.overlay.dispose();\n this.afterClosed$.next(data);\n this.afterClosed$.complete();\n }\n\n expand(): void {\n this.overlay.updateSize({ width: \"100%\" });\n this._isExpanded = true;\n }\n\n collapse(): void {\n this.overlay.updateSize({ width: \"422px\" });\n this._isExpanded = false;\n }\n}\n","/** @format */\n\nimport { trigger, transition, style, animate } from \"@angular/animations\";\nimport { ComponentPortal, PortalInjector } from \"@angular/cdk/portal\";\nimport { Component, ComponentFactoryResolver, Injector, OnInit, ViewChild, ViewContainerRef } from \"@angular/core\";\nimport { DrawerRef } from \"../drawer-ref\";\n\n@Component({\n selector: \"mis-drawer-body\",\n templateUrl: \"./drawer-body.component.html\",\n styleUrls: [\"./drawer-body.component.scss\"],\n animations: [\n trigger(\"slideInOut\", [\n transition(\":enter\", [\n style({ transform: \"translateX(100%)\" }),\n animate(\"200ms ease-out\", style({ transform: \"translateX(0%)\" })),\n ]),\n transition(\":leave\", [animate(\"200ms ease-out\", style({ transform: \"translateX(100%)\" }))]),\n ]),\n ],\n})\nexport class DrawerBodyComponent {\n drawerPortal: ComponentPortal<any>;\n constructor(private cfr: ComponentFactoryResolver) {}\n\n @ViewChild(\"place\", { static: false, read: ViewContainerRef }) place: ViewContainerRef;\n\n bindComponent(type: any, injector: PortalInjector) {\n this.initComponent(type, injector);\n }\n\n private initComponent(type: any, injector: PortalInjector) {\n this.drawerPortal = new ComponentPortal(type, this.place, injector);\n }\n\n private createInjector(ref: DrawerRef, inj: Injector): PortalInjector {\n const injectorTokens = new WeakMap([[DrawerRef, ref]]);\n return new PortalInjector(inj, injectorTokens);\n // return Injector.create({ providers: [{ provide: inj, useValue: injectorTokens }] });\n }\n}\n","/** @format */\n\nimport { InjectionToken } from \"@angular/core\";\n\nexport const DRAWER_DATA_VAR = new InjectionToken<any>(\"MISDrawerDataInjectionToken\");\n","/** @format */\n\nimport { Overlay, OverlayConfig, OverlayRef } from \"@angular/cdk/overlay\";\nimport { ComponentPortal, ComponentType, PortalInjector } from \"@angular/cdk/portal\";\nimport { ComponentRef, Injectable, Injector } from \"@angular/core\";\nimport { take } from \"rxjs/operators\";\nimport { DrawerBodyComponent } from \"./drawer-body/drawer-body.component\";\nimport { DrawerRef } from \"./drawer-ref\";\nimport { DRAWER_DATA_VAR } from \"./drawer-constants\";\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class DrawerService {\n drawerRef: DrawerRef;\n componentInstance: ComponentRef<any>;\n\n constructor(private overlay: Overlay, private injector: Injector) { }\n\n show<T, D>(component: ComponentType<T>, data?: D, options?: { width?: string, height?: string }): DrawerRef {\n const positionStrategy = this.overlay.position().global().top(\"0px\").right(\"0px\");\n const { width = '422px', height = '100%' } = options || {};\n const config = new OverlayConfig({\n hasBackdrop: true,\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.noop(),\n width: width,\n height,\n panelClass: \"mis-drawer\",\n backdropClass: \"mis-drawer-overlay\",\n });\n const overlayRef = this.overlay.create(config);\n this.drawerRef = new DrawerRef(overlayRef);\n const injector = this.createInjector(this.drawerRef, this.injector, data);\n const portal = new ComponentPortal(DrawerBodyComponent, null);\n this.componentInstance = overlayRef.attach(portal);\n this.componentInstance.instance.bindComponent(component, injector);\n overlayRef.backdropClick().pipe(take(1)).subscribe(this.hide.bind(this));\n return this.drawerRef;\n }\n\n hide(): void {\n this.drawerRef?.close();\n }\n\n private createInjector<D>(ref: DrawerRef, inj: Injector, data?: D): PortalInjector {\n const injectorTokens = new WeakMap();\n injectorTokens.set(DrawerRef, ref);\n injectorTokens.set(DRAWER_DATA_VAR, data);\n return new PortalInjector(inj, injectorTokens);\n // return Injector.create({ providers: [{ provide: inj, useValue: injectorTokens }] });\n }\n}\n","import { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { DrawerService } from \"./drawer.service\";\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport { DrawerBodyComponent } from \"./drawer-body/drawer-body.component\";\nimport { PortalModule } from \"@angular/cdk/portal\";\n\n@NgModule({\n declarations: [DrawerBodyComponent],\n imports: [CommonModule, OverlayModule, PortalModule],\n entryComponents: [DrawerBodyComponent],\n})\nexport class DrawerModule {\n static forRoot(): ModuleWithProviders<DrawerModule> {\n return {\n ngModule: DrawerModule,\n providers: [DrawerService],\n };\n }\n\n static forChild(): ModuleWithProviders<DrawerModule> {\n return {\n ngModule: DrawerModule,\n providers: [DrawerService],\n };\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnInit,\n Output\n} from '@angular/core';\n\n@Component({\n selector: 'mis-dropdown',\n templateUrl: './dropdown.component.html',\n styleUrls: ['./dropdown.component.scss']\n})\nexport class DropdownComponent implements OnInit {\n\n isOpen = false;\n isSearchInputFocused: boolean = false;\n searchInput: string = '';\n searchData: DropdownItem[] = [];\n\n @Input() data: DropdownItem[] = [];\n @Input() height: string = ''\n @Input() width: string = ''\n @Input() label: string = 'Select';\n\n @Input() dropdownListHeight: string = ''\n @Input() dropdownListWidth: string = ''\n @Input() dropdownListPosition: 'Left' | 'Right' = 'Left'\n\n @Input() searchEnabled: boolean = true;\n @Input() selectedItem: DropdownItem = { value: '', label: '' };\n @Input() noDataMessage: string = 'No Data';\n\n @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n constructor(private eRef: ElementRef) {}\n ngOnInit() {}\n\n @HostListener('document:click', ['$event'])\n clickout(event) {\n const isClickedOutside = !this.eRef.nativeElement.contains(event.target);\n if (isClickedOutside) {\n this.onCancel();\n }\n }\n filterByValue(array: DropdownItem[], string: string) {\n return array.filter(o =>\n o.label.toLowerCase().includes(string.toLowerCase())\n );\n }\n searchInputOnChange(newValue) {\n this.searchInput = newValue;\n if (newValue) {\n this.searchData = this.filterByValue(this.data, newValue);\n } else {\n this.searchData = [];\n this.searchInput = '';\n }\n }\n searchInputFocused(isFocused: boolean) {\n this.isSearchInputFocused = isFocused;\n }\n searchInputCanceled(event) {\n event.stopPropagation();\n this.searchInput = '';\n this.isSearchInputFocused = false;\n }\n toggleDropdown() {\n this.isOpen = !this.isOpen;\n }\n selectItem(item) {\n this.onChange.emit(item);\n this.toggleDropdown();\n }\n onCancel() {\n this.isSearchInputFocused = false;\n this.isOpen = false;\n this.searchInput = '';\n }\n}\nexport interface DropdownItem {\n label: string;\n value: string;\n icon?: string\n}\n","import { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\nimport { DropdownComponent } from './dropdown.component';\n\n@NgModule({\n declarations: [DropdownComponent],\n imports: [CommonModule, FormsModule],\n exports: [DropdownComponent]\n})\nexport class DropdownModule {\n static forRoot(): ModuleWithProviders<DropdownModule> {\n return { ngModule: DropdownModule, providers: [] };\n }\n}\n","/** @format */\n\nimport { Component, ElementRef, HostListener, Input, OnDestroy, OnInit } from \"@angular/core\";\nimport { trigger, transition, style, animate, state } from \"@angular/animations\";\n\nexport type FabOptions = {\n backgroundColorClosed?: string;\n backgroundColorOpened?: string;\n size?: number;\n}\n\nexport type FabItem = {\n label?: string;\n icon: string;\n backgroundColor?: string;\n id?: string;\n click?: () => any;\n}\n\nexport type FabItems = FabItem[]\n\n@Component({\n selector: \"mis-fab\",\n templateUrl: \"./fab.component.html\",\n styleUrls: [\"./fab.component.scss\"],\n animations: [\n trigger(\"slideUpFab\", [\n transition(\":enter\", [\n style({ transform: \"translateY(50px)\", opacity: 0 }),\n animate(\"300ms ease-out\", style({ transform: \"translateY(0px)\", opacity: 1 })),\n ]),\n transition(\":leave\", [\n animate(\"200ms ease-out\", style({ transform: \"translateY(70px)\", opacity: 0 })),\n ]),\n ]),\n trigger(\"rotateButton\", [\n state('default', style({ transform: 'rotate(0)' })),\n state('rotated', style({ transform: 'rotate(45deg)' })),\n transition('rotated => default', animate('300ms ease-out')),\n transition('default => rotated', animate('200ms ease-in'))\n ]),\n ],\n})\nexport class FabComponent implements OnInit, OnDestroy {\n\n @Input() show: boolean = false;\n @Input() options: FabOptions = {};\n @Input() items: FabItems = []\n\n isOpen: boolean = false;\n\n\n constructor(private eRef: ElementRef) { }\n\n @HostListener('document:click', ['$event'])\n clickout(event) {\n if (!this.eRef.nativeElement.contains(event.target)) {\n this.closeFab()\n }\n }\n\n ngOnInit(): void {\n this.options = {\n size: 56,\n backgroundColorClosed: '#0937B2',\n backgroundColorOpened: '#3a5fc1',\n ...this.options\n }\n }\n\n ngOnDestroy(): void {\n }\n\n clickItem(item: FabItem) {\n this.closeFab();\n item.click();\n }\n\n closeFab() {\n this.isOpen = false;\n }\n\n toogleFab() {\n this.isOpen = !this.isOpen;\n }\n\n}\n","import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { FabComponent } from './fab.component';\n\n@NgModule({\n declarations: [FabComponent],\n imports: [CommonModule],\n exports: [FabComponent],\n})\nexport class FabModule {\n static forRoot(): ModuleWithProviders<FabModule> {\n return { ngModule: FabModule, providers: [] };\n }\n}\n","import {Component, Input, OnInit} from '@angular/core';\n\n@Component({\n selector: 'mis-loader',\n templateUrl: './loader.component.html',\n styleUrls: ['./loader.component.scss']\n})\nexport class LoaderComponent implements OnInit{\n\n /** Controls loader size */\n @Input() mobileView: boolean = false\n\n constructor() {\n }\n ngOnInit(){\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { LoaderComponent } from './loader.component';\n\n@NgModule({\n declarations: [LoaderComponent],\n imports: [CommonModule],\n exports: [LoaderComponent]\n})\nexport class LoaderModule {\n static forRoot(): ModuleWithProviders<LoaderModule> {\n return { ngModule: LoaderModule, providers: [] };\n }\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import {\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnInit,\n Output\n} from '@angular/core';\n\n@Component({\n selector: 'mis-multi-select-dropdown',\n templateUrl: './multi-select-dropdown.component.html',\n styleUrls: ['./multi-select-dropdown.component.scss']\n})\nexport class MultiSelectDropdownComponent implements OnInit {\n\n searchInput: string = '';\n isOpen = false;\n localSelectedItems: MultiSelectDropdownItem[] = [];\n localData: MultiSelectDropdownItem[] = [];\n searchData: MultiSelectDropdownItem[] = [];\n\n @Input() set data(values: MultiSelectDropdownItem[]) {\n this.localData = values.map(item => {\n return {...item, checked: false};\n });\n }\n @Input() label: string = 'Select';\n @Input() height: string = ''\n @Input() width: string = ''\n\n @Input() dropdownListHeight: string = ''\n @Input() dropdownListWidth: string = ''\n @Input() dropdownListPosition: 'Left' | 'Right' = 'Left'\n\n @Input() searchEnabled: boolean = true;\n @Input() showSelectedCount: boolean = false;\n @Input() noDataMessage: string = 'No Data';\n @Input() set selectedItems(values: MultiSelectDropdownItem[]) {\n this.handlerSetLocalSelectedItems(values);\n }\n\n @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n @HostListener('document:click', ['$event'])\n clickout(event) {\n const isClickedOutside = !this.eRef.nativeElement.contains(event.target);\n if (isClickedOutside) {\n this.onCancel();\n }\n }\n constructor(private eRef: ElementRef) {}\n ngOnInit() {}\n\n handlerSetLocalSelectedItems(values) {\n this.localSelectedItems = values;\n this.localData = this.localData.map(item => {\n if (values.some(base => base.value === item.value)) {\n return { ...item, checked: true };\n } else {\n return { ...item, checked: false };\n }\n });\n }\n isSearchInputFocused: boolean = false;\n searchInputFocused(isFocused: boolean) {\n this.isSearchInputFocused = isFocused;\n }\n searchInputCanceled(event) {\n event.stopPropagation();\n this.searchInput = '';\n this.isSearchInputFocused = false;\n }\n toggleDropdown() {\n this.isOpen = !this.isOpen;\n if (this.isOpen) {\n this.handlerSetLocalSelectedItems(this.localSelectedItems);\n this.localData = this.formatValues(this.localData);\n }\n }\n filterByValue(array: MultiSelectDropdownItem[], string: string) {\n return array.filter(o =>\n o.label.toLowerCase().includes(string.toLowerCase())\n );\n }\n searchInputOnChange(newValue) {\n this.searchInput = newValue;\n if (newValue) {\n this.searchData = this.filterByValue(this.localData, newValue);\n } else {\n this.searchData = [];\n this.searchInput = '';\n }\n }\n formatValues(array: MultiSelectDropdownItem[]) {\n const checkedValues = array\n .filter(a => a.checked)\n .sort((a: MultiSelectDropdownItem, b: MultiSelectDropdownItem) =>\n a.label > b.label ? 1 : b.label > a.label ? -1 : 0\n );\n const unCheckedValues = array\n .filter(a => !a.checked)\n .sort((a: MultiSelectDropdownItem, b: MultiSelectDropdownItem) =>\n a.label > b.label ? 1 : b.label > a.label ? -1 : 0\n );\n return [...checkedValues, ...unCheckedValues];\n }\n toggleSelectedItems(event, item: MultiSelectDropdownItem) {\n event.stopPropagation();\n if (item.checked) {\n this.localData = [\n ...this.localData.map(a => {\n if (a.value === item.value) {\n return {\n ...a,\n checked: false\n };\n }\n return a;\n })\n ];\n } else {\n this.localData = [\n ...this.localData.map(a => {\n if (a.value === item.value) {\n return {\n ...a,\n checked: true\n };\n }\n return a;\n })\n ];\n }\n if (this.searchEnabled) {\n this.searchInputOnChange(this.searchInput);\n }\n }\n applyFilters() {\n this.onChange.emit(\n this.localData\n .filter(a => {\n return a.checked;\n })\n .map(item => {\n const { checked, ...data } = item;\n return data;\n })\n );\n this.onCancel();\n }\n onReset(){\n this.isSearchInputFocused = false;\n this.onChange.emit([])\n this.isOpen = false;\n this.searchInput = '';\n }\n onCancel() {\n this.isSearchInputFocused = false;\n this.localData = this.localData.map(a => {\n if (\n this.localSelectedItems.some(\n b => b.value === a.value && String(b.checked) !== String(a.checked)\n )\n ) {\n return a;\n } else {\n return {\n ...a,\n checked: false\n };\n }\n });\n this.isOpen = false;\n this.searchInput = '';\n }\n}\nexport interface MultiSelectDropdownItem {\n label: string;\n value: string;\n checked?: boolean;\n icon?: string;\n}\n","import { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\nimport { MultiSelectDropdownComponent } from './multi-select-dropdown.component';\nimport {CheckboxModule} from '../checkbox';\nimport {ButtonModule} from '../button';\n\n@NgModule({\n declarations: [MultiSelectDropdownComponent],\n imports: [CommonModule, FormsModule, CheckboxModule, ButtonModule],\n exports: [MultiSelectDropdownComponent]\n})\nexport class MultiSelectDropdownModule {\n static forRoot(): ModuleWithProviders<MultiSelectDropdownModule> {\n return { ngModule: MultiSelectDropdownModule, providers: [] };\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnInit,\n Output\n} from '@angular/core';\n\n@Component({\n selector: 'mis-nested-multi-select-dropdown',\n templateUrl: './nested-multi-select-dropdown.component.html',\n styleUrls: ['./nested-multi-select-dropdown.component.scss']\n})\nexport class NestedMultiSelectDropdownComponent implements OnInit {\n\n searchInput: string = '';\n isOpen = false;\n localSelectedItems: NestedMultiSelectDropdownItem[] = [];\n localData: NestedMultiSelectDropdownItem[] = [];\n searchData: NestedMultiSelectDropdownItem[] = [];\n selectedCount: number = 0;\n\n @Input() set data(values: NestedMultiSelectDropdownItem[]) {\n // tslint:disable-next-line:no-shadowed-variable\n this.localData = values.map(item => {\n return {\n ...item,\n checked: false,\n children: item.children.map(a => {\n return {\n ...a,\n checked: false\n };\n })\n };\n });\n }\n @Input() label: string = 'Select';\n @Input() height: string = ''\n @Input() width: string = ''\n\n @Input() dropdownListHeight: string = ''\n @Input() dropdownListWidth: string = ''\n @Input() dropdownListPosition: 'Left' | 'Right' = 'Left'\n\n @Input() searchEnabled: boolean = true;\n @Input() showSelectedCount: boolean = false;\n @Input() noDataMessage: string = 'No Data';\n @Input() set selectedItems(values: NestedMultiSelectDropdownItem[]) {\n this.handlerSetLocalSelectedItems(values);\n }\n\n @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n @HostListener('document:click', ['$event'])\n clickout(event) {\n const isClickedOutside = !this.eRef.nativeElement.contains(event.target);\n if (isClickedOutside) {\n this.onCancel();\n }\n }\n\n constructor(private eRef: ElementRef) {}\n ngOnInit() {}\n\n handlerSetLocalSelectedItems(values) {\n this.localSelectedItems = values;\n }\n isSearchInputFocused: boolean = false;\n searchInputFocused(isFocused: boolean) {\n this.isSearchInputFocused = isFocused;\n }\n searchInputCanceled(event) {\n event.stopPropagation();\n this.searchInput = '';\n this.isSearchInputFocused = false;\n }\n toggleDropdown() {\n this.isOpen = !this.isOpen;\n if (this.isOpen) {\n this.handlerSetLocalSelectedItems(this.localSelectedItems);\n this.localData = this.formatValues(this.localData);\n }\n }\n // tslint:disable-next-line:variable-name\n filterByValue(array: NestedMultiSelectDropdownItem[], string: string) {\n return array.filter(o =>\n o.label.toLowerCase().includes(string.toLowerCase()) || o.children?.some(g => g?.label?.toLowerCase().includes(string.toLowerCase()))\n ).map(v => {\n return {\n ...v,\n children: v?.children?.filter(l => l?.label?.toLowerCase().includes(string.toLowerCase()))\n };\n });\n }\n searchInputOnChange(newValue) {\n this.searchInput = newValue;\n if (newValue) {\n this.searchData = this.filterByValue(this.localData, newValue);\n } else {\n this.searchData = [];\n this.searchInput = '';\n }\n }\n formatValues(array: NestedMultiSelectDropdownItem[]) {\n const checkedValues = array\n .filter(a => a.checked)\n .sort((a: NestedMultiSelectDropdownItem, b: NestedMultiSelectDropdownItem) =>\n a.label > b.label ? 1 : b.label > a.label ? -1 : 0\n );\n const unCheckedValues = array\n .filter(a => !a.checked)\n .sort((a: NestedMultiSelectDropdownItem, b: NestedMultiSelectDropdownItem) =>\n a.label > b.label ? 1 : b.label > a.label ? -1 : 0\n );\n return [...checkedValues, ...unCheckedValues];\n }\n // tslint:disable-next-line:no-shadowed-variable\n toggleSelectedItems(event, item: NestedMultiSelectDropdownItem, cItem?: any) {\n event.stopPropagation();\n if (!cItem){\n if (item.checked) {\n this.localData = [\n ...this.localData.map(a => {\n if (a.value === item.value) {\n return {\n ...a,\n checked: false,\n // tslint:disable-next-line:no-shadowed-variable\n children: item.children.map(a => {\n return {\n ...a,\n checked: false\n };\n })\n };\n }\n return a;\n })\n ];\n } else {\n this.localData = [\n ...this.localData.map(a => {\n if (a.value === item.value) {\n return {\n ...a,\n checked: true,\n // tslint:disable-next-line:no-shadowed-variable\n children: item.children.map(a => {\n return {\n ...a,\n checked: true\n };\n })\n };\n }\n return a;\n })\n ];\n }\n } else {\n if (cItem.checked) {\n this.localData = [\n ...this.localData.map(a => {\n if (a.value === item.value) {\n // tslint:disable-next-line:no-shadowed-variable\n const children = a?.children.map(a => {\n if (cItem?.value === a?.value){\n return {\n ...a,\n checked: false\n };\n }\n return a;\n });\n return {\n ...a,\n checked: children.every(q => q.checked),\n // tslint:disable-next-line:no-shadowed-variable\n children\n };\n }\n return a;\n })\n ];\n } else {\n this.localData = [\n ...this.localData.map(a => {\n if (a.value === item.value) {\n // tslint:disable-next-line:no-shadowed-variable\n const children = a?.children.map(a => {\n if (cItem?.value === a?.value){\n return {\n ...a,\n checked: true\n };\n }\n return a;\n });\n return {\n ...a,\n checked: children.every(q => q.checked),\n // tslint:disable-next-line:no-shadowed-variable\n children\n };\n }\n return a;\n })\n ];\n }\n }\n if (this.searchEnabled) {\n this.searchInputOnChange(this.searchInput);\n }\n }\n\n applyFilters() {\n let localCount = 0;\n this.localData.forEach(a => a?.children?.forEach(b => {\n if (b.checked){\n localCount += 1;\n }\n }));\n this.selectedCount = localCount;\n const w = this.localData\n .filter(r => !(!r.checked && !r?.children?.some(f => f?.checked)))\n .map(a => {\n return {\n ...a,\n children: a?.children?.filter(s => s.checked)\n };\n });\n this.onChange.emit(w);\n this.onCancel();\n }\n onReset(){\n this.isSearchInputFocused = false;\n for(let item of this.localData){\n for(let child of item.children){\n child.checked = false\n }\n item.checked = false\n }\n this.onChange.emit([])\n this.isOpen = false;\n this.searchInput = '';\n }\n onCancel() {\n this.isSearchInputFocused = false;\n this.isOpen = false;\n this.searchInput = '';\n }\n}\nexport interface NestedMultiSelectDropdownItem {\n label: string;\n value: string;\n checked?: boolean;\n icon?: string;\n children: Array<{\n label: string\n value: string\n checked?: boolean;\n icon?: string;\n }>;\n}\n","import { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\nimport { NestedMultiSelectDropdownComponent } from './nested-multi-select-dropdown.component';\nimport {CheckboxModule} from '../checkbox';\nimport {ButtonModule} from '../button';\n\n@NgModule({\n declarations: [NestedMultiSelectDropdownComponent],\n imports: [CommonModule, FormsModule, CheckboxModule, ButtonModule],\n exports: [NestedMultiSelectDropdownComponent]\n})\nexport class NestedMultiSelectDropdownModule {\n static forRoot(): ModuleWithProviders<NestedMultiSelectDropdownModule> {\n return { ngModule: NestedMultiSelectDropdownModule, providers: [] };\n }\n}\n","import {Component, Input, OnInit, Output, EventEmitter} from '@angular/core';\nimport {AbstractControl, FormControl} from '@angular/forms';\n\n@Component({\n selector: 'mis-radio',\n templateUrl: './radio-button.component.html',\n styleUrls: ['./radio-button.component.scss']\n})\nexport class RadioButtonComponent implements OnInit{\n\n /** When multiple radio input fields are used\n * an \"id\" can be given to keep track of them */\n @Input() id: string | number = ''\n /** Name of the attribute for which the radio\n * selection is provided */\n @Input() name: string | number = ''\n /** Value of the attribute which is to be emitted\n * when selected */\n @Input() value: string | number = ''\n /** Controls the state of the radio button */\n @Input() disabled: boolean = false\n\n /** Can be used to attach the radio input field\n * to a reactive form by passing in a\n * “FormControl“ Object. It can also be\n * used to set the default attribute value */\n @Input() formControl: AbstractControl = new FormControl(null)\n\n /** Emits \"value\" of the radio button on selection */\n @Output() valueChange = new EventEmitter<any>()\n\n constructor() {\n }\n ngOnInit(){\n }\n onChange(event){\n this.valueChange.emit(this.formControl.value)\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { RadioButtonComponent } from './radio-button.component';\nimport {ReactiveFormsModule} from '@angular/forms';\n\n@NgModule({\n declarations: [RadioButtonComponent],\n imports: [CommonModule, ReactiveFormsModule],\n exports: [RadioButtonComponent]\n})\nexport class RadioButtonModule {\n static forRoot(): ModuleWithProviders<RadioButtonModule> {\n return { ngModule: RadioButtonModule, providers: [] };\n }\n}\n","import {Component, Input, OnInit, Output, EventEmitter} from '@angular/core';\nimport {AbstractControl, FormControl} from '@angular/forms';\n\n@Component({\n selector: 'mis-switch',\n templateUrl: './switch.component.html',\n styleUrls: ['./switch.component.scss']\n})\nexport class SwitchComponent implements OnInit{\n\n @Input() mobileView: boolean = false\n @Input() set checked(value: boolean){\n this.formControl.setValue(value)\n }\n @Input() set disabled(value: boolean){\n if(value) this.formControl.disable()\n else this.formControl.enable()\n }\n @Input() formControl: AbstractControl = new FormControl(false)\n\n /** Emits value when toggled */\n @Output() valueChanged = new EventEmitter<boolean>()\n\n constructor() {\n }\n ngOnInit() {\n }\n onChange(event){\n this.valueChanged.emit(this.formControl.value)\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { SwitchComponent } from './switch.component';\nimport {ReactiveFormsModule} from '@angular/forms';\n\n@NgModule({\n declarations: [SwitchComponent],\n imports: [CommonModule, ReactiveFormsModule],\n exports: [SwitchComponent]\n})\nexport class SwitchModule {\n static forRoot(): ModuleWithProviders<SwitchModule> {\n return { ngModule: SwitchModule, providers: [] };\n }\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n Renderer2,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport { Filter, TableFilterComponent } from './filter/filter.component';\n\n@Component({\n selector: 'mis-table',\n templateUrl: 'table.component.html',\n styleUrls: ['table.component.css'],\n})\nexport class TableComponent implements OnInit, AfterViewInit {\n // Filter related variables\n showFilter: boolean = false;\n filterName: string = '';\n filterData: Array<Filter> = [];\n filterContainerStyles: any = {};\n appliedFilters: { [key: string]: Array<{ name: string; value: string }> } =\n {};\n @Output() filtersUpdated = new EventEmitter<{\n [key: string]: Array<{ name: string; value: string }>;\n }>();\n\n @ViewChild('filter') filter: TableFilterComponent | any;\n @ViewChildren('colHeader') colHeaders: QueryList<ElementRef> | any;\n\n // Pagination related variables\n selectedPage = 1;\n pages: Array<number> = [];\n\n @Output() pageSelected = new EventEmitter<number>();\n\n @Input('tableConfig') config: TableConfig | any;\n @Input() subTableconfig: TableConfig | any;\n @Input() tableDataLoading: boolean | any;\n @Input() expandedIndex: number | any;\n @Input() tableData: Array<Array<any>> = [];\n @Input() subTableData: Array<Array<any>> = [];\n @Input() subTableDataLoading: boolean | any;\n @ViewChild('table') table: ElementRef | any;\n\n constructor(private renderer: Renderer2) {}\n\n ngOnInit(): void {\n this.initializeFilters()\n if (this.config.paginationConfig) {\n this.initializePagination();\n }\n document.addEventListener('click', (event) => {\n if (this.filter) {\n let isCheckBoxClicked = false;\n let targetElement = event.target as HTMLSpanElement;\n if (targetElement.className === 'checkmark') {\n isCheckBoxClicked = true;\n }\n let isClickInsideElement = this.filter.container.nativeElement.contains(\n event.target\n );\n if (!isClickInsideElement && !isCheckBoxClicked) {\n this.toggleFilter(this.filterName);\n }\n }\n });\n }\n ngAfterViewInit() {\n if (this.config.paginationConfig) {\n let height = this.table.nativeElement.offsetHeight;\n this.renderer.setStyle(\n this.table.nativeElement,\n 'height',\n (height - 56) + 'px'\n );\n }\n }\n\n // Filter related functions\n initializeFilters(){\n for(let colHeader of this.config.colHeaderConfig){\n if(colHeader.filters){\n let filters = []\n for(let filter of colHeader.filters){\n if(filter.checked){\n filters.push({\n name: filter.name,\n value: filter.value\n })\n }\n }\n if(filters.length > 0) this.appliedFilters[colHeader.data] = filters\n }\n }\n }\n toggleFilter(filterName: string, filterData?: any){\n if(!this.showFilter){\n this.filterName = filterName\n this.filterData = [...filterData]\n this.showFilter = true\n\n let offSet = 0;\n let colHeadersReversed = this.colHeaders.toArray().reverse();\n\n for (let header of colHeadersReversed) {\n if (header.nativeElement.innerText === filterName) break;\n offSet += header.nativeElement.offsetWidth;\n }\n this.filterContainerStyles = {\n top: '44px',\n right: offSet > 0 ? offSet - 116 + 'px' : '12px',\n };\n } else {\n this.filterName = '';\n this.filterData = [];\n this.showFilter = false;\n }\n }\n getAppliedFilters(filterName: string){\n if(this.appliedFilters[filterName])\n return [...this.appliedFilters[filterName]]\n return []\n }\n updateAppliedFilters(appliedFilters: Array<{ name: string; value: string }>) {\n if (appliedFilters.length == 0) {\n delete this.appliedFilters[this.filterName];\n } else {\n this.appliedFilters[this.filterName] = appliedFilters;\n }\n this.filtersUpdated.emit({ ...this.appliedFilters });\n this.toggleFilter(this.filterName);\n }\n\n // Pagination related functions\n initializePagination() {\n if (this.config.paginationConfig) {\n let len = this.config.paginationConfig.noOfPages;\n if (len <= 7) {\n for (let i = 1; i <= len; i++) {\n this.pages.push(i);\n }\n } else {\n this.pages = [1, 2, 3, 4, 0, len];\n }\n }\n }\n updateSelectedPage(pageNumber: number) {\n if (pageNumber < 1 || pageNumber > this.config.paginationConfig.noOfPages)\n return;\n this.selectedPage = pageNumber;\n let len = this.config.paginationConfig.noOfPages;\n if (len > 7) {\n if (pageNumber - 2 <= 1) {\n this.pages = [1, 2, 3, 4, 0, len];\n } else if (pageNumber - 2 > 1 && pageNumber + 2 < len) {\n this.pages = [1, 0, pageNumber - 1, pageNumber, pageNumber + 1, 0, len];\n } else if (pageNumber + 2 >= len) {\n this.pages = [1, 0, len - 3, len - 2, len - 1, len];\n }\n }\n this.pageSelected.emit(this.selectedPage);\n }\n\n // Main container related functions\n getContainerHeight() {\n if (this.config.height) return this.config.height;\n else return '';\n }\n getContainerWidth() {\n if (this.config.width) return this.config.width;\n else return '';\n }\n\n // Column Headers related functions\n getColHeadersRowHeight() {\n if (\n this.config.colHeadersRowConfig &&\n this.config.colHeadersRowConfig.height\n ) {\n return this.config.colHeadersRowConfig.height;\n } else return '44px';\n }\n getColHeadersRowBorderTop() {\n if (\n this.config.colHeadersRowConfig &&\n this.config.colHeadersRowConfig.style?.borderTop\n ) {\n return this.config.colHeadersRowConfig.style?.borderTop;\n } else return '';\n }\n getColHeadersRowBorderBottom() {\n if (\n this.config.colHeadersRowConfig &&\n this.config.colHeadersRowConfig.style?.borderBottom\n ) {\n return this.config.colHeadersRowConfig.style?.borderBottom;\n } else return '1px solid #E0E0E0';\n }\n}\n\nexport interface TableConfig {\n height: string | '100%';\n width: string | '100%';\n paginationConfig?: PaginationConfig | undefined | null;\n colHeadersRowConfig: RowConfig | undefined | null;\n rowConfig: RowConfig | undefined | null;\n colHeaderConfig: Array<ColHeaderConfig>;\n colConfig: Array<ColConfig>;\n canExpand?: boolean | false;\n}\n\nexport interface PaginationConfig {\n noOfPages: number;\n rowsPerPage: number;\n totalNoOfRows: number;\n}\nexport interface RowConfig {\n height?: string | undefined | null;\n style?: {};\n}\nexport interface ColHeaderConfig {\n type: 'text' | 'number' | 'custom';\n data: any;\n componentRef?: any;\n filters?: Array<Filter> | null;\n style?: {};\n action?: any;\n}\nexport interface ColConfig {\n type: 'text' | 'number' | 'custom';\n componentRef?: any;\n style?: {};\n action?: any;\n}\n","import {\n ComponentFactoryResolver,\n Directive,\n Input,\n OnChanges,\n ViewContainerRef,\n} from '@angular/core';\n\n@Directive({\n selector: '[customTableCell]',\n})\nexport class CustomTableCellDirective {\n private ref: any;\n private component: any;\n private cellData: any;\n\n @Input() set customComponent(value: any) {\n this.component = value;\n this.createComponent();\n }\n @Input() set data(value: any) {\n this.cellData = value;\n if (this.ref) this.ref.instance.data = this.cellData;\n }\n\n\n constructor(\n private viewContainerRef: ViewContainerRef,\n private componentFactoryResolver: ComponentFactoryResolver\n ) { }\n\n createComponent() {\n if (this.component) {\n const cmpFactoryResolver =\n this.componentFactoryResolver.resolveComponentFactory(this.component);\n this.viewContainerRef.clear();\n this.ref = <any>this.viewContainerRef.createComponent(cmpFactoryResolver);\n this.setData();\n }\n }\n setData() {\n this.ref.instance.data = this.cellData;\n }\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n Input,\n OnInit,\n Renderer2,\n ViewChild,\n} from '@angular/core';\n\n@Component({\n selector: 'sub-table',\n templateUrl: 'sub-table.component.html',\n styleUrls: ['sub-table.component.css'],\n})\nexport class SubTableComponent implements OnInit, AfterViewInit {\n selectedPage = 1;\n pages: Array<number> = [];\n\n @Input() config: SubTableConfig | any;\n @Input() tableData: Array<Array<any>> = [];\n @ViewChild('table') table: ElementRef | any;\n\n constructor(private renderer: Renderer2) { }\n\n ngOnInit() { }\n\n ngAfterViewInit() {\n if (this.config.paginationConfig) {\n let height = this.table.nativeElement.offsetHeight;\n this.renderer.setStyle(\n this.table.nativeElement,\n 'height',\n height - 56 + 'px'\n );\n }\n }\n\n // Main container related functions\n getContainerHeight() {\n if (this.config.height) return this.config.height;\n else return '';\n }\n getContainerWidth() {\n if (this.config.width) return this.config.width;\n else return '';\n }\n\n // Column Headers related functions\n getColHeadersRowHeight() {\n if (\n this.config.colHeadersRowConfig &&\n this.config.colHeadersRowConfig.height\n ) {\n return this.config.colHeadersRowConfig.height;\n } else return '44px';\n }\n getColHeadersRowBorderTop() {\n if (\n this.config.colHeadersRowConfig &&\n this.config.colHeadersRowConfig.style?.borderTop\n ) {\n return this.config.colHeadersRowConfig.style?.borderTop;\n } else return '';\n }\n getColHeadersRowBorderBottom() {\n if (\n this.config.colHeadersRowConfig &&\n this.config.colHeadersRowConfig.style?.borderBottom\n ) {\n return this.config.colHeadersRowConfig.style?.borderBottom;\n } else return '1px solid #E0E0E0';\n }\n}\n\nexport interface SubTableConfig {\n height: string | '100%';\n width: string | '100%';\n showHeader?: boolean | undefined;\n rowConfig: SubTableRowConfig | undefined | null;\n colHeaderConfig?: Array<SubTableColHeaderConfig>;\n colConfig: Array<SubTableColConfig>;\n}\n\nexport interface SubTableRowConfig {\n height?: string | undefined | null;\n style?: {};\n}\nexport interface SubTableColHeaderConfig {\n type: 'text' | 'number' | 'custom';\n data: any;\n componentRef?: any;\n style?: {};\n action?: any;\n}\nexport interface SubTableColConfig {\n type: 'text' | 'number' | 'custom';\n componentRef?: any;\n style?: {};\n action?: any;\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {FormControl} from '@angular/forms';\n\n@Component({\n selector: 'mis-table-filter',\n templateUrl: 'filter.component.html',\n styleUrls: ['filter.component.css'],\n})\nexport class TableFilterComponent implements OnInit {\n @Input() filtersData: Array<Filter> = [];\n @Input() appliedFilters: Array<{name: string, value: string}>\n @Input() containerStyles: any = {};\n\n @Output() filtersApplied = new EventEmitter<any>();\n\n @ViewChild('mainContainer') container: ElementRef | undefined;\n\n filtersMap: any = {};\n searchValue: string = '';\n\n constructor() {}\n\n ngOnInit(): void {\n this.filtersData.forEach((filter) => {\n filter.checked = false\n filter['formControl'] = new FormControl(false)\n this.filtersMap[filter.value] = filter;\n });\n for(let filter of this.appliedFilters){\n this.filtersMap[filter.value].checked = true\n this.filtersMap[filter.value].formControl.setValue(true)\n }\n }\n resetFilters() {\n this.filtersData.forEach((filter) => {\n this.filtersMap[filter.value].checked = false;\n });\n this.filtersApplied.emit([]);\n }\n applyFilters() {\n let list = Object.values(this.filtersMap)\n .filter((filter: Filter | any) => filter.formControl.value)\n .map((filter: Filter | any) => {\n return {\n name: filter.name,\n value: filter.value,\n };\n });\n this.filtersApplied.emit(list);\n }\n updateSearchValue(event: any) {\n this.searchValue = event.target.value;\n }\n getFiltersBasedOnSearchValue() {\n let list = Object.values(this.filtersMap);\n list = list.filter((filter: Filter | any) => {\n return filter.name.match(new RegExp(this.searchValue, 'i'));\n });\n return list.sort(this.mySort);\n }\n mySort = (a: Filter | any, b: Filter | any) => {\n if(a.checked && !b.checked) return -1\n else if(!a.checked && !b.checked) return 1;\n else {\n if (a.name < b.name) return -1;\n else if (b.name < a.name) return 1;\n else return 0;\n }\n };\n}\nexport interface Filter {\n name: string;\n value: string;\n checked: boolean;\n}\n","import { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { TableComponent } from \"./table.component\";\nimport { CustomTableCellDirective } from \"./custom-table-cell.directive\";\nimport { SubTableComponent } from './sub-table/sub-table.component';\nimport { CommonModule } from \"@angular/common\";\nimport {TableFilterComponent} from \"./filter/filter.component\";\nimport { CheckboxModule } from '../checkbox';\nimport { ButtonModule } from '../button';\n\n@NgModule({\n declarations: [\n TableComponent,\n SubTableComponent,\n TableFilterComponent,\n CustomTableCellDirective,\n ],\n imports: [\n CommonModule,\n CheckboxModule,\n ButtonModule\n ],\n exports: [\n TableComponent,\n SubTableComponent,\n TableFilterComponent,\n CustomTableCellDirective\n ]\n})\nexport class TableModule {\n static forRoot(): ModuleWithProviders<TableModule> {\n return { ngModule: TableModule, providers: [] };\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ToastDataService {\n private messageMap: Map<number, string> = new Map();\n get messages(): string[] {\n return Array.from(this.messageMap.values()).reverse();\n }\n\n constructor() {}\n\n updateMessage(msg: string): number {\n const id = new Date().getTime();\n this.messageMap.set(id, msg);\n return id;\n }\n\n removeMessage(id: number): void {\n this.messageMap.delete(id);\n }\n\n hasMessage(): boolean {\n return this.messageMap.size > 0;\n }\n}\n","import { animate, style, transition, trigger } from '@angular/animations';\nimport { Component } from '@angular/core';\nimport { ToastDataService } from './toast.data.service';\n\n@Component({\n selector: 'mis-teams-toast',\n templateUrl: './toast.component.html',\n styleUrls: ['./toast.component.scss'],\n animations: [\n trigger('fadeInOut', [\n transition(':enter', [\n style({ opacity: '0', transform: 'translateY(-50%)', height: '0' }),\n animate(\n '300ms ease-in',\n style({ opacity: '1', transform: 'translateY(0)', height: '*' })\n ),\n ]),\n transition(':leave', [\n animate(\n '300ms ease-in',\n style({ opacity: '0', transform: 'translateY(50%)' })\n ),\n ]),\n ]),\n ],\n})\nexport class ToastComponent {\n constructor(public data: ToastDataService) {}\n}\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Injectable } from '@angular/core';\nimport { ToastComponent } from './toast.component';\nimport { ToastDataService } from './toast.data.service';\n\ntype Operations =\n | 'created'\n | 'updated'\n | 'deleted'\n | 'create'\n | 'update'\n | 'delete';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ToastService {\n constructor(private overlay: Overlay, private data: ToastDataService) {\n this.userProfilePortal = new ComponentPortal(ToastComponent);\n }\n private toastWrapperRef: OverlayRef;\n private messagePromises: Promise<void>[] = [];\n private userProfilePortal: ComponentPortal<ToastComponent>;\n\n messageBuilder = {\n error: {\n simple: 'Something went wrong. Please try again later.',\n 400: 'Bad Request! We are working to fix this.',\n 401: 'UNAUTHORISED',\n 403: 'Sorry for the interruption but seems like your session has expired. Please login again and continue',\n 404: 'Unable to find resource. Please try again later',\n },\n item: (item: string) => {\n return {\n action: (act: Operations = 'updated') => {\n const success = `Successfully ${act} ${item}.`;\n const failure = `Failed to ${act} ${item}.`;\n return {\n success,\n failure,\n };\n },\n };\n },\n short: (act: Operations = 'updated') => {\n const success = `Successfully ${act}.`;\n const failure = `Failed to ${act}.`;\n return {\n success,\n failure,\n };\n },\n simple: (...args: string[]) => args.join(' '),\n simplest: 'Done!',\n };\n\n displayMsg(msg: string, timeout = 3000): void {\n const positionStrategy = this.overlay\n .position()\n .global()\n .centerHorizontally();\n\n if (window?.innerWidth < 600) {\n positionStrategy.bottom('48px');\n } else {\n positionStrategy.top('80px');\n }\n const config = new OverlayConfig({\n hasBackdrop: false,\n positionStrategy,\n });\n if (!this.toastWrapperRef?.hasAttached()) {\n this.toastWrapperRef = this.overlay.create(config);\n this.toastWrapperRef.attach(this.userProfilePortal);\n }\n const messageId = this.data.updateMessage(msg);\n this.messagePromises.push(\n new Promise((resolve, reject) => {\n setTimeout(() => {\n resolve(this.data.removeMessage(messageId));\n if (!this.data.hasMessage()) {\n this.closeToastOverlay();\n }\n // adding 300ms for entry animation\n }, timeout + 300);\n })\n );\n Promise.race(this.messagePromises).then(() => {});\n }\n\n // tslint:disable-next-line\n private closeToastOverlay(): any {\n return setTimeout(() => {\n this.messagePromises = [];\n this.toastWrapperRef?.detach();\n // adding 300ms for exit animation\n }, 300);\n }\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { ToastComponent } from './toast.component';\nimport { ToastDataService } from './toast.data.service';\nimport { ToastService } from './toast.service';\n\n@NgModule({\n declarations: [ToastComponent],\n imports: [CommonModule, OverlayModule],\n entryComponents: [ToastComponent]\n})\nexport class ToastModule {\n static forRoot(): ModuleWithProviders<ToastModule> {\n return {\n ngModule: ToastModule,\n providers: [ToastDataService, ToastService],\n };\n }\n\n static forChild(): ModuleWithProviders<ToastModule> {\n return {\n ngModule: ToastModule,\n providers: [ToastDataService, ToastService],\n };\n }\n}\n","import {AfterViewInit, Component, ElementRef, Input, OnInit, Renderer2, ViewChild} from '@angular/core';\n\n@Component({\n selector: 'mis-tooltip',\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.scss']\n})\nexport class ToolTipComponent implements OnInit, AfterViewInit{\n\n public toolTipText: string = ''\n public toolTipWidth: string = ''\n public toolTipPosition: 'Left' | 'Right' | 'Top' | 'Bottom' = 'Bottom'\n\n @Input() set text(value: string){\n this.toolTipText = value\n this.updateToolTipPosition()\n }\n @Input() set width(value: string){\n this.toolTipWidth = value;\n this.updateToolTipPosition()\n }\n @Input() set position(value: 'Left' | 'Right' | 'Top' | 'Bottom'){\n this.toolTipPosition = value\n this.updateToolTipPosition()\n }\n\n @ViewChild('container') container: ElementRef\n\n constructor(private renderer: Renderer2) {\n }\n ngOnInit() {\n }\n ngAfterViewInit(){\n this.updateToolTipPosition()\n }\n updateToolTipPosition(){\n if(this.container){\n let width = this.container.nativeElement.offsetWidth\n if(this.toolTipPosition === 'Left'){\n this.renderer.setStyle(this.container.nativeElement, 'left', `-${width + 12}px`)\n this.renderer.setStyle(this.container.nativeElement, 'right', '')\n }\n else if(this.toolTipPosition === 'Right'){\n this.renderer.setStyle(this.container.nativeElement, 'left', '')\n this.renderer.setStyle(this.container.nativeElement, 'right', `-${width + 12}px`)\n }\n else{\n this.renderer.setStyle(this.container.nativeElement, 'left', '50%')\n this.renderer.setStyle(this.container.nativeElement, 'right', '')\n }\n }\n }\n}\n","import {\n AfterViewInit,\n ComponentFactoryResolver, ComponentRef,\n Directive,\n ElementRef, HostListener, Input,\n OnInit,\n Renderer2,\n ViewContainerRef\n} from '@angular/core';\nimport {ToolTipComponent} from './tooltip.component';\nimport {isChildNodeOf} from 'codelyzer/util/isChildNodeOf';\n\n@Directive({\n selector: '[misToolTip]'\n})\nexport class ToolTipDirective implements OnInit, AfterViewInit {\n public isToolTipDisplayed: boolean = false\n public toolTipWidth: string = ''\n public toolTipText: string = ''\n public toolTipPosition: 'Left' | 'Right' | 'Top' | 'Bottom' = 'Bottom'\n\n @Input() responsivePosition: boolean = false\n @Input() showOnHover: boolean = false\n @Input() set showToolTip(value: boolean){\n this.isToolTipDisplayed = value\n if(value) this.displayToolTip()\n else this.hideToolTip()\n }\n @Input() set width(value: string){\n this.toolTipWidth = value\n this.createToolTip()\n }\n @Input() set text(value: string){\n this.toolTipText = value\n this.createToolTip()\n }\n @Input() set position(value: 'Left' | 'Right' | 'Top' | 'Bottom'){\n this.toolTipPosition = value\n this.createToolTip()\n }\n\n @HostListener('mouseenter', ['$event']) onMouseEnter() {\n if (this.showOnHover) this.displayToolTip()\n }\n @HostListener('mouseleave', ['$event']) onMouseLeave(){\n if(this.showOnHover) this.hideToolTip()\n }\n\n private componentRef: ComponentRef<ToolTipComponent>\n constructor(\n private elementRef: ElementRef,\n private renderer: Renderer2,\n private viewContainerRef: ViewContainerRef,\n private componentFactoryResolver: ComponentFactoryResolver\n ) {\n }\n\n ngOnInit() {\n this.createToolTip()\n }\n ngAfterViewInit(){\n this.renderer.setStyle(this.elementRef.nativeElement, 'position', 'relative')\n if(this.isToolTipDisplayed) this.displayToolTip()\n else this.hideToolTip()\n if(this.isToolTipDisplayed && this.responsivePosition) this.updatePosition()\n }\n createToolTip(){\n const cmpFactoryResolver = this.componentFactoryResolver.resolveComponentFactory(ToolTipComponent);\n this.viewContainerRef.clear();\n this.componentRef = this.viewContainerRef.createComponent(cmpFactoryResolver);\n this.componentRef.instance.width = this.toolTipWidth\n this.componentRef.instance.text = this.toolTipText\n this.componentRef.instance.position = this.toolTipPosition\n }\n displayToolTip(){\n let isChild = this.elementRef.nativeElement.contains(this.componentRef.location.nativeElement)\n if(!isChild) this.renderer.appendChild(this.elementRef.nativeElement, this.componentRef.location.nativeElement)\n if(this.responsivePosition) this.updatePosition()\n }\n hideToolTip(){\n let isChild = this.elementRef.nativeElement.contains(this.componentRef.location.nativeElement)\n if(isChild) this.renderer.removeChild(this.elementRef.nativeElement, this.componentRef.location.nativeElement)\n }\n updatePosition(){\n // let rect: any = this.componentRef.location.nativeElement.children[0].getBoundingClientRect()\n // let {x, y, height, width} = rect\n //TODO: Add logic for responsive positioning\n // Use default value as priority and dont change it here 'toolTipPosition'\n // Update the position using below line\n // this.componentRef.instance.position = 'Right'\n // console.log(x, y, height, width)\n }\n}\n\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ToolTipDirective } from './tooltip.directive';\nimport {ToolTipComponent} from './tooltip.component';\n\n@NgModule({\n declarations: [ToolTipDirective, ToolTipComponent],\n imports: [CommonModule],\n exports: [ToolTipDirective, ToolTipComponent],\n entryComponents:[ToolTipComponent]\n})\nexport class ToolTipModule {\n static forRoot(): ModuleWithProviders<ToolTipModule> {\n return { ngModule: ToolTipModule, providers: [] };\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n DatePickerRenderOptions,\n MisDatePickerViewMode,\n DatePickerDateCustomClasses,\n DatePickerDateTooltipText\n} from './models';\nimport { BsCustomDates } from './themes/bs/bs-custom-dates-view.component';\n\n\n/**\n * For date range picker there are `MisDateRangePickerConfig` which inherits all properties,\n * except `displayMonths`, for range picker it default to `2`\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class MisDatePickerConfig implements DatePickerRenderOptions {\n /** sets use adaptive position */\n adaptivePosition = false;\n /** sets use UTC date time format */\n useUtc = false;\n /** turn on/off animation */\n isAnimated = false;\n value?: Date | Date[];\n isDisabled?: boolean;\n /**\n * Default min date for all date/range pickers\n */\n minDate?: Date;\n /**\n * Default max date for all date/range pickers\n */\n maxDate?: Date;\n /**\n * The view that the datepicker should start in\n */\n startView: MisDatePickerViewMode = 'day';\n /**\n * Default date custom classes for all date/range pickers\n */\n dateCustomClasses: DatePickerDateCustomClasses[];\n /**\n * Default tooltip text for all date/range pickers\n */\n dateTooltipTexts?: DatePickerDateTooltipText[];\n /**\n * Disable specific days, e.g. [0,6] will disable all Saturdays and Sundays\n */\n daysDisabled?: number[];\n /**\n * Disable specific dates\n */\n datesDisabled?: Date[];\n /**\n * Show one months for special cases (only for dateRangePicker)\n * 1. maxDate is equal to today's date\n * 2. minDate's month is equal to maxDate's month\n */\n displayOneMonthRange?: boolean;\n /**\n * Enable specific dates\n */\n datesEnabled?: Date[];\n /**\n * Makes dates from other months active\n */\n selectFromOtherMonth?: boolean;\n\n /**\n * Allows select first date of the week by click on week number\n */\n selectWeek?: boolean;\n\n /**\n * Allows select daterange as first and last day of week by click on week number (dateRangePicker only)\n */\n selectWeekDateRange?: boolean;\n\n /**\n * Shows previous and current month, instead of current and next (dateRangePicker only)\n */\n showPreviousMonth?: boolean;\n\n /**\n * Add class to current day\n */\n customTodayClass?: string;\n\n /**\n * Default mode for all date pickers\n */\n minMode?: MisDatePickerViewMode;\n\n /**\n * If true, returns focus to the datepicker / daterangepicker input after date selection\n */\n returnFocusToInput = false;\n\n /** CSS class which will be applied to datepicker container,\n * usually used to set color theme\n */\n containerClass = 'theme-green';\n\n // DatePickerRenderOptions\n displayMonths = 1;\n /**\n * Allows to hide week numbers in datepicker\n */\n showWeekNumbers = false;\n\n dateInputFormat = 'L';\n // range picker\n rangeSeparator = ' - ';\n /**\n * Date format for date range input field\n */\n rangeInputFormat = 'L';\n\n /**\n * Predefined ranges\n */\n ranges?: BsCustomDates[];\n\n /**\n * Max Date Range in days\n */\n maxDateRange?: number;\n\n // DatePickerFormatOptions\n monthTitle = 'MMMM';\n yearTitle = 'YYYY';\n dayLabel = 'D';\n monthLabel = 'MMMM';\n yearLabel = 'YYYY';\n weekNumbers = 'w';\n\n /**\n * Shows 'today' button\n */\n showTodayButton = false;\n\n /**\n * Shows clear button\n */\n showClearButton = false;\n\n /**\n * Positioning of 'today' button\n */\n todayPosition = 'center';\n\n /**\n * Positioning of 'clear' button\n */\n clearPosition = 'right';\n\n /**\n * Label for 'today' button\n */\n todayButtonLabel = 'Today';\n\n /**\n * Label for 'clear' button\n */\n clearButtonLabel = 'Clear';\n\n /**\n * Label for 'custom range' button\n */\n customRangeButtonLabel = 'Custom Range';\n\n /* To enable emmission of date range on selecting start and end dates */\n emitOnDateRangeSelect: boolean = false;\n}\n","\n\nexport function mod(n: number, x: number): number {\n return (n % x + x) % x;\n}\n\nexport function absFloor(num: number): number {\n return num < 0 ? Math.ceil(num) || 0 : Math.floor(num);\n}\n\n","import { absFloor } from '../utils';\n\nexport function isString(str: any): str is string {\n return typeof str === 'string';\n}\n\nexport function isDate(value: any): value is Date {\n return value instanceof Date || Object.prototype.toString.call(value) === '[object Date]';\n}\n\nexport function isBoolean(value: any): value is boolean {\n return value === true || value === false;\n}\n\nexport function isDateValid(date: Date): boolean {\n return date && date.getTime && !isNaN(date.getTime());\n}\n\nexport function isFunction(fn: any): fn is Function {\n return (\n fn instanceof Function ||\n Object.prototype.toString.call(fn) === '[object Function]'\n );\n}\n\nexport function isNumber(value?: any): value is number {\n return typeof value === 'number' || Object.prototype.toString.call(value) === '[object Number]';\n}\n\nexport function isArray<T>(input?: any): input is T[] {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n}\n\nexport function hasOwnProp<T>(a: T /*object*/, b: string): b is Extract<keyof T, string> {\n return Object.prototype.hasOwnProperty.call(a, b);\n}\n\nexport function isObject<T>(input: any /*object*/): input is T {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null && Object.prototype.toString.call(input) === '[object Object]'\n );\n}\n\nexport function isObjectEmpty(obj: any): boolean {\n if (Object.getOwnPropertyNames) {\n return (Object.getOwnPropertyNames(obj).length === 0);\n }\n let k;\n for (k in obj) {\n if (obj.hasOwnProperty(k)) {\n return false;\n }\n }\n\n return true;\n}\n\n\nexport function isUndefined(input: any): boolean {\n return input === void 0;\n}\n\nexport function toInt<T>(argumentForCoercion: string | number | T): number {\n const coercedNumber = +argumentForCoercion;\n let value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n}\n","import { hasOwnProp, isString } from '../utils/type-checks';\nimport { DateObject, UnitOfTime } from '../types';\n\nconst aliases: { [key: string]: string } = {};\n\nexport type ExtendedUnitOfTime = UnitOfTime | 'date' | 'week' | 'isoWeek' | 'dayOfYear' |\n 'weekday' | 'isoWeekday' | 'second' | 'millisecond' | 'minute' | 'hour' | 'quarter' | 'weekYear' | 'isoWeekYear';\n\nconst _mapUnits: { [key: string]: UnitOfTime } = {\n date: 'day',\n hour: 'hours',\n minute: 'minutes',\n second: 'seconds',\n millisecond: 'milliseconds'\n};\n\nexport function addUnitAlias(unit: ExtendedUnitOfTime, shorthand: string): void {\n const lowerCase = unit.toLowerCase();\n let _unit = unit;\n if (lowerCase in _mapUnits) {\n _unit = _mapUnits[lowerCase];\n }\n aliases[lowerCase] = aliases[`${lowerCase}s`] = aliases[shorthand] = _unit;\n}\n\nexport function normalizeUnits(units: string | string[]): string {\n return isString(units) ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n}\n\nexport function normalizeObjectUnits(inputObject: { [key: string]: number }): DateObject {\n const normalizedInput: { [key: string]: number } = {};\n let normalizedProp;\n let prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput as any;\n}\n","// place in new Date([array])\nexport const YEAR = 0;\nexport const MONTH = 1;\nexport const DATE = 2;\nexport const HOUR = 3;\nexport const MINUTE = 4;\nexport const SECOND = 5;\nexport const MILLISECOND = 6;\nexport const WEEK = 7;\nexport const WEEKDAY = 8;\n","export function zeroFill(num: number,\n targetLength: number,\n forceSign?: boolean): string {\n const absNumber = `${Math.abs(num)}`;\n const zerosToFill = targetLength - absNumber.length;\n const sign = num >= 0;\n const _sign = sign ? (forceSign ? '+' : '') : '-';\n // todo: this is crazy slow\n const _zeros = Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1);\n\n return (_sign + _zeros + absNumber);\n}\n","import { Locale } from '../locale/locale.class';\nimport { zeroFill } from '../utils/zero-fill';\nimport { isFunction } from '../utils/type-checks';\nimport { DateFormatterOptions, DateFormatterFn } from '../types';\n\nexport let formatFunctions: {\n [key: string]: (date: Date, locale: Locale, isUTC?: boolean, offset?: number) => string;\n} = {};\nexport let formatTokenFunctions: { [key: string]: DateFormatterFn } = {};\n\n// tslint:disable-next-line\nexport const formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\n// token: 'M'\n// padded: ['MM', 2]\n// ordinal: 'Mo'\n// callback: function () { this.month() + 1 }\nexport function addFormatToken(token: string,\n padded: [string, number, boolean],\n ordinal: string,\n callback: DateFormatterFn): void {\n\n if (token) {\n formatTokenFunctions[token] = callback;\n }\n\n if (padded) {\n formatTokenFunctions[padded[0]] = function (): string {\n return zeroFill(callback.apply(null, arguments), padded[1], padded[2]);\n };\n }\n\n if (ordinal) {\n formatTokenFunctions[ordinal] = function (date: Date, opts: DateFormatterOptions): string {\n return opts.locale.ordinal(callback.apply(null, arguments), token);\n };\n }\n}\n\nexport function makeFormatFunction(format: string):\n (date: Date, locale: Locale, isUTC?: boolean, offset?: number) => string {\n\n const array: string[] = format.match(formattingTokens);\n const length = array.length;\n\n const formatArr: string[] | DateFormatterFn[] = new Array(length);\n\n for (let i = 0; i < length; i++) {\n formatArr[i] = formatTokenFunctions[array[i]]\n ? formatTokenFunctions[array[i]]\n : removeFormattingTokens(array[i]);\n }\n\n return function (date: Date, locale: Locale, isUTC: boolean, offset = 0): string {\n\n let output = '';\n for (let j = 0; j < length; j++) {\n output += isFunction(formatArr[j])\n ? (formatArr[j] as DateFormatterFn).call(null, date, {format, locale, isUTC, offset})\n : formatArr[j];\n }\n\n return output;\n };\n}\n\nfunction removeFormattingTokens(input: string): string {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n\n return input.replace(/\\\\/g, '');\n}\n","export function createUTCDate(y?: number,\n m?: number,\n d?: number): Date {\n const date = new Date(Date.UTC.apply(null, arguments));\n\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n\n return date;\n}\n\nexport function createDate(y?: number,\n m = 0,\n d = 1,\n h = 0,\n M = 0,\n s = 0,\n ms = 0): Date {\n const date = new Date(y, m, d, h, M, s, ms);\n\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n\n return date;\n}\n","import { createDate } from '../create/date-from-array';\n\nexport function getHours(date: Date, isUTC = false): number {\n return isUTC ? date.getUTCHours() : date.getHours();\n}\n\nexport function getMinutes(date: Date, isUTC = false): number {\n return isUTC ? date.getUTCMinutes() : date.getMinutes();\n}\n\nexport function getSeconds(date: Date, isUTC = false): number {\n return isUTC ? date.getUTCSeconds() : date.getSeconds();\n}\n\nexport function getMilliseconds(date: Date, isUTC = false): number {\n return isUTC ? date.getUTCMilliseconds() : date.getMilliseconds();\n}\nexport function getTime(date: Date): number {\n return date.getTime();\n}\n\nexport function getDay(date: Date, isUTC = false): number {\n return isUTC ? date.getUTCDay() : date.getDay();\n}\n\nexport function getDate(date: Date, isUTC = false): number {\n return isUTC ? date.getUTCDate() : date.getDate();\n}\n\nexport function getMonth(date: Date, isUTC = false): number {\n return isUTC ? date.getUTCMonth() : date.getMonth();\n}\n\nexport function getFullYear(date: Date, isUTC = false): number {\n return isUTC ? date.getUTCFullYear() : date.getFullYear();\n}\n\nexport function getUnixTime(date: Date): number {\n return Math.floor(date.valueOf() / 1000);\n}\n\nexport function unix(date: Date): number {\n return Math.floor(date.valueOf() / 1000);\n}\n\nexport function getFirstDayOfMonth(date: Date): Date {\n return createDate(\n date.getFullYear(),\n date.getMonth(),\n 1,\n date.getHours(),\n date.getMinutes(),\n date.getSeconds()\n );\n}\n\nexport function daysInMonth(date: Date): number {\n return _daysInMonth(date.getFullYear(), date.getMonth());\n}\n\nexport function _daysInMonth(year: number, month: number): number {\n return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();\n}\n\nexport function isFirstDayOfWeek(date: Date, firstDayOfWeek: number): boolean {\n return date.getDay() === firstDayOfWeek;\n}\n\nexport function isSameMonth(date1: Date, date2: Date) {\n if (!date1 || !date2) {\n return false;\n }\n\n return isSameYear(date1, date2) && getMonth(date1) === getMonth(date2);\n}\n\nexport function isSameYear(date1: Date, date2: Date) {\n if (!date1 || !date2) {\n return false;\n }\n\n return getFullYear(date1) === getFullYear(date2);\n}\n\nexport function isSameDay(date1: Date, date2: Date): boolean {\n if (!date1 || !date2) {\n return false;\n }\n\n return (\n isSameYear(date1, date2) &&\n isSameMonth(date1, date2) &&\n getDate(date1) === getDate(date2)\n );\n}\n","import { hasOwnProp, isFunction } from '../utils/type-checks';\nimport { Locale } from '../locale/locale.class';\n\nexport const match1 = /\\d/; // 0 - 9\nexport const match2 = /\\d\\d/; // 00 - 99\nexport const match3 = /\\d{3}/; // 000 - 999\nexport const match4 = /\\d{4}/; // 0000 - 9999\nexport const match6 = /[+-]?\\d{6}/; // -999999 - 999999\nexport const match1to2 = /\\d\\d?/; // 0 - 99\nexport const match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\nexport const match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\nexport const match1to3 = /\\d{1,3}/; // 0 - 999\nexport const match1to4 = /\\d{1,4}/; // 0 - 9999\nexport const match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\nexport const matchUnsigned = /\\d+/; // 0 - inf\nexport const matchSigned = /[+-]?\\d+/; // -inf - inf\n\nexport const matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\nexport const matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\nexport const matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n// any word (or two) characters or numbers including two/three word month in arabic.\n// includes scottish gaelic two word and hyphenated months\n// tslint:disable-next-line\nexport const matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i;\n\nexport type RegExpTokenFn = (isStrict: boolean, locale: Locale) => RegExp;\nconst regexes: {[key: string]: RegExpTokenFn} = {};\n\n\nexport function addRegexToken(token: string, regex: RegExp | RegExpTokenFn, strictRegex?: RegExp): void {\n if (isFunction(regex)) {\n regexes[token] = regex;\n\n return;\n }\n\n regexes[token] = function (isStrict: boolean, locale: Locale) {\n return (isStrict && strictRegex) ? strictRegex : regex;\n };\n}\n\nexport function getParseRegexForToken(token: string, locale: Locale): RegExp {\n const _strict = false;\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](_strict, locale);\n}\n\n// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\nfunction unescapeFormat(str: string): string {\n // tslint:disable-next-line\n return regexEscape(str\n .replace('\\\\', '')\n .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, (matched, p1, p2, p3, p4) => p1 || p2 || p3 || p4)\n );\n}\n\nexport function regexEscape(str: string): string {\n return str.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n","// tslint:disable:max-line-length\nimport { hasOwnProp, isArray, isFunction, isNumber, isString, toInt } from '../utils/type-checks';\nimport { DateParsingConfig } from '../create/parsing.types';\nimport { DateArray, DateParseTokenFn } from '../types';\n\nconst tokens: {[key: string]: DateParseTokenFn} = {};\n\nexport function addParseToken(token: string | string[], callback: DateParseTokenFn | number) {\n const _token = isString(token) ? [token] : token;\n let func = callback;\n\n if (isNumber(callback)) {\n func = function (input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\n array[callback] = toInt(input);\n\n return config;\n };\n }\n\n if (isArray<string>(_token) && isFunction(func)) {\n let i;\n for (i = 0; i < _token.length; i++) {\n tokens[_token[i]] = func;\n }\n }\n}\n\nexport function addWeekParseToken(token: string[], callback: DateParseTokenFn): void {\n addParseToken(token, function (input: string, array: DateArray, config: DateParsingConfig, _token: string): DateParsingConfig {\n config._w = config._w || {};\n\n return callback(input, config._w, config, _token);\n });\n}\n\n\nexport function addTimeToArrayFromToken(token: string, input: string, config: DateParsingConfig): DateParsingConfig {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n\n return config;\n}\n","const priorities: {[key: string]: number} = {};\n\nexport function addUnitPriority(unit: string, priority: number): void {\n priorities[unit] = priority;\n}\n\n/*\nexport function getPrioritizedUnits(unitsObj) {\n const units = [];\n let unit;\n for (unit in unitsObj) {\n if (unitsObj.hasOwnProperty(unit)) {\n units.push({ unit, priority: priorities[unit] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n\n return units;\n}\n*/\n","import { addFormatToken } from '../format/format';\nimport { getDate } from '../utils/date-getters';\nimport { addRegexToken, match1to2, match2 } from '../parse/regex';\nimport { addParseToken } from '../parse/token';\nimport { DATE } from './constants';\nimport { toInt } from '../utils/type-checks';\nimport { DateArray, DateFormatterOptions } from '../types';\nimport { addUnitAlias } from './aliases';\nimport { addUnitPriority } from './priorities';\nimport { DateParsingConfig } from '../create/parsing.types';\n\n\nexport function initDayOfMonth() {\n// FORMATTING\n\n addFormatToken('D', ['DD', 2, false], 'Do',\n function(date: Date, opts: DateFormatterOptions): string {\n return getDate(date, opts.isUTC)\n .toString(10);\n }\n );\n\n// ALIASES\n\n addUnitAlias('date', 'D');\n\n// PRIOROITY\n addUnitPriority('date', 9);\n\n// PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function(isStrict, locale) {\n return locale._dayOfMonthOrdinalParse || locale._ordinalParse;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken(\n 'Do',\n function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\n array[DATE] = toInt(input.match(match1to2)[0]);\n\n return config;\n }\n );\n}\n","import { DateParsingConfig, DateParsingFlags } from './parsing.types';\n\nfunction defaultParsingFlags(): DateParsingFlags {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false\n };\n}\n\nexport function getParsingFlags(config: DateParsingConfig): DateParsingFlags {\n if (config._pf == null) {\n config._pf = defaultParsingFlags();\n }\n\n return config._pf;\n}\n","import { addFormatToken } from '../format/format';\nimport { getFullYear } from '../utils/date-getters';\nimport { addRegexToken, match1to2, match1to4, match1to6, match2, match4, match6, matchSigned } from '../parse/regex';\nimport { addParseToken } from '../parse/token';\nimport { YEAR } from './constants';\nimport { toInt } from '../utils/type-checks';\nimport { addUnitPriority } from './priorities';\nimport { addUnitAlias } from './aliases';\nimport { DateFormatterOptions } from '../types';\n\n// FORMATTING\n\nfunction getYear(date: Date, opts: DateFormatterOptions): string {\n if (opts.locale.getFullYear) {\n return opts.locale.getFullYear(date, opts.isUTC).toString();\n }\n return getFullYear(date, opts.isUTC).toString();\n}\n\nexport function initYear() {\n addFormatToken('Y', null, null,\n function (date: Date, opts: DateFormatterOptions): string {\n const y = getFullYear(date, opts.isUTC);\n\n return y <= 9999 ? y.toString(10) : `+${y}`;\n });\n\n addFormatToken(null, ['YY', 2, false], null,\n function (date: Date, opts: DateFormatterOptions): string {\n return (getFullYear(date, opts.isUTC) % 100).toString(10);\n });\n\n addFormatToken(null, ['YYYY', 4, false], null, getYear);\n addFormatToken(null, ['YYYYY', 5, false], null, getYear);\n addFormatToken(null, ['YYYYYY', 6, true], null, getYear);\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array, config) {\n array[YEAR] = input.length === 2 ? parseTwoDigitYear(input) : toInt(input);\n\n return config;\n });\n addParseToken('YY', function (input, array, config) {\n array[YEAR] = parseTwoDigitYear(input);\n\n return config;\n });\n addParseToken('Y', function (input, array, config) {\n array[YEAR] = parseInt(input, 10);\n\n return config;\n });\n}\n\nexport function parseTwoDigitYear(input: string): number {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n}\n\nexport function daysInYear(year: number): number {\n return isLeapYear(year) ? 366 : 365;\n}\n\nexport function isLeapYear(year: number): boolean {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n}\n","import { addFormatToken } from '../format/format';\nimport { isLeapYear } from './year';\nimport { mod } from '../utils';\nimport { getMonth } from '../utils/date-getters';\nimport { addRegexToken, match1to2, match2 } from '../parse/regex';\nimport { addParseToken } from '../parse/token';\nimport { MONTH } from './constants';\nimport { toInt } from '../utils/type-checks';\nimport { addUnitPriority } from './priorities';\nimport { addUnitAlias } from './aliases';\nimport { getParsingFlags } from '../create/parsing-flags';\nimport { DateParsingConfig } from '../create/parsing.types';\nimport { DateArray, DateFormatterOptions } from '../types';\n\n// todo: this is duplicate, source in date-getters.ts\nexport function daysInMonth(year: number, month: number): number {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n const modMonth = mod(month, 12);\n const _year = year + (month - modMonth) / 12;\n\n return modMonth === 1\n ? isLeapYear(_year) ? 29 : 28\n : (31 - modMonth % 7 % 2);\n}\n\nexport function initMonth() {\n// FORMATTING\n\n addFormatToken('M', ['MM', 2, false], 'Mo',\n function(date: Date, opts: DateFormatterOptions): string {\n return (getMonth(date, opts.isUTC) + 1).toString(10);\n }\n );\n\n addFormatToken('MMM', null, null,\n function(date: Date, opts: DateFormatterOptions): string {\n return opts.locale.monthsShort(date, opts.format, opts.isUTC);\n }\n );\n\n addFormatToken('MMMM', null, null,\n function(date: Date, opts: DateFormatterOptions): string {\n return opts.locale.months(date, opts.format, opts.isUTC);\n }\n );\n\n\n// ALIASES\n\n addUnitAlias('month', 'M');\n\n// PRIORITY\n\n addUnitPriority('month', 8);\n\n// PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function(isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function(isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\n array[MONTH] = toInt(input) - 1;\n\n return config;\n });\n\n addParseToken(\n ['MMM', 'MMMM'],\n function(input: string, array: DateArray, config: DateParsingConfig, token: string): DateParsingConfig {\n const month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = !!input;\n }\n\n return config;\n }\n );\n}\n","import { TimeUnit } from '../types';\nimport { daysInMonth } from '../units/month';\nimport { isNumber } from './type-checks';\nimport { getDate, getFullYear, getMonth } from './date-getters';\nimport { isLeapYear } from '../units/year';\nimport { createDate } from '../create/date-from-array';\n\nconst defaultTimeUnit: TimeUnit = {\n year: 0,\n month: 0,\n day: 0,\n hour: 0,\n minute: 0,\n seconds: 0\n};\n\nexport function shiftDate(date: Date, unit: TimeUnit): Date {\n const _unit = Object.assign({}, defaultTimeUnit, unit);\n const year = date.getFullYear() + (_unit.year || 0);\n const month = date.getMonth() + (_unit.month || 0);\n let day = date.getDate() + (_unit.day || 0);\n if (_unit.month && !_unit.day) {\n day = Math.min(day, daysInMonth(year, month));\n }\n\n return createDate(\n year,\n month,\n day,\n date.getHours() + (_unit.hour || 0),\n date.getMinutes() + (_unit.minute || 0),\n date.getSeconds() + (_unit.seconds || 0)\n );\n}\n\nexport function setFullDate(date: Date, unit: TimeUnit): Date {\n return createDate(\n getNum(date.getFullYear(), unit.year),\n getNum(date.getMonth(), unit.month),\n 1, // day, to avoid issue with wrong months selection at the end of current month (#5371)\n getNum(date.getHours(), unit.hour),\n getNum(date.getMinutes(), unit.minute),\n getNum(date.getSeconds(), unit.seconds),\n getNum(date.getMilliseconds(), unit.milliseconds)\n );\n}\n\nfunction getNum(def: number, num?: number): number {\n return isNumber(num) ? num : def;\n}\n\nexport function setFullYear(date: Date, value: number, isUTC?: boolean): Date {\n const _month = getMonth(date, isUTC);\n const _date = getDate(date, isUTC);\n const _year = getFullYear(date, isUTC);\n if (isLeapYear(_year) && _month === 1 && _date === 29) {\n const _daysInMonth = daysInMonth(value, _month);\n isUTC ? date.setUTCFullYear(value, _month, _daysInMonth) : date.setFullYear(value, _month, _daysInMonth);\n }\n\n isUTC ? date.setUTCFullYear(value) : date.setFullYear(value);\n\n return date;\n}\n\nexport function setMonth(date: Date, value: number, isUTC?: boolean): Date {\n const dayOfMonth = Math.min(getDate(date), daysInMonth(getFullYear(date), value));\n isUTC ? date.setUTCMonth(value, dayOfMonth) : date.setMonth(value, dayOfMonth);\n\n return date;\n}\n\nexport function setDay(date: Date, value: number, isUTC?: boolean): Date {\n isUTC ? date.setUTCDate(value) : date.setDate(value);\n\n return date;\n}\n\nexport function setHours(date: Date, value: number, isUTC?: boolean): Date {\n isUTC ? date.setUTCHours(value) : date.setHours(value);\n\n return date;\n}\n\nexport function setMinutes(date: Date, value: number, isUTC?: boolean): Date {\n isUTC ? date.setUTCMinutes(value) : date.setMinutes(value);\n\n return date;\n}\n\nexport function setSeconds(date: Date, value: number, isUTC?: boolean): Date {\n isUTC ? date.setUTCSeconds(value) : date.setSeconds(value);\n\n return date;\n}\n\nexport function setMilliseconds(date: Date, value: number, isUTC?: boolean): Date {\n isUTC ? date.setUTCMilliseconds(value) : date.setMilliseconds(value);\n\n return date;\n}\n\nexport function setDate(date: Date, value: number, isUTC?: boolean): Date {\n isUTC ? date.setUTCDate(value) : date.setDate(value);\n\n return date;\n}\n\nexport function setTime(date: Date, value: number): Date {\n date.setTime(value);\n\n return date;\n}\n","// fastest way to clone date\n// https://jsperf.com/clone-date-object2\nexport function cloneDate(date: Date): Date {\n return new Date(date.getTime());\n}\n","// tslint:disable: switch-default\nimport { TimeUnit, UnitOfTime } from '../types';\nimport {\n setDate, setFullDate, setHours, setMilliseconds, setMinutes, setMonth, setSeconds,\n shiftDate\n} from './date-setters';\nimport { cloneDate } from '../create/clone';\nimport { setISODayOfWeek, setLocaleDayOfWeek } from '../units/day-of-week';\nimport { getMonth } from './date-getters';\nimport { add, subtract } from '../moment/add-subtract';\n\nexport function startOf(date: Date, unit: UnitOfTime, isUTC?: boolean): Date {\n const _date = cloneDate(date);\n // the following switch intentionally omits break keywords\n // to utilize falling through the cases.\n switch (unit) {\n case 'year':\n setMonth(_date, 0, isUTC);\n /* falls through */\n case 'quarter':\n case 'month':\n setDate(_date, 1, isUTC);\n /* falls through */\n case 'week':\n case 'isoWeek':\n case 'day':\n case 'date':\n setHours(_date, 0, isUTC);\n /* falls through */\n case 'hours':\n setMinutes(_date, 0, isUTC);\n /* falls through */\n case 'minutes':\n setSeconds(_date, 0, isUTC);\n /* falls through */\n case 'seconds':\n setMilliseconds(_date, 0, isUTC);\n }\n\n // weeks are a special case\n if (unit === 'week') {\n setLocaleDayOfWeek(_date, 0, {isUTC});\n }\n if (unit === 'isoWeek') {\n setISODayOfWeek(_date, 1);\n }\n\n // quarters are also special\n if (unit === 'quarter') {\n setMonth(_date, Math.floor(getMonth(_date, isUTC) / 3) * 3, isUTC);\n }\n\n return _date;\n}\n\nexport function endOf(date: Date, unit: UnitOfTime, isUTC?: boolean): Date {\n let _unit = unit;\n // 'date' is an alias for 'day', so it should be considered as such.\n if (_unit === 'date') {\n _unit = 'day';\n }\n\n const start = startOf(date, _unit, isUTC);\n const _step = add(start, 1, _unit === 'isoWeek' ? 'week' : _unit, isUTC);\n const res = subtract(_step, 1, 'milliseconds', isUTC);\n\n return res;\n}\n","import { addFormatToken } from '../format/format';\nimport { startOf } from '../utils/start-end-of';\nimport { addRegexToken, match1to3, match3 } from '../parse/regex';\nimport { addParseToken } from '../parse/token';\nimport { addUnitPriority } from './priorities';\nimport { addUnitAlias } from './aliases';\nimport { DateArray, DateFormatterOptions } from '../types';\nimport { DateParsingConfig } from '../create/parsing.types';\nimport { toInt } from '../utils/type-checks';\nimport { add } from '../moment/add-subtract';\n\n\nexport function initDayOfYear() {\n// FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3, false], 'DDDo',\n function(date: Date): string {\n return getDayOfYear(date)\n .toString(10);\n }\n );\n\n\n// ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n// PRIORITY\n\n addUnitPriority('dayOfYear', 4);\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(\n ['DDD', 'DDDD'],\n function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\n config._dayOfYear = toInt(input);\n\n return config;\n }\n );\n}\n\nexport function getDayOfYear(date: Date, isUTC?: boolean): number {\n const date1 = +startOf(date, 'day', isUTC);\n const date2 = +startOf(date, 'year', isUTC);\n const someDate = date1 - date2;\n const oneDay = 1000 * 60 * 60 * 24;\n\n return Math.round(someDate / oneDay) + 1;\n}\n\nexport function setDayOfYear(date: Date, input: number): Date {\n const dayOfYear = getDayOfYear(date);\n\n return add(date, (input - dayOfYear), 'day');\n}\n","/**\n *\n * @param {number} year\n * @param {number} dow - start-of-first-week\n * @param {number} doy - start-of-year\n * @returns {number}\n */\nimport { createUTCDate } from '../create/date-from-array';\nimport { daysInYear } from './year';\nimport { getDayOfYear } from './day-of-year';\nimport { getFullYear } from '../utils/date-getters';\n\nfunction firstWeekOffset(year: number, dow: number, doy: number): number {\n // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n const fwd = dow - doy + 7;\n // first-week day local weekday -- which local weekday is fwd\n const fwdlw = (createUTCDate(year, 0, fwd).getUTCDay() - dow + 7) % 7;\n\n return -fwdlw + fwd - 1;\n}\n\n// https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\nexport function dayOfYearFromWeeks(\n year: number,\n week: number,\n weekday: number,\n dow: number,\n doy: number\n): { year: number; dayOfYear: number } {\n const localWeekday = (7 + weekday - dow) % 7;\n const weekOffset = firstWeekOffset(year, dow, doy);\n const dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset;\n let resYear: number;\n let resDayOfYear: number;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n}\n\nexport function weekOfYear(date: Date, dow: number, doy: number, isUTC?: boolean): { week: number; year: number } {\n const weekOffset = firstWeekOffset(getFullYear(date, isUTC), dow, doy);\n const week = Math.floor((getDayOfYear(date, isUTC) - weekOffset - 1) / 7) + 1;\n let resWeek: number;\n let resYear: number;\n\n if (week < 1) {\n resYear = getFullYear(date, isUTC) - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(getFullYear(date, isUTC), dow, doy)) {\n resWeek = week - weeksInYear(getFullYear(date, isUTC), dow, doy);\n resYear = getFullYear(date, isUTC) + 1;\n } else {\n resYear = getFullYear(date, isUTC);\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear\n };\n}\n\nexport function weeksInYear(year: number, dow: number, doy: number): number {\n const weekOffset = firstWeekOffset(year, dow, doy);\n const weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n}\n","// tslint:disable:max-file-line-count max-line-length cyclomatic-complexity\n\nimport { weekOfYear } from '../units/week-calendar-utils';\nimport { hasOwnProp, isArray, isFunction } from '../utils/type-checks';\nimport { getDay, getMonth, getFullYear } from '../utils/date-getters';\nimport { matchWord, regexEscape } from '../parse/regex';\nimport { setDayOfWeek } from '../units/day-of-week';\n\nexport interface LocaleOptionsFormat {\n format: string[];\n standalone: string[];\n isFormat?: RegExp;\n}\n\nexport type LocaleOptions = string[] | LocaleOptionsFormat;\n\nconst MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\nexport const defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n);\nexport const defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(\n '_'\n);\nexport const defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n);\nexport const defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split(\n '_'\n);\nexport const defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\nexport const defaultLongDateFormat: { [index: string]: string } = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A'\n};\n\nexport const defaultOrdinal = '%d';\nexport const defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\nconst defaultMonthsShortRegex = matchWord;\nconst defaultMonthsRegex = matchWord;\n\nexport type OrdinalDateFn = (num: number, token?: string) => string;\nexport type PluralizeDateFn = (num: number, withoutSuffix: boolean,\n key?: string, isFuture?: boolean) => string;\n\nexport interface LocaleData {\n abbr?: string;\n parentLocale?: string;\n\n months?: LocaleOptions | ((date: Date, format: string, isUTC?: boolean) => string | string[]);\n monthsShort?: LocaleOptions | ((date: Date, format: string, isUTC?: boolean) => string | string[]);\n monthsParseExact?: boolean;\n\n weekdays?: LocaleOptions | ((date: Date, format: string, isUTC?: boolean) => string | string[]);\n weekdaysShort?: string[] | ((date: Date, format: string, isUTC?: boolean) => string | string[]);\n weekdaysMin?: string[] | ((date: Date, format: string, isUTC?: boolean) => string | string[]);\n weekdaysParseExact?: boolean;\n\n longDateFormat?: { [index: string]: string };\n calendar?: {\n [key: string]: (string\n | ((date: Date, now?: Date) => string)\n // tslint:disable-next-line\n | ((dayOfWeek: number, isNextWeek: boolean) => string))\n };\n relativeTime?: { [key: string]: string | PluralizeDateFn };\n dayOfMonthOrdinalParse?: RegExp;\n ordinal?: string | OrdinalDateFn;\n\n week?: { dow?: number; doy?: number };\n\n invalidDate?: string;\n\n monthsRegex?: RegExp;\n monthsParse?: RegExp[];\n monthsShortRegex?: RegExp;\n monthsStrictRegex?: RegExp;\n monthsShortStrictRegex?: RegExp;\n longMonthsParse?: RegExp[];\n shortMonthsParse?: RegExp[];\n\n meridiemParse?: RegExp;\n\n meridiemHour?(hour: number, meridiem: string): number;\n\n preparse?(str: string, format?: string | string[]): string;\n\n postformat?(str: string | number): string;\n\n meridiem?(hour: number, minute?: number, isLower?: boolean): string;\n\n isPM?(input: string): boolean;\n\n getFullYear?(date: Date, isUTC: boolean): number;\n}\n\nexport class Locale {\n parentLocale?: Locale;\n _abbr: string;\n _config: LocaleData;\n meridiemHour: (hour: number, meridiem: string) => number;\n\n _invalidDate: string;\n _week: { dow: number; doy: number };\n _dayOfMonthOrdinalParse: RegExp;\n _ordinalParse: RegExp;\n _meridiemParse: RegExp;\n\n private _calendar: { [key: string]: string };\n private _relativeTime: { future: string; past: string };\n private _months: LocaleOptions;\n private _monthsShort: LocaleOptions;\n private _monthsRegex: RegExp;\n private _monthsShortRegex: RegExp;\n private _monthsStrictRegex: RegExp;\n private _monthsShortStrictRegex: RegExp;\n private _monthsParse: RegExp[];\n private _longMonthsParse: string[] | RegExp[];\n private _shortMonthsParse: string[] | RegExp[];\n private _monthsParseExact: RegExp;\n private _weekdaysParseExact: boolean;\n private _weekdaysRegex: RegExp;\n private _weekdaysShortRegex: RegExp;\n private _weekdaysMinRegex: RegExp;\n\n private _weekdaysStrictRegex: RegExp;\n private _weekdaysShortStrictRegex: RegExp;\n private _weekdaysMinStrictRegex: RegExp;\n\n private _weekdays: LocaleOptions;\n private _weekdaysShort: string[];\n private _weekdaysMin: string[];\n private _weekdaysParse: string[] | RegExp[];\n private _minWeekdaysParse: string[] | RegExp[];\n private _shortWeekdaysParse: string[] | RegExp[];\n private _fullWeekdaysParse: RegExp[];\n private _longDateFormat: { [key: string]: string };\n\n private _ordinal: string;\n\n constructor(config: LocaleData) {\n if (!!config) {\n this.set(config);\n }\n }\n\n set(config: LocaleData): void {\n let confKey;\n for (confKey in config) {\n if (!config.hasOwnProperty(confKey)) {\n continue;\n }\n const prop = config[confKey as keyof LocaleData];\n const key = (isFunction(prop) ? confKey : `_${confKey}`) as keyof Locale;\n\n this[key] = prop as any;\n }\n\n this._config = config;\n }\n\n calendar(key: string, date: Date, now: Date): string {\n const output = this._calendar[key] || this._calendar.sameElse;\n\n return isFunction(output) ? output.call(null, date, now) : output;\n }\n\n longDateFormat(key: string) {\n const format = this._longDateFormat[key];\n const formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val: string) {\n return val.slice(1);\n });\n\n return this._longDateFormat[key];\n }\n\n get invalidDate(): string {\n return this._invalidDate;\n }\n\n set invalidDate(val: string) {\n this._invalidDate = val;\n }\n\n ordinal(num: number, token?: string): string {\n return this._ordinal.replace('%d', num.toString(10));\n }\n\n preparse(str: string, format?: string | string[]) {\n return str;\n }\n\n\n getFullYear(date: Date, isUTC = false): number {\n return getFullYear(date, isUTC);\n }\n\n postformat(str: string) {\n return str;\n }\n\n relativeTime(num: number, withoutSuffix: boolean, str: 'future' | 'past', isFuture: boolean): string {\n const output = this._relativeTime[str];\n\n return (isFunction(output)) ?\n output(num, withoutSuffix, str, isFuture) :\n output.replace(/%d/i, num.toString(10));\n }\n\n pastFuture(diff: number, output: string): string {\n const format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n /** Months */\n months(): string[];\n months(date: Date, format?: string, isUTC?: boolean): string;\n months(date?: Date, format?: string, isUTC = false): string | string[] {\n if (!date) {\n return isArray<string>(this._months)\n ? this._months\n : this._months.standalone;\n }\n\n if (isArray<string>(this._months)) {\n return this._months[getMonth(date, isUTC)];\n }\n\n const key = (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone';\n\n return this._months[key][getMonth(date, isUTC)];\n }\n\n monthsShort(): string[];\n monthsShort(date?: Date, format?: string, isUTC?: boolean): string;\n monthsShort(date?: Date, format?: string, isUTC = false): string | string[] {\n if (!date) {\n return isArray<string>(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort.standalone;\n }\n\n if (isArray<string>(this._monthsShort)) {\n return this._monthsShort[getMonth(date, isUTC)];\n }\n const key = MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone';\n\n return this._monthsShort[key][getMonth(date, isUTC)];\n }\n\n monthsParse(monthName: string, format?: string, strict?: boolean): number {\n let date;\n let regex;\n\n if (this._monthsParseExact) {\n return this.handleMonthStrictParse(monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n let i;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n date = new Date(Date.UTC(2000, i));\n if (strict && !this._longMonthsParse[i]) {\n const _months = this.months(date, '', true).replace('.', '');\n const _shortMonths = this.monthsShort(date, '', true).replace('.', '');\n this._longMonthsParse[i] = new RegExp(`^${_months}$`, 'i');\n this._shortMonthsParse[i] = new RegExp(`^${_shortMonths}$`, 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = `^${this.months(date, '', true)}|^${this.monthsShort(date, '', true)}`;\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && (this._longMonthsParse[i] as RegExp).test(monthName)) {\n return i;\n }\n\n if (strict && format === 'MMM' && (this._shortMonthsParse[i] as RegExp).test(monthName)) {\n return i;\n }\n\n if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n monthsRegex(isStrict: boolean): RegExp {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this.computeMonthsParse();\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n }\n\n return this._monthsRegex;\n }\n\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n\n return this._monthsStrictRegex && isStrict ?\n this._monthsStrictRegex : this._monthsRegex;\n }\n\n monthsShortRegex(isStrict: boolean): RegExp {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this.computeMonthsParse();\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n }\n\n return this._monthsShortRegex;\n }\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n\n return this._monthsShortStrictRegex && isStrict ?\n this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n\n /** Week */\n week(date: Date, isUTC?: boolean): number {\n return weekOfYear(date, this._week.dow, this._week.doy, isUTC).week;\n }\n\n firstDayOfWeek(): number {\n return this._week.dow;\n }\n\n firstDayOfYear(): number {\n return this._week.doy;\n }\n\n /** Day of Week */\n weekdays(): string[];\n weekdays(date: Date, format?: string, isUTC?: boolean): string;\n weekdays(date?: Date, format?: string, isUTC?: boolean): string | string[] {\n if (!date) {\n return isArray<string>(this._weekdays)\n ? this._weekdays\n : this._weekdays.standalone;\n }\n\n if (isArray<string>(this._weekdays)) {\n return this._weekdays[getDay(date, isUTC)];\n }\n\n const _key = this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone';\n\n return this._weekdays[_key][getDay(date, isUTC)];\n }\n\n weekdaysMin(): string[];\n weekdaysMin(date: Date, format?: string, isUTC?: boolean): string;\n weekdaysMin(date?: Date, format?: string, isUTC?: boolean): string | string[] {\n return date ? this._weekdaysMin[getDay(date, isUTC)] : this._weekdaysMin;\n }\n\n weekdaysShort(): string[];\n weekdaysShort(date: Date, format?: string, isUTC?: boolean): string;\n weekdaysShort(date?: Date, format?: string, isUTC?: boolean): string | string[] {\n return date ? this._weekdaysShort[getDay(date, isUTC)] : this._weekdaysShort;\n }\n\n\n // proto.weekdaysParse = localeWeekdaysParse;\n weekdaysParse(weekdayName?: string, format?: string, strict?: boolean): number {\n let i;\n let regex;\n\n if (this._weekdaysParseExact) {\n return this.handleWeekStrictParse(weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n // fix: here is the issue\n const date = setDayOfWeek(new Date(Date.UTC(2000, 1)), i, null, true);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(`^${this.weekdays(date, '', true).replace('.', '\\.?')}$`, 'i');\n this._shortWeekdaysParse[i] = new RegExp(`^${this.weekdaysShort(date, '', true).replace('.', '\\.?')}$`, 'i');\n this._minWeekdaysParse[i] = new RegExp(`^${this.weekdaysMin(date, '', true).replace('.', '\\.?')}$`, 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = `^${this.weekdays(date, '', true)}|^${this.weekdaysShort(date, '', true)}|^${this.weekdaysMin(date, '', true)}`;\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n\n if (!isArray<RegExp>(this._fullWeekdaysParse)\n || !isArray<RegExp>(this._shortWeekdaysParse)\n || !isArray<RegExp>(this._minWeekdaysParse)\n || !isArray<RegExp>(this._weekdaysParse)) {\n return;\n }\n\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // proto.weekdaysRegex = weekdaysRegex;\n weekdaysRegex(isStrict: boolean) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this.computeWeekdaysParse();\n }\n\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = matchWord;\n }\n\n return this._weekdaysStrictRegex && isStrict ?\n this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n }\n\n // proto.weekdaysShortRegex = weekdaysShortRegex;\n // proto.weekdaysMinRegex = weekdaysMinRegex;\n\n\n weekdaysShortRegex(isStrict?: boolean): RegExp {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this.computeWeekdaysParse();\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = matchWord;\n }\n\n return this._weekdaysShortStrictRegex && isStrict ?\n this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n }\n\n weekdaysMinRegex(isStrict?: boolean): RegExp {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this.computeWeekdaysParse();\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = matchWord;\n }\n\n return this._weekdaysMinStrictRegex && isStrict ?\n this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n }\n\n isPM(input: string): boolean {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return input.toLowerCase().charAt(0) === 'p';\n }\n\n meridiem(hours: number, minutes: number, isLower: boolean): string {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n }\n\n return isLower ? 'am' : 'AM';\n }\n\n formatLongDate(key: string) {\n this._longDateFormat = this._longDateFormat ? this._longDateFormat : defaultLongDateFormat;\n const format = this._longDateFormat[key];\n const formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[\n key\n ] = formatUpper.replace(/MMMM|MM|DD|dddd/g, (val: string) => {\n return val.slice(1);\n });\n\n return this._longDateFormat[key];\n }\n\n private handleMonthStrictParse(monthName: string, format: string, strict?: boolean) {\n const llc = monthName.toLocaleLowerCase();\n let i;\n let ii;\n let mom;\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = new Date(2000, i);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = (this._shortMonthsParse as string[]).indexOf(llc);\n\n return ii !== -1 ? ii : null;\n }\n ii = (this._longMonthsParse as string[]).indexOf(llc);\n\n return ii !== -1 ? ii : null;\n }\n\n if (format === 'MMM') {\n ii = (this._shortMonthsParse as string[]).indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n\n ii = (this._longMonthsParse as string[]).indexOf(llc);\n\n return ii !== -1 ? ii : null;\n }\n\n ii = (this._longMonthsParse as string[]).indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = (this._shortMonthsParse as string[]).indexOf(llc);\n\n return ii !== -1 ? ii : null;\n }\n\n private handleWeekStrictParse(weekdayName: string, format: string, strict: boolean): number {\n let ii;\n const llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n let i;\n for (i = 0; i < 7; ++i) {\n const date = setDayOfWeek(new Date(Date.UTC(2000, 1)), i, null, true);\n this._minWeekdaysParse[i] = this.weekdaysMin(date).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(date).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(date, '').toLocaleLowerCase();\n }\n }\n\n if (!isArray<string>(this._weekdaysParse)\n || !isArray<string>(this._shortWeekdaysParse)\n || !isArray<string>(this._minWeekdaysParse)) {\n return;\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = this._weekdaysParse.indexOf(llc);\n\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = this._shortWeekdaysParse.indexOf(llc);\n\n return ii !== -1 ? ii : null;\n } else {\n ii = this._minWeekdaysParse.indexOf(llc);\n\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = this._weekdaysParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._shortWeekdaysParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._minWeekdaysParse.indexOf(llc);\n\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = this._shortWeekdaysParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._weekdaysParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._minWeekdaysParse.indexOf(llc);\n\n return ii !== -1 ? ii : null;\n } else {\n ii = this._minWeekdaysParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._weekdaysParse.indexOf(llc);\n if (ii !== -1) {\n return ii;\n }\n ii = this._shortWeekdaysParse.indexOf(llc);\n\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n private computeMonthsParse() {\n const shortPieces: string[] = [];\n const longPieces: string[] = [];\n const mixedPieces: string[] = [];\n let date;\n\n let i;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n date = new Date(2000, i);\n shortPieces.push(this.monthsShort(date, ''));\n longPieces.push(this.months(date, ''));\n mixedPieces.push(this.months(date, ''));\n mixedPieces.push(this.monthsShort(date, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp(`^(${mixedPieces.join('|')})`, 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(`^(${longPieces.join('|')})`, 'i');\n this._monthsShortStrictRegex = new RegExp(`^(${shortPieces.join('|')})`, 'i');\n }\n\n private computeWeekdaysParse() {\n const minPieces = [];\n const shortPieces = [];\n const longPieces = [];\n const mixedPieces = [];\n\n let i;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n // let mom = createUTC([2000, 1]).day(i);\n const date = setDayOfWeek(new Date(Date.UTC(2000, 1)), i, null, true);\n const minp = this.weekdaysMin(date);\n const shortp = this.weekdaysShort(date);\n const longp = this.weekdays(date);\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._weekdaysRegex = new RegExp(`^(${mixedPieces.join('|')})`, 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(`^(${longPieces.join('|')})`, 'i');\n this._weekdaysShortStrictRegex = new RegExp(`^(${shortPieces.join('|')})`, 'i');\n this._weekdaysMinStrictRegex = new RegExp(`^(${minPieces.join('|')})`, 'i');\n }\n}\n\nfunction cmpLenRev(a: string, b: string): number {\n return b.length - a.length;\n}\n","export const defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n};\n","import {\n defaultDayOfMonthOrdinalParse,\n defaultLocaleMonths,\n defaultLocaleMonthsShort,\n defaultLocaleWeekdays,\n defaultLocaleWeekdaysMin,\n defaultLocaleWeekdaysShort, defaultLongDateFormat, defaultOrdinal,\n LocaleData\n} from './locale.class';\nimport { defaultCalendar } from './calendar';\n\nexport const defaultInvalidDate = 'Invalid date';\n\nexport const defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 1st is the first week of the year.\n};\n\nexport const defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\n\nexport const defaultRelativeTime: {[key: string]: string} = {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n};\n\nexport const baseConfig: LocaleData = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse\n};\n","// compare two arrays, return the number of differences\nimport { toInt } from './type-checks';\n\nexport function compareArrays<T>(array1: T[], array2: T[], dontConvert: boolean) {\n const len = Math.min(array1.length, array2.length);\n const lengthDiff = Math.abs(array1.length - array2.length);\n let diffs = 0;\n let i;\n for (i = 0; i < len; i++) {\n if ((dontConvert && array1[i] !== array2[i])\n || (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n diffs++;\n }\n }\n\n return diffs + lengthDiff;\n}\n","import { addFormatToken } from '../format/format';\nimport { Locale } from '../locale/locale.class';\nimport { weekOfYear } from './week-calendar-utils';\nimport { addRegexToken, match1to2, match2 } from '../parse/regex';\nimport { addUnitAlias } from './aliases';\nimport { addUnitPriority } from './priorities';\nimport { addWeekParseToken } from '../parse/token';\nimport { toInt } from '../utils/type-checks';\nimport { DateFormatterOptions, WeekParsing } from '../types';\nimport { DateParsingConfig } from '../create/parsing.types';\nimport { getLocale } from '../locale/locales';\nimport { add } from '../moment/add-subtract';\n\n// FORMATTING\n\nexport function initWeek() {\n addFormatToken('w', ['ww', 2, false], 'wo',\n function(date: Date, opts: DateFormatterOptions): string {\n return getWeek(date, opts.locale)\n .toString(10);\n }\n );\n\n addFormatToken('W', ['WW', 2, false], 'Wo',\n function(date: Date): string {\n return getISOWeek(date)\n .toString(10);\n }\n );\n\n// ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n// PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n// PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function(input: string, week: WeekParsing, config: DateParsingConfig, token: string): DateParsingConfig {\n week[token.substr(0, 1)] = toInt(input);\n\n return config;\n }\n );\n\n// export function getSetWeek (input) {\n// var week = this.localeData().week(this);\n// return input == null ? week : this.add((input - week) * 7, 'd');\n// }\n}\n\nexport function setWeek(date: Date, input: number, locale = getLocale()): Date {\n const week = getWeek(date, locale);\n\n return add(date, (input - week) * 7, 'day');\n}\n\nexport function getWeek(date: Date, locale = getLocale(), isUTC?: boolean): number {\n return locale.week(date, isUTC);\n}\n\n// export function getSetISOWeek (input) {\n// var week = weekOfYear(this, 1, 4).week;\n// return input == null ? week : this.add((input - week) * 7, 'd');\n// }\n\nexport function setISOWeek(date: Date, input: number): Date {\n const week = getISOWeek(date);\n\n return add(date, (input - week) * 7, 'day');\n}\n\nexport function getISOWeek(date: Date, isUTC?: boolean): number {\n return weekOfYear(date, 1, 4, isUTC).week;\n}\n\n","import { addFormatToken } from '../format/format';\nimport { addUnitAlias } from './aliases';\nimport { addUnitPriority } from './priorities';\nimport { addRegexToken, match1to2, match1to4, match1to6, match2, match4, match6, matchSigned } from '../parse/regex';\nimport { addWeekParseToken } from '../parse/token';\nimport { toInt } from '../utils/type-checks';\nimport { parseTwoDigitYear } from './year';\nimport { dayOfYearFromWeeks, weekOfYear, weeksInYear } from './week-calendar-utils';\nimport { createUTCDate } from '../create/date-from-array';\nimport { getISOWeek, getWeek } from './week';\nimport { getISODayOfWeek, getLocaleDayOfWeek } from './day-of-week';\nimport { getLocale } from '../locale/locales';\nimport { setDate, setFullYear, setMonth } from '../utils/date-setters';\nimport { getDate, getFullYear, getMonth } from '../utils/date-getters';\nimport { Locale } from '../locale/locale.class';\nimport { DateFormatterFn, DateFormatterOptions, WeekParsing } from '../types';\n\n// FORMATTING\n\nexport function initWeekYear() {\n addFormatToken(null, ['gg', 2, false], null,\n function (date: Date, opts: DateFormatterOptions): string {\n // return this.weekYear() % 100;\n return (getWeekYear(date, opts.locale) % 100).toString();\n }\n );\n\n addFormatToken(null, ['GG', 2, false], null,\n function (date: Date): string {\n // return this.isoWeekYear() % 100;\n return (getISOWeekYear(date) % 100).toString();\n }\n );\n\n addWeekYearFormatToken('gggg', _getWeekYearFormatCb);\n addWeekYearFormatToken('ggggg', _getWeekYearFormatCb);\n addWeekYearFormatToken('GGGG', _getISOWeekYearFormatCb);\n addWeekYearFormatToken('GGGGG', _getISOWeekYearFormatCb);\n\n// ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n// PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n\n// PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week: WeekParsing, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n\n return config;\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week: WeekParsing, config, token) {\n week[token] = parseTwoDigitYear(input);\n\n return config;\n });\n}\n\nfunction addWeekYearFormatToken(token: string, getter: DateFormatterFn): void {\n addFormatToken(null, [token, token.length, false], null, getter);\n}\n\nfunction _getWeekYearFormatCb(date: Date, opts: DateFormatterOptions): string {\n return getWeekYear(date, opts.locale).toString();\n}\n\nfunction _getISOWeekYearFormatCb(date: Date): string {\n return getISOWeekYear(date).toString();\n}\n\n// MOMENTS\n\nexport function getSetWeekYear(date: Date, input: number, locale = getLocale(), isUTC?: boolean): number | Date {\n return getSetWeekYearHelper(date,\n input,\n // this.week(),\n getWeek(date, locale, isUTC),\n // this.weekday(),\n getLocaleDayOfWeek(date, locale, isUTC),\n locale.firstDayOfWeek(),\n locale.firstDayOfYear(),\n isUTC);\n}\n\nexport function getWeekYear(date: Date, locale = getLocale(), isUTC?: boolean): number {\n return weekOfYear(date, locale.firstDayOfWeek(), locale.firstDayOfYear(), isUTC).year;\n}\n\nexport function getSetISOWeekYear(date: Date, input: number, isUTC?: boolean): number | Date {\n return getSetWeekYearHelper(date, input, getISOWeek(date, isUTC), getISODayOfWeek(date, isUTC), 1, 4);\n}\n\nexport function getISOWeekYear(date: Date, isUTC?: boolean): number {\n return weekOfYear(date, 1, 4, isUTC).year;\n}\n\nexport function getISOWeeksInYear(date: Date, isUTC?: boolean) {\n return weeksInYear(getFullYear(date, isUTC), 1, 4);\n}\n\nexport function getWeeksInYear(date: Date, isUTC?: boolean, locale: Locale = getLocale()): number {\n return weeksInYear(getFullYear(date, isUTC), locale.firstDayOfWeek(), locale.firstDayOfYear());\n}\n\nfunction getSetWeekYearHelper(date: Date, input: number, week: number,\n weekday: number, dow: number, doy: number, isUTC?: boolean): number | Date {\n if (!input) {\n return getWeekYear(date, void 0, isUTC);\n }\n\n const weeksTarget = weeksInYear(input, dow, doy);\n const _week = week > weeksTarget ? weeksTarget : week;\n\n return setWeekAll(date, input, _week, weekday, dow, doy);\n}\n\nfunction setWeekAll(date: Date, weekYear: number, week: number,\n weekday: number, dow: number, doy: number): Date {\n const dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n const _date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n setFullYear(date, getFullYear(_date, true), true);\n setMonth(date, getMonth(_date, true), true);\n setDate(date, getDate(_date, true), true);\n\n return date;\n}\n","import { addFormatToken } from '../format/format';\nimport { DateFormatterOptions } from '../types';\n\n// todo: add support for timezones\n\nexport function initTimezone() {\n // FORMATTING\n addFormatToken('z', null, null,\n function(date: Date, opts: DateFormatterOptions): string {\n return opts.isUTC ? 'UTC' : '';\n }\n );\n addFormatToken('zz', null, null,\n function(date: Date, opts: DateFormatterOptions): string {\n return opts.isUTC ? 'Coordinated Universal Time' : '';\n }\n );\n}\n\n// MOMENTS\n\nexport function getZoneAbbr(isUTC: boolean) {\n return isUTC ? 'UTC' : '';\n}\n\nexport function getZoneName(isUTC: boolean) {\n return isUTC ? 'Coordinated Universal Time' : '';\n}\n","import { addFormatToken } from '../format/format';\nimport { unix } from '../utils/date-getters';\nimport { addRegexToken, matchSigned, matchTimestamp } from '../parse/regex';\nimport { addParseToken} from '../parse/token';\nimport { toInt } from '../utils/type-checks';\nimport { DateArray } from '../types';\nimport { DateParsingConfig } from '../create/parsing.types';\n\n\nexport function initTimestamp() {\n// FORMATTING\n\n addFormatToken('X', null, null, function(date: Date): string {\n return unix(date)\n .toString(10);\n });\n addFormatToken('x', null, null, function(date: Date): string {\n return date.valueOf()\n .toString(10);\n });\n\n// PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n\n addParseToken('X', function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\n config._d = new Date(parseFloat(input) * 1000);\n\n return config;\n });\n addParseToken('x', function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\n config._d = new Date(toInt(input));\n\n return config;\n });\n}\n","import { addFormatToken } from '../format/format';\nimport { getSeconds } from '../utils/date-getters';\nimport { addRegexToken, match1to2, match2 } from '../parse/regex';\nimport { addParseToken } from '../parse/token';\nimport { SECOND } from './constants';\nimport { addUnitAlias } from './aliases';\nimport { addUnitPriority } from './priorities';\nimport { DateFormatterOptions } from '../types';\n\n\nexport function initSecond() {\n// FORMATTING\n\n addFormatToken('s', ['ss', 2, false], null,\n function(date: Date, opts: DateFormatterOptions): string {\n return getSeconds(date, opts.isUTC)\n .toString(10);\n }\n );\n\n// ALIASES\n\n addUnitAlias('second', 's');\n\n// PRIORITY\n\n addUnitPriority('second', 15);\n\n// PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n}\n","import { addFormatToken } from '../format/format';\nimport { addRegexToken, match1 } from '../parse/regex';\nimport { addParseToken } from '../parse/token';\nimport { MONTH } from './constants';\nimport { toInt } from '../utils/type-checks';\nimport { getMonth } from '../utils/date-getters';\nimport { DateArray, DateFormatterOptions } from '../types';\nimport { addUnitPriority } from './priorities';\nimport { addUnitAlias } from './aliases';\nimport { DateParsingConfig } from '../create/parsing.types';\nimport { setMonth } from '../utils/date-setters';\n\n\nexport function initQuarter() {\n// FORMATTING\n\n addFormatToken('Q', null, 'Qo',\n function(date: Date, opts: DateFormatterOptions): string {\n return getQuarter(date, opts.isUTC)\n .toString(10);\n }\n );\n\n// ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n// PRIORITY\n\n addUnitPriority('quarter', 7);\n\n// PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\n array[MONTH] = (toInt(input) - 1) * 3;\n\n return config;\n });\n}\n\n// MOMENTS\n\nexport function getQuarter(date: Date, isUTC = false): number {\n return Math.ceil((getMonth(date, isUTC) + 1) / 3);\n}\n\nexport function setQuarter(date: Date, quarter: number, isUTC?: boolean): Date {\n return setMonth(date, (quarter - 1) * 3 + getMonth(date, isUTC) % 3, isUTC);\n}\n\n// export function getSetQuarter(input) {\n// return input == null\n// ? Math.ceil((this.month() + 1) / 3)\n// : this.month((input - 1) * 3 + this.month() % 3);\n// }\n","// tslint:disable:no-bitwise max-line-length\n// FORMATTING\n\nimport { addFormatToken } from '../format/format';\nimport { zeroFill } from '../utils/zero-fill';\nimport { DateParsingConfig } from '../create/parsing.types';\nimport { isNumber, isString, toInt } from '../utils/type-checks';\nimport { addRegexToken, matchOffset, matchShortOffset } from '../parse/regex';\nimport { add } from '../moment/add-subtract';\nimport { addParseToken } from '../parse/token';\nimport { DateArray } from '../types';\nimport { cloneDate } from '../create/clone';\nimport { setMonth } from '../utils/date-setters';\n\nfunction addOffsetFormatToken(token: string, separator: string): void {\n addFormatToken(token, null, null, function (date: Date, config): string {\n let offset = getUTCOffset(date, {_isUTC: config.isUTC, _offset: config.offset});\n let sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n });\n}\n\nexport function initOffset() {\n addOffsetFormatToken('Z', ':');\n addOffsetFormatToken('ZZ', '');\n\n// PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n\n return config;\n });\n}\n\n// HELPERS\n\n// timezone chunker\n// '+10:00' > ['10', '00']\n// '-1530' > ['-15', '30']\nconst chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\nfunction offsetFromString(matcher: RegExp, str: string): number {\n const matches = (str || '').match(matcher);\n\n if (matches === null) {\n return null;\n }\n\n const chunk = matches[matches.length - 1];\n const parts = chunk.match(chunkOffset) || ['-', '0', '0'];\n const minutes = parseInt(parts[1], 10) * 60 + toInt(parts[2]);\n const _min = parts[0] === '+' ? minutes : -minutes;\n\n return minutes === 0 ? 0 : _min;\n}\n\n// Return a moment from input, that is local/utc/zone equivalent to model.\nexport function cloneWithOffset(input: Date, date: Date,\n config: DateParsingConfig = {}): Date {\n if (!config._isUTC) {\n return input;\n }\n\n const res = cloneDate(date);\n // todo: input._d - res._d + ((res._offset || 0) - (input._offset || 0))*60000\n const offsetDiff = (config._offset || 0) * 60000;\n const diff = input.valueOf() - res.valueOf() + offsetDiff;\n // Use low-level api, because this fn is low-level api.\n res.setTime(res.valueOf() + diff);\n // todo: add timezone handling\n // hooks.updateOffset(res, false);\n\n return res;\n}\n\nexport function getDateOffset(date: Date): number {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(date.getTimezoneOffset() / 15) * 15;\n}\n\n// HOOKS\n\n// This function will be called whenever a moment is mutated.\n// It is intended to keep the offset in sync with the timezone.\n// todo: it's from moment timezones\n// hooks.updateOffset = function () {\n// };\n\n// MOMENTS\n\n// keepLocalTime = true means only change the timezone, without\n// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n// +0200, so we adjust the time as needed, to be valid.\n//\n// Keeping the time actually adds/subtracts (one hour)\n// from the actual represented time. That is why we call updateOffset\n// a second time. In case it wants us to change the offset again\n// _changeInProgress == true case, then we have to adjust, because\n// there is no such time in the given timezone.\nexport function getUTCOffset(date: Date, config: DateParsingConfig = {}): number {\n const _offset = config._offset || 0;\n\n return config._isUTC ? _offset : getDateOffset(date);\n}\n\nexport function setUTCOffset(date: Date, input: number | string, keepLocalTime?: boolean, keepMinutes?: boolean, config: DateParsingConfig = {}): Date {\n const offset = config._offset || 0;\n let localAdjust;\n let _input = input;\n let _date = date;\n\n if (isString(_input)) {\n _input = offsetFromString(matchShortOffset, _input);\n if (_input === null) {\n return _date;\n }\n } else if (isNumber(_input) && Math.abs(_input) < 16 && !keepMinutes) {\n _input = _input * 60;\n }\n\n if (!config._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(_date);\n }\n config._offset = _input;\n config._isUTC = true;\n if (localAdjust != null) {\n _date = add(_date, localAdjust, 'minutes');\n }\n if (offset !== _input) {\n if (!keepLocalTime || config._changeInProgress) {\n _date = add(_date, _input - offset, 'minutes', config._isUTC);\n // addSubtract(this, createDuration(_input - offset, 'm'), 1, false);\n } else if (!config._changeInProgress) {\n config._changeInProgress = true;\n // todo: add timezone handling\n // hooks.updateOffset(this, true);\n config._changeInProgress = null;\n }\n }\n\n return _date;\n}\n\n/*\nexport function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n}\n*/\n\nexport function setOffsetToUTC(date: Date, keepLocalTime?: boolean): Date {\n return setUTCOffset(date, 0, keepLocalTime);\n}\n\nexport function isDaylightSavingTime(date: Date): boolean {\n\n return (getUTCOffset(date) > getUTCOffset(setMonth(cloneDate(date), 0))\n || getUTCOffset(date) > getUTCOffset(setMonth(cloneDate(date), 5)));\n}\n\n/*export function setOffsetToLocal(date: Date, isUTC?: boolean, keepLocalTime?: boolean) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n}*/\n\nexport function setOffsetToParsedOffset(date: Date, input: string, config: DateParsingConfig = {}): Date {\n if (config._tzm != null) {\n return setUTCOffset(date, config._tzm, false, true, config);\n }\n\n if (isString(input)) {\n const tZone = offsetFromString(matchOffset, input);\n if (tZone != null) {\n return setUTCOffset(date, tZone, false, false, config);\n }\n\n return setUTCOffset(date, 0, true, false, config);\n }\n\n return date;\n}\n\nexport function hasAlignedHourOffset(date: Date, input?: Date) {\n const _input = input ? getUTCOffset(input, { _isUTC: false }) : 0;\n\n return (getUTCOffset(date) - _input) % 60 === 0;\n}\n\n\n// DEPRECATED\n/*export function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n const c = {};\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n const other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() &&\n compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n}*/\n\n// in Khronos\n/*export function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n}\n\nexport function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n}\n\nexport function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n}*/\n","import { addFormatToken } from '../format/format';\nimport { getMinutes } from '../utils/date-getters';\nimport { addRegexToken, match1to2, match2 } from '../parse/regex';\nimport { addParseToken } from '../parse/token';\nimport { MINUTE } from './constants';\nimport { addUnitPriority } from './priorities';\nimport { addUnitAlias } from './aliases';\nimport { DateFormatterOptions } from '../types';\n\n\nexport function initMinute() {\n// FORMATTING\n\n addFormatToken('m', ['mm', 2, false], null,\n function(date: Date, opts: DateFormatterOptions): string {\n return getMinutes(date, opts.isUTC)\n .toString(10);\n }\n );\n\n// ALIASES\n\n addUnitAlias('minute', 'm');\n\n// PRIORITY\n\n addUnitPriority('minute', 14);\n\n// PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n}\n","// tslint:disable:no-bitwise\n// FORMATTING\n\nimport { addFormatToken } from '../format/format';\nimport { addRegexToken, match1, match1to3, match2, match3, matchUnsigned } from '../parse/regex';\nimport { MILLISECOND } from './constants';\nimport { toInt } from '../utils/type-checks';\nimport { addParseToken } from '../parse/token';\nimport { DateArray, DateFormatterOptions, WeekParsing } from '../types';\nimport { addUnitAlias } from './aliases';\nimport { addUnitPriority } from './priorities';\nimport { DateParsingConfig } from '../create/parsing.types';\nimport { getMilliseconds } from '../utils/date-getters';\n\n\nexport function initMillisecond() {\n addFormatToken('S', null, null,\n function(date: Date, opts: DateFormatterOptions): string {\n return (~~(getMilliseconds(date, opts.isUTC) / 100)).toString(10);\n }\n );\n\n addFormatToken(null, ['SS', 2, false], null,\n function(date: Date, opts: DateFormatterOptions): string {\n return (~~(getMilliseconds(date, opts.isUTC) / 10)).toString(10);\n }\n );\n\n addFormatToken(null, ['SSS', 3, false], null,\n function(date: Date, opts: DateFormatterOptions): string {\n return (getMilliseconds(date, opts.isUTC)).toString(10);\n }\n );\n addFormatToken(null, ['SSSS', 4, false], null,\n function(date: Date, opts: DateFormatterOptions): string {\n return (getMilliseconds(date, opts.isUTC) * 10).toString(10);\n }\n );\n addFormatToken(null, ['SSSSS', 5, false], null,\n function(date: Date, opts: DateFormatterOptions): string {\n return (getMilliseconds(date, opts.isUTC) * 100).toString(10);\n }\n );\n addFormatToken(null, ['SSSSSS', 6, false], null,\n function(date: Date, opts: DateFormatterOptions): string {\n return (getMilliseconds(date, opts.isUTC) * 1000).toString(10);\n }\n );\n addFormatToken(null, ['SSSSSSS', 7, false], null,\n function(date: Date, opts: DateFormatterOptions): string {\n return (getMilliseconds(date, opts.isUTC) * 10000).toString(10);\n }\n );\n addFormatToken(null, ['SSSSSSSS', 8, false], null,\n function(date: Date, opts: DateFormatterOptions): string {\n return (getMilliseconds(date, opts.isUTC) * 100000).toString(10);\n }\n );\n addFormatToken(null, ['SSSSSSSSS', 9, false], null,\n function(date: Date, opts: DateFormatterOptions): string {\n return (getMilliseconds(date, opts.isUTC) * 1000000).toString(10);\n }\n );\n\n\n// ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n// PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n// PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n let token;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\n array[MILLISECOND] = toInt(parseFloat(`0.${input}`) * 1000);\n\n return config;\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n// MOMENTS\n}\n","import { getHours, getMinutes, getSeconds } from '../utils/date-getters';\nimport { addFormatToken } from '../format/format';\nimport { zeroFill } from '../utils/zero-fill';\nimport { Locale } from '../locale/locale.class';\nimport { addRegexToken, match1to2, match2, match3to4, match5to6 } from '../parse/regex';\nimport { addParseToken } from '../parse/token';\nimport { HOUR, MINUTE, SECOND } from './constants';\nimport { toInt } from '../utils/type-checks';\nimport { DateArray, DateFormatterOptions } from '../types';\nimport { DateParsingConfig } from '../create/parsing.types';\nimport { getParsingFlags } from '../create/parsing-flags';\nimport { addUnitPriority } from './priorities';\nimport { addUnitAlias } from './aliases';\n\n\nexport function initHour() {\n// FORMATTING\n\n function hFormat(date: Date, isUTC: boolean): number {\n return getHours(date, isUTC) % 12 || 12;\n }\n\n function kFormat(date: Date, isUTC: boolean): number {\n return getHours(date, isUTC) || 24;\n }\n\n addFormatToken('H', ['HH', 2, false], null,\n function(date: Date, opts: DateFormatterOptions): string {\n return getHours(date, opts.isUTC)\n .toString(10);\n }\n );\n addFormatToken('h', ['hh', 2, false], null,\n function(date: Date, opts: DateFormatterOptions): string {\n return hFormat(date, opts.isUTC)\n .toString(10);\n }\n );\n addFormatToken('k', ['kk', 2, false], null,\n function(date: Date, opts: DateFormatterOptions): string {\n return kFormat(date, opts.isUTC)\n .toString(10);\n }\n );\n\n addFormatToken('hmm', null, null,\n function(date: Date, opts: DateFormatterOptions): string {\n const _h = hFormat(date, opts.isUTC);\n const _mm = zeroFill(getMinutes(date, opts.isUTC), 2);\n\n return `${_h}${_mm}`;\n }\n );\n\n addFormatToken('hmmss', null, null,\n function(date: Date, opts: DateFormatterOptions): string {\n const _h = hFormat(date, opts.isUTC);\n const _mm = zeroFill(getMinutes(date, opts.isUTC), 2);\n const _ss = zeroFill(getSeconds(date, opts.isUTC), 2);\n\n return `${_h}${_mm}${_ss}`;\n }\n );\n\n addFormatToken('Hmm', null, null,\n function(date: Date, opts: DateFormatterOptions): string {\n const _H = getHours(date, opts.isUTC);\n const _mm = zeroFill(getMinutes(date, opts.isUTC), 2);\n\n return `${_H}${_mm}`;\n }\n );\n\n addFormatToken('Hmmss', null, null,\n function(date: Date, opts: DateFormatterOptions): string {\n const _H = getHours(date, opts.isUTC);\n const _mm = zeroFill(getMinutes(date, opts.isUTC), 2);\n const _ss = zeroFill(getSeconds(date, opts.isUTC), 2);\n\n return `${_H}${_mm}${_ss}`;\n }\n );\n\n function meridiem(token: string, lowercase: boolean): void {\n addFormatToken(token, null, null,\n function(date: Date, opts: DateFormatterOptions): string {\n return opts.locale.meridiem(getHours(date, opts.isUTC), getMinutes(date, opts.isUTC), lowercase);\n }\n );\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n// ALIASES\n\n addUnitAlias('hour', 'h');\n\n// PRIORITY\n addUnitPriority('hour', 13);\n\n\n// PARSING\n\n function matchMeridiem(isStrict: boolean, locale: Locale): RegExp {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(\n ['k', 'kk'],\n function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\n const kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n\n return config;\n }\n );\n addParseToken(['a', 'A'], function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n\n return config;\n });\n addParseToken(['h', 'hh'], function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n\n return config;\n });\n addParseToken('hmm', function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\n const pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n\n return config;\n });\n addParseToken('hmmss', function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\n const pos1 = input.length - 4;\n const pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n\n return config;\n });\n addParseToken('Hmm', function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\n const pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n\n return config;\n });\n addParseToken('Hmmss', function(input: string, array: DateArray, config: DateParsingConfig): DateParsingConfig {\n const pos1 = input.length - 4;\n const pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n\n return config;\n });\n\n}\n","// internal storage for locale config files\nimport { Locale, LocaleData } from './locale.class';\nimport { baseConfig } from './locale.defaults';\nimport { hasOwnProp, isArray, isObject, isString, isUndefined, toInt } from '../utils/type-checks';\nimport { compareArrays } from '../utils/compare-arrays';\n\nimport { initWeek } from '../units/week';\nimport { initWeekYear } from '../units/week-year';\nimport { initYear } from '../units/year';\nimport { initTimezone } from '../units/timezone';\nimport { initTimestamp } from '../units/timestamp';\nimport { initSecond } from '../units/second';\nimport { initQuarter } from '../units/quarter';\nimport { initOffset } from '../units/offset';\nimport { initMinute } from '../units/minute';\nimport { initMillisecond } from '../units/millisecond';\nimport { initMonth } from '../units/month';\nimport { initHour } from '../units/hour';\nimport { initDayOfYear } from '../units/day-of-year';\nimport { initDayOfWeek } from '../units/day-of-week';\nimport { initDayOfMonth } from '../units/day-of-month';\n\nconst locales: { [key: string]: Locale } = {};\nconst localeFamilies: { [key: string]: {name: string; config: LocaleData}[] } = {};\nlet globalLocale: Locale;\n\nfunction normalizeLocale(key: string): string {\n return key ? key.toLowerCase().replace('_', '-') : key;\n}\n\n// pick the locale from the array\n// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n// substring from most specific to least,\n// but move to the next array item if it's a more specific variant than the current root\nfunction chooseLocale(names: string[]): Locale {\n let next;\n let locale;\n let i = 0;\n\n while (i < names.length) {\n const split = normalizeLocale(names[i]).split('-');\n let j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n // the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n\n return null;\n}\n\nexport function mergeConfigs(parentConfig: LocaleData,\n childConfig: LocaleData) {\n const res: LocaleData = Object.assign({}, parentConfig);\n\n for (const childProp in childConfig) {\n if (!hasOwnProp(childConfig, childProp)) {\n continue;\n }\n\n if (isObject(parentConfig[childProp]) && isObject(childConfig[childProp])) {\n res[childProp as any] = {};\n Object.assign(res[childProp], parentConfig[childProp]);\n Object.assign(res[childProp], childConfig[childProp]);\n } else if (childConfig[childProp] != null) {\n res[childProp as any] = childConfig[childProp];\n } else {\n delete res[childProp as any];\n }\n }\n for (const parentProp in parentConfig) {\n if (\n hasOwnProp(parentConfig, parentProp) &&\n !hasOwnProp(childConfig, parentProp) &&\n isObject(parentConfig[parentProp as keyof LocaleData])\n ) {\n // make sure changes to properties don't modify parent config\n res[parentProp as any] = Object.assign({}, res[parentProp as keyof LocaleData]);\n }\n }\n\n return res;\n}\n\n\nfunction loadLocale(name: string): Locale {\n // no way!\n /* var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && (typeof module !== 'undefined') &&\n module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n var aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {}\n }*/\n if (!locales[name]) {\n // tslint:disable-next-line\n console.error(`Khronos locale error: please load locale \"${name}\" before using it`);\n // throw new Error(`Khronos locale error: please load locale \"${name}\" before using it`);\n }\n\n return locales[name];\n}\n\n// This function will load locale and then set the global locale. If\n// no arguments are passed in, it will simply return the current global\n// locale key.\nexport function getSetGlobalLocale(key?: string | string[], values?: LocaleData): string {\n let data: Locale;\n\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else if (isString(key)) {\n data = defineLocale(key, values);\n }\n\n if (data) {\n globalLocale = data;\n }\n }\n\n return globalLocale && globalLocale._abbr;\n}\n\nexport function defineLocale(name: string, config?: LocaleData): Locale {\n if (config === null) {\n // useful for testing\n delete locales[name];\n globalLocale = getLocale('en');\n\n return null;\n }\n\n if (!config) {\n return;\n }\n\n let parentConfig = baseConfig;\n config.abbr = name;\n if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({ name, config });\n\n return null;\n }\n }\n\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n\n return locales[name];\n}\n\nexport function updateLocale(name: string, config?: LocaleData): Locale {\n let _config = config;\n\n if (_config != null) {\n let parentConfig = baseConfig;\n // MERGE\n const tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n _config = mergeConfigs(parentConfig, _config);\n const locale = new Locale(_config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n\n return locales[name];\n}\n\n// returns locale data\nexport function getLocale(key?: string | string[]): Locale {\n setDefaultLocale();\n\n if (!key) {\n return globalLocale;\n }\n // let locale;\n const _key = isArray(key) ? key : [key];\n\n return chooseLocale(_key);\n}\n\nexport function listLocales(): string[] {\n return Object.keys(locales);\n}\n\nfunction setDefaultLocale(): void {\n if (locales[`en`]) {\n\n return undefined;\n }\n\n getSetGlobalLocale('en', {\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal(num: number): string {\n const b = num % 10;\n const output =\n toInt((num % 100) / 10) === 1\n ? 'th'\n : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n\n return num + output;\n }\n });\n\n initWeek();\n initWeekYear();\n initYear();\n initTimezone();\n initTimestamp();\n initSecond();\n initQuarter();\n initOffset();\n initMonth();\n initMinute();\n initMillisecond();\n initHour();\n initDayOfYear();\n initDayOfWeek();\n initDayOfMonth();\n}\n","import { toInt } from '../utils/type-checks';\nimport { createDuration } from './create';\nimport { Duration } from './constructor';\nimport { DateObject } from '../types';\n\nconst ordering: (keyof DateObject)[] = ['year', 'quarter', 'month', 'week', 'day', 'hours', 'minutes', 'seconds', 'milliseconds'];\nconst orderingHash = ordering.reduce((mem: { [key: string]: boolean }, order) => {\n mem[order] = true;\n\n return mem;\n}, {});\n\nexport function isDurationValid(duration: Partial<DateObject>): boolean {\n const durationKeys = Object.keys(duration);\n if (durationKeys\n .some((key: keyof DateObject) => {\n return (key in orderingHash)\n && duration[key] === null\n || isNaN(duration[key]);\n })) {\n return false;\n }\n // for (let key in duration) {\n // if (!(indexOf.call(ordering, key) !== -1 && (duration[key] == null || !isNaN(duration[key])))) {\n // return false;\n // }\n // }\n\n let unitHasDecimal = false;\n for (let i = 0; i < ordering.length; ++i) {\n if (duration[ordering[i]]) {\n // only allow non-integers for smallest unit\n if (unitHasDecimal) {\n return false;\n }\n if (duration[ordering[i]] !== toInt(duration[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n}\n\n// export function isValid() {\n// return this._isValid;\n// }\n//\n// export function createInvalid(): Duration {\n// return createDuration(NaN);\n// }\n","export function absCeil (number: number): number {\n return number < 0 ? Math.floor(number) : Math.ceil(number);\n}\n","import { Duration } from './constructor';\nimport { absFloor } from '../utils';\nimport { absCeil } from '../utils/abs-ceil';\n\nexport function bubble(dur: Duration): Duration {\n let milliseconds = dur._milliseconds;\n let days = dur._days;\n let months = dur._months;\n const data = dur._data;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0))) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n const seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n const minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n const hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n const monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n const years = absFloor(months / 12);\n months %= 12;\n\n data.day = days;\n data.month = months;\n data.year = years;\n\n return dur;\n}\n\nexport function daysToMonths(day: number): number {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return day * 4800 / 146097;\n}\n\nexport function monthsToDays(month: number): number {\n // the reverse of daysToMonths\n return month * 146097 / 4800;\n}\n","// tslint:disable:cyclomatic-complexity\nimport { createDuration } from './create';\nimport { Locale } from '../locale/locale.class';\nimport { Duration } from './constructor';\n\nlet round = Math.round;\nconst thresholds: { [key: string]: number } = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month\n M: 11 // months to year\n};\n\n// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\nfunction substituteTimeAgo(str: 'future' | 'past', num: number,\n withoutSuffix: boolean, isFuture: boolean,\n locale: Locale): string {\n return locale.relativeTime(num || 1, !!withoutSuffix, str, isFuture);\n}\n\nexport function relativeTime(posNegDuration: Duration, withoutSuffix: boolean, locale: Locale): string {\n const duration = createDuration(posNegDuration).abs();\n const seconds = round(duration.as('s'));\n const minutes = round(duration.as('m'));\n const hours = round(duration.as('h'));\n const days = round(duration.as('d'));\n const months = round(duration.as('M'));\n const years = round(duration.as('y'));\n\n const a: [string] | [string, number] =\n seconds <= thresholds.ss && ['s', seconds] ||\n seconds < thresholds.s && ['ss', seconds] ||\n minutes <= 1 && ['m'] ||\n minutes < thresholds.m && ['mm', minutes] ||\n hours <= 1 && ['h'] ||\n hours < thresholds.h && ['hh', hours] ||\n days <= 1 && ['d'] ||\n days < thresholds.d && ['dd', days] ||\n months <= 1 && ['M'] ||\n months < thresholds.M && ['MM', months] ||\n years <= 1 && ['y'] || ['yy', years];\n\n const b: [string, number | string, boolean, boolean, Locale] =\n [a[0], a[1], withoutSuffix, +posNegDuration > 0, locale];\n // a[2] = withoutSuffix;\n // a[3] = +posNegDuration > 0;\n // a[4] = locale;\n\n return substituteTimeAgo.apply(null, b);\n}\n\n// This function allows you to set the rounding function for relative time strings\nexport function getSetRelativeTimeRounding(roundingFunction: any): boolean | Function {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof(roundingFunction) === 'function') {\n round = roundingFunction;\n\n return true;\n }\n\n return false;\n}\n\n// This function allows you to set a threshold for relative time strings\nexport function getSetRelativeTimeThreshold(threshold: string, limit: number): boolean | number {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n\n return true;\n}\n\n// export function humanize(withSuffix) {\n// if (!this.isValid()) {\n// return this.localeData().invalidDate();\n// }\n//\n// const locale = this.localeData();\n// let output = relativeTime(this, !withSuffix, locale);\n//\n// if (withSuffix) {\n// output = locale.pastFuture(+this, output);\n// }\n//\n// return locale.postformat(output);\n// }\n","import { getLocale } from '../locale/locales';\nimport { DateParsingConfig } from '../create/parsing.types';\nimport { isDurationValid } from './valid';\nimport { bubble, daysToMonths, monthsToDays } from './bubble';\nimport { DateObject } from '../types';\nimport { Locale } from '../locale/locale.class';\nimport { normalizeUnits } from '../units/aliases';\nimport { relativeTime } from './humanize';\nimport { toInt } from '../utils/type-checks';\n\nexport class Duration {\n _milliseconds: number;\n _days: number;\n _months: number;\n _data: Partial<DateObject> = {};\n _locale: Locale = getLocale();\n _isValid: boolean;\n\n constructor(duration: Partial<DateObject>, config: DateParsingConfig = {}) {\n this._locale = config && config._locale || getLocale();\n // const normalizedInput = normalizeObjectUnits(duration);\n const normalizedInput = duration;\n const years = normalizedInput.year || 0;\n const quarters = normalizedInput.quarter || 0;\n const months = normalizedInput.month || 0;\n const weeks = normalizedInput.week || 0;\n const days = normalizedInput.day || 0;\n const hours = normalizedInput.hours || 0;\n const minutes = normalizedInput.minutes || 0;\n const seconds = normalizedInput.seconds || 0;\n const milliseconds = normalizedInput.milliseconds || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1000 +\n minutes * 60 * 1000 + // 1000 * 60\n hours * 1000 * 60 * 60; // using 1000 * 60 * 60\n // instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days +\n weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months +\n quarters * 3 +\n years * 12;\n\n // this._data = {};\n\n // this._locale = getLocale();\n\n // this._bubble();\n return bubble(this);\n }\n\n isValid(): boolean {\n return this._isValid;\n }\n\n humanize(withSuffix?: boolean): string {\n // throw new Error(`TODO: implement`);\n\n if (!this.isValid()) {\n return this.localeData().invalidDate;\n }\n\n const locale = this.localeData();\n let output = relativeTime(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n localeData(): Locale {\n return this._locale;\n }\n\n locale(): string;\n locale(localeKey: string): Duration;\n locale(localeKey?: string): Duration | string {\n if (!localeKey) {\n return this._locale._abbr;\n }\n\n this._locale = getLocale(localeKey) || this._locale;\n\n return this;\n }\n\n\n abs(): Duration {\n const mathAbs = Math.abs;\n\n const data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.month = mathAbs(data.month);\n data.year = mathAbs(data.year);\n\n return this;\n }\n\n as(_units: string): number {\n if (!this.isValid()) {\n return NaN;\n }\n let days;\n let months;\n const milliseconds = this._milliseconds;\n\n const units = normalizeUnits(_units);\n\n if (units === 'month' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n\n return units === 'month' ? months : months / 12;\n }\n\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week' :\n return days / 7 + milliseconds / 6048e5;\n case 'day' :\n return days + milliseconds / 864e5;\n case 'hours' :\n return days * 24 + milliseconds / 36e5;\n case 'minutes' :\n return days * 1440 + milliseconds / 6e4;\n case 'seconds' :\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'milliseconds':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error(`Unknown unit ${units}`);\n }\n }\n\n valueOf () {\n if (!this.isValid()) {\n return NaN;\n }\n\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n}\n\nexport function isDuration(obj: any): obj is Duration {\n return obj instanceof Duration;\n}\n","import { DateParsingConfig } from './parsing.types';\nimport { getParsingFlags } from './parsing-flags';\n\nexport function isValid(config: DateParsingConfig): boolean {\n if (config._isValid == null) {\n const flags = getParsingFlags(config);\n const parsedParts = Array.prototype.some.call(flags.parsedDateParts, function (i: number) {\n return i != null;\n });\n let isNowValid = !isNaN(config._d && config._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (config._strict) {\n isNowValid = isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(config)) {\n config._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n\n return config._isValid;\n}\n\nexport function createInvalid(config: DateParsingConfig, flags?: { nullInput: boolean }): DateParsingConfig {\n config._d = new Date(NaN);\n Object.assign(getParsingFlags(config), flags || { userInvalidated: true });\n\n return config;\n}\n\nexport function markInvalid(config: DateParsingConfig): DateParsingConfig {\n config._isValid = false;\n\n return config;\n}\n","// tslint:disable-next-line\nimport { defaultLocaleMonthsShort, defaultLocaleWeekdaysShort } from '../locale/locale.class';\nimport { DateArray } from '../types';\nimport { DateParsingConfig } from './parsing.types';\nimport { isString } from '../utils/type-checks';\nimport { configFromStringAndFormat } from './from-string-and-format';\nimport { createUTCDate } from './date-from-array';\nimport { createInvalid, markInvalid } from './valid';\nimport { getParsingFlags } from './parsing-flags';\n\n// iso 8601 regex\n// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n// tslint:disable-next-line\nconst extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n// tslint:disable-next-line\nconst basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\nconst tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\nconst isoDates: [string, RegExp, boolean][] = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/, true],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/, true],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/, true],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/, true],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/, true],\n ['YYYYMMDD', /\\d{8}/, true],\n // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/, true],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/, true]\n];\n\n// iso time formats and regexes\nconst isoTimes: [string, RegExp][] = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/]\n];\n\nconst aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\nconst obsOffsets: { [key: string]: number } = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60\n};\n\n// RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n// tslint:disable-next-line\nconst rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/;\n\n// date from iso format\nexport function configFromISO(config: DateParsingConfig): DateParsingConfig {\n if (!isString(config._i)) {\n return config;\n }\n\n const input = config._i;\n const match = extendedIsoRegex.exec(input) || basicIsoRegex.exec(input);\n\n\n let allowTime;\n let dateFormat;\n let timeFormat;\n let tzFormat;\n\n if (!match) {\n config._isValid = false;\n\n return config;\n }\n\n // getParsingFlags(config).iso = true;\n let i;\n let l;\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n\n if (dateFormat == null) {\n config._isValid = false;\n\n return config;\n }\n\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n\n if (timeFormat == null) {\n config._isValid = false;\n\n return config;\n }\n\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n\n return config;\n }\n\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n\n return config;\n }\n }\n\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n\n return configFromStringAndFormat(config);\n}\n\n// tslint:disable-next-line\nfunction extractFromRFC2822Strings(yearStr: string, monthStr: string, dayStr: string, hourStr: string, minuteStr: string, secondStr: string): DateArray {\n const result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10)\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n}\n\nfunction untruncateYear(yearStr: string): number {\n const year = parseInt(yearStr, 10);\n\n return year <= 49 ? year + 2000 : year;\n}\n\nfunction preprocessRFC2822(str: string): string {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return str\n .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ').trim();\n}\n\nfunction checkWeekday(weekdayStr: string, parsedInput: DateArray, config: DateParsingConfig): boolean {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n const weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr);\n const weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n\n return false;\n }\n }\n\n return true;\n}\n\nfunction calculateOffset(obsOffset: string, militaryOffset: string, numOffset: string) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n const hm = parseInt(numOffset, 10);\n const m = hm % 100;\n const h = (hm - m) / 100;\n\n return h * 60 + m;\n }\n}\n\n// date and time from ref 2822 format\nexport function configFromRFC2822(config: DateParsingConfig): DateParsingConfig {\n if (!isString(config._i)) {\n return config;\n }\n\n const match = rfc2822.exec(preprocessRFC2822(config._i));\n\n if (!match) {\n return markInvalid(config);\n }\n\n const parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n if (!checkWeekday(match[1], parsedArray, config)) {\n return config;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n\n return config;\n}\n\n// date from iso format or fallback\nexport function configFromString(config: DateParsingConfig): DateParsingConfig {\n if (!isString(config._i)) {\n return config;\n }\n\n const matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n\n return config;\n }\n\n // todo: update logic processing\n // isISO -> configFromISO\n // isRFC -> configFromRFC\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return config;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return config;\n }\n\n // Final attempt, use Input Fallback\n // hooks.createFromInputFallback(config);\n return createInvalid(config);\n}\n\n// hooks.createFromInputFallback = deprecate(\n// 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n// 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n// 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n// 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n// function (config) {\n// config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n// }\n// );\n","// moment.js\n// version : 2.18.1\n// authors : Tim Wood, Iskren Chernev, Moment.js contributors\n// license : MIT\n// momentjs.com\n\nimport './units/index';\nimport { formatFunctions, makeFormatFunction } from './format/format';\nimport { Locale } from './locale/locale.class';\nimport { getLocale } from './locale/locales';\nimport { isDateValid } from './utils/type-checks';\n\nexport function formatDate(date: Date, format: string, locale?: string, isUTC?: boolean, offset = 0): string {\n const _locale = getLocale(locale || 'en');\n if (!_locale) {\n throw new Error(\n `Locale \"${locale}\" is not defined, please add it with \"defineLocale(...)\"`\n );\n }\n\n const _format = format || (isUTC ? 'YYYY-MM-DDTHH:mm:ss[Z]' : 'YYYY-MM-DDTHH:mm:ssZ');\n\n const output = formatMoment(date, _format, _locale, isUTC, offset);\n\n if (!output) {\n return output;\n }\n\n return _locale.postformat(output);\n}\n\n// format date using native date object\nexport function formatMoment(date: Date, _format: string, locale: Locale, isUTC?: boolean, offset = 0): string {\n if (!isDateValid(date)) {\n return locale.invalidDate;\n }\n\n const format = expandFormat(_format, locale);\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](date, locale, isUTC, offset);\n}\n\nexport function expandFormat(_format: string, locale: Locale): string {\n let format = _format;\n let i = 5;\n const localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\n const replaceLongDateFormatTokens = (input: any) => {\n return locale.formatLongDate(input) || input;\n };\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n}\n","// Pick the first defined of two or three arguments.\nexport function defaults<T>(a?: T, b?: T, c?: T): T {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n\n return c;\n}\n","import { DateParsingConfig } from './parsing.types';\nimport { DateArray } from '../types';\nimport { DATE, HOUR, MILLISECOND, MINUTE, MONTH, SECOND, YEAR } from '../units/constants';\nimport { daysInYear } from '../units/year';\nimport { getParsingFlags } from './parsing-flags';\nimport { createUTCDate } from './date-from-array';\nimport { createDate } from './date-from-array';\nimport { dayOfYearFromWeeks, weekOfYear, weeksInYear } from '../units/week-calendar-utils';\nimport { defaults } from '../utils/defaults';\n\nfunction currentDateArray(config: DateParsingConfig): DateArray {\n const nowValue = new Date();\n\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n}\n\n// convert an array to a date.\n// the array should mirror the parameters below\n// note: all values past the year are optional and will default to the lowest possible value.\n// [year, month, day , hour, minute, second, millisecond]\nexport function configFromArray(config: DateParsingConfig): DateParsingConfig {\n const input = [];\n let i;\n let date;\n let currentDate;\n let expectedWeekday;\n let yearToUse;\n\n if (config._d) {\n return config;\n }\n\n currentDate = currentDateArray(config);\n\n // compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n // if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = new Date(Date.UTC(yearToUse, 0, config._dayOfYear));\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n\n return config;\n}\n\nfunction dayOfYearFromWeekInfo(config: DateParsingConfig): DateParsingConfig {\n let w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(new Date(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n const curWeek = weekOfYear(new Date(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from begining of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to begining of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n\n return config;\n}\n","import { getParsingFlags } from './parsing-flags';\nimport { DATE, HOUR, MILLISECOND, MINUTE, MONTH, SECOND, WEEK, WEEKDAY, YEAR } from '../units/constants';\nimport { daysInMonth } from '../units/month';\nimport { DateParsingConfig } from './parsing.types';\n\nexport function checkOverflow(config: DateParsingConfig): DateParsingConfig {\n let overflow;\n const a = config._a;\n\n if (a && getParsingFlags(config).overflow === -2) {\n // todo: fix this sh*t\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\n a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\n a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\n a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n -1;\n\n if (getParsingFlags(config)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(config)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(config)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(config).overflow = overflow;\n }\n\n return config;\n}\n\n","import { DateParsingConfig } from './parsing.types';\nimport { configFromISO, configFromRFC2822 } from './from-string';\nimport { expandFormat } from '../format';\nimport { formattingTokens, formatTokenFunctions } from '../format/format';\nimport { isArray, isString } from '../utils/type-checks';\nimport { getParseRegexForToken } from '../parse/regex';\nimport { addTimeToArrayFromToken } from '../parse/token';\nimport { HOUR } from '../units/constants';\nimport { configFromArray } from './from-array';\nimport { getParsingFlags } from './parsing-flags';\nimport { checkOverflow } from './check-overflow';\nimport { Locale } from '../locale/locale.class';\n\n// constant that refers to the ISO standard\n// hooks.ISO_8601 = function () {};\nexport const ISO_8601 = 'ISO_8601';\n\n// constant that refers to the RFC 2822 form\n// hooks.RFC_2822 = function () {};\nexport const RFC_2822 = 'RFC_2822';\n\n// date from string and format string\nexport function configFromStringAndFormat(config: DateParsingConfig): DateParsingConfig {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === ISO_8601) {\n return configFromISO(config);\n }\n if (config._f === RFC_2822) {\n return configFromRFC2822(config);\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n if (isArray(config._f) || (!config._i && config._i !== 0)) {\n return config;\n }\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n\n let input = config._i.toString();\n let totalParsedInputLength = 0;\n const inputLength = input.length;\n const tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n let i;\n let token;\n let parsedInput;\n let skipped;\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (input.match(getParseRegexForToken(token, config._locale)) || [])[0];\n if (parsedInput) {\n skipped = input.substr(0, input.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n input = input.slice(input.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = inputLength - totalParsedInputLength;\n if (input.length > 0) {\n getParsingFlags(config).unusedInput.push(input);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = void 0;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n configFromArray(config);\n\n return checkOverflow(config);\n}\n\n\nfunction meridiemFixWrap(locale: Locale, _hour: number, meridiem: string): number {\n let hour = _hour;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n }\n\n if (locale.isPM == null) {\n // this is not supposed to happen\n return hour;\n }\n // Fallback\n const isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n\n if (!isPm && hour === 12) {\n hour = 0;\n }\n\n return hour;\n}\n","import { DateParsingConfig } from './parsing.types';\nimport { createInvalid, isValid } from './valid';\nimport { getParsingFlags } from './parsing-flags';\nimport { configFromStringAndFormat } from './from-string-and-format';\n\n// date from string and array of format strings\nexport function configFromStringAndArray(config: DateParsingConfig): DateParsingConfig {\n let tempConfig;\n let bestMoment;\n let scoreToBeat;\n let currentScore;\n\n if (!config._f || config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n\n return createInvalid(config);\n }\n\n let i;\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = Object.assign({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (!isValid(tempConfig)) {\n continue;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n // or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n\n return Object.assign(config, bestMoment || tempConfig);\n}\n","import { normalizeObjectUnits } from '../units/aliases';\nimport { configFromArray } from './from-array';\nimport { DateParsingConfig } from './parsing.types';\nimport { isObject, isString } from '../utils/type-checks';\n\nexport function configFromObject(config: DateParsingConfig): DateParsingConfig {\n if (config._d) {\n return config;\n }\n\n const input = config._i;\n if (isObject(input)) {\n const i = normalizeObjectUnits(input as any);\n config._a = [i.year, i.month, i.day, i.hours, i.minutes, i.seconds, i.milliseconds]\n // todo: obsolete -> remove it\n .map(obj => isString(obj) ? parseInt(obj, 10) : obj);\n }\n\n return configFromArray(config);\n}\n","// tslint:disable:max-line-length\nimport { isArray, isDate, isNumber, isObject, isObjectEmpty, isString, isUndefined } from '../utils/type-checks';\nimport { DateParsingConfig } from './parsing.types';\nimport { getLocale } from '../locale/locales';\nimport { createInvalid, isValid } from './valid';\nimport { configFromStringAndArray } from './from-string-and-array';\nimport { configFromStringAndFormat } from './from-string-and-format';\nimport { cloneDate } from './clone';\nimport { configFromString } from './from-string';\nimport { configFromArray } from './from-array';\nimport { configFromObject } from './from-object';\nimport { checkOverflow } from './check-overflow';\nimport { DateInput } from '../test/chain';\n\nfunction createFromConfig(config: DateParsingConfig): DateParsingConfig {\n const res = checkOverflow(prepareConfig(config));\n // todo: remove, in moment.js it's never called cuz of moment constructor\n res._d = new Date(res._d != null ? res._d.getTime() : NaN);\n if (!isValid(Object.assign({}, res, {_isValid: null}))) {\n res._d = new Date(NaN);\n }\n // todo: update offset\n /*if (res._nextDay) {\n // Adding is smart enough around DST\n res._d = add(res._d, 1, 'day');\n res._nextDay = undefined;\n }*/\n\n return res;\n}\n\nexport function prepareConfig(config: DateParsingConfig): DateParsingConfig {\n let input = config._i;\n const format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid(config, { nullInput: true });\n }\n\n if (isString(input)) {\n config._i = input = config._locale.preparse(input, format);\n }\n\n if (isDate(input)) {\n config._d = cloneDate(input);\n\n return config;\n }\n\n // todo: add check for recursion\n\n if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n}\n\nfunction configFromInput(config: DateParsingConfig): DateParsingConfig {\n const input = config._i;\n if (isUndefined(input)) {\n config._d = new Date();\n } else if (isDate(input)) {\n config._d = cloneDate(input);\n } else if (isString(input)) {\n configFromString(config);\n } else if (isArray<string | number>(input) && input.length) {\n const _arr: (string | number)[] = input.slice(0);\n config._a = _arr.map(obj => isString(obj) ? parseInt(obj, 10) : obj);\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n // hooks.createFromInputFallback(config);\n return createInvalid(config);\n }\n\n return config;\n}\n\nexport function createLocalOrUTC(input: DateInput, format?: string | string[], localeKey?: string, strict?: boolean, isUTC?: boolean): DateParsingConfig {\n const config: DateParsingConfig = {};\n let _input = input;\n\n // params switch -> skip; test it well\n // if (localeKey === true || localeKey === false) {\n // strict = localeKey;\n // localeKey = undefined;\n // }\n\n // todo: fail fast and return not valid date\n if ((isObject(_input) && isObjectEmpty(_input)) || (isArray(_input) && _input.length === 0)) {\n _input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n // config._isAMomentObject = true;\n config._useUTC = config._isUTC = isUTC;\n config._l = localeKey;\n config._i = _input;\n config._f = format;\n config._strict = strict;\n\n return createFromConfig(config);\n}\n","import { createLocalOrUTC } from './from-anything';\nimport { DateInput } from '../test/chain';\nimport { isDate } from '../utils/type-checks';\n\nexport function parseDate(input: DateInput, format?: string | string[],\n localeKey?: string, strict?: boolean, isUTC?: boolean): Date {\n if (isDate(input)) {\n return input;\n }\n\n const config = createLocalOrUTC(input, format, localeKey, strict, isUTC);\n\n return config._d;\n}\n\nexport function utcAsLocal(date) {\n if (!(date instanceof Date)) {\n return null;\n }\n\n return new Date(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds(),\n date.getUTCMilliseconds()\n );\n}\n","export function absRound(num: number): number {\n return num < 0 ? Math.round(num * -1) * -1 : Math.round(num);\n}\n","import { UnitOfTime } from '../types';\nimport { endOf, startOf } from './start-end-of';\n\nexport function isAfter(\n date1: Date,\n date2: Date,\n units: UnitOfTime = 'milliseconds'\n): boolean {\n if (!date1 || !date2) {\n return false;\n }\n\n if (units === 'milliseconds') {\n return date1.valueOf() > date2.valueOf();\n }\n\n return date2.valueOf() < startOf(date1, units).valueOf();\n}\n\nexport function isBefore(\n date1: Date,\n date2: Date,\n units: UnitOfTime = 'milliseconds'\n): boolean {\n if (!date1 || !date2) {\n return false;\n }\n\n if (units === 'milliseconds') {\n return date1.valueOf() < date2.valueOf();\n }\n\n return endOf(date1, units).valueOf() < date2.valueOf();\n}\n\nexport function isDisabledDay(date: Date, daysDisabled: number[]): boolean {\n if (daysDisabled === undefined || !daysDisabled || !daysDisabled.length) {\n return false;\n }\n\n return daysDisabled.some((day: number) => day === date.getDay());\n}\n\nexport function isBetween(\n date: Date,\n from: Date,\n to: Date,\n units: UnitOfTime,\n inclusivity = '()'\n): boolean {\n const leftBound =\n inclusivity[0] === '('\n ? isAfter(date, from, units)\n : !isBefore(date, from, units);\n const rightBound =\n inclusivity[1] === ')'\n ? isBefore(date, to, units)\n : !isAfter(date, to, units);\n\n return leftBound && rightBound;\n}\n\nexport function isSame(\n date1: Date,\n date2: Date,\n units: UnitOfTime = 'milliseconds'\n): boolean {\n if (!date1 || !date2) {\n return false;\n }\n\n if (units === 'milliseconds') {\n return date1.valueOf() === date2.valueOf();\n }\n\n const inputMs = date2.valueOf();\n\n return (\n startOf(date1, units).valueOf() <= inputMs &&\n inputMs <= endOf(date1, units).valueOf()\n );\n}\n\nexport function isSameDay(date1: Date, date2: Date):boolean{\n return (date1.getDay() == date2.getDay());\n}\n\nexport function isSameOrAfter(\n date1: Date,\n date2: Date,\n units?: UnitOfTime\n): boolean {\n return isSame(date1, date2, units) || isAfter(date1, date2, units);\n}\n\nexport function isSameOrBefore(\n date1: Date,\n date2: Date,\n units?: UnitOfTime\n): boolean {\n return isSame(date1, date2, units) || isBefore(date1, date2, units);\n}\n","// ASP.NET json date format regex\nimport { Duration, isDuration } from './constructor';\nimport { isDateValid, isNumber, isObject, isString, toInt } from '../utils/type-checks';\nimport { DATE, HOUR, MILLISECOND, MINUTE, SECOND } from '../units/constants';\nimport { parseDate } from '../create/local';\nimport { absRound } from '../utils/abs-round';\nimport { DateObject } from '../types';\nimport { DateParsingConfig } from '../create/parsing.types';\nimport { cloneWithOffset } from '../units/offset';\nimport { isAfter, isBefore } from '../utils/date-compare';\nimport { getFullYear, getMonth } from '../utils/date-getters';\nimport { add } from '../moment/add-subtract';\nimport { cloneDate } from '../create/clone';\n\nconst aspNetRegex = /^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n// from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n// somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n// and further modified to allow for strings containing both week and day\n// tslint:disable-next-line\nconst isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\nexport type DurationInput = string | number | Duration | Partial<DateObject> | { from: Date; to: Date };\n\nexport function createDuration(input?: DurationInput, key?: string, config: DateParsingConfig = {}) {\n const duration = convertDuration(input, key);\n // matching against regexp is expensive, do it on demand\n\n return new Duration(duration, config);\n}\n\nfunction convertDuration(input: any, key: string): Partial<DateObject> {\n // checks for null or undefined\n if (input == null) {\n return {};\n }\n\n if (isDuration(input)) {\n return {\n milliseconds: input._milliseconds,\n day: input._days,\n month: input._months\n };\n }\n if (isNumber(input)) {\n // duration = {};\n return key ? { [key]: input } : { milliseconds: input };\n }\n\n if (isString(input)) {\n let match = aspNetRegex.exec(input);\n\n if (match) {\n const sign = (match[1] === '-') ? -1 : 1;\n\n return {\n year: 0,\n day: toInt(match[DATE]) * sign,\n hours: toInt(match[HOUR]) * sign,\n minutes: toInt(match[MINUTE]) * sign,\n seconds: toInt(match[SECOND]) * sign,\n // the millisecond decimal point is included in the match\n milliseconds: toInt(absRound(toInt(match[MILLISECOND]) * 1000)) * sign\n };\n }\n\n match = isoRegex.exec(input);\n if (match) {\n const sign = (match[1] === '-') ? -1 : (match[1] === '+') ? 1 : 1;\n\n return {\n year: parseIso(match[2], sign),\n month: parseIso(match[3], sign),\n week: parseIso(match[4], sign),\n day: parseIso(match[5], sign),\n hours: parseIso(match[6], sign),\n minutes: parseIso(match[7], sign),\n seconds: parseIso(match[8], sign)\n };\n }\n\n }\n\n if (isObject<{from: any; to: any}>(input) && ('from' in input || 'to' in input)) {\n const diffRes = momentsDifference(parseDate(input.from), parseDate(input.to));\n\n return {\n milliseconds: diffRes.milliseconds,\n month: diffRes.months\n };\n }\n\n return input;\n}\n\n// createDuration.fn = Duration.prototype;\n// createDuration.invalid = invalid;\n\nfunction parseIso(inp: string, sign: number): number {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n const res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n\n return (isNaN(res) ? 0 : res) * sign;\n}\n\nfunction positiveMomentsDifference(base: Date, other: Date): { milliseconds: number; months: number } {\n const res = { milliseconds: 0, months: 0 };\n\n res.months = getMonth(other) - getMonth(base) +\n (getFullYear(other) - getFullYear(base)) * 12;\n const _basePlus = add(cloneDate(base), res.months, 'month');\n if (isAfter(_basePlus, other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +(add(cloneDate(base), res.months, 'month'));\n\n return res;\n}\n\nfunction momentsDifference(base: Date, other: Date): { milliseconds: number; months: number } {\n if (!(isDateValid(base) && isDateValid(other))) {\n return { milliseconds: 0, months: 0 };\n }\n\n let res;\n const _other = cloneWithOffset(other, base, {_offset: base.getTimezoneOffset()});\n if (isBefore(base, _other)) {\n res = positiveMomentsDifference(base, _other);\n } else {\n res = positiveMomentsDifference(_other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n}\n","import { createDuration } from '../duration/create';\nimport { absRound } from '../utils/abs-round';\nimport { Duration } from '../duration/constructor';\nimport { getDate, getMonth, getTime } from '../utils/date-getters';\nimport { setDate, setMonth, setTime } from '../utils/date-setters';\nimport { cloneDate } from '../create/clone';\nimport { UnitOfTime } from '../types';\n\nexport function add(date: Date, val: number, period: UnitOfTime, isUTC?: boolean): Date {\n const dur = createDuration(val, period);\n\n return addSubtract(date, dur, 1, isUTC);\n}\n\nexport function subtract(date: Date, val: number, period: UnitOfTime, isUTC?: boolean): Date {\n const dur = createDuration(val, period);\n\n return addSubtract(date, dur, -1, isUTC);\n}\n\nexport function addSubtract(date: Date, duration: Duration, isAdding: number, isUTC?: boolean): Date {\n const milliseconds = duration._milliseconds;\n const days = absRound(duration._days);\n const months = absRound(duration._months);\n\n // todo: add timezones support\n // const _updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(date, getMonth(date, isUTC) + months * isAdding, isUTC);\n }\n if (days) {\n setDate(date, getDate(date, isUTC) + days * isAdding, isUTC);\n }\n if (milliseconds) {\n setTime(date, getTime(date) + milliseconds * isAdding);\n }\n\n return cloneDate(date);\n // todo: add timezones support\n // if (_updateOffset) {\n // hooks.updateOffset(date, days || months);\n // }\n}\n","import { addFormatToken } from '../format/format';\nimport { Locale } from '../locale/locale.class';\nimport { getDay } from '../utils/date-getters';\nimport { addRegexToken, match1to2 } from '../parse/regex';\nimport { addUnitAlias } from './aliases';\nimport { addUnitPriority } from './priorities';\nimport { addWeekParseToken } from '../parse/token';\nimport { getParsingFlags } from '../create/parsing-flags';\nimport { isNumber, isString, toInt } from '../utils/type-checks';\nimport { DateFormatterOptions, WeekParsing } from '../types';\nimport { DateParsingConfig } from '../create/parsing.types';\nimport { add } from '../moment/add-subtract';\nimport { getLocale } from '../locale/locales';\n\n\nexport function initDayOfWeek() {\n// FORMATTING\n\n addFormatToken('d', null, 'do',\n function(date: Date, opts: DateFormatterOptions): string {\n return getDay(date, opts.isUTC)\n .toString(10);\n }\n );\n\n addFormatToken('dd', null, null,\n function(date: Date, opts: DateFormatterOptions): string {\n return opts.locale.weekdaysMin(date, opts.format, opts.isUTC);\n }\n );\n\n addFormatToken('ddd', null, null,\n function(date: Date, opts: DateFormatterOptions): string {\n return opts.locale.weekdaysShort(date, opts.format, opts.isUTC);\n }\n );\n\n addFormatToken('dddd', null, null,\n function(date: Date, opts: DateFormatterOptions): string {\n return opts.locale.weekdays(date, opts.format, opts.isUTC);\n }\n );\n\n addFormatToken('e', null, null,\n function(date: Date, opts: DateFormatterOptions): string {\n return getLocaleDayOfWeek(date, opts.locale, opts.isUTC)\n .toString(10);\n // return getDay(date, opts.isUTC).toString(10);\n }\n );\n addFormatToken('E', null, null,\n function(date: Date, opts: DateFormatterOptions): string {\n return getISODayOfWeek(date, opts.isUTC)\n .toString(10);\n }\n );\n\n// ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n// PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n// PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n\n addRegexToken('dd', function(isStrict: boolean, locale: Locale): RegExp {\n return locale.weekdaysMinRegex(isStrict);\n });\n\n addRegexToken('ddd', function(isStrict: boolean, locale: Locale): RegExp {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function(isStrict: boolean, locale: Locale): RegExp {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(\n ['dd', 'ddd', 'dddd'],\n function(input: string, week: WeekParsing, config: DateParsingConfig, token) {\n const weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = !!input;\n }\n\n return config;\n }\n );\n\n addWeekParseToken(\n ['d', 'e', 'E'],\n function(input: string, week: WeekParsing, config: DateParsingConfig, token: string): DateParsingConfig {\n week[token] = toInt(input);\n\n return config;\n }\n );\n}\n\n// HELPERS\n\nexport function parseWeekday(input: string | number, locale: Locale): number {\n if (!isString(input)) {\n return input;\n }\n\n const _num = parseInt(input, 10);\n if (!isNaN(_num)) {\n return _num;\n }\n\n const _weekDay = locale.weekdaysParse(input);\n if (isNumber(_weekDay)) {\n return _weekDay;\n }\n\n return null;\n}\n\nexport function parseIsoWeekday(input: string | number, locale: Locale = getLocale()): number {\n if (isString(input)) {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n\n return isNumber(input) && isNaN(input) ? null : input;\n}\n\n// MOMENTS\n\nexport function getSetDayOfWeek(date: Date, input: number, opts: { isUTC?: boolean; locale: Locale }): Date | number {\n if (!input) {\n return getDayOfWeek(date, opts.isUTC);\n }\n\n return setDayOfWeek(date, input, opts.locale, opts.isUTC);\n}\n\nexport function setDayOfWeek(date: Date, input: number, locale = getLocale(), isUTC?: boolean): Date {\n const day = getDay(date, isUTC);\n const _input = parseWeekday(input, locale);\n\n return add(date, _input - day, 'day');\n}\n\nexport function getDayOfWeek(date: Date, isUTC?: boolean): number {\n return getDay(date, isUTC);\n}\n\n/********************************************/\n\n// todo: utc\n// getSetLocaleDayOfWeek\nexport function getLocaleDayOfWeek(date: Date, locale = getLocale(), isUTC?: boolean): number {\n return (getDay(date, isUTC) + 7 - locale.firstDayOfWeek()) % 7;\n}\n\nexport function setLocaleDayOfWeek(date: Date, input: number, opts: { locale?: Locale; isUTC?: boolean } = {}): Date {\n const weekday = getLocaleDayOfWeek(date, opts.locale, opts.isUTC);\n\n return add(date, input - weekday, 'day');\n}\n\n\n// getSetISODayOfWeek\nexport function getISODayOfWeek(date: Date, isUTC?: boolean): number {\n return getDay(date, isUTC) || 7;\n}\n\nexport function setISODayOfWeek(date: Date, input: number | string, opts: { locale?: Locale } = {}): Date {\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n const weekday = parseIsoWeekday(input, opts.locale);\n\n return setDayOfWeek(date, getDayOfWeek(date) % 7 ? weekday : weekday - 7);\n}\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n\n//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\nimport { LocaleData } from '../locale/locale.class';\n\nconst symbolMap: {[key: string]: string} = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠'\n};\nconst numberMap: {[key: string]: string} = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0'\n};\nconst pluralForm = function (num: number): number {\n return num === 0 ? 0 : num === 1 ? 1 : num === 2 ? 2 : num % 100 >= 3 && num % 100 <= 10 ? 3 : num % 100 >= 11 ? 4 : 5;\n};\nconst plurals: {[key: string]: [string, string, [string, string], string, string, string]} = {\n s: ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m: ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h: ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d: ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M: ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y: ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n};\nconst pluralize = function (u: string) {\n return function (num: number, withoutSuffix: boolean): string {\n const f = pluralForm(num);\n let str = plurals[u][pluralForm(num)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n\n return (str as string).replace(/%d/i, num.toString());\n };\n};\nconst months: string[] = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر'\n];\n\nexport const arLocale: LocaleData = {\n abbr: 'ar',\n months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|م/,\n isPM(input) {\n return 'م' === input;\n },\n meridiem(hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y')\n },\n preparse(str: string): string {\n return str.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/،/g, ',');\n },\n postformat(str: string) {\n return str.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12 // The week that contains Jan 1st is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\nimport { Khronos } from '../test/chain';\n\n//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Iskren Ivov Chernev : https://github.com/ichernev\n//! author : Kunal Marwaha : https://github.com/marwahaha\n//! author : Matt Grande : https://github.com/mattgrande\n//! author : Isaac Cambron : https://github.com/icambron\n//! author : Venelin Manchev : https://github.com/vmanchev\n\nexport const bgLocale: LocaleData = {\n abbr: 'bg',\n months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),\n monthsShort: 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),\n weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[Днес в] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function (d: any) {\n\n switch (d) {\n case 0:\n case 3:\n case 6:\n return '[В изминалата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[В изминалия] dddd [в] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'след %s',\n past: 'преди %s',\n s: 'няколко секунди',\n ss: '%d секунди',\n m: 'минута',\n mm: '%d минути',\n h: 'час',\n hh: '%d часа',\n d: 'ден',\n dd: '%d дни',\n M: 'месец',\n MM: '%d месеца',\n y: 'година',\n yy: '%d години'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (_num: number): string {\n\n const number = Number(_num);\n\n let lastDigit = number % 10,\n last2Digits = number % 100;\n\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\nimport { getHours, getMonth } from '../utils/date-getters';\n\n//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Xavier Arbat : https://github.com/XavisaurusRex\n\nlet monthsShortDot = 'gen._feb._mar._abr._mai._jun._jul._ago._set._oct._nov._des.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_mai_jun_jul_ago_set_oct_nov_des'.split('_');\n\nlet monthsParse = [/^gen/i, /^feb/i, /^mar/i, /^abr/i, /^mai/i, /^jun/i, /^jul/i, /^ago/i, /^set/i, /^oct/i, /^nov/i, /^des/i];\nlet monthsRegex = /^(gener|febrer|març|abril|maig|juny|juliol|agost|setembre|octubre|novembre|desembre|gen\\.?|feb\\.?|mar\\.?|abr\\.?|mai\\.?|jun\\.?|jul\\.?|ago\\.?|set\\.?|oct\\.?|nov\\.?|des\\.?)/i;\n\nexport const caLocale: LocaleData = {\n abbr: 'ca',\n months: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),\n monthsShort(date: Date, format: string, isUTC?: boolean): string | string[] {\n if (!date) {\n return monthsShortDot;\n }\n\n if (/-MMM-/.test(format)) {\n return monthsShort[getMonth(date, isUTC)];\n }\n\n return monthsShortDot[getMonth(date, isUTC)];\n },\n monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(gener|febrer|març|abril|maig|juny|juliol|agost|setembre|octubre|novembre|desembre)/i,\n monthsShortStrictRegex: /^(gen\\.?|feb\\.?|mar\\.?|abr\\.?|mai\\.?|jun\\.?|jul\\.?|ago\\.?|set\\.?|oct\\.?|nov\\.?|des\\.?)/i,\n monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),\n weekdaysShort: 'diu._dil._dim._dix._dij._div._dis.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar: {\n sameDay(date: Date) {\n return '[avui a ' + ('la' + (getHours(date) !== 1) ? 'les' : '') + '] LT';\n },\n nextDay(date: Date) {\n return '[dema a ' + ('la' + (getHours(date) !== 1) ? 'les' : '') + '] LT';\n },\n nextWeek(date: Date) {\n return 'dddd [a ' + ('la' + (getHours(date) !== 1) ? 'les' : '') + '] LT';\n },\n lastDay(date: Date) {\n return '[ahir a ' + ('la' + (getHours(date) !== 1) ? 'les' : '') + '] LT';\n },\n lastWeek(date: Date) {\n return '[el] dddd [' + ('passada la ' + (getHours(date) !== 1) ? 'passades les' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|on|er|rt|é)/,\n ordinal(_num: number): string {\n const num = Number(_num);\n const output = (num > 4) ? 'é' :\n (num === 1 || num === 3) ? 'r' :\n (num === 2) ? 'n' :\n (num === 4) ? 't' : 'é';\n return num + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\nimport { getDayOfWeek } from '../units/day-of-week';\n\n//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\nconst months: string[] = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_');\nconst monthsShort: string[] = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_');\n\nfunction plural(num: number): boolean {\n return (num > 1) && (num < 5) && (~~(num / 10) !== 1);\n}\n\nfunction translate(num: number, withoutSuffix: boolean, key: string, isFuture: boolean): string {\n const result = num + ' ';\n\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(num) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n // break;\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou');\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(num) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n // break;\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(num) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n // break;\n case 'd': // a day / in a day / a day ago\n return (withoutSuffix || isFuture) ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(num) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n // break;\n case 'M': // a month / in a month / a month ago\n return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(num) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n // break;\n case 'y': // a year / in a year / a year ago\n return (withoutSuffix || isFuture) ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(num) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n // break;\n }\n}\n\nexport const csLocale: LocaleData = {\n abbr: 'cs',\n months,\n monthsShort,\n monthsParse: (function (months, monthsShort) {\n let i, _monthsParse = [];\n for (i = 0; i < 12; i++) {\n // use custom parser to solve problem with July (červenec)\n _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i');\n }\n return _monthsParse;\n }(months, monthsShort)),\n shortMonthsParse: (function (monthsShort) {\n let i, _shortMonthsParse = [];\n for (i = 0; i < 12; i++) {\n _shortMonthsParse[i] = new RegExp('^' + monthsShort[i] + '$', 'i');\n }\n return _shortMonthsParse;\n }(monthsShort)),\n longMonthsParse: (function (months) {\n let i, _longMonthsParse = [];\n for (i = 0; i < 12; i++) {\n _longMonthsParse[i] = new RegExp('^' + months[i] + '$', 'i');\n }\n return _longMonthsParse;\n }(months)),\n weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY'\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek(date: Date): string {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek(date: Date): string {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: 'před %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n","// tslint:disable:comment-format\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Danish (Denmark) [da]\n//! author : Per Hansen : https://github.com/perhp\n\nexport const daLocale: LocaleData = {\n abbr: 'da',\n months : 'Januar_Februar_Marts_April_Maj_Juni_Juli_August_September_Oktober_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_Maj_Jun_Jul_Aug_Sep_Okt_Nov_Dec'.split('_'),\n weekdays : 'Søndag_Mandag_Tirsdag_Onsdag_Torsdag_Fredag_Lørdag'.split('_'),\n weekdaysShort : 'Søn_Man_Tir_Ons_Tor_Fre_Lør'.split('_'),\n weekdaysMin : 'Sø_Ma_Ti_On_To_Fr_Lø'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY HH:mm',\n LLLL : 'dddd [d.] D. MMMM YYYY [kl.] HH:mm'\n },\n calendar : {\n sameDay : '[i dag kl.] LT',\n nextDay : '[i morgen kl.] LT',\n nextWeek : 'på dddd [kl.] LT',\n lastDay : '[i går kl.] LT',\n lastWeek : '[i] dddd[s kl.] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'om %s',\n past : '%s siden',\n s : 'få sekunder',\n m : 'et minut',\n mm : '%d minutter',\n h : 'en time',\n hh : '%d timer',\n d : 'en dag',\n dd : '%d dage',\n M : 'en måned',\n MM : '%d måneder',\n y : 'et år',\n yy : '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n// tslint:disable:object-literal-key-quotes\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\nfunction processRelativeTime(num: number, withoutSuffix: boolean, key: string, isFuture: boolean): string {\n const format: { [key: string]: [string, string] } = {\n 'm': ['eine Minute', 'einer Minute'],\n 'h': ['eine Stunde', 'einer Stunde'],\n 'd': ['ein Tag', 'einem Tag'],\n 'dd': [num + ' Tage', num + ' Tagen'],\n 'M': ['ein Monat', 'einem Monat'],\n 'MM': [num + ' Monate', num + ' Monaten'],\n 'y': ['ein Jahr', 'einem Jahr'],\n 'yy': [num + ' Jahre', num + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n}\n\nexport const deLocale: LocaleData = {\n abbr: 'de',\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\nexport const enGbLocale: LocaleData = {\n abbr: 'en-gb',\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal(_num: number): string {\n const num = Number(_num);\n const b = num % 10,\n output = (~~(num % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return num + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\nimport { getHours, getMonth } from '../utils/date-getters';\n\n//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\nlet monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\nlet monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];\nlet monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\nexport const esDoLocale: LocaleData = {\n abbr: 'es-do',\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort(date: Date, format: string, isUTC?: boolean): string | string[] {\n if (!date) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[getMonth(date, isUTC)];\n } else {\n return monthsShortDot[getMonth(date, isUTC)];\n }\n },\n monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A'\n },\n calendar: {\n sameDay(date: Date): string {\n return '[hoy a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextDay(date: Date): string {\n return '[mañana a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextWeek(date: Date): string {\n return 'dddd [a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastDay(date: Date): string {\n return '[ayer a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastWeek(date: Date): string {\n return '[el] dddd [pasado a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\nimport { getHours, getMonth } from '../utils/date-getters';\n\n//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\nlet monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\nlet monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];\nlet monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\nexport const esLocale: LocaleData = {\n abbr: 'es',\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort(date: Date, format: string, isUTC?: boolean): string | string[] {\n if (!date) {\n return monthsShortDot;\n }\n\n if (/-MMM-/.test(format)) {\n return monthsShort[getMonth(date, isUTC)];\n }\n\n return monthsShortDot[getMonth(date, isUTC)];\n },\n monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar: {\n sameDay(date: Date) {\n return '[hoy a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextDay(date: Date) {\n return '[mañana a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextWeek(date: Date) {\n return 'dddd [a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastDay(date: Date) {\n return '[ayer a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastWeek(date: Date) {\n return '[el] dddd [pasado a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\nimport { getHours, getMonth } from '../utils/date-getters';\n\n//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n\nlet monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_');\nlet monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\nexport const esUsLocale: LocaleData = {\n abbr: 'es-us',\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort(date: Date, format: string, isUTC?: boolean): string | string[] {\n if (!date) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[getMonth(date, isUTC)];\n } else {\n return monthsShortDot[getMonth(date, isUTC)];\n }\n },\n monthsParseExact: true,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM [de] D [de] YYYY',\n LLL: 'MMMM [de] D [de] YYYY h:mm A',\n LLLL: 'dddd, MMMM [de] D [de] YYYY h:mm A'\n },\n calendar: {\n sameDay(date: Date): string {\n return '[hoy a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextDay(date: Date): string {\n return '[mañana a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextWeek(date: Date): string {\n return 'dddd [a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastDay(date: Date): string {\n return '[ayer a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastWeek(date: Date): string {\n return '[el] dddd [pasado a la' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 1st is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Chris Gedrim : https://github.com/a90machado\n\nconst processRelativeTime = function (num: number, withoutSuffix: boolean, key: string, isFuture: boolean) {\n const format = {\n s : ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [num + 'sekundi', num + 'sekundit'],\n m : ['ühe minuti', 'üks minut'],\n mm: [num + ' minuti', num + ' minutit'],\n h : ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [num + ' tunni', num + ' tundi'],\n d : ['ühe päeva', 'üks päev'],\n M : ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [num + ' kuu', num + ' kuud'],\n y : ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [num + ' aasta', num + ' aastat']\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n};\n\nexport const etLocale: LocaleData = {\n abbr: 'et',\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),\n monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : '%s pärast',\n past : '%s tagasi',\n s : processRelativeTime,\n ss : processRelativeTime,\n m : processRelativeTime,\n mm : processRelativeTime,\n h : processRelativeTime,\n hh : processRelativeTime,\n d : processRelativeTime,\n dd : '%d päeva',\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse : /\\d{1,2}./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n// https://github.com/moment/moment/blob/develop/locale/fi.js\n\nvar numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '),\n numbersFuture = [\n 'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',\n numbersPast[7], numbersPast[8], numbersPast[9]\n ];\n\nfunction translate(num: number, withoutSuffix: boolean, key: string, isFuture: boolean): string {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n return isFuture ? 'sekunnin' : 'sekuntia';\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(num, isFuture) + ' ' + result;\n return result;\n}\n\nfunction verbalNumber(num: number, isFuture: boolean) {\n return num < 10 ? (isFuture ? numbersFuture[num] : numbersPast[num]) : num;\n}\n\nexport const fiLocale: LocaleData = {\n abbr: 'fi',\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),\n monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),\n weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm'\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\nexport const frLocale: LocaleData = {\n abbr: 'fr',\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal(_num: number, period: string): string {\n const num = Number(_num);\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return num + (num === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return num + (num === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return num + (num === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\nimport { getHours, getMonth } from '../utils/date-getters';\n\n//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Darío Beiró : https://github.com/quinobravo\n\nlet monthsShortDot = 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'),\n monthsShort = 'xan_feb_mar_abr_mai_xuñ_xul_ago_set_out_nov_dec'.split('_');\n\nlet monthsParse = [/^xan/i, /^feb/i, /^mar/i, /^abr/i, /^mai/i, /^xuñ/i, /^xul/i, /^ago/i, /^set/i, /^out/i, /^nov/i, /^dec/i];\nlet monthsRegex = /^(xaneiro|febreiro|marzo|abril|maio|xuño|xullo|agosto|setembro|outubro|novembro|decembro|xan\\.?|feb\\.?|mar\\.?|abr\\.?|mai\\.?|xuñ\\.?|xul\\.?|ago\\.?|set\\.?|out\\.?|nov\\.?|dec\\.?)/i;\n\nexport const glLocale: LocaleData = {\n abbr: 'gl',\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),\n monthsShort(date: Date, format: string, isUTC?: boolean): string | string[] {\n if (!date) {\n return monthsShortDot;\n }\n\n if (/-MMM-/.test(format)) {\n return monthsShort[getMonth(date, isUTC)];\n }\n\n return monthsShortDot[getMonth(date, isUTC)];\n },\n monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(xaneiro|febreiro|marzo|abril|maio|xuño|xullo|agosto|setembro|outubro|novembro|decembro)/i,\n monthsShortStrictRegex: /^(xan\\.?|feb\\.?|mar\\.?|abr\\.?|mai\\.?|xuñ\\.?|xul\\.?|ago\\.?|set\\.?|out\\.?|nov\\.?|dec\\.?)/i,\n monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar: {\n sameDay(date: Date) {\n return '[hoxe á' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextDay(date: Date) {\n return '[mañan á' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n nextWeek(date: Date) {\n return 'dddd [á' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastDay(date: Date) {\n return '[onte á' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n lastWeek(date: Date) {\n return '[o] dddd [pasado á' + ((getHours(date) !== 1) ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'fai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\nexport const heLocale: LocaleData = {\n abbr: 'he',\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),\n monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),\n weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[היום ב־]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[אתמול ב־]LT',\n lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'בעוד %s',\n past: 'לפני %s',\n s: 'מספר שניות',\n ss: '%d שניות',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh(num: number): string {\n if (num === 2) {\n return 'שעתיים';\n }\n return num + ' שעות';\n },\n d: 'יום',\n dd(num: number): string {\n if (num === 2) {\n return 'יומיים';\n }\n return num + ' ימים';\n },\n M: 'חודש',\n MM(num: number): string {\n if (num === 2) {\n return 'חודשיים';\n }\n return num + ' חודשים';\n },\n y: 'שנה',\n yy(num: number): string {\n if (num === 2) {\n return 'שנתיים';\n } else if (num % 10 === 0 && num !== 10) {\n return num + ' שנה';\n }\n return num + ' שנים';\n }\n },\n meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM(input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem(hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n// tslint:disable:no-parameter-reassignment prefer-switch\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\nlet symbolMap: {[key: string]: string} = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०'\n },\n numberMap: {[key: string]: string} = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n };\n\nexport const hiLocale: LocaleData = {\n abbr: 'hi',\n months: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),\n monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे'\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष'\n },\n preparse(str: string): string {\n return str.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat(str: string): string {\n return str.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem(hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 1st is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\nimport { getDayOfWeek } from '../units/day-of-week';\n\n//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n\nlet weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\nfunction translate(num: number, withoutSuffix: boolean, key: string, isFuture: boolean): string {\n switch (key) {\n case 's':\n return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce';\n case 'ss':\n return num + ((isFuture || withoutSuffix) ? ' másodperc' : ' másodperce');\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n}\nfunction week(date: Date, isFuture: boolean) {\n return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[getDayOfWeek(date)] + '] LT[-kor]';\n}\n\nexport const huLocale: LocaleData = {\n abbr: 'hu',\n months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),\n monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'),\n weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'YYYY.MM.DD.',\n LL : 'YYYY. MMMM D.',\n LLL : 'YYYY. MMMM D. H:mm',\n LLLL : 'YYYY. MMMM D., dddd H:mm'\n },\n meridiemParse: /de|du/i,\n isPM (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar : {\n sameDay : '[ma] LT[-kor]',\n nextDay : '[holnap] LT[-kor]',\n nextWeek (date: Date) {\n return week(date, true);\n },\n lastDay : '[tegnap] LT[-kor]',\n lastWeek (date: Date) {\n return week(date, false);\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s múlva',\n past : '%s',\n s : translate,\n ss : translate,\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : translate,\n dd : translate,\n M : translate,\n MM : translate,\n y : translate,\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Danijel Grmec : https://github.com/cobaltsis\n\nexport const hrLocale: LocaleData = {\n abbr: 'hr',\n months: 'Siječanj_Veljača_Ožujak_Travanj_Svibanj_Lipanj_Srpanj_Kolovoz_Rujan_Listopad_Studeni_Prosinac'.split('_'),\n monthsShort: 'Sij_Velj_Ožu_Tra_Svi_Lip_Srp_Kol_Ruj_Lis_Stu_Pro'.split('_'),\n weekdays: 'Nedjelja_Ponedjeljak_Utorak_Srijeda_Četvrtak_Petak_Subota'.split('_'),\n weekdaysShort: 'Ned_Pon_Uto_Sri_Čet_Pet_Sub'.split('_'),\n weekdaysMin: 'Ne_Po_Ut_Sr_Če_Pe_Su'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Danas u] LT',\n nextDay: '[Sutra u] LT',\n nextWeek: 'dddd [u] LT',\n lastDay: '[Jučer u] LT',\n lastWeek: '[Zadnji] dddd [u] LT',\n sameElse: 'L'\n },\n invalidDate: 'Neispravan datum',\n relativeTime: {\n future: 'za %s',\n past: '%s prije',\n s: 'nekoliko sekundi',\n ss: '%d sekundi',\n m: 'minuta',\n mm: '%d minuta',\n h: 'sat',\n hh: '%d sati',\n d: 'dan',\n dd: '%d dana',\n M: 'mjesec',\n MM: '%d mjeseci',\n y: 'godina',\n yy: '%d godina'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal(_num: number): string {\n const num = Number(_num);\n const b = num % 10,\n output = (~~(num % 100 / 10) === 1) ? '.' :\n (b === 1) ? '.' :\n (b === 2) ? '.' :\n (b === 3) ? '.' : '.';\n return num + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n// tslint:disable:no-parameter-reassignment prefer-switch\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Indonesia [id]\n//! author : Romy Kusuma : https://github.com/rkusuma\n//! reference: https://github.com/moment/moment/blob/develop/locale/id.js\n\nexport const idLocale: LocaleData = {\n abbr: 'id',\n months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des'.split('_'),\n weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY [pukul] HH.mm',\n LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem(hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar : {\n sameDay : '[Hari ini pukul] LT',\n nextDay : '[Besok pukul] LT',\n nextWeek : 'dddd [pukul] LT',\n lastDay : '[Kemarin pukul] LT',\n lastWeek : 'dddd [lalu pukul] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dalam %s',\n past : '%s yang lalu',\n s : 'beberapa detik',\n ss : '%d detik',\n m : 'semenit',\n mm : '%d menit',\n h : 'sejam',\n hh : '%d jam',\n d : 'sehari',\n dd : '%d hari',\n M : 'sebulan',\n MM : '%d bulan',\n y : 'setahun',\n yy : '%d tahun'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n};\n\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\nimport { getDayOfWeek } from '../units/day-of-week';\n\n//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n\nexport const itLocale: LocaleData = {\n abbr: 'it',\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek(date: Date) {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future(num: number): string {\n return ((/^[0-9].+$/).test(num.toString(10)) ? 'tra' : 'in') + ' ' + num;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: 'un\\'ora',\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\nexport const jaLocale: LocaleData = {\n abbr: 'ja',\n months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort : '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin : '日_月_火_水_木_金_土'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY/MM/DD',\n LL : 'YYYY年M月D日',\n LLL : 'YYYY年M月D日 HH:mm',\n LLLL : 'YYYY年M月D日 HH:mm dddd',\n l : 'YYYY/MM/DD',\n ll : 'YYYY年M月D日',\n lll : 'YYYY年M月D日 HH:mm',\n llll : 'YYYY年M月D日 HH:mm dddd'\n },\n meridiemParse: /午前|午後/i,\n isPM (input) {\n return input === '午後';\n },\n meridiem (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar : {\n sameDay : '[今日] LT',\n nextDay : '[明日] LT',\n nextWeek : '[来週]dddd LT',\n lastDay : '[昨日] LT',\n lastWeek : '[前週]dddd LT',\n sameElse : 'L'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}日/,\n ordinal (num: number, period: string): string {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return num + '日';\n default:\n return num.toString(10);\n }\n },\n relativeTime : {\n future : '%s後',\n past : '%s前',\n s : '数秒',\n ss : '%d秒',\n m : '1分',\n mm : '%d分',\n h : '1時間',\n hh : '%d時間',\n d : '1日',\n dd : '%d日',\n M : '1ヶ月',\n MM : '%dヶ月',\n y : '1年',\n yy : '%d年'\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/irakli-janiashvili\n//! author : Levan Tskipuri : https://github.com/tskipa\n\nexport const kaLocale: LocaleData = {\n abbr: 'ka',\n months : {\n format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_'),\n standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_')\n },\n monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays : {\n standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'),\n isFormat: /(წინა|შემდეგ)/\n },\n weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendar : {\n sameDay : '[დღეს] LT[-ზე]',\n nextDay : '[ხვალ] LT[-ზე]',\n lastDay : '[გუშინ] LT[-ზე]',\n nextWeek : '[შემდეგ] dddd LT[-ზე]',\n lastWeek : '[წინა] dddd LT-ზე',\n sameElse : 'L'\n },\n relativeTime : {\n future(s: number): string {\n var st = s.toString();\n return (/(წამი|წუთი|საათი|წელი)/).test(st) ?\n st.replace(/ი$/, 'ში') :\n st + 'ში';\n },\n past(s: number): string {\n var st = s.toString();\n if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(st)) {\n return st.replace(/(ი|ე)$/, 'ის წინ');\n }\n if ((/წელი/).test(st)) {\n return st.replace(/წელი$/, 'წლის წინ');\n }\n },\n s : 'რამდენიმე წამი',\n ss : '%d წამი',\n m : 'წუთი',\n mm : '%d წუთი',\n h : 'საათი',\n hh : '%d საათი',\n d : 'დღე',\n dd : '%d დღე',\n M : 'თვე',\n MM : '%d თვე',\n y : 'წელი',\n yy : '%d წელი'\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal(_num: number, _period: string): string {\n const num = Number(_num);\n if (num === 0) {\n return num.toString();\n }\n if (num === 1) {\n return num + '-ლი';\n }\n if ((num < 20) || (num <= 100 && (num % 20 === 0)) || (num % 100 === 0)) {\n return 'მე-' + num;\n }\n return num + '-ე';\n },\n week : {\n dow : 1,\n doy : 4\n }\n};\n","// ! moment.js locale configuration\n// ! locale : Kazakh [kk]\n// ! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\nimport { LocaleData } from '..';\n\nconst suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші'\n};\n\nexport const kkLocale: LocaleData = {\n abbr: 'kk',\n months : 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'),\n monthsShort : 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays : 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'),\n weekdaysShort : 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin : 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Бүгін сағат] LT',\n nextDay : '[Ертең сағат] LT',\n nextWeek : 'dddd [сағат] LT',\n lastDay : '[Кеше сағат] LT',\n lastWeek : '[Өткен аптаның] dddd [сағат] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s ішінде',\n past : '%s бұрын',\n s : 'бірнеше секунд',\n ss : '%d секунд',\n m : 'бір минут',\n mm : '%d минут',\n h : 'бір сағат',\n hh : '%d сағат',\n d : 'бір күн',\n dd : '%d күн',\n M : 'бір ай',\n MM : '%d ай',\n y : 'бір жыл',\n yy : '%d жыл'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal(_num: number): string {\n const a = _num % 10;\n const b = _num >= 100 ? 100 : null;\n\n return _num + (suffixes[_num] || suffixes[a] || suffixes[b]);\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n// tslint:disable:object-literal-shorthand\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee <jeeeyul@gmail.com>\n\nexport const koLocale: LocaleData = {\n abbr: 'ko',\n months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort : '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin : '일_월_화_수_목_금_토'.split('_'),\n longDateFormat : {\n LT : 'A h:mm',\n LTS : 'A h:mm:ss',\n L : 'YYYY.MM.DD',\n LL : 'YYYY년 MMMM D일',\n LLL : 'YYYY년 MMMM D일 A h:mm',\n LLLL : 'YYYY년 MMMM D일 dddd A h:mm',\n l : 'YYYY.MM.DD',\n ll : 'YYYY년 MMMM D일',\n lll : 'YYYY년 MMMM D일 A h:mm',\n llll : 'YYYY년 MMMM D일 dddd A h:mm'\n },\n calendar : {\n sameDay : '오늘 LT',\n nextDay : '내일 LT',\n nextWeek : 'dddd LT',\n lastDay : '어제 LT',\n lastWeek : '지난주 dddd LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s 후',\n past : '%s 전',\n s : '몇 초',\n ss : '%d초',\n m : '1분',\n mm : '%d분',\n h : '한 시간',\n hh : '%d시간',\n d : '하루',\n dd : '%d일',\n M : '한 달',\n MM : '%d달',\n y : '일 년',\n yy : '%d년'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}(일|월|주)/,\n ordinal : function (num: number, period: string): string {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return num + '일';\n case 'M':\n return num + '월';\n case 'w':\n case 'W':\n return num + '주';\n default:\n return num.toString(10);\n }\n },\n meridiemParse : /오전|오후/,\n isPM : function (token) {\n return token === '오후';\n },\n meridiem : function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Stanislavas Guk : https://github.com/ixoster\n\nconst units = {\n ss : 'sekundė_sekundžių_sekundes',\n m : 'minutė_minutės_minutę',\n mm: 'minutės_minučių_minutes',\n h : 'valanda_valandos_valandą',\n hh: 'valandos_valandų_valandas',\n d : 'diena_dienos_dieną',\n dd: 'dienos_dienų_dienas',\n M : 'mėnuo_mėnesio_mėnesį',\n MM: 'mėnesiai_mėnesių_mėnesius',\n y : 'metai_metų_metus',\n yy: 'metai_metų_metus'\n};\nfunction translateSeconds(num: number, withoutSuffix: boolean, key: string, isFuture: boolean) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n}\nfunction translateSingular(num: number, withoutSuffix: boolean, key: string, isFuture: boolean) {\n return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]);\n}\nfunction special(num: number) {\n return num % 10 === 0 || (num > 10 && num < 20);\n}\nfunction forms(key: string) {\n return (units as any)[key].split('_');\n}\nfunction translate(num: number, withoutSuffix: boolean, key: string, isFuture: boolean) {\n let result = num + ' ';\n if (num === 1) {\n return result + translateSingular(num, withoutSuffix, key[0], isFuture);\n } else if (withoutSuffix) {\n return result + (special(num) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(num) ? forms(key)[1] : forms(key)[2]);\n }\n }\n}\n\nexport const ltLocale: LocaleData = {\n abbr: 'lt',\n months : {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'),\n standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/\n },\n monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays : {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'),\n standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'),\n isFormat: /dddd HH:mm/\n },\n weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'YYYY [m.] MMMM D [d.]',\n LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l : 'YYYY-MM-DD',\n ll : 'YYYY [m.] MMMM D [d.]',\n lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'\n },\n calendar : {\n sameDay : '[Šiandien] LT',\n nextDay : '[Rytoj] LT',\n nextWeek : 'dddd LT',\n lastDay : '[Vakar] LT',\n lastWeek : '[Praėjusį] dddd LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'po %s',\n past : 'prieš %s',\n s : translateSeconds,\n ss : translate,\n m : translateSingular,\n mm : translate,\n h : translateSingular,\n hh : translate,\n d : translateSingular,\n dd : translate,\n M : translateSingular,\n MM : translate,\n y : translateSingular,\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal(num) {\n return num + '-oji';\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Matiss Janis Aboltins : https://github.com/matissjanis\n\nexport const lvLocale: LocaleData = {\n abbr: 'lv',\n months : 'Janvāris_Februāris_Marts_Aprīlis_Maijs_Jūnijs_Jūlijs_Augusts_Septembris_Oktobris_Novembris_Decembris'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_Mai_Jūn_Jūl_Aug_Sep_Okt_Nov_Dec'.split('_'),\n weekdays : 'Svētdiena_Pirmdiena_Otrdiena_Trešdiena_Ceturtdiena_Piektdiena_Sestdiena'.split('_'),\n weekdaysShort : 'Svētd_Pirmd_Otrd_Trešd_Ceturtd_Piektd_Sestd'.split('_'),\n weekdaysMin : 'Sv_Pi_Ot_Tr_Ce_Pk_Se'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'pēc %s',\n past : 'pirms %s',\n s : 'dažām sekundēm',\n ss : '%d sekundēm',\n m : 'minūtes',\n mm : '%d minūtēm',\n h : 'stundas',\n hh : '%d stundām',\n d : 'dienas',\n dd : '%d dienām',\n M : 'mēneša',\n MM : '%d mēnešiem',\n y : 'gada',\n yy : '%d gadiem'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal(num) {\n return num + '.';\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n// tslint:disable:object-literal-shorthand\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\nfunction translate(num: number, withoutSuffix: boolean, key: string, isFuture: boolean) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return num + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return num + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return num + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return num + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return num + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return num + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return num.toString(10);\n }\n}\n\nexport const mnLocale: LocaleData = {\n abbr: 'mn',\n months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split('_'),\n monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split('_'),\n monthsParseExact: true,\n weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm'\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[Ирэх] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[Өнгөрсөн] dddd LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (num: number, period: string): string {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return num + ' өдөр';\n default:\n return num.toString(10);\n }\n }\n};\n","// tslint:disable:comment-format\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n\nexport const nbLocale: LocaleData = {\n abbr: 'nb',\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort: 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm'\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dager',\n M: 'en måned',\n MM: '%d måneder',\n y: 'ett år',\n yy: '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\nimport { getMonth } from '../utils/date-getters';\n\n//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\nlet monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_');\nlet monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\n\nlet monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];\nlet monthsRegex = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\nexport const nlBeLocale: LocaleData = {\n abbr: 'nl-be',\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n monthsShort(date: Date, format: string, isUTC?: boolean): string | string[] {\n if (!date) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[getMonth(date, isUTC)];\n } else {\n return monthsShortWithDots[getMonth(date, isUTC)];\n }\n },\n\n monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal(_num: number): string {\n const num = Number(_num);\n return num + ((num === 1 || num === 8 || num >= 20) ? 'ste' : 'de');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\nimport { getMonth } from '../utils/date-getters';\n\n//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\nlet monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\n\nlet monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];\nlet monthsRegex = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\nexport const nlLocale: LocaleData = {\n abbr: 'nl',\n months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n monthsShort (date: Date, format: string, isUTC?: boolean): string | string[] {\n if (!date) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[getMonth(date, isUTC)];\n } else {\n return monthsShortWithDots[getMonth(date, isUTC)];\n }\n },\n\n monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse,\n longMonthsParse : monthsParse,\n shortMonthsParse : monthsParse,\n\n weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin : 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD-MM-YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'over %s',\n past : '%s geleden',\n s : 'een paar seconden',\n ss : '%d seconden',\n m : 'één minuut',\n mm : '%d minuten',\n h : 'één uur',\n hh : '%d uur',\n d : 'één dag',\n dd : '%d dagen',\n M : 'één maand',\n MM : '%d maanden',\n y : 'één jaar',\n yy : '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal (_num: number): string {\n const num = Number(_num);\n return num + ((num === 1 || num === 8 || num >= 20) ? 'ste' : 'de');\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\nimport { getMonth } from '../utils/date-getters';\nimport { getDayOfWeek } from '../units/day-of-week';\n\n//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\nlet monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_');\nlet monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_');\n\nfunction plural(num: number): boolean {\n return (num % 10 < 5) && (num % 10 > 1) && ((~~(num / 10) % 10) !== 1);\n}\n\nfunction translate(num: number, withoutSuffix: boolean, key: string): string {\n let result = num + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(num) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural(num) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural(num) ? 'godziny' : 'godzin');\n case 'MM':\n return result + (plural(num) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural(num) ? 'lata' : 'lat');\n }\n}\n\nexport const plLocale: LocaleData = {\n abbr: 'pl',\n months(date: Date, format: string, isUTC?: boolean): string | string[] {\n if (!date) {\n return monthsNominative;\n } else if (format === '') {\n // Hack: if format empty we know this is used to generate\n // RegExp by moment. Give then back both valid forms of months\n // in RegExp ready format.\n return '(' + monthsSubjective[getMonth(date, isUTC)] + '|' + monthsNominative[getMonth(date, isUTC)] + ')';\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[getMonth(date, isUTC)];\n } else {\n return monthsNominative[getMonth(date, isUTC)];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\n weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek(date: Date): string {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 5:\n return '[W piątek o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek(date: Date): string {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 4:\n return '[W zeszłą czwartek o] LT';\n case 5:\n return '[W zeszłą piątek o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzień',\n dd: '%d dni',\n M: 'miesiąc',\n MM: translate,\n y: 'rok',\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\nimport { getDayOfWeek } from '../units/day-of-week';\n\n//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\nexport const ptBrLocale: LocaleData = {\n abbr: 'pt-br',\n months: 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek(date: Date) {\n return (getDayOfWeek(date) === 0 || getDayOfWeek(date) === 6) ?\n '[Último] dddd [às] LT' : // Saturday + Sunday\n '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'em %s',\n past: '%s atrás',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº'\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\nimport { LocaleData } from '../locale/locale.class';\n\n// ! moment.js locale configuration\n// ! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n// ! author : Earle white: https://github.com/5earle\n\nfunction relativeTimeWithPlural(num: number, withoutSuffix: boolean, key: string): string {\n let format: {[key:string]: string} = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n MM: 'luni',\n yy: 'ani'\n };\n\n let separator = ' ';\n if (num % 100 >= 20 || (num >= 100 && num % 100 === 0)) {\n separator = ' de ';\n }\n return num + separator + format[key];\n}\n\n\nexport const roLocale: LocaleData = {\n abbr: 'ro',\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),\n monthsShort: 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural,\n m: 'un minut',\n mm: relativeTimeWithPlural,\n h: 'o oră',\n hh: relativeTimeWithPlural,\n d: 'o zi',\n dd: relativeTimeWithPlural,\n M: 'o lună',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\nimport { getWeek } from '../units/week';\nimport { getDayOfWeek } from '../units/day-of-week';\n\n//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! Author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\nfunction plural(word: string, num: number): string {\n let forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n}\n\nfunction relativeTimeWithPlural(num: number, withoutSuffix: boolean, key: string): string {\n let format: {[key: string]: string} = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет'\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n }\n return num + ' ' + plural(format[key], +num);\n}\n\nlet monthsParse = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i];\n\n// http://new.gramota.ru/spravka/rules/139-prop : § 103\n// Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n// CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\nexport const ruLocale: LocaleData = {\n abbr: 'ru',\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'),\n standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_')\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку ?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'),\n standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_')\n },\n weekdays: {\n standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\\] ?dddd/\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соотвествует только сокращённым формам\n monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm'\n },\n calendar: {\n sameDay: '[Сегодня в] LT',\n nextDay: '[Завтра в] LT',\n lastDay: '[Вчера в] LT',\n nextWeek(date: Date, now: Date) {\n if (getWeek(now) !== getWeek(date)) {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[В следующее] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd [в] LT';\n }\n } else {\n if (getDayOfWeek(date) === 2) {\n return '[Во] dddd [в] LT';\n } else {\n return '[В] dddd [в] LT';\n }\n }\n },\n lastWeek(date: Date, now: Date) {\n if (getWeek(now) !== getWeek(date)) {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[В прошлое] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd [в] LT';\n }\n } else {\n if (getDayOfWeek(date) === 2) {\n return '[Во] dddd [в] LT';\n } else {\n return '[В] dddd [в] LT';\n }\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'несколько секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'час',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM(input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem(hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal(_num: number, period: string): string {\n const num = Number(_num);\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return num + '-й';\n case 'D':\n return num + '-го';\n case 'w':\n case 'W':\n return num + '-я';\n default:\n return num.toString(10);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\nimport { getDayOfWeek } from '../units/day-of-week';\n\n//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Jozef Pažin : https://github.com/atiris\n\nconst months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_');\nconst monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n\nfunction plural(num: number): boolean {\n return (num > 1) && (num < 5) && (~~(num / 10) !== 1);\n}\n\nfunction translate(num: number, withoutSuffix: boolean, key: string, isFuture: boolean): string {\n const result = num + ' ';\n\n switch (key) {\n case 's':// a few seconds / in a few seconds / a few seconds ago\n return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami';\n case 'ss':// 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(num) ? 'sekundy' : 'sekúnd');\n }\n else {\n return result + 'sekundami';\n }\n // break;\n case 'm':// a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou');\n case 'mm':// 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(num) ? 'minúty' : 'minút');\n }\n else {\n return result + 'minútami';\n }\n // break;\n case 'h':// an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');\n case 'hh':// 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(num) ? 'hodiny' : 'hodín');\n }\n else {\n return result + 'hodinami';\n }\n // break;\n case 'd':// a day / in a day / a day ago\n return (withoutSuffix || isFuture) ? 'deň' : 'dňom';\n case 'dd':// 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(num) ? 'dni' : 'dní');\n }\n else {\n return result + 'dňami';\n }\n // break;\n case 'M':// a month / in a month / a month ago\n return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom';\n case 'MM':// 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(num) ? 'mesiace' : 'mesiacov');\n }\n else {\n return result + 'mesiacmi';\n }\n // break;\n case 'y':// a year / in a year / a year ago\n return (withoutSuffix || isFuture) ? 'rok' : 'rokom';\n case 'yy':// 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(num) ? 'roky' : 'rokov');\n }\n else {\n return result + 'rokmi';\n }\n // break;\n }\n}\n\nexport const skLocale: LocaleData = {\n abbr: 'sk',\n months,\n monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY'\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek(date: Date): string {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek(date: Date): string {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'o %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n// tslint:disable:object-literal-key-quotes\n\nimport { LocaleData } from '../locale/locale.class';\nimport { getDayOfWeek } from '../units/day-of-week';\n\n//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : mihan : https://github.com/mihan\n\nfunction processRelativeTime(number: number, withoutSuffix: boolean, key: string, isFuture: boolean): string {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += withoutSuffix || isFuture ? 'sekund' : 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n}\n\nexport const slLocale: LocaleData = {\n abbr: 'sl',\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n\n nextWeek(date: Date) {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[včeraj ob] LT',\n lastWeek(date: Date) {\n switch (getDayOfWeek(date)) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'čez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Agon Cecelia : https://github.com/agoncecelia\n\nexport const sqLocale: LocaleData = {\n abbr: 'sq',\n months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),\n monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays : 'E Dielë_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),\n weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin : 'Di_He_Ma_Me_En_Pr_Sh'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Sot në] LT',\n nextDay : '[Nesër në] LT',\n nextWeek : 'dddd [në] LT',\n lastDay : '[Dje në] LT',\n lastWeek : 'dddd [e kaluar në] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'në %s',\n past : 'para %sve',\n s : 'disa sekonda',\n ss : '%d sekonda',\n m : 'një minut',\n mm : '%d minuta',\n h : 'një orë',\n hh : '%d orë',\n d : 'një ditë',\n dd : '%d ditë',\n M : 'një muaj',\n MM : '%d muaj',\n y : 'një vit',\n yy : '%d vite'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./, // need clarification\n ordinal : '%d.', // need clarification\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\nexport const svLocale: LocaleData = {\n abbr: 'sv',\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(e|a)/,\n ordinal(_num: number): string {\n const num = Number(_num);\n let b = num % 10,\n output = (~~(num % 100 / 10) === 1) ? 'e' :\n (b === 1) ? 'a' :\n (b === 2) ? 'a' :\n (b === 3) ? 'e' : 'e';\n return num + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\n// moment.js locale configuration\n// locale : Thai [th]\n// author : Watcharapol Sanitwong : https://github.com/tumit\n\nimport { LocaleData } from '../locale/locale.class';\n\nexport const thLocale: LocaleData = {\n abbr: 'th',\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),\n monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'), // yes, three characters difference\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm'\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM(input) {\n return input === 'หลังเที่ยง';\n },\n meridiem(hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี'\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\n// moment.js locale configuration\n// locale : Thai-Buddhist Era [th-be]\n// author : Watcharapol Sanitwong : https://github.com/tumit\n\nimport { LocaleData } from '../locale/locale.class';\n\nexport const thBeLocale: LocaleData = {\n abbr: 'th-be',\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),\n monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm'\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM(input) {\n return input === 'หลังเที่ยง';\n },\n meridiem(hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี'\n },\n\n preparse(str: string, format?: string): string {\n\n const _format = thBeLocale.longDateFormat[format]\n ? thBeLocale.longDateFormat[format]\n : format;\n\n // endsWith('YYYY')\n if (_format.indexOf('YYYY', _format.length - 'YYYY'.length) !== -1 ) {\n const ddMM = str.substr(0, str.length - 4);\n const yyyy = parseInt(str.substr(str.length - 4), 10) - 543;\n return ddMM + yyyy;\n }\n\n return str;\n },\n\n getFullYear(date: Date, isUTC = false): number {\n return 543 + (isUTC ? date.getUTCFullYear() : date.getFullYear());\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yiğit Kaya: https://github.com/BYK\n\nlet suffixes: { [key: string]: string } = {\n 1: '\\'inci',\n 5: '\\'inci',\n 8: '\\'inci',\n 70: '\\'inci',\n 80: '\\'inci',\n 2: '\\'nci',\n 7: '\\'nci',\n 20: '\\'nci',\n 50: '\\'nci',\n 3: '\\'üncü',\n 4: '\\'üncü',\n 100: '\\'üncü',\n 6: '\\'ncı',\n 9: '\\'uncu',\n 10: '\\'uncu',\n 30: '\\'uncu',\n 60: '\\'ıncı',\n 90: '\\'ıncı'\n};\n\nexport const trLocale: LocaleData = {\n abbr: 'tr',\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),\n monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),\n weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,\n ordinal(_num: number): string {\n const num = Number(_num);\n if (num === 0) { // special case for zero\n return num + '\\'ıncı';\n }\n let a = num % 10,\n b = num % 100 - a,\n c = num >= 100 ? 100 : null;\n return num + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\nimport { getHours } from '../utils/date-getters';\nimport { getDayOfWeek } from '../units/day-of-week';\n\n//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\nfunction plural(word, num) {\n let forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n}\n\nfunction relativeTimeWithPlural(num: number, withoutSuffix, key): string {\n let format: { [key: string]: string } = {\n ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'місяць_місяці_місяців',\n yy: 'рік_роки_років'\n };\n\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n }\n\n if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n }\n return num + ' ' + plural(format[key], +num);\n}\n\nfunction weekdaysCaseReplace(date: Date, format: string, isUTC?: boolean): string | string[] {\n let weekdays = {\n nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),\n accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),\n genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')\n };\n\n if (!date) {\n return weekdays.nominative;\n }\n\n let nounCase = (/(\\[[ВвУу]\\]) ?dddd/).test(format) ?\n 'accusative' :\n ((/\\[?(?:минулої|наступної)? ?\\] ?dddd/).test(format) ?\n 'genitive' :\n 'nominative');\n return weekdays[nounCase][getDayOfWeek(date, isUTC)];\n}\n\nfunction processHoursFunction(str: string) {\n return function (date: Date): string {\n return str + 'о' + (getHours(date) === 11 ? 'б' : '') + '] LT';\n };\n}\n\nexport const ukLocale: LocaleData = {\n abbr: 'uk',\n months: {\n format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'),\n standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_')\n },\n monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY р.',\n LLL: 'D MMMM YYYY р., HH:mm',\n LLLL: 'dddd, D MMMM YYYY р., HH:mm'\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek(date: Date) {\n switch (getDayOfWeek(date)) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [')(date);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [')(date);\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'місяць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM(input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem(hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal(_num: number, period: string): string {\n const num = Number(_num);\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return num + '-й';\n case 'D':\n return num + '-го';\n default:\n return num.toString();\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n }\n};\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Việt Nam [vi]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\nexport const viLocale: LocaleData = {\n abbr: 'vi',\n months : 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'),\n monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'),\n monthsParseExact: true,\n weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'),\n weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact : true,\n meridiemParse: /sa|ch/i,\n isPM(input: string): boolean {\n return /^ch$/i.test(input);\n },\n meridiem(hours: number, minutes: number, isLower: boolean): string {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM [năm] YYYY',\n LLL : 'D MMMM [năm] YYYY HH:mm',\n LLLL : 'dddd, D MMMM [năm] YYYY HH:mm',\n l : 'DD/M/YYYY',\n ll : 'D MMM YYYY',\n lll : 'D MMM YYYY HH:mm',\n llll : 'ddd, D MMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trước lúc] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : '%s tới',\n past : '%s trước',\n s : 'vài giây',\n ss : '%d giây' ,\n m : 'một phút',\n mm : '%d phút',\n h : 'một giờ',\n hh : '%d giờ',\n d : 'một ngày',\n dd : '%d ngày',\n M : 'một tháng',\n MM : '%d tháng',\n y : 'một năm',\n yy : '%d năm'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal(_num: number): string {\n return '' + _num;\n },\n week : {\n dow : 1, // Thứ Hai là ngày đầu tuần.\n doy : 4 // Tuần chứa ngày 4 tháng 1 là tuần đầu tiên trong năm.\n }\n};\n\n","// tslint:disable:comment-format binary-expression-operand-order max-line-length\n// tslint:disable:no-bitwise prefer-template cyclomatic-complexity\n// tslint:disable:no-shadowed-variable switch-default prefer-const\n// tslint:disable:one-variable-per-declaration newline-before-return\n// tslint:disable:no-parameter-reassignment prefer-switch\n\nimport { LocaleData } from '../locale/locale.class';\n\n//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n\nexport const zhCnLocale: LocaleData = {\n abbr: 'zh-cn',\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour(hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' ||\n meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem(hour, minute, isLower) {\n let hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal(_num: number, period) {\n const num = Number(_num);\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return num + '日';\n case 'M':\n return num + '月';\n case 'w':\n case 'W':\n return num + '周';\n default:\n return num.toString();\n }\n },\n relativeTime: {\n future: '%s内',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年'\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n};\n","/**\n * Get CSS computed property of the given element\n */\nexport function getStyleComputedProperty(element: HTMLElement, property?: string): any {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const window = element.ownerDocument.defaultView;\n const css = window.getComputedStyle(element, null);\n\n return property ? css[property as any] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n */\nexport function getParentNode(element: any): any {\n if (element.nodeName === 'HTML') {\n return element;\n }\n\n return element.parentNode || element.host;\n}\n","/**\n * Returns the scrolling parent of the given element\n */\nimport { getStyleComputedProperty } from './getStyleComputedProperty';\nimport { getParentNode } from './getParentNode';\n\nexport function getScrollParent(element: any): any {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n default:\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll|overlay)/.test(String(overflow) + String(overflowY) + String(overflowX))) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","export const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\n","/**\n * Determines if the browser is Internet Explorer\n */\nimport { isBrowser } from './isBrowser';\n\nconst isIE11 = isBrowser && !!((window as any).MSInputMethodContext && (document as any).documentMode);\nconst isIE10 = isBrowser && !!((window as any).MSInputMethodContext && /MSIE 10/.test((navigator as any).userAgent));\n\nexport function isIE(version?: number) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n\n return isIE11 || isIE10;\n}\n","/**\n * Returns the offset parent of the given element\n */\nimport { getStyleComputedProperty } from './getStyleComputedProperty';\nimport { isIE } from './isIE';\n\nexport function getOffsetParent(element: any): any {\n if (!element) {\n return document.documentElement;\n }\n\n const noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n let offsetParent = element.offsetParent || null;\n\n // Skip hidden elements which don't have an offsetParent\n let sibling: HTMLElement | null;\n\n while (offsetParent === noOffsetParent\n && element.nextElementSibling\n && sibling !== element.nextElementSibling) {\n\n sibling = element.nextElementSibling;\n offsetParent = sibling.offsetParent;\n }\n\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return sibling ? sibling.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n if (\n ['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","import { getOffsetParent } from './getOffsetParent';\n\nexport function isOffsetContainer(element: any) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n */\nexport function getRoot(node: Node): any {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","/**\n * Finds the offset parent common to the two provided nodes\n */\nimport { isOffsetContainer } from './isOffsetContainer';\nimport { getRoot } from './getRoot';\nimport { getOffsetParent } from './getOffsetParent';\n\nexport function findCommonOffsetParent(element1: HTMLElement, element2: HTMLElement): any {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n /* tslint:disable-next-line: no-bitwise */\n const order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","/**\n * Helper to detect borders of a given element\n */\n\nexport function getBordersSize(styles: CSSStyleDeclaration, axis: string) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n parseFloat(styles[`border${sideA}Width` as any]) +\n parseFloat(styles[`border${sideB}Width` as any])\n );\n}\n","import { isIE } from './isIE';\n\nfunction getSize(axis: string, body: HTMLElement, html: HTMLElement, computedStyle: CSSStyleDeclaration) {\n return Math.max(\n (body as any)[`offset${axis}`],\n (body as any)[`scroll${axis}`],\n (html as any)[`client${axis}`],\n (html as any)[`offset${axis}`],\n (html as any)[`scroll${axis}`],\n isIE(10)\n ? (parseInt((html as any)[`offset${axis}`], 10) +\n parseInt(computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}` as any], 10) +\n parseInt(computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}` as any], 10))\n : 0\n );\n}\n\nexport function getWindowSizes(document: Document) {\n const body = document.body;\n const html = document.documentElement;\n const computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n */\nexport function getScroll(element: HTMLElement, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n */\nimport { Offsets } from '../models';\n\nexport function getClientRect(offsets: Offsets): Offsets {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n };\n}\n","/**\n * Get bounding client rect of given element\n */\nimport { getStyleComputedProperty } from './getStyleComputedProperty';\nimport { getBordersSize } from './getBordersSize';\nimport { getWindowSizes } from './getWindowSizes';\nimport { getScroll } from './getScroll';\nimport { getClientRect } from './getClientRect';\nimport { isIE } from './isIE';\nimport { Offsets } from '../models';\n\nexport function getBoundingClientRect(element: HTMLElement): Offsets {\n let rect: any = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {\n return undefined;\n }\n\n const result: any = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n const sizes: any = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n const width =\n sizes.width || element.clientWidth || result.right - result.left;\n const height =\n sizes.height || element.clientHeight || result.bottom - result.top;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","/**\n * Sum or subtract the element scroll values (left and top) from a given rect object\n */\nimport { getScroll } from './getScroll';\nimport { Offsets } from '../models';\n\nexport function includeScroll(rect: Offsets, element: HTMLElement, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n\n return rect;\n}\n","import { getBoundingClientRect } from './getBoundingClientRect';\nimport { getClientRect } from './getClientRect';\nimport { getScrollParent } from './getScrollParent';\nimport { getStyleComputedProperty } from './getStyleComputedProperty';\nimport { includeScroll } from './includeScroll';\nimport { isIE as runIsIE } from './isIE';\nimport { Offsets } from '../models';\n\nexport function getOffsetRectRelativeToArbitraryNode(\n children: HTMLElement,\n parent: HTMLElement,\n fixedPosition = false\n): Offsets {\n const isIE10 = runIsIE(10);\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect: any = getBoundingClientRect(children);\n const parentRect: any = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = parseFloat(styles.borderTopWidth);\n const borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n\n let offsets: Offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = parseFloat(styles.marginTop);\n const marginLeft = parseFloat(styles.marginLeft);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10 && !fixedPosition\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import { getClientRect } from './getClientRect';\nimport { getOffsetRectRelativeToArbitraryNode } from './getOffsetRectRelativeToArbitraryNode';\nimport { getScroll } from './getScroll';\nimport { Offsets } from '../models';\n\nexport function getViewportOffsetRectRelativeToArtbitraryNode(element: HTMLElement, excludeScroll = false): Offsets {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = !excludeScroll ? getScroll(html) : 0;\n const scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n const offset = {\n top: scrollTop - Number(relativeOffset.top) + Number(relativeOffset.marginTop),\n left: scrollLeft - Number(relativeOffset.left) + Number(relativeOffset.marginLeft),\n width,\n height\n };\n\n return getClientRect(offset);\n}\n","/**\n * Check if the given element is fixed or is inside a fixed parent\n */\nimport { getStyleComputedProperty } from './getStyleComputedProperty';\nimport { getParentNode } from './getParentNode';\n\nexport function isFixed(element: HTMLElement): boolean {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n\n return isFixed(getParentNode(element));\n}\n","/**\n * Finds the first parent of an element that has a transformed property defined\n */\n\nimport { getStyleComputedProperty } from './getStyleComputedProperty';\nimport { isIE } from './isIE';\n\nexport function getFixedPositionOffsetParent(element: HTMLElement): HTMLElement {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n\n let el = element.parentElement;\n\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n\n return el || document.documentElement;\n}\n","/**\n * Computed the boundaries limits and return them\n */\nimport { getScrollParent } from './getScrollParent';\nimport { getParentNode } from './getParentNode';\nimport { findCommonOffsetParent } from './findCommonOffsetParent';\nimport { getOffsetRectRelativeToArbitraryNode } from './getOffsetRectRelativeToArbitraryNode';\nimport { getViewportOffsetRectRelativeToArtbitraryNode } from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport { getWindowSizes } from './getWindowSizes';\nimport { isFixed } from './isFixed';\nimport { getFixedPositionOffsetParent } from './getFixedPositionOffsetParent';\n\nexport function getBoundaries(\n target: HTMLElement,\n host: HTMLElement,\n padding = 0,\n boundariesElement: string,\n fixedPosition = false\n) {\n // NOTE: 1 DOM access here\n\n let boundaries: any = { top: 0, left: 0 };\n const offsetParent = fixedPosition ? getFixedPositionOffsetParent(target) : findCommonOffsetParent(target, host);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(host));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = target.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = target.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent,\n fixedPosition\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes(target.ownerDocument);\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = Number(height) + Number(offsets.top);\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = Number(width) + Number(offsets.left);\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n boundaries.left += padding;\n boundaries.top += padding;\n boundaries.right -= padding;\n boundaries.bottom -= padding;\n\n return boundaries;\n}\n","/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n */\nimport { getBoundaries } from './getBoundaries';\nimport { Offsets } from '../models';\n\nfunction getArea({ width, height }: { [key: string]: number }) {\n return width * height;\n}\n\nexport function computeAutoPlacement(\n placement: string,\n refRect: Offsets,\n target: HTMLElement,\n host: HTMLElement,\n allowedPositions: any[] = ['top', 'bottom', 'right', 'left'],\n boundariesElement = 'viewport',\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(target, host, padding, boundariesElement);\n\n const rects: any = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key])\n }))\n .sort((a, b) => b.area - a.area);\n\n let filteredAreas: any[] = sortedAreas.filter(\n ({ width, height }) => {\n return width >= target.clientWidth\n && height >= target.clientHeight;\n }\n );\n\n filteredAreas = filteredAreas.filter((position: any) => {\n return allowedPositions\n .some((allowedPosition: string) => {\n return allowedPosition === position.key;\n });\n });\n\n const computedPlacement: string = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split(' ')[1];\n\n // for tooltip on auto position\n target.className = target.className.replace(/bs-tooltip-auto/g, `bs-tooltip-${computedPlacement}`);\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","import { Data, Offsets } from '../models';\n\nexport function getOffsets(data: Data): Offsets {\n return {\n width: data.offsets.target.width,\n height: data.offsets.target.height,\n left: Math.floor(data.offsets.target.left),\n top: Math.round(data.offsets.target.top),\n bottom: Math.round(data.offsets.target.bottom),\n right: Math.floor(data.offsets.target.right)\n };\n}\n","/**\n * Get the opposite placement of the given one\n */\nexport function getOppositePlacement(placement: string) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n\n return placement.replace(/left|right|bottom|top/g, matched => (hash as any)[matched]);\n}\n","/**\n * Get the opposite placement variation of the given one\n */\nexport function getOppositeVariation(variation: string) {\n if (variation === 'right') {\n return 'left';\n } else if (variation === 'left') {\n return 'right';\n }\n\n return variation;\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n */\nexport function getOuterSizes(element: any) {\n const window = element.ownerDocument.defaultView;\n const styles = window.getComputedStyle(element);\n const x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n const y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n\n return {\n width: Number(element.offsetWidth) + y,\n height: Number(element.offsetHeight) + x\n };\n}\n","/**\n * Get offsets to the reference element\n */\nimport { findCommonOffsetParent } from './findCommonOffsetParent';\nimport { getOffsetRectRelativeToArbitraryNode } from './getOffsetRectRelativeToArbitraryNode';\nimport { getFixedPositionOffsetParent } from './getFixedPositionOffsetParent';\nimport { Offsets } from '../models';\n\nexport function getReferenceOffsets(\n target: HTMLElement,\n host: HTMLElement,\n fixedPosition: boolean = null\n): Offsets {\n const commonOffsetParent = fixedPosition\n ? getFixedPositionOffsetParent(target)\n : findCommonOffsetParent(target, host);\n\n return getOffsetRectRelativeToArbitraryNode(host, commonOffsetParent, fixedPosition);\n}\n","/**\n * Get offsets to the target\n */\nimport { getOppositePlacement } from './getOppositePlacement';\nimport { getOuterSizes } from './getOuterSizes';\nimport { Offsets } from '../models';\n\nexport function getTargetOffsets(\n target: HTMLElement,\n hostOffsets: Offsets,\n position: string\n): Offsets {\n const placement = position.split(' ')[0];\n\n // Get target node sizes\n const targetRect = getOuterSizes(target);\n\n // Add position, width and height to our offsets object\n const targetOffsets = {\n width: targetRect.width,\n height: targetRect.height\n };\n\n // depending by the target placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n (targetOffsets as any)[mainSide] =\n hostOffsets[mainSide] +\n hostOffsets[measurement] / 2 -\n targetRect[measurement] / 2;\n\n (targetOffsets as any)[secondarySide] = placement === secondarySide\n ? hostOffsets[secondarySide] - targetRect[secondaryMeasurement]\n : (hostOffsets as any)[getOppositePlacement(secondarySide)];\n\n return targetOffsets;\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n */\nexport function isModifierEnabled(options: any, modifierName: string) {\n return options\n && options.modifiers\n && options.modifiers[modifierName]\n && options.modifiers[modifierName].enabled;\n}\n","/**\n * Tells if a given input is a number\n */\nexport function isNumeric(n: any) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","/**\n * Update class for the given popper\n */\nimport { Renderer2 } from '@angular/core';\nimport { Data } from '../models';\n\nexport function updateContainerClass(data: Data, renderer?: Renderer2): void {\n const target = data.instance.target;\n\n let containerClass = target.className;\n\n if (data.placementAuto) {\n containerClass = containerClass.replace(/mis-popover-auto/g, `mis-popover-${data.placement}`);\n containerClass = containerClass.replace(/bs-tooltip-auto/g, `bs-tooltip-${data.placement}`);\n containerClass = containerClass.replace(/\\sauto/g, ` ${data.placement}`);\n\n if (containerClass.indexOf('popover') !== -1 && containerClass.indexOf('popover-auto') === -1) {\n containerClass += ' popover-auto';\n }\n\n if (containerClass.indexOf('tooltip') !== -1 && containerClass.indexOf('tooltip-auto') === -1) {\n containerClass += ' tooltip-auto';\n }\n }\n\n containerClass = containerClass.replace(/left|right|top|bottom/g, `${data.placement.split(' ')[0]}`);\n\n if (renderer) {\n renderer.setAttribute(target, 'class', containerClass);\n\n return;\n }\n\n target.className = containerClass;\n}\n","/**\n * Set the style to the given popper\n */\nimport { Renderer2 } from '@angular/core';\n\nimport { isNumeric } from './isNumeric';\n\nexport function setStyles(element: HTMLElement, styles: any, renderer?: Renderer2) {\n Object.keys(styles).forEach((prop: any) => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 &&\n isNumeric(styles[prop])) {\n unit = 'px';\n }\n\n if (renderer) {\n renderer.setStyle(element, prop, `${String(styles[prop])}${unit}`);\n\n return;\n }\n\n element.style[prop] = String(styles[prop]) + unit;\n });\n}\n","import { getClientRect, getOuterSizes, getStyleComputedProperty } from '../utils';\nimport { Data } from '../models';\n\nexport function arrow(data: Data) {\n let targetOffsets = data.offsets.target;\n // if arrowElement is a string, suppose it's a CSS selector\n const arrowElement: HTMLElement | null = data.instance.target.querySelector('.arrow');\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n\n const isVertical = ['left', 'right'].indexOf(data.placement.split(' ')[0]) !== -1;\n\n const len = isVertical ? 'height' : 'width';\n const sideCapitalized = isVertical ? 'Top' : 'Left';\n const side = sideCapitalized.toLowerCase();\n const altSide = isVertical ? 'left' : 'top';\n const opSide = isVertical ? 'bottom' : 'right';\n const arrowElementSize = getOuterSizes(arrowElement)[len];\n const placementVariation = data.placement.split(' ')[1];\n\n // top/left side\n if (data.offsets.host[opSide] - arrowElementSize < (targetOffsets as any)[side]) {\n (targetOffsets as any)[side] -=\n (targetOffsets as any)[side] - (data.offsets.host[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (Number((data as any).offsets.host[side]) + Number(arrowElementSize) > (targetOffsets as any)[opSide]) {\n (targetOffsets as any)[side] +=\n Number((data as any).offsets.host[side]) + Number(arrowElementSize) - Number((targetOffsets as any)[opSide]);\n }\n targetOffsets = getClientRect(targetOffsets);\n\n // Compute the sideValue using the updated target offsets\n // take target margin in account because we don't have this info available\n const css = getStyleComputedProperty(data.instance.target);\n const targetMarginSide = parseFloat(css[`margin${sideCapitalized}`]);\n const targetBorderSide = parseFloat(css[`border${sideCapitalized}Width`]);\n\n // compute center of the target\n let center: number;\n if (!placementVariation) {\n center = Number((data as any).offsets.host[side]) + Number(data.offsets.host[len] / 2 - arrowElementSize / 2);\n } else {\n const targetBorderRadius = parseFloat(css.borderRadius);\n const targetSideArrowOffset = Number(targetMarginSide + targetBorderSide + targetBorderRadius);\n center = side === placementVariation ?\n Number((data as any).offsets.host[side]) + targetSideArrowOffset :\n Number((data as any).offsets.host[side]) + Number(data.offsets.host[len] - targetSideArrowOffset);\n }\n\n let sideValue =\n center - (targetOffsets as any)[side] - targetMarginSide - targetBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its target\n sideValue = Math.max(Math.min(targetOffsets[len] - arrowElementSize, sideValue), 0);\n\n data.offsets.arrow = {\n [side]: Math.round(sideValue),\n [altSide]: '' // make sure to unset any eventual altSide value from the DOM node\n };\n\n data.instance.arrow = arrowElement;\n\n return data;\n}\n","import {\n computeAutoPlacement,\n getBoundaries,\n getClientRect,\n getOppositeVariation,\n getTargetOffsets,\n isModifierEnabled\n} from '../utils';\n\nimport { Data } from '../models';\n\nexport function flip(data: Data): Data {\n data.offsets.target = getClientRect(data.offsets.target);\n\n if (!isModifierEnabled(data.options, 'flip')) {\n\n data.offsets.target = {\n ...data.offsets.target,\n ...getTargetOffsets(\n data.instance.target,\n data.offsets.host,\n data.placement\n )\n };\n\n return data;\n }\n\n const boundaries = getBoundaries(\n data.instance.target,\n data.instance.host,\n 0, // padding\n 'viewport',\n false // positionFixed\n );\n\n let placement = data.placement.split(' ')[0];\n let variation = data.placement.split(' ')[1] || '';\n\n const offsetsHost = data.offsets.host;\n const target = data.instance.target;\n const host = data.instance.host;\n\n const adaptivePosition = computeAutoPlacement('auto', offsetsHost, target, host, data.options.allowedPositions);\n const flipOrder = [placement, adaptivePosition];\n\n /* tslint:disable-next-line: cyclomatic-complexity */\n flipOrder.forEach((step, index) => {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split(' ')[0];\n\n // using floor because the host offsets may contain decimals we are not going to consider here\n const overlapsRef =\n (placement === 'left' &&\n Math.floor(data.offsets.target.right) > Math.floor(data.offsets.host.left)) ||\n (placement === 'right' &&\n Math.floor(data.offsets.target.left) < Math.floor(data.offsets.host.right)) ||\n (placement === 'top' &&\n Math.floor(data.offsets.target.bottom) > Math.floor(data.offsets.host.top)) ||\n (placement === 'bottom' &&\n Math.floor(data.offsets.target.top) < Math.floor(data.offsets.host.bottom));\n\n const overflowsLeft = Math.floor(data.offsets.target.left) < Math.floor(boundaries.left);\n const overflowsRight = Math.floor(data.offsets.target.right) > Math.floor(boundaries.right);\n const overflowsTop = Math.floor(data.offsets.target.top) < Math.floor(boundaries.top);\n const overflowsBottom = Math.floor(data.offsets.target.bottom) > Math.floor(boundaries.bottom);\n\n const overflowsBoundaries =\n (placement === 'left' && overflowsLeft) ||\n (placement === 'right' && overflowsRight) ||\n (placement === 'top' && overflowsTop) ||\n (placement === 'bottom' && overflowsBottom);\n\n // flip the variation if required\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const flippedVariation =\n ((isVertical && variation === 'left' && overflowsLeft) ||\n (isVertical && variation === 'right' && overflowsRight) ||\n (!isVertical && variation === 'left' && overflowsTop) ||\n (!isVertical && variation === 'right' && overflowsBottom));\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? ` ${variation}` : '');\n\n data.offsets.target = {\n ...data.offsets.target,\n ...getTargetOffsets(\n data.instance.target,\n data.offsets.host,\n data.placement\n )\n };\n }\n });\n\n return data;\n}\n","import {\n computeAutoPlacement,\n getReferenceOffsets,\n getTargetOffsets\n} from '../utils';\n\nimport { Data, Options } from '../models';\n\nexport function initData(\n targetElement: HTMLElement, hostElement: HTMLElement, position: string, options: Options\n): Data {\n\n const hostElPosition = getReferenceOffsets(targetElement, hostElement);\n\n if (!position.match(/^(auto)*\\s*(left|right|top|bottom)*$/)\n && !position.match(/^(left|right|top|bottom)*(?: (left|right|top|bottom))?\\s*(start|end)*$/)) {\n /* tslint:disable-next-line: no-parameter-reassignment */\n position = 'auto';\n }\n\n const placementAuto = !!position.match(/auto/g);\n\n // support old placements 'auto left|right|top|bottom'\n let placement = position.match(/auto\\s(left|right|top|bottom)/)\n ? position.split(' ')[1] || 'auto'\n : position;\n\n // Normalize placements that have identical main placement and variation (\"right right\" => \"right\").\n const matches = placement.match(/^(left|right|top|bottom)* ?(?!\\1)(left|right|top|bottom)?/);\n if (matches) {\n placement = matches[1] + (matches[2] ? ` ${matches[2]}` : '');\n }\n\n // \"left right\", \"top bottom\" etc. placements also considered incorrect.\n if (['left right', 'right left', 'top bottom', 'bottom top'].indexOf(placement) !== -1) {\n placement = 'auto';\n }\n\n const targetOffset = getTargetOffsets(targetElement, hostElPosition, placement);\n\n placement = computeAutoPlacement(\n placement,\n hostElPosition,\n targetElement,\n hostElement,\n options ? options.allowedPositions : undefined\n );\n\n return {\n options,\n instance: {\n target: targetElement,\n host: hostElement,\n arrow: null\n },\n offsets: {\n target: targetOffset,\n host: hostElPosition,\n arrow: null\n },\n positionFixed: false,\n placement,\n placementAuto\n };\n}\n","import { getBoundaries, isModifierEnabled } from '../utils';\nimport { Data } from '../models';\n\nexport function preventOverflow(data: Data) {\n\n if (!isModifierEnabled(data.options, 'preventOverflow')) {\n return data;\n }\n\n // NOTE: DOM access here\n // resets the targetOffsets's position so that the document size can be calculated excluding\n // the size of the targetOffsets element itself\n const transformProp = 'transform';\n const targetStyles = data.instance.target.style; // assignment to help minification\n const { top, left, [transformProp]: transform } = targetStyles;\n targetStyles.top = '';\n targetStyles.left = '';\n targetStyles[transformProp] = '';\n\n const boundaries = getBoundaries(\n data.instance.target,\n data.instance.host,\n 0, // padding\n data.options.modifiers.preventOverflow.boundariesElement || 'scrollParent',\n false // positionFixed\n );\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n targetStyles.top = top;\n targetStyles.left = left;\n targetStyles[transformProp] = transform;\n\n const order = ['left', 'right', 'top', 'bottom'];\n\n const check = {\n primary(placement: string) {\n let value = (data as any).offsets.target[placement];\n if (\n (data as any).offsets.target[placement] < boundaries[placement] &&\n !false // options.escapeWithReference\n ) {\n value = Math.max((data as any).offsets.target[placement], boundaries[placement]);\n }\n\n return { [placement]: value };\n },\n secondary(placement: string) {\n const mainSide = placement === 'right' ? 'left' : 'top';\n let value = data.offsets.target[mainSide];\n if (\n (data as any).offsets.target[placement] > boundaries[placement] &&\n !false // escapeWithReference\n ) {\n value = Math.min(\n data.offsets.target[mainSide],\n boundaries[placement] -\n (placement === 'right' ? data.offsets.target.width : data.offsets.target.height)\n );\n }\n\n return { [mainSide]: value };\n }\n };\n\n let side: string;\n\n order.forEach(placement => {\n side = ['left', 'top']\n .indexOf(placement) !== -1\n ? 'primary'\n : 'secondary';\n\n data.offsets.target = {\n ...data.offsets.target,\n ...(check as any)[side](placement)\n };\n\n });\n\n return data;\n}\n","import { Data } from '../models';\n\nexport function shift(data: Data): Data {\n const placement = data.placement;\n const basePlacement = placement.split(' ')[0];\n const shiftVariation = placement.split(' ')[1];\n\n if (shiftVariation) {\n const { host, target } = data.offsets;\n const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n const side = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n const shiftOffsets = {\n start: { [side]: host[side] },\n end: {\n [side]: host[side] + host[measurement] - target[measurement]\n }\n };\n\n data.offsets.target = {\n ...target, ...{\n [side]: (side === shiftVariation ? (shiftOffsets as any).start[side] : (shiftOffsets as any).end[side])\n }\n };\n }\n\n return data;\n}\n","import { Renderer2 } from '@angular/core';\n\nimport { getOffsets, getReferenceOffsets, updateContainerClass, setStyles } from './utils';\n\nimport { arrow, flip, preventOverflow, shift, initData } from './modifiers';\nimport { Data, Offsets, Options } from './models';\n\n\nexport class Positioning {\n position(hostElement: HTMLElement, targetElement: HTMLElement, round = true): Offsets {\n return this.offset(hostElement, targetElement, false);\n }\n\n offset(hostElement: HTMLElement, targetElement: HTMLElement, round = true): Offsets {\n return getReferenceOffsets(targetElement, hostElement);\n }\n\n positionElements(\n hostElement: HTMLElement,\n targetElement: HTMLElement,\n position: string,\n appendToBody?: boolean,\n options?: Options\n ): Data {\n const chainOfModifiers = [flip, shift, preventOverflow, arrow];\n\n return chainOfModifiers.reduce(\n (modifiedData, modifier) => modifier(modifiedData),\n initData(targetElement, hostElement, position, options)\n );\n }\n}\n\nconst positionService = new Positioning();\n\nexport function positionElements(\n hostElement: HTMLElement,\n targetElement: HTMLElement,\n placement: string,\n appendToBody?: boolean,\n options?: Options,\n renderer?: Renderer2\n): void {\n\n const data = positionService.positionElements(\n hostElement,\n targetElement,\n placement,\n appendToBody,\n options\n );\n\n const offsets = getOffsets(data);\n\n setStyles(targetElement, {\n 'will-change': 'transform',\n top: '0px',\n left: '0px',\n transform: `translate3d(${offsets.left}px, ${offsets.top}px, 0px)`\n }, renderer);\n\n if (data.instance.arrow) {\n setStyles(data.instance.arrow, data.offsets.arrow, renderer);\n }\n\n updateContainerClass(data, renderer);\n}\n","import { Injectable, ElementRef, RendererFactory2, Inject, PLATFORM_ID, NgZone } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\nimport { positionElements } from './ng-positioning';\n\nimport { fromEvent, merge, of, animationFrameScheduler, Subject, Observable } from 'rxjs';\nimport { Options } from './models';\n\n\nexport interface PositioningOptions {\n /** The DOM element, ElementRef, or a selector string of an element which will be moved */\n element?: HTMLElement | ElementRef | string;\n\n /** The DOM element, ElementRef, or a selector string of an element which the element will be attached to */\n target?: HTMLElement | ElementRef | string;\n\n /**\n * A string of the form 'vert-attachment horiz-attachment' or 'placement'\n * - placement can be \"top\", \"bottom\", \"left\", \"right\"\n * not yet supported:\n * - vert-attachment can be any of 'top', 'middle', 'bottom'\n * - horiz-attachment can be any of 'left', 'center', 'right'\n */\n attachment?: string;\n\n /** A string similar to `attachment`. The one difference is that, if it's not provided,\n * `targetAttachment` will assume the mirror image of `attachment`.\n */\n targetAttachment?: string;\n\n /** A string of the form 'vert-offset horiz-offset'\n * - vert-offset and horiz-offset can be of the form \"20px\" or \"55%\"\n */\n offset?: string;\n\n /** A string similar to `offset`, but referring to the offset of the target */\n targetOffset?: string;\n\n /** If true component will be attached to body */\n appendToBody?: boolean;\n}\n\n\n@Injectable()\nexport class PositioningService {\n private options: Options;\n private update$$ = new Subject<null>();\n private positionElements = new Map();\n private triggerEvent$: Observable<number|Event>;\n private isDisabled = false;\n\n constructor(\n ngZone: NgZone,\n rendererFactory: RendererFactory2,\n @Inject(PLATFORM_ID) platformId: number\n ) {\n\n if (isPlatformBrowser(platformId)) {\n ngZone.runOutsideAngular(() => {\n this.triggerEvent$ = merge(\n fromEvent(window, 'scroll', { passive: true }),\n fromEvent(window, 'resize', { passive: true }),\n /* tslint:disable-next-line: deprecation */\n of(0, animationFrameScheduler),\n this.update$$\n );\n\n this.triggerEvent$.subscribe(() => {\n if (this.isDisabled) {\n return;\n }\n\n this.positionElements\n /* tslint:disable-next-line: no-any */\n .forEach((positionElement: any) => {\n positionElements(\n _getHtmlElement(positionElement.target),\n _getHtmlElement(positionElement.element),\n positionElement.attachment,\n positionElement.appendToBody,\n this.options,\n rendererFactory.createRenderer(null, null)\n );\n });\n });\n });\n }\n }\n\n position(options: PositioningOptions): void {\n this.addPositionElement(options);\n }\n\n get event$(): Observable<number|Event> {\n return this.triggerEvent$;\n }\n\n disable(): void {\n this.isDisabled = true;\n }\n\n enable(): void {\n this.isDisabled = false;\n }\n\n addPositionElement(options: PositioningOptions): void {\n this.positionElements.set(_getHtmlElement(options.element), options);\n }\n\n calcPosition(): void {\n this.update$$.next();\n }\n\n deletePositionElement(elRef: ElementRef): void {\n this.positionElements.delete(_getHtmlElement(elRef));\n }\n\n setOptions(options: Options) {\n this.options = options;\n }\n}\n\nfunction _getHtmlElement(element: HTMLElement | ElementRef | string): HTMLElement {\n // it means that we got a selector\n if (typeof element === 'string') {\n return document.querySelector(element);\n }\n\n if (element instanceof ElementRef) {\n return element.nativeElement;\n }\n\n return element;\n}\n","import {\n animate,\n style,\n AnimationTriggerMetadata,\n state,\n transition,\n trigger\n} from '@angular/animations';\n\nexport const DATEPICKER_ANIMATION_TIMING = '220ms cubic-bezier(0, 0, 0.2, 1)';\n\nexport const datepickerAnimation: AnimationTriggerMetadata =\n trigger('datepickerAnimation', [\n state('animated-down', style({ height: '*', overflow: 'hidden' })),\n transition('* => animated-down', [\n style({ height: 0, overflow: 'hidden' }),\n animate(DATEPICKER_ANIMATION_TIMING)\n ]),\n state('animated-up', style({ height: '*', overflow: 'hidden' })),\n transition('* => animated-up', [\n style({ height: '*', overflow: 'hidden' }),\n animate(DATEPICKER_ANIMATION_TIMING)\n ]),\n transition('* => unanimated', animate('0s'))\n ]);\n","// datepicker container component\n/* tslint:disable:no-empty */\nimport { BsCustomDates } from '../themes/bs/bs-custom-dates-view.component';\nimport { MisDatePickerEffects } from '../reducer/bs-datepicker.effects';\nimport { Observable } from 'rxjs';\nimport {\n MisDatePickerViewMode,\n BsNavigationEvent,\n CalendarCellViewModel,\n CellHoverEvent,\n DatePickerRenderOptions,\n DatePickerDateCustomClasses,\n DatePickerDateTooltipText,\n DaysCalendarViewModel,\n DayViewModel,\n MonthsCalendarViewModel,\n WeekViewModel,\n YearsCalendarViewModel\n} from '../models';\n\nexport abstract class MisDatePickerAbstractComponent {\n containerClass: string;\n isOtherMonthsActive: boolean;\n showTodayBtn: boolean;\n todayBtnLbl: string;\n todayPos: string;\n showClearBtn: boolean;\n clearBtnLbl: string;\n clearPos: string;\n\n _effects: MisDatePickerEffects;\n customRanges: BsCustomDates[] = [];\n customRangeBtnLbl: string;\n chosenRange: Date[] = [];\n\n set minDate(value: Date) {\n this._effects.setMinDate(value);\n }\n\n set maxDate(value: Date) {\n this._effects.setMaxDate(value);\n }\n set daysDisabled(value: number[]) {\n this._effects.setDaysDisabled(value);\n }\n set datesDisabled(value: Date[]) {\n this._effects.setDatesDisabled(value);\n }\n\n set datesEnabled(value: Date[]) {\n this._effects.setDatesEnabled(value);\n }\n\n set isDisabled(value: boolean) {\n this._effects.setDisabled(value);\n }\n\n set dateCustomClasses(value: DatePickerDateCustomClasses[]) {\n this._effects.setDateCustomClasses(value);\n }\n\n set dateTooltipTexts(value: DatePickerDateTooltipText[]) {\n this._effects.setDateTooltipTexts(value);\n }\n\n viewMode: Observable<MisDatePickerViewMode>;\n daysCalendar: Observable<DaysCalendarViewModel[]>;\n monthsCalendar: Observable<MonthsCalendarViewModel[]>;\n yearsCalendar: Observable<YearsCalendarViewModel[]>;\n options: Observable<DatePickerRenderOptions>;\n\n setViewMode(event: MisDatePickerViewMode): void {}\n\n navigateTo(event: BsNavigationEvent): void {}\n\n dayHoverHandler(event: CellHoverEvent): void {}\n\n weekHoverHandler(event: WeekViewModel): void {}\n\n monthHoverHandler(event: CellHoverEvent): void {}\n\n yearHoverHandler(event: CellHoverEvent): void {}\n\n daySelectHandler(day: DayViewModel): void {}\n\n monthSelectHandler(event: CalendarCellViewModel): void {}\n\n yearSelectHandler(event: CalendarCellViewModel): void {}\n\n setRangeOnCalendar(dates: BsCustomDates): void {}\n\n setToday(): void {}\n\n clearDate(): void {}\n\n /* tslint:disable-next-line: no-any */\n _stopPropagation(event: any): void {\n event.stopPropagation();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { TimeUnit } from '../sub-components/chronos';\nimport { Action } from '../sub-components/mini-ngrx';\nimport {\n MisDatePickerViewMode,\n BsViewNavigationEvent,\n CellHoverEvent,\n DatePickerRenderOptions,\n DatePickerDateCustomClasses,\n DatePickerDateTooltipText\n} from '../models';\n\n@Injectable()\nexport class MisDatePickerActions {\n static readonly CALCULATE = '[datepicker] calculate dates matrix';\n static readonly FORMAT = '[datepicker] format datepicker values';\n static readonly FLAG = '[datepicker] set flags';\n static readonly SELECT = '[datepicker] select date';\n static readonly NAVIGATE_OFFSET = '[datepicker] shift view date';\n static readonly NAVIGATE_TO = '[datepicker] change view date';\n static readonly SET_OPTIONS = '[datepicker] update render options';\n static readonly HOVER = '[datepicker] hover date';\n static readonly CHANGE_VIEWMODE = '[datepicker] switch view mode';\n\n static readonly SET_MIN_DATE = '[datepicker] set min date';\n static readonly SET_MAX_DATE = '[datepicker] set max date';\n static readonly SET_DAYSDISABLED = '[datepicker] set days disabled';\n static readonly SET_DATESDISABLED = '[datepicker] set dates disabled';\n static readonly SET_DATESENABLED = '[datepicker] set dates enabled';\n static readonly SET_IS_DISABLED = '[datepicker] set is disabled';\n static readonly SET_DATE_CUSTOM_CLASSES = '[datepicker] set date custom classes';\n static readonly SET_DATE_TOOLTIP_TEXTS = '[datepicker] set date tooltip texts';\n static readonly SET_LOCALE = '[datepicker] set datepicker locale';\n\n static readonly SELECT_RANGE = '[daterangepicker] select dates range';\n\n calculate(): Action {\n return { type: MisDatePickerActions.CALCULATE };\n }\n\n format(): Action {\n return { type: MisDatePickerActions.FORMAT };\n }\n\n flag(): Action {\n return { type: MisDatePickerActions.FLAG };\n }\n\n select(date: Date): Action {\n return {\n type: MisDatePickerActions.SELECT,\n payload: date\n };\n }\n\n changeViewMode(event: MisDatePickerViewMode): Action {\n return {\n type: MisDatePickerActions.CHANGE_VIEWMODE,\n payload: event\n };\n }\n\n navigateTo(event: BsViewNavigationEvent): Action {\n return {\n type: MisDatePickerActions.NAVIGATE_TO,\n payload: event\n };\n }\n\n navigateStep(step: TimeUnit): Action {\n return {\n type: MisDatePickerActions.NAVIGATE_OFFSET,\n payload: step\n };\n }\n\n setOptions(options: DatePickerRenderOptions): Action {\n return {\n type: MisDatePickerActions.SET_OPTIONS,\n payload: options\n };\n }\n\n // date range picker\n selectRange(value: Date[]): Action {\n return {\n type: MisDatePickerActions.SELECT_RANGE,\n payload: value\n };\n }\n\n hoverDay(event: CellHoverEvent): Action {\n return {\n type: MisDatePickerActions.HOVER,\n payload: event.isHovered ? event.cell.date : null\n };\n }\n\n minDate(date: Date): Action {\n return {\n type: MisDatePickerActions.SET_MIN_DATE,\n payload: date\n };\n }\n\n maxDate(date: Date): Action {\n return {\n type: MisDatePickerActions.SET_MAX_DATE,\n payload: date\n };\n }\n\n daysDisabled(days: number[]): Action {\n return {\n type: MisDatePickerActions.SET_DAYSDISABLED,\n payload: days\n };\n }\n\n datesDisabled(dates: Date[]): Action {\n return {\n type: MisDatePickerActions.SET_DATESDISABLED,\n payload: dates\n };\n }\n\n datesEnabled(dates: Date[]): Action {\n return {\n type: MisDatePickerActions.SET_DATESENABLED,\n payload: dates\n };\n }\n\n isDisabled(value: boolean): Action {\n return {\n type: MisDatePickerActions.SET_IS_DISABLED,\n payload: value\n };\n }\n\n setDateCustomClasses(value: DatePickerDateCustomClasses[]): Action {\n return {\n type: MisDatePickerActions.SET_DATE_CUSTOM_CLASSES,\n payload: value\n };\n }\n\n setDateTooltipTexts(value: DatePickerDateTooltipText[]): Action {\n return {\n type: MisDatePickerActions.SET_DATE_TOOLTIP_TEXTS,\n payload: value\n };\n }\n\n setLocale(locale: string): Action {\n return {\n type: MisDatePickerActions.SET_LOCALE,\n payload: locale\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable()\nexport class BsLocaleService {\n private _defaultLocale = 'en';\n private _locale = new BehaviorSubject<string>(this._defaultLocale);\n private _localeChange: Observable<string> = this._locale.asObservable();\n\n get locale(): BehaviorSubject<string> {\n return this._locale;\n }\n\n get localeChange(): Observable<string> {\n return this._localeChange;\n }\n\n get currentLocale(): string {\n return this._locale.getValue();\n }\n\n use(locale: string): void {\n if (locale === this.currentLocale) {\n return;\n }\n\n this._locale.next(locale);\n }\n}\n","/* tslint:disable:max-file-line-count */\nimport { Injectable } from '@angular/core';\n\nimport { Observable, Subscription } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\nimport { MisDatePickerAbstractComponent } from '../base/bs-datepicker-container';\nimport { MisDatePickerActions } from './bs-datepicker.actions';\nimport { MisDatePickerConfig } from '../bs-datepicker.config';\nimport { MisDatePickerStore } from './bs-datepicker.store';\nimport { BsLocaleService } from '../bs-locale.service';\n\nimport {\n MisDatePickerViewMode,\n BsNavigationEvent,\n CellHoverEvent,\n DatePickerRenderOptions,\n DatePickerDateCustomClasses,\n DatePickerDateTooltipText,\n DaysCalendarViewModel,\n DayViewModel,\n MonthsCalendarViewModel,\n YearsCalendarViewModel\n} from '../models';\n\n\n@Injectable()\nexport class MisDatePickerEffects {\n viewMode: Observable<MisDatePickerViewMode>;\n daysCalendar: Observable<DaysCalendarViewModel[]>;\n monthsCalendar: Observable<MonthsCalendarViewModel[]>;\n yearsCalendar: Observable<YearsCalendarViewModel[]>;\n options: Observable<DatePickerRenderOptions>;\n\n private _store: MisDatePickerStore;\n private _subs: Subscription[] = [];\n\n constructor(private _actions: MisDatePickerActions,\n private _localeService: BsLocaleService) {}\n\n init(_misDatePickerStore: MisDatePickerStore): MisDatePickerEffects {\n this._store = _misDatePickerStore;\n\n return this;\n }\n\n /** setters */\n\n setValue(value: Date): void {\n this._store.dispatch(this._actions.select(value));\n }\n\n setRangeValue(value: Date[]): void {\n this._store.dispatch(this._actions.selectRange(value));\n }\n\n setMinDate(value: Date): MisDatePickerEffects {\n this._store.dispatch(this._actions.minDate(value));\n\n return this;\n }\n\n setMaxDate(value: Date): MisDatePickerEffects {\n this._store.dispatch(this._actions.maxDate(value));\n\n return this;\n }\n\n setDaysDisabled(value: number[]): MisDatePickerEffects {\n this._store.dispatch(this._actions.daysDisabled(value));\n\n return this;\n }\n\n setDatesDisabled(value: Date[]): MisDatePickerEffects {\n this._store.dispatch(this._actions.datesDisabled(value));\n\n return this;\n }\n\n setDatesEnabled(value: Date[]): MisDatePickerEffects {\n this._store.dispatch(this._actions.datesEnabled(value));\n\n return this;\n }\n\n setDisabled(value: boolean): MisDatePickerEffects {\n this._store.dispatch(this._actions.isDisabled(value));\n\n return this;\n }\n\n setDateCustomClasses(value: DatePickerDateCustomClasses[]): MisDatePickerEffects {\n this._store.dispatch(this._actions.setDateCustomClasses(value));\n\n return this;\n }\n\n setDateTooltipTexts(value: DatePickerDateTooltipText[]): MisDatePickerEffects {\n this._store.dispatch(this._actions.setDateTooltipTexts(value));\n\n return this;\n }\n\n /* Set rendering options */\n setOptions(_config: MisDatePickerConfig): MisDatePickerEffects {\n const _options = Object.assign({locale: this._localeService.currentLocale}, _config);\n this._store.dispatch(this._actions.setOptions(_options));\n\n return this;\n }\n\n /** view to mode bindings */\n setBindings(container: MisDatePickerAbstractComponent): MisDatePickerEffects {\n container.daysCalendar = this._store\n .select(state => state.flaggedMonths)\n .pipe(\n filter(months => !!months)\n );\n\n // month calendar\n container.monthsCalendar = this._store\n .select(state => state.flaggedMonthsCalendar)\n .pipe(\n filter(months => !!months)\n );\n\n // year calendar\n container.yearsCalendar = this._store\n .select(state => state.yearsCalendarFlagged)\n .pipe(\n filter(years => !!years)\n );\n\n container.viewMode = this._store.select(state => state.view.mode);\n\n container.options = this._store\n .select(state => state.showWeekNumbers)\n .pipe(\n map(showWeekNumbers => ({showWeekNumbers}))\n );\n\n return this;\n }\n\n /** event handlers */\n setEventHandlers(container: MisDatePickerAbstractComponent): MisDatePickerEffects {\n container.setViewMode = (event: MisDatePickerViewMode): void => {\n this._store.dispatch(this._actions.changeViewMode(event));\n };\n\n container.navigateTo = (event: BsNavigationEvent): void => {\n this._store.dispatch(this._actions.navigateStep(event.step));\n };\n\n container.dayHoverHandler = (event: CellHoverEvent): void => {\n const _cell = event.cell as DayViewModel;\n if (_cell.isOtherMonth || _cell.isDisabled) {\n return;\n }\n\n this._store.dispatch(this._actions.hoverDay(event));\n _cell.isHovered = event.isHovered;\n };\n\n container.monthHoverHandler = (event: CellHoverEvent): void => {\n event.cell.isHovered = event.isHovered;\n };\n\n container.yearHoverHandler = (event: CellHoverEvent): void => {\n event.cell.isHovered = event.isHovered;\n };\n\n return this;\n }\n\n registerDatePickerSideEffects(): MisDatePickerEffects {\n this._subs.push(\n this._store.select(state => state.view).subscribe(view => {\n this._store.dispatch(this._actions.calculate());\n })\n );\n\n // format calendar values on month model change\n this._subs.push(\n this._store\n .select(state => state.monthsModel)\n .pipe(\n filter(monthModel => !!monthModel)\n )\n .subscribe(month => this._store.dispatch(this._actions.format()))\n );\n\n // flag day values\n this._subs.push(\n this._store\n .select(state => state.formattedMonths)\n .pipe(\n filter(month => !!month)\n )\n .subscribe(month => this._store.dispatch(this._actions.flag()))\n );\n\n // flag day values\n this._subs.push(\n this._store\n .select(state => state.selectedDate)\n .pipe(\n filter(selectedDate => !!selectedDate)\n )\n .subscribe(selectedDate => this._store.dispatch(this._actions.flag()))\n );\n\n // flag for date range picker\n this._subs.push(\n this._store\n .select(state => state.selectedRange)\n .pipe(\n filter(selectedRange => !!selectedRange)\n )\n .subscribe(selectedRange => this._store.dispatch(this._actions.flag()))\n );\n\n // monthsCalendar\n this._subs.push(\n this._store\n .select(state => state.monthsCalendar)\n .subscribe(() => this._store.dispatch(this._actions.flag()))\n );\n\n // years calendar\n this._subs.push(\n this._store\n .select(state => state.yearsCalendarModel)\n .pipe(\n filter(state => !!state)\n )\n .subscribe(() => this._store.dispatch(this._actions.flag()))\n );\n\n // on hover\n this._subs.push(\n this._store\n .select(state => state.hoveredDate)\n .pipe(\n filter(hoveredDate => !!hoveredDate)\n )\n .subscribe(hoveredDate => this._store.dispatch(this._actions.flag()))\n );\n\n // date custom classes\n this._subs.push(\n this._store\n .select(state => state.dateCustomClasses)\n .pipe(\n filter(dateCustomClasses => !!dateCustomClasses)\n )\n .subscribe(dateCustomClasses => this._store.dispatch(this._actions.flag()))\n );\n\n // date tooltip texts\n this._subs.push(\n this._store\n .select(state => state.dateTooltipTexts)\n .pipe(\n filter(dateTooltipTexts => !!dateTooltipTexts)\n )\n .subscribe(dateTooltipTexts => this._store.dispatch(this._actions.flag()))\n );\n\n // on locale change\n this._subs.push(\n this._localeService.localeChange\n .subscribe(locale => this._store.dispatch(this._actions.setLocale(locale)))\n );\n\n return this;\n }\n\n destroy(): void {\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n }\n}\n","/**\n * @copyright ngrx\n */\nimport { Action, ActionReducer } from './index';\nimport { BehaviorSubject, Observable, queueScheduler } from 'rxjs';\nimport { observeOn, scan } from 'rxjs/operators';\n\n\nexport class MiniState<T> extends BehaviorSubject<T> {\n constructor(\n _initialState: T,\n actionsDispatcher$: Observable<Action>,\n reducer: ActionReducer<T>\n ) {\n super(_initialState);\n\n const actionInQueue$ = actionsDispatcher$.pipe(\n observeOn(queueScheduler)\n );\n const state$ = actionInQueue$.pipe(\n scan((state: T, action: Action) => {\n if (!action) {\n return state;\n }\n\n return reducer(state, action);\n },\n _initialState\n ));\n\n state$.subscribe((value: T) => this.next(value));\n }\n}\n","/**\n * @copyright ngrx\n */\nimport { Observable, Observer, Operator } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { Action, ActionReducer } from './index';\n\nexport class MiniStore<T> extends Observable<T> implements Observer<Action> {\n constructor(\n private _dispatcher: Observer<Action>,\n /* tslint:disable-next-line: no-any */\n private _reducer: ActionReducer<any>,\n /* tslint:disable-next-line: no-any */\n state$: Observable<any>\n ) {\n super();\n\n /* tslint:disable-next-line: deprecation */\n this.source = state$;\n }\n\n select<R>(pathOrMapFn: (state: T) => R): Observable<R> {\n /* tslint:disable-next-line: deprecation */\n const mapped$: Observable<R> = this.source.pipe(map(pathOrMapFn));\n\n return mapped$.pipe(distinctUntilChanged());\n }\n\n lift<R>(operator: Operator<T, R>): MiniStore<R> {\n const store = new MiniStore<R>(this._dispatcher, this._reducer, this);\n /* tslint:disable-next-line: deprecation */\n store.operator = operator;\n\n return store;\n }\n\n dispatch(action: Action) {\n this._dispatcher.next(action);\n }\n\n next(action: Action) {\n this._dispatcher.next(action);\n }\n\n /* tslint:disable-next-line: no-any */\n error(err: any) {\n this._dispatcher.error(err);\n }\n\n complete() {\n /*noop*/\n }\n}\n","import {\n MonthViewOptions\n} from '../models';\n\nexport const defaultMonthOptions: MonthViewOptions = {\n width: 7,\n height: 6\n};\n","import {\n MisDatePickerViewMode,\n DatePickerFormatOptions,\n DatePickerRenderOptions,\n DatePickerDateCustomClasses,\n DatePickerDateTooltipText,\n DaysCalendarModel,\n DaysCalendarViewModel,\n MonthsCalendarViewModel,\n MonthViewOptions,\n YearsCalendarViewModel\n} from '../models';\nimport { defaultMonthOptions } from './_defaults';\nimport { MisDatePickerConfig } from '../bs-datepicker.config';\n\nexport interface MisDatePickerViewState {\n date: Date;\n mode: MisDatePickerViewMode;\n}\n\nexport class MisDatePickerState\n implements DatePickerRenderOptions, DatePickerFormatOptions {\n // date picker\n selectedDate?: Date;\n // daterange picker\n selectedRange?: Date[];\n\n // initial date of calendar, today by default\n view: MisDatePickerViewState;\n\n isDisabled?: boolean;\n // bounds\n minDate?: Date;\n maxDate?: Date;\n daysDisabled?: number[];\n datesDisabled?: Date[];\n datesEnabled?: Date[];\n minMode?: MisDatePickerViewMode;\n dateCustomClasses?: DatePickerDateCustomClasses[];\n dateTooltipTexts?: DatePickerDateTooltipText[];\n\n hoveredDate?: Date;\n hoveredMonth?: Date;\n hoveredYear?: Date;\n\n // days calendar\n monthsModel?: DaysCalendarModel[];\n formattedMonths?: DaysCalendarViewModel[];\n flaggedMonths?: DaysCalendarViewModel[];\n selectFromOtherMonth?: boolean;\n showPreviousMonth?: boolean; // dateRangePicker only;\n displayOneMonthRange?: boolean; // dateRangePicker only;\n\n // months calendar\n monthsCalendar?: MonthsCalendarViewModel[];\n flaggedMonthsCalendar?: MonthsCalendarViewModel[];\n\n // years calendar\n yearsCalendarModel?: YearsCalendarViewModel[];\n yearsCalendarFlagged?: YearsCalendarViewModel[];\n\n // options\n monthViewOptions: MonthViewOptions;\n\n // DatePickerRenderOptions\n showWeekNumbers?: boolean;\n displayMonths?: number;\n\n // DatePickerFormatOptions\n locale: string;\n\n monthTitle: string;\n yearTitle: string;\n\n dayLabel: string;\n monthLabel: string;\n yearLabel: string;\n\n weekNumbers: string;\n}\n\nconst _initialView: MisDatePickerViewState = { date: new Date(), mode: 'day' };\n\nexport const initialDatePickerState: MisDatePickerState = Object.assign(\n new MisDatePickerConfig(),\n {\n locale: 'en',\n view: _initialView,\n selectedRange: [],\n monthViewOptions: defaultMonthOptions\n }\n);\n","import {\n getDay,\n isFirstDayOfWeek,\n isAfter,\n isBefore,\n shiftDate,\n endOf,\n startOf,\n isArray,\n isSame\n} from '../sub-components/chronos';\nimport { MisDatePickerState } from '../reducer/bs-datepicker.state';\n\nexport function getStartingDayOfCalendar(date: Date,\n options: { firstDayOfWeek?: number }): Date {\n if (isFirstDayOfWeek(date, options.firstDayOfWeek)) {\n return date;\n }\n\n const weekDay = getDay(date);\n const offset = calculateDateOffset(weekDay, options.firstDayOfWeek);\n\n return shiftDate(date, {day: -offset});\n}\n\nexport function calculateDateOffset(weekday: number, startingDayOffset: number): number {\n if (startingDayOffset === 0) {\n return weekday;\n }\n\n const offset = weekday - startingDayOffset % 7;\n\n return offset < 0 ? offset + 7 : offset;\n}\n\nexport function isMonthDisabled(date: Date, min: Date, max: Date): boolean {\n const minBound = min && isBefore(endOf(date, 'month'), min, 'day');\n const maxBound = max && isAfter(startOf(date, 'month'), max, 'day');\n\n return minBound || maxBound;\n}\n\nexport function isYearDisabled(date: Date, min: Date, max: Date): boolean {\n const minBound = min && isBefore(endOf(date, 'year'), min, 'day');\n const maxBound = max && isAfter(startOf(date, 'year'), max, 'day');\n\n return minBound || maxBound;\n}\n\nexport function isDisabledDate(date: Date, datesDisabled: Date[]): boolean {\n if (!datesDisabled || !isArray(datesDisabled) || !datesDisabled.length) {\n return false;\n }\n\n return datesDisabled.some((dateDisabled: Date) => isSame(date, dateDisabled, 'date'));\n}\n\nexport function isEnabledDate(date: Date, datesEnabled: Date[]): boolean {\n if (!datesEnabled || !isArray(datesEnabled) || !datesEnabled.length) {\n return false;\n }\n\n return !datesEnabled.some((enabledDate: Date) => isSame(date, enabledDate, 'date'));\n}\n\nexport function getYearsCalendarInitialDate(state: MisDatePickerState, calendarIndex = 0): Date {\n const model = state && state.yearsCalendarModel && state.yearsCalendarModel[calendarIndex];\n\n return model && model.years && model.years[0] && model.years[0][0] && model.years[0][0].date;\n}\n","import { TimeUnit, shiftDate } from '../sub-components/chronos';\n\nexport type CreateMatrixCb<T> = (date: Date) => T;\n\nexport interface MatrixOptions {\n height: number;\n width: number;\n initialDate: Date;\n shift: TimeUnit;\n}\n\nexport function createMatrix<T>(\n options: MatrixOptions,\n fn: CreateMatrixCb<T>\n): T[][] {\n let prevValue = options.initialDate;\n const matrix: T[][] = new Array(options.height);\n for (let i = 0; i < options.height; i++) {\n matrix[i] = new Array(options.width);\n for (let j = 0; j < options.width; j++) {\n matrix[i][j] = fn(prevValue);\n prevValue = shiftDate(prevValue, options.shift);\n }\n }\n\n return matrix;\n}\n","// user and model input should handle parsing and validating input values\n// should accept some options\n// todo: split out formatting\nimport { DaysCalendarModel, MonthViewOptions } from '../models';\nimport { getFirstDayOfMonth } from '../sub-components/chronos';\nimport { getStartingDayOfCalendar } from '../utils/bs-calendar-utils';\nimport { createMatrix } from '../utils/matrix-utils';\n\nexport function calcDaysCalendar(\n startingDate: Date,\n options: MonthViewOptions\n): DaysCalendarModel {\n const firstDay = getFirstDayOfMonth(startingDate);\n const initialDate = getStartingDayOfCalendar(firstDay, options);\n\n const matrixOptions = {\n width: options.width,\n height: options.height,\n initialDate,\n shift: { day: 1 }\n };\n const daysMatrix = createMatrix<Date>(matrixOptions, date => date);\n\n return {\n daysMatrix,\n month: firstDay\n };\n}\n","import {\n DatePickerFormatOptions,\n DaysCalendarModel,\n DaysCalendarViewModel\n} from '../models';\nimport { formatDate, getLocale } from '../sub-components/chronos';\n\nexport function formatDaysCalendar(daysCalendar: DaysCalendarModel,\n formatOptions: DatePickerFormatOptions,\n monthIndex: number): DaysCalendarViewModel {\n return {\n month: daysCalendar.month,\n monthTitle: formatDate(\n daysCalendar.month,\n formatOptions.monthTitle,\n formatOptions.locale\n ),\n yearTitle: formatDate(\n daysCalendar.month,\n formatOptions.yearTitle,\n formatOptions.locale\n ),\n weekNumbers: getWeekNumbers(\n daysCalendar.daysMatrix,\n formatOptions.weekNumbers,\n formatOptions.locale\n ),\n weekdays: getShiftedWeekdays(formatOptions.locale),\n weeks: daysCalendar.daysMatrix.map((week: Date[], weekIndex: number) => ({\n days: week.map((date: Date, dayIndex: number) => ({\n date,\n label: formatDate(date, formatOptions.dayLabel, formatOptions.locale),\n monthIndex,\n weekIndex,\n dayIndex\n }))\n }))\n };\n}\n\nexport function getWeekNumbers(daysMatrix: Date[][],\n format: string,\n locale: string): string[] {\n return daysMatrix.map(\n (days: Date[]) => (days[0] ? formatDate(days[0], format, locale) : '')\n );\n}\n\nexport function getShiftedWeekdays(locale: string): string[] {\n const _locale = getLocale(locale);\n const weekdays = _locale.weekdaysShort() as string[];\n const firstDayOfWeek = _locale.firstDayOfWeek();\n\n return [...weekdays.slice(firstDayOfWeek), ...weekdays.slice(0, firstDayOfWeek)];\n}\n","import {\n DaysCalendarViewModel,\n DayViewModel,\n WeekViewModel,\n DatePickerDateCustomClasses,\n DatePickerDateTooltipText\n} from '../models';\n\nimport {\n isAfter,\n isBefore,\n isDisabledDay,\n isSameDay,\n isSameMonth,\n shiftDate\n} from '../sub-components/chronos';\n\nimport { isMonthDisabled, isDisabledDate, isEnabledDate } from '../utils/bs-calendar-utils';\n\nexport interface FlagDaysCalendarOptions {\n isDisabled: boolean;\n minDate: Date;\n maxDate: Date;\n daysDisabled: number[];\n datesDisabled: Date[];\n datesEnabled: Date[];\n hoveredDate: Date;\n selectedDate: Date;\n selectedRange: Date[];\n displayMonths: number;\n monthIndex: number;\n dateCustomClasses: DatePickerDateCustomClasses[];\n dateTooltipTexts: DatePickerDateTooltipText[];\n}\n\nexport function flagDaysCalendar(\n formattedMonth: DaysCalendarViewModel,\n options: FlagDaysCalendarOptions\n): DaysCalendarViewModel {\n formattedMonth.weeks.forEach((week: WeekViewModel) => {\n /* tslint:disable-next-line: cyclomatic-complexity */\n week.days.forEach((day: DayViewModel, dayIndex: number) => {\n // datepicker\n const isOtherMonth = !isSameMonth(day.date, formattedMonth.month);\n\n const isHovered =\n !isOtherMonth && isSameDay(day.date, options.hoveredDate);\n // date range picker\n const isSelectionStart =\n !isOtherMonth &&\n options.selectedRange &&\n isSameDay(day.date, options.selectedRange[0]);\n const isSelectionEnd =\n !isOtherMonth &&\n options.selectedRange &&\n isSameDay(day.date, options.selectedRange[1]);\n\n const isSelected =\n (!isOtherMonth && isSameDay(day.date, options.selectedDate)) ||\n isSelectionStart ||\n isSelectionEnd;\n\n const isInRange =\n !isOtherMonth &&\n options.selectedRange &&\n isDateInRange(day.date, options.selectedRange, options.hoveredDate);\n\n const isDisabled =\n options.isDisabled ||\n isBefore(day.date, options.minDate, 'day') ||\n isAfter(day.date, options.maxDate, 'day') ||\n isDisabledDay(day.date, options.daysDisabled) ||\n isDisabledDate(day.date, options.datesDisabled) ||\n isEnabledDate(day.date, options.datesEnabled);\n\n const currentDate = new Date();\n const isToday = !isOtherMonth && isSameDay(day.date, currentDate);\n\n const customClasses = options.dateCustomClasses && options.dateCustomClasses\n .map(dcc => isSameDay(day.date, dcc.date) ? dcc.classes : [])\n .reduce((previousValue, currentValue) => previousValue.concat(currentValue), [])\n .join(' ')\n || '';\n\n const tooltipText = options.dateTooltipTexts && options.dateTooltipTexts\n .map(tt => isSameDay(day.date, tt.date) ? tt.tooltipText : '')\n .reduce((previousValue, currentValue) => previousValue.concat(currentValue), [])\n .join(' ')\n || '';\n\n // decide update or not\n const newDay = Object.assign({}, day, {\n isOtherMonth,\n isHovered,\n isSelected,\n isSelectionStart,\n isSelectionEnd,\n isInRange,\n isDisabled,\n isToday,\n customClasses,\n tooltipText\n });\n\n if (\n day.isOtherMonth !== newDay.isOtherMonth ||\n day.isHovered !== newDay.isHovered ||\n day.isSelected !== newDay.isSelected ||\n day.isSelectionStart !== newDay.isSelectionStart ||\n day.isSelectionEnd !== newDay.isSelectionEnd ||\n day.isDisabled !== newDay.isDisabled ||\n day.isInRange !== newDay.isInRange ||\n day.customClasses !== newDay.customClasses ||\n day.tooltipText !== newDay.tooltipText\n ) {\n week.days[dayIndex] = newDay;\n }\n });\n });\n\n // todo: add check for linked calendars\n formattedMonth.hideLeftArrow =\n options.isDisabled ||\n (options.monthIndex > 0 && options.monthIndex !== options.displayMonths);\n formattedMonth.hideRightArrow =\n options.isDisabled ||\n (options.monthIndex < options.displayMonths &&\n options.monthIndex + 1 !== options.displayMonths);\n\n formattedMonth.disableLeftArrow = isMonthDisabled(\n shiftDate(formattedMonth.month, { month: -1 }),\n options.minDate,\n options.maxDate\n );\n formattedMonth.disableRightArrow = isMonthDisabled(\n shiftDate(formattedMonth.month, { month: 1 }),\n options.minDate,\n options.maxDate\n );\n\n return formattedMonth;\n}\n\nfunction isDateInRange(\n date: Date,\n selectedRange: Date[],\n hoveredDate: Date\n): boolean {\n if (!date || !selectedRange[0]) {\n return false;\n }\n\n if (selectedRange[1]) {\n return date > selectedRange[0] && date <= selectedRange[1];\n }\n\n if (hoveredDate) {\n return date > selectedRange[0] && date <= hoveredDate;\n }\n\n return false;\n}\n","import { MisDatePickerViewMode } from '../models';\n\nexport function canSwitchMode(mode: MisDatePickerViewMode, minMode?: MisDatePickerViewMode): boolean {\n return minMode ? mode >= minMode : true;\n}\n","import {\n DatePickerFormatOptions,\n MonthsCalendarViewModel,\n CalendarCellViewModel\n} from '../models';\nimport { startOf, formatDate } from '../sub-components/chronos';\nimport { createMatrix } from '../utils/matrix-utils';\n\nconst height = 4;\nconst width = 3;\nconst shift = { month: 1 };\n\nexport function formatMonthsCalendar(\n viewDate: Date,\n formatOptions: DatePickerFormatOptions\n): MonthsCalendarViewModel {\n const initialDate = startOf(viewDate, 'year');\n const matrixOptions = { width, height, initialDate, shift };\n const monthMatrix = createMatrix<\n CalendarCellViewModel\n >(matrixOptions, date => ({\n date,\n label: formatDate(date, formatOptions.monthLabel, formatOptions.locale)\n }));\n\n return {\n months: monthMatrix,\n monthTitle: '',\n yearTitle: formatDate(\n viewDate,\n formatOptions.yearTitle,\n formatOptions.locale\n )\n };\n}\n","import { isSameMonth, shiftDate } from '../sub-components/chronos';\nimport {\n MonthsCalendarViewModel,\n CalendarCellViewModel\n} from '../models';\nimport { isMonthDisabled, isYearDisabled } from '../utils/bs-calendar-utils';\n\nexport interface FlagMonthCalendarOptions {\n isDisabled: boolean;\n minDate: Date;\n maxDate: Date;\n hoveredMonth: Date;\n selectedDate: Date;\n selectedRange: Date[];\n displayMonths: number;\n monthIndex: number;\n}\n\nexport function flagMonthsCalendar(\n monthCalendar: MonthsCalendarViewModel,\n options: FlagMonthCalendarOptions\n): MonthsCalendarViewModel {\n monthCalendar.months.forEach(\n (months: CalendarCellViewModel[], rowIndex: number) => {\n months.forEach((month: CalendarCellViewModel, monthIndex: number) => {\n let isSelected: boolean;\n const isHovered = isSameMonth(month.date, options.hoveredMonth);\n const isDisabled =\n options.isDisabled ||\n isMonthDisabled(month.date, options.minDate, options.maxDate);\n\n if (!options.selectedDate && options.selectedRange) {\n isSelected = isSameMonth(month.date, options.selectedRange[0]);\n if (!isSelected) {\n isSelected = isSameMonth(month.date, options.selectedRange[1]);\n }\n } else {\n isSelected = isSameMonth(month.date, options.selectedDate);\n }\n const newMonth = Object.assign(/*{},*/ month, {\n isHovered,\n isDisabled,\n isSelected\n });\n if (\n month.isHovered !== newMonth.isHovered ||\n month.isDisabled !== newMonth.isDisabled ||\n month.isSelected !== newMonth.isSelected\n ) {\n monthCalendar.months[rowIndex][monthIndex] = newMonth;\n }\n });\n }\n );\n\n // todo: add check for linked calendars\n monthCalendar.hideLeftArrow =\n options.monthIndex > 0 && options.monthIndex !== options.displayMonths;\n monthCalendar.hideRightArrow =\n options.monthIndex < options.displayMonths &&\n options.monthIndex + 1 !== options.displayMonths;\n\n monthCalendar.disableLeftArrow = isYearDisabled(\n shiftDate(monthCalendar.months[0][0].date, { year: -1 }),\n options.minDate,\n options.maxDate\n );\n monthCalendar.disableRightArrow = isYearDisabled(\n shiftDate(monthCalendar.months[0][0].date, { year: 1 }),\n options.minDate,\n options.maxDate\n );\n\n return monthCalendar;\n}\n","import {\n DatePickerFormatOptions,\n YearsCalendarViewModel,\n CalendarCellViewModel\n} from '../models';\nimport { shiftDate, formatDate } from '../sub-components/chronos';\nimport { createMatrix } from '../utils/matrix-utils';\n\nconst height = 4;\nconst width = 4;\nexport const yearsPerCalendar = height * width;\nexport const initialYearShift = (Math.floor(yearsPerCalendar / 2) - 1) * -1;\nconst shift = { year: 1 };\n\nexport function formatYearsCalendar(\n viewDate: Date,\n formatOptions: DatePickerFormatOptions,\n previousInitialDate?: Date\n): YearsCalendarViewModel {\n const initialDate = calculateInitialDate(viewDate, previousInitialDate);\n const matrixOptions = { width, height, initialDate, shift };\n const yearsMatrix = createMatrix<\n CalendarCellViewModel\n >(matrixOptions, date => ({\n date,\n label: formatDate(date, formatOptions.yearLabel, formatOptions.locale)\n }));\n const yearTitle = formatYearRangeTitle(yearsMatrix, formatOptions);\n\n return {\n years: yearsMatrix,\n monthTitle: '',\n yearTitle\n };\n}\n\nfunction calculateInitialDate(viewDate: Date, previousInitialDate?: Date): Date {\n if (previousInitialDate\n && viewDate.getFullYear() >= previousInitialDate.getFullYear()\n && viewDate.getFullYear() < previousInitialDate.getFullYear() + yearsPerCalendar) {\n return previousInitialDate;\n }\n\n return shiftDate(viewDate, { year: initialYearShift });\n}\n\nfunction formatYearRangeTitle(\n yearsMatrix: CalendarCellViewModel[][],\n formatOptions: DatePickerFormatOptions\n): string {\n const from = formatDate(\n yearsMatrix[0][0].date,\n formatOptions.yearTitle,\n formatOptions.locale\n );\n const to = formatDate(\n yearsMatrix[height - 1][width - 1].date,\n formatOptions.yearTitle,\n formatOptions.locale\n );\n\n return `${from} - ${to}`;\n}\n","import { isSameYear, shiftDate } from '../sub-components/chronos';\nimport { YearsCalendarViewModel, CalendarCellViewModel } from '../models';\nimport { isYearDisabled } from '../utils/bs-calendar-utils';\n\nexport interface FlagYearsCalendarOptions {\n isDisabled: boolean;\n minDate: Date;\n maxDate: Date;\n hoveredYear: Date;\n selectedDate: Date;\n selectedRange: Date[];\n displayMonths: number;\n yearIndex: number;\n}\n\nexport function flagYearsCalendar(\n yearsCalendar: YearsCalendarViewModel,\n options: FlagYearsCalendarOptions\n): YearsCalendarViewModel {\n yearsCalendar.years.forEach(\n (years: CalendarCellViewModel[], rowIndex: number) => {\n years.forEach((year: CalendarCellViewModel, yearIndex: number) => {\n let isSelected: boolean;\n const isHovered = isSameYear(year.date, options.hoveredYear);\n const isDisabled =\n options.isDisabled ||\n isYearDisabled(year.date, options.minDate, options.maxDate);\n\n if (!options.selectedDate && options.selectedRange) {\n isSelected = isSameYear(year.date, options.selectedRange[0]);\n if (!isSelected) {\n isSelected = isSameYear(year.date, options.selectedRange[1]);\n }\n } else {\n isSelected = isSameYear(year.date, options.selectedDate);\n }\n\n const newMonth = Object.assign(/*{},*/ year, { isHovered, isDisabled, isSelected });\n if (\n year.isHovered !== newMonth.isHovered ||\n year.isDisabled !== newMonth.isDisabled ||\n year.isSelected !== newMonth.isSelected\n ) {\n yearsCalendar.years[rowIndex][yearIndex] = newMonth;\n }\n });\n }\n );\n\n // todo: add check for linked calendars\n yearsCalendar.hideLeftArrow =\n options.yearIndex > 0 && options.yearIndex !== options.displayMonths;\n yearsCalendar.hideRightArrow =\n options.yearIndex < options.displayMonths &&\n options.yearIndex + 1 !== options.displayMonths;\n\n yearsCalendar.disableLeftArrow = isYearDisabled(\n shiftDate(yearsCalendar.years[0][0].date, { year: -1 }),\n options.minDate,\n options.maxDate\n );\n const i = yearsCalendar.years.length - 1;\n const j = yearsCalendar.years[i].length - 1;\n yearsCalendar.disableRightArrow = isYearDisabled(\n shiftDate(yearsCalendar.years[i][j].date, { year: 1 }),\n options.minDate,\n options.maxDate\n );\n\n return yearsCalendar;\n}\n","// tslint:disable:max-file-line-count\nimport { MisDatePickerState, initialDatePickerState } from './bs-datepicker.state';\nimport { Action } from '../sub-components/mini-ngrx';\nimport { MisDatePickerActions } from './bs-datepicker.actions';\nimport { calcDaysCalendar } from '../engine/calc-days-calendar';\nimport { formatDaysCalendar } from '../engine/format-days-calendar';\nimport { flagDaysCalendar } from '../engine/flag-days-calendar';\nimport {\n setFullDate,\n shiftDate,\n isArray,\n isDateValid,\n startOf,\n getLocale,\n isAfter,\n isBefore,\n isSame\n} from '../sub-components/chronos';\nimport { canSwitchMode } from '../engine/view-mode';\nimport { formatMonthsCalendar } from '../engine/format-months-calendar';\nimport { flagMonthsCalendar } from '../engine/flag-months-calendar';\nimport { formatYearsCalendar, initialYearShift, yearsPerCalendar } from '../engine/format-years-calendar';\nimport { flagYearsCalendar } from '../engine/flag-years-calendar';\nimport { BsViewNavigationEvent, DatePickerFormatOptions, MisDatePickerViewMode } from '../models';\nimport { getYearsCalendarInitialDate } from '../utils/bs-calendar-utils';\n\n\n/* tslint:disable-next-line: cyclomatic-complexity */\nexport function misDatePickerReducer(state = initialDatePickerState,\n action: Action): MisDatePickerState {\n switch (action.type) {\n case MisDatePickerActions.CALCULATE: {\n return calculateReducer(state);\n }\n\n case MisDatePickerActions.FORMAT: {\n return formatReducer(state, action);\n }\n\n case MisDatePickerActions.FLAG: {\n return flagReducer(state, action);\n }\n\n case MisDatePickerActions.NAVIGATE_OFFSET: {\n return navigateOffsetReducer(state, action);\n }\n\n case MisDatePickerActions.NAVIGATE_TO: {\n const payload: BsViewNavigationEvent = action.payload;\n\n const date = setFullDate(state.view.date, payload.unit);\n let newState;\n let mode: MisDatePickerViewMode;\n if (canSwitchMode(payload.viewMode, state.minMode)) {\n mode = payload.viewMode;\n newState = { view: { date, mode } };\n } else {\n mode = state.view.mode;\n newState = { selectedDate: date, view: { date, mode } };\n }\n\n return Object.assign({}, state, newState);\n }\n\n case MisDatePickerActions.CHANGE_VIEWMODE: {\n if (!canSwitchMode(action.payload, state.minMode)) {\n return state;\n }\n const date = state.view.date;\n const mode = action.payload;\n const newState = { view: { date, mode } };\n\n return Object.assign({}, state, newState);\n }\n\n case MisDatePickerActions.HOVER: {\n return Object.assign({}, state, { hoveredDate: action.payload });\n }\n\n case MisDatePickerActions.SELECT: {\n const newState = {\n selectedDate: action.payload,\n view: state.view\n };\n\n const mode = state.view.mode;\n const _date = action.payload || state.view.date;\n const date = getViewDate(_date, state.minDate, state.maxDate);\n newState.view = { mode, date };\n\n return Object.assign({}, state, newState);\n }\n\n case MisDatePickerActions.SET_OPTIONS: {\n const newState = action.payload;\n // preserve view mode\n const mode = newState.minMode ? newState.minMode : state.view.mode;\n const _viewDate = isDateValid(newState.value) && newState.value\n || isArray(newState.value) && isDateValid(newState.value[0]) && newState.value[0]\n || state.view.date;\n const date = getViewDate(_viewDate, newState.minDate, newState.maxDate);\n newState.view = { mode, date };\n // update selected value\n if (newState.value) {\n // if new value is array we work with date range\n if (isArray(newState.value)) {\n newState.selectedRange = newState.value;\n }\n\n // if new value is a date -> datepicker\n if (newState.value instanceof Date) {\n newState.selectedDate = newState.value;\n }\n\n // provided value is not supported :)\n // need to report it somehow\n }\n\n return Object.assign({}, state, newState);\n }\n\n // date range picker\n case MisDatePickerActions.SELECT_RANGE: {\n const newState = {\n selectedRange: action.payload,\n view: state.view\n };\n\n const mode = state.view.mode;\n const _date = action.payload && action.payload[0] || state.view.date;\n const date = getViewDate(_date, state.minDate, state.maxDate);\n newState.view = { mode, date };\n\n return Object.assign({}, state, newState);\n }\n\n case MisDatePickerActions.SET_MIN_DATE: {\n return Object.assign({}, state, {\n minDate: action.payload\n });\n }\n case MisDatePickerActions.SET_MAX_DATE: {\n return Object.assign({}, state, {\n maxDate: action.payload\n });\n }\n case MisDatePickerActions.SET_IS_DISABLED: {\n return Object.assign({}, state, {\n isDisabled: action.payload\n });\n }\n case MisDatePickerActions.SET_DATE_CUSTOM_CLASSES: {\n return Object.assign({}, state, {\n dateCustomClasses: action.payload\n });\n }\n case MisDatePickerActions.SET_DATE_TOOLTIP_TEXTS: {\n return Object.assign({}, state, {\n dateTooltipTexts: action.payload\n });\n }\n\n default:\n return state;\n }\n}\n\nfunction calculateReducer(state: MisDatePickerState): MisDatePickerState {\n // how many calendars\n const displayMonths = (state.displayOneMonthRange &&\n isDisplayOneMonth(state.view.date, state.minDate, state.maxDate)) ? 1 : state.displayMonths;\n\n // use selected date on initial rendering if set\n let viewDate = state.view.date;\n\n if (state.view.mode === 'day') {\n if (state.showPreviousMonth && state.selectedRange && state.selectedRange.length === 0) {\n viewDate = shiftDate(viewDate, { month: -1 });\n }\n\n state.monthViewOptions.firstDayOfWeek = getLocale(state.locale).firstDayOfWeek();\n const monthsModel = new Array(displayMonths);\n for (let monthIndex = 0; monthIndex < displayMonths; monthIndex++) {\n // todo: for unlinked calendars it will be harder\n monthsModel[monthIndex] = calcDaysCalendar(\n viewDate,\n state.monthViewOptions\n );\n viewDate = shiftDate(viewDate, { month: 1 });\n }\n\n return Object.assign({}, state, { monthsModel });\n }\n\n if (state.view.mode === 'month') {\n const monthsCalendar = new Array(displayMonths);\n for (\n let calendarIndex = 0;\n calendarIndex < displayMonths;\n calendarIndex++\n ) {\n // todo: for unlinked calendars it will be harder\n monthsCalendar[calendarIndex] = formatMonthsCalendar(\n viewDate,\n getFormatOptions(state)\n );\n viewDate = shiftDate(viewDate, { year: 1 });\n }\n\n return Object.assign({}, state, { monthsCalendar });\n }\n\n if (state.view.mode === 'year') {\n const yearsCalendarModel = new Array(displayMonths);\n\n for (\n let calendarIndex = 0;\n calendarIndex < displayMonths;\n calendarIndex++\n ) {\n // todo: for unlinked calendars it will be harder\n yearsCalendarModel[calendarIndex] = formatYearsCalendar(\n viewDate,\n getFormatOptions(state),\n state.minMode === 'year' ? getYearsCalendarInitialDate(state, calendarIndex) : undefined\n );\n viewDate = shiftDate(viewDate, { year: yearsPerCalendar });\n }\n\n return Object.assign({}, state, { yearsCalendarModel });\n }\n\n return state;\n}\n\nfunction formatReducer(state: MisDatePickerState,\n action: Action): MisDatePickerState {\n if (state.view.mode === 'day') {\n const formattedMonths = state.monthsModel.map((month, monthIndex) =>\n formatDaysCalendar(month, getFormatOptions(state), monthIndex)\n );\n\n return Object.assign({}, state, { formattedMonths });\n }\n\n // how many calendars\n const displayMonths = state.displayMonths;\n // check initial rendering\n // use selected date on initial rendering if set\n let viewDate = state.view.date;\n\n if (state.view.mode === 'month') {\n const monthsCalendar = new Array(displayMonths);\n for (\n let calendarIndex = 0;\n calendarIndex < displayMonths;\n calendarIndex++\n ) {\n // todo: for unlinked calendars it will be harder\n monthsCalendar[calendarIndex] = formatMonthsCalendar(\n viewDate,\n getFormatOptions(state)\n );\n viewDate = shiftDate(viewDate, { year: 1 });\n }\n\n return Object.assign({}, state, { monthsCalendar });\n }\n\n if (state.view.mode === 'year') {\n const yearsCalendarModel = new Array(displayMonths);\n for (\n let calendarIndex = 0;\n calendarIndex < displayMonths;\n calendarIndex++\n ) {\n // todo: for unlinked calendars it will be harder\n yearsCalendarModel[calendarIndex] = formatYearsCalendar(\n viewDate,\n getFormatOptions(state)\n );\n viewDate = shiftDate(viewDate, { year: 16 });\n }\n\n return Object.assign({}, state, { yearsCalendarModel });\n }\n\n return state;\n}\n\nfunction flagReducer(state: MisDatePickerState,\n action: Action): MisDatePickerState {\n const displayMonths = isDisplayOneMonth(state.view.date, state.minDate, state.maxDate) ? 1 : state.displayMonths;\n if (state.view.mode === 'day') {\n const flaggedMonths = state.formattedMonths.map(\n (formattedMonth, monthIndex) =>\n flagDaysCalendar(formattedMonth, {\n isDisabled: state.isDisabled,\n minDate: state.minDate,\n maxDate: state.maxDate,\n daysDisabled: state.daysDisabled,\n datesDisabled: state.datesDisabled,\n datesEnabled: state.datesEnabled,\n hoveredDate: state.hoveredDate,\n selectedDate: state.selectedDate,\n selectedRange: state.selectedRange,\n displayMonths,\n dateCustomClasses: state.dateCustomClasses,\n dateTooltipTexts: state.dateTooltipTexts,\n monthIndex\n })\n );\n\n return Object.assign({}, state, { flaggedMonths });\n }\n\n if (state.view.mode === 'month') {\n const flaggedMonthsCalendar = state.monthsCalendar.map(\n (formattedMonth, monthIndex) =>\n flagMonthsCalendar(formattedMonth, {\n isDisabled: state.isDisabled,\n minDate: state.minDate,\n maxDate: state.maxDate,\n hoveredMonth: state.hoveredMonth,\n selectedDate: state.selectedDate,\n selectedRange: state.selectedRange,\n displayMonths,\n monthIndex\n })\n );\n\n return Object.assign({}, state, { flaggedMonthsCalendar });\n }\n\n if (state.view.mode === 'year') {\n const yearsCalendarFlagged = state.yearsCalendarModel.map(\n (formattedMonth, yearIndex) =>\n flagYearsCalendar(formattedMonth, {\n isDisabled: state.isDisabled,\n minDate: state.minDate,\n maxDate: state.maxDate,\n hoveredYear: state.hoveredYear,\n selectedDate: state.selectedDate,\n selectedRange: state.selectedRange,\n displayMonths,\n yearIndex\n })\n );\n\n return Object.assign({}, state, { yearsCalendarFlagged });\n }\n\n return state;\n}\n\nfunction navigateOffsetReducer(state: MisDatePickerState, action: Action): MisDatePickerState {\n const newState = {\n view: {\n mode: state.view.mode,\n date: shiftViewDate(state, action)\n }\n };\n\n return Object.assign({}, state, newState);\n}\n\nfunction shiftViewDate(state: MisDatePickerState, action: Action): Date {\n if (state.view.mode === 'year' && state.minMode === 'year') {\n const initialDate = getYearsCalendarInitialDate(state, 0);\n const middleDate = shiftDate(initialDate, { year: -initialYearShift });\n\n return shiftDate(middleDate, action.payload);\n }\n\n return shiftDate(startOf(state.view.date, 'month'), action.payload);\n}\n\nfunction getFormatOptions(state: MisDatePickerState): DatePickerFormatOptions {\n return {\n locale: state.locale,\n\n monthTitle: state.monthTitle,\n yearTitle: state.yearTitle,\n\n dayLabel: state.dayLabel,\n monthLabel: state.monthLabel,\n yearLabel: state.yearLabel,\n\n weekNumbers: state.weekNumbers\n };\n}\n\n/**\n * if view date is provided (bsValue|ngModel) it should be shown\n * if view date is not provider:\n * if minDate>currentDate (default view value), show minDate\n * if maxDate<currentDate(default view value) show maxDate\n */\nfunction getViewDate(viewDate: Date | Date[], minDate: Date, maxDate: Date) {\n const _date = Array.isArray(viewDate) ? viewDate[0] : viewDate;\n\n if (minDate && isAfter(minDate, _date, 'day')) {\n return minDate;\n }\n\n if (maxDate && isBefore(maxDate, _date, 'day')) {\n return maxDate;\n }\n\n return _date;\n}\n\nfunction isDisplayOneMonth(viewDate: Date, minDate: Date, maxDate: Date) {\n if (maxDate && isSame(maxDate, viewDate, 'day')) {\n return true;\n }\n\n if (minDate && maxDate && minDate.getMonth() === maxDate.getMonth()) {\n return true;\n }\n\n return false;\n}\n","import { Injectable } from '@angular/core';\nimport { MiniStore, Action, MiniState } from '../sub-components/mini-ngrx';\nimport { MisDatePickerState, initialDatePickerState } from './bs-datepicker.state';\nimport { BehaviorSubject } from 'rxjs';\nimport { misDatePickerReducer } from './bs-datepicker.reducer';\n\n@Injectable()\nexport class MisDatePickerStore extends MiniStore<MisDatePickerState> {\n constructor() {\n const _dispatcher = new BehaviorSubject<Action>({\n type: '[datepicker] dispatcher init'\n });\n const state = new MiniState<MisDatePickerState>(\n initialDatePickerState,\n _dispatcher,\n misDatePickerReducer\n );\n super(_dispatcher, misDatePickerReducer, state);\n }\n}\n","import { Component, ElementRef, EventEmitter, OnDestroy, OnInit, Renderer2 } from '@angular/core';\n\nimport { take } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\n\nimport { getFullYear, getMonth } from '../../sub-components/chronos';\nimport { PositioningService } from '../../sub-components/positioning';\n\nimport { datepickerAnimation } from '../../datepicker-animations';\nimport { MisDatePickerAbstractComponent } from '../../base/bs-datepicker-container';\nimport { MisDatePickerConfig } from '../../bs-datepicker.config';\nimport { CalendarCellViewModel, DayViewModel } from '../../models';\nimport { MisDatePickerActions } from '../../reducer/bs-datepicker.actions';\nimport { MisDatePickerEffects } from '../../reducer/bs-datepicker.effects';\nimport { MisDatePickerStore } from '../../reducer/bs-datepicker.store';\n\n@Component({\n selector: 'mis-datepicker-container',\n providers: [MisDatePickerStore, MisDatePickerEffects],\n templateUrl: './bs-datepicker-view.html',\n host: {\n class: 'bottom',\n '(click)': '_stopPropagation($event)',\n role: 'dialog',\n 'aria-label': 'calendar'\n },\n animations: [datepickerAnimation]\n})\nexport class MisDatePickerContainerComponent extends MisDatePickerAbstractComponent\n implements OnInit, OnDestroy {\n\n set value(value: Date) {\n this._effects.setValue(value);\n }\n\n valueChange: EventEmitter<Date> = new EventEmitter<Date>();\n animationState = 'void';\n\n _subs: Subscription[] = [];\n constructor(\n private _renderer: Renderer2,\n private _config: MisDatePickerConfig,\n private _store: MisDatePickerStore,\n private _element: ElementRef,\n private _actions: MisDatePickerActions,\n _effects: MisDatePickerEffects,\n private _positionService: PositioningService\n ) {\n super();\n this._effects = _effects;\n\n _renderer.setStyle(_element.nativeElement, 'display', 'block');\n _renderer.setStyle(_element.nativeElement, 'position', 'absolute');\n }\n\n ngOnInit(): void {\n this._positionService.setOptions({\n modifiers: { flip: { enabled: this._config.adaptivePosition } },\n allowedPositions: ['top', 'bottom']\n });\n\n this._positionService.event$\n .pipe(\n take(1)\n )\n .subscribe(() => {\n this._positionService.disable();\n\n if (this._config.isAnimated) {\n this.animationState = this.isTopPosition ? 'animated-up' : 'animated-down';\n\n return;\n }\n\n this.animationState = 'unanimated';\n });\n\n this.isOtherMonthsActive = this._config.selectFromOtherMonth;\n this.containerClass = this._config.containerClass;\n this.showTodayBtn = this._config.showTodayButton;\n this.todayBtnLbl = this._config.todayButtonLabel;\n this.todayPos = this._config.todayPosition;\n this.showClearBtn = this._config.showClearButton;\n this.clearBtnLbl = this._config.clearButtonLabel;\n this.clearPos = this._config.clearPosition;\n this.customRangeBtnLbl = this._config.customRangeButtonLabel;\n this._effects\n .init(this._store)\n // intial state options\n .setOptions(this._config)\n // data binding view --> model\n .setBindings(this)\n // set event handlers\n .setEventHandlers(this)\n .registerDatePickerSideEffects();\n\n // todo: move it somewhere else\n // on selected date change\n this._subs.push(\n this._store\n /* tslint:disable-next-line: no-any */\n .select((state: any) => state.selectedDate)\n /* tslint:disable-next-line: no-any */\n .subscribe((date: any) => this.valueChange.emit(date))\n );\n\n this._store.dispatch(this._actions.changeViewMode(this._config.startView));\n }\n\n get isTopPosition(): boolean {\n return this._element.nativeElement.classList.contains('top');\n }\n\n positionServiceEnable(): void {\n this._positionService.enable();\n }\n dayApplyHandler(day: DayViewModel): void {\n\n }\n daySelectHandler(day: DayViewModel): void {\n if (!day) {\n return;\n }\n\n const isDisabled = this.isOtherMonthsActive ? day.isDisabled : (day.isOtherMonth || day.isDisabled);\n\n if (isDisabled) {\n return;\n }\n\n this._store.dispatch(this._actions.select(day.date));\n }\n\n monthSelectHandler(day: CalendarCellViewModel): void {\n if (!day || day.isDisabled) {\n return;\n }\n\n this._store.dispatch(\n this._actions.navigateTo({\n unit: {\n month: getMonth(day.date),\n year: getFullYear(day.date)\n },\n viewMode: 'day'\n })\n );\n }\n\n yearSelectHandler(day: CalendarCellViewModel): void {\n if (!day || day.isDisabled) {\n return;\n }\n\n this._store.dispatch(\n this._actions.navigateTo({\n unit: {\n year: getFullYear(day.date)\n },\n viewMode: 'month'\n })\n );\n }\n\n setToday(): void {\n this._store.dispatch(this._actions.select(new Date()));\n }\n\n clearDate(): void {\n this._store.dispatch(this._actions.select(undefined));\n }\n cancel(){\n this._renderer.setStyle(this._element.nativeElement, 'display', 'none');\n }\n ngOnDestroy(): void {\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n this._effects.destroy();\n }\n}\n","import { TemplateRef, ViewContainerRef } from '@angular/core';\n\nexport class BsComponentRef<T> {\n templateRef: TemplateRef<T>;\n viewContainer: ViewContainerRef;\n}\n","export class Trigger {\n open: string;\n close?: string;\n\n constructor(open: string, close?: string) {\n this.open = open;\n this.close = close || open;\n }\n\n isManual(): boolean {\n return this.open === 'manual' || this.close === 'manual';\n }\n}\n","import { Renderer2 } from '@angular/core';\nimport { Trigger } from './trigger.class';\n\n/* tslint:disable-next-line: no-any */\nexport type BsEventCallback = (event?: any) => boolean | void;\n\nexport interface ListenOptions {\n target?: HTMLElement;\n targets?: HTMLElement[];\n triggers?: string;\n outsideClick?: boolean;\n outsideEsc?: boolean;\n show?: BsEventCallback;\n hide?: BsEventCallback;\n toggle?: BsEventCallback;\n}\n\nconst DEFAULT_ALIASES = {\n hover: ['mouseover', 'mouseout'],\n focus: ['focusin', 'focusout']\n};\n\n/* tslint:disable-next-line: no-any */\nexport function parseTriggers(triggers: string, aliases: any = DEFAULT_ALIASES): Trigger[] {\n const trimmedTriggers = (triggers || '').trim();\n\n if (trimmedTriggers.length === 0) {\n return [];\n }\n\n const parsedTriggers = trimmedTriggers\n .split(/\\s+/)\n .map((trigger: string) => trigger.split(':'))\n .map((triggerPair: string[]) => {\n const alias = aliases[triggerPair[0]] || triggerPair;\n\n return new Trigger(alias[0], alias[1]);\n });\n\n const manualTriggers = parsedTriggers.filter((triggerPair: Trigger) =>\n triggerPair.isManual()\n );\n\n if (manualTriggers.length > 1) {\n throw new Error('Triggers parse error: only one manual trigger is allowed');\n }\n\n if (manualTriggers.length === 1 && parsedTriggers.length > 1) {\n throw new Error('Triggers parse error: manual trigger can\\'t be mixed with other triggers');\n }\n\n return parsedTriggers;\n}\n\nexport function listenToTriggers(renderer: Renderer2,\n /* tslint:disable-next-line: no-any */\n target: any,\n triggers: string,\n showFn: BsEventCallback,\n hideFn: BsEventCallback,\n toggleFn: BsEventCallback): Function {\n const parsedTriggers = parseTriggers(triggers);\n /* tslint:disable-next-line: no-any */\n const listeners: any[] = [];\n\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return Function.prototype;\n }\n\n parsedTriggers.forEach((trigger: Trigger) => {\n if (trigger.open === trigger.close) {\n listeners.push(renderer.listen(target, trigger.open, toggleFn));\n\n return;\n }\n\n listeners.push(\n renderer.listen(target, trigger.open, showFn),\n renderer.listen(target, trigger.close, hideFn)\n );\n });\n\n return () => {\n listeners.forEach((unsubscribeFn: Function) => unsubscribeFn());\n };\n}\n\nexport function listenToTriggersV2(renderer: Renderer2,\n options: ListenOptions): Function {\n const parsedTriggers = parseTriggers(options.triggers);\n const target = options.target;\n // do nothing\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return Function.prototype;\n }\n\n // all listeners\n /* tslint:disable-next-line: no-any */\n const listeners: any[] = [];\n\n // lazy listeners registration\n const _registerHide: Function[] = [];\n const registerHide = () => {\n // add hide listeners to unregister array\n _registerHide.forEach((fn: Function) => listeners.push(fn()));\n // register hide events only once\n _registerHide.length = 0;\n };\n\n // register open\\close\\toggle listeners\n parsedTriggers.forEach((trigger: Trigger) => {\n const useToggle = trigger.open === trigger.close;\n const showFn = useToggle ? options.toggle : options.show;\n\n if (!useToggle) {\n _registerHide.push(() =>\n renderer.listen(target, trigger.close, options.hide)\n );\n }\n\n listeners.push(\n renderer.listen(target, trigger.open, () => showFn(registerHide))\n );\n });\n\n return () => {\n listeners.forEach((unsubscribeFn: Function) => unsubscribeFn());\n };\n}\n\nexport function registerOutsideClick(renderer: Renderer2,\n options: ListenOptions) {\n if (!options.outsideClick) {\n return Function.prototype;\n }\n\n /* tslint:disable-next-line: no-any */\n return renderer.listen('document', 'click', (event: any) => {\n if (options.target && options.target.contains(event.target)) {\n return undefined;\n }\n if (\n options.targets &&\n options.targets.some(target => target.contains(event.target))\n ) {\n return undefined;\n }\n\n options.hide();\n });\n}\n\nexport function registerEscClick(renderer: Renderer2,\n options: ListenOptions) {\n if (!options.outsideEsc) {\n return Function.prototype;\n }\n\n return renderer.listen('document', 'keyup.esc', (event: any) => {\n if (options.target && options.target.contains(event.target)) {\n return undefined;\n }\n if (\n options.targets &&\n options.targets.some(target => target.contains(event.target))\n ) {\n return undefined;\n }\n\n options.hide();\n });\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * JS version of browser APIs. This library can only run in the browser.\n */\nconst win = (typeof window !== 'undefined' && window) || {} as any;\n\nexport { win as window };\nexport const document = win.document;\nexport const location = win.location;\nexport const gc = win.gc ? () => win.gc() : (): any => null;\nexport const performance = win.performance ? win.performance : null;\nexport const Event = win.Event;\nexport const MouseEvent = win.MouseEvent;\nexport const KeyboardEvent = win.KeyboardEvent;\nexport const EventTarget = win.EventTarget;\nexport const History = win.History;\nexport const Location = win.Location;\nexport const EventListener = win.EventListener;\n","import { window } from './facade/browser';\n\nlet guessedVersion: 'bs3' | 'bs4';\n\nfunction _guessBsVersion(): 'bs3' | 'bs4' {\n if (typeof document === 'undefined') {\n return null;\n }\n const spanEl = document.createElement('span');\n spanEl.innerText = 'test bs version';\n document.body.appendChild(spanEl);\n spanEl.classList.add('d-none');\n const rect = spanEl.getBoundingClientRect();\n document.body.removeChild(spanEl);\n if (!rect) {\n return 'bs3';\n }\n\n return rect.top === 0 ? 'bs4' : 'bs3';\n}\n\nexport function setTheme(theme: 'bs3' | 'bs4'): void {\n guessedVersion = theme;\n}\n\n// todo: in mis-design-system, bs4 will became a default one\nexport function isBs3(): boolean {\n if (typeof window === 'undefined') {\n return true;\n }\n\n if (typeof window.__theme === 'undefined') {\n if (guessedVersion) {\n return guessedVersion === 'bs3';\n }\n guessedVersion = _guessBsVersion();\n\n return guessedVersion === 'bs3';\n }\n\n return window.__theme !== 'bs4';\n}\n","export class LinkedList<T> {\n length = 0;\n /* tslint:disable-next-line: no-any*/\n protected head: any;\n /* tslint:disable-next-line: no-any*/\n protected tail: any;\n /* tslint:disable-next-line: no-any*/\n protected current: any;\n protected asArray: T[] = [];\n\n get(position: number): T {\n if (this.length === 0 || position < 0 || position >= this.length) {\n return void 0;\n }\n\n let current = this.head;\n\n for (let index = 0; index < position; index++) {\n current = current.next;\n }\n\n return current.value;\n }\n\n add(value: T, position: number = this.length): void {\n if (position < 0 || position > this.length) {\n throw new Error('Position is out of the list');\n }\n\n /* tslint:disable-next-line: no-any*/\n const node: any = {\n value,\n next: undefined,\n previous: undefined\n };\n\n if (this.length === 0) {\n this.head = node;\n this.tail = node;\n this.current = node;\n } else {\n if (position === 0) {\n // first node\n node.next = this.head;\n this.head.previous = node;\n this.head = node;\n } else if (position === this.length) {\n // last node\n this.tail.next = node;\n node.previous = this.tail;\n this.tail = node;\n } else {\n // node in middle\n const currentPreviousNode = this.getNode(position - 1);\n const currentNextNode = currentPreviousNode.next;\n\n currentPreviousNode.next = node;\n currentNextNode.previous = node;\n\n node.previous = currentPreviousNode;\n node.next = currentNextNode;\n }\n }\n this.length++;\n this.createInternalArrayRepresentation();\n }\n\n remove(position = 0): void {\n if (this.length === 0 || position < 0 || position >= this.length) {\n throw new Error('Position is out of the list');\n }\n\n if (position === 0) {\n // first node\n this.head = this.head.next;\n\n if (this.head) {\n // there is no second node\n this.head.previous = undefined;\n } else {\n // there is no second node\n this.tail = undefined;\n }\n } else if (position === this.length - 1) {\n // last node\n this.tail = this.tail.previous;\n this.tail.next = undefined;\n } else {\n // middle node\n const removedNode = this.getNode(position);\n removedNode.next.previous = removedNode.previous;\n removedNode.previous.next = removedNode.next;\n }\n\n this.length--;\n this.createInternalArrayRepresentation();\n }\n\n set(position: number, value: T): void {\n if (this.length === 0 || position < 0 || position >= this.length) {\n throw new Error('Position is out of the list');\n }\n\n const node = this.getNode(position);\n node.value = value;\n this.createInternalArrayRepresentation();\n }\n\n toArray(): T[] {\n return this.asArray;\n }\n\n /* tslint:disable-next-line: no-any*/\n findAll(fn: any): any[] {\n let current = this.head;\n /* tslint:disable-next-line: no-any*/\n const result: any[] = [];\n for (let index = 0; index < this.length; index++) {\n if (fn(current.value, index)) {\n result.push({index, value: current.value});\n }\n current = current.next;\n }\n\n return result;\n }\n\n // Array methods overriding start\n push(...args: T[]): number {\n /* tslint:disable-next-line: no-any*/\n args.forEach((arg: any) => {\n this.add(arg);\n });\n\n return this.length;\n }\n\n pop(): T {\n if (this.length === 0) {\n return undefined;\n }\n const last = this.tail;\n this.remove(this.length - 1);\n\n return last.value;\n }\n\n unshift(...args: T[]): number {\n args.reverse();\n /* tslint:disable-next-line: no-any*/\n args.forEach((arg: any) => {\n this.add(arg, 0);\n });\n\n return this.length;\n }\n\n shift(): T {\n if (this.length === 0) {\n return undefined;\n }\n const lastItem = this.head.value;\n this.remove();\n\n return lastItem;\n }\n\n /* tslint:disable-next-line: no-any*/\n forEach(fn: any): void {\n let current = this.head;\n for (let index = 0; index < this.length; index++) {\n fn(current.value, index);\n current = current.next;\n }\n }\n\n indexOf(value: T): number {\n let current = this.head;\n let position = 0;\n\n for (let index = 0; index < this.length; index++) {\n if (current.value === value) {\n position = index;\n break;\n }\n current = current.next;\n }\n\n return position;\n }\n\n /* tslint:disable-next-line: no-any*/\n some(fn: any): boolean {\n let current = this.head;\n let result = false;\n while (current && !result) {\n if (fn(current.value)) {\n result = true;\n break;\n }\n current = current.next;\n }\n\n return result;\n }\n\n /* tslint:disable-next-line: no-any*/\n every(fn: any): boolean {\n let current = this.head;\n let result = true;\n while (current && result) {\n if (!fn(current.value)) {\n result = false;\n }\n current = current.next;\n }\n\n return result;\n }\n\n toString(): string {\n return '[Linked List]';\n }\n\n /* tslint:disable-next-line: no-any*/\n find(fn: any): T {\n let current = this.head;\n let result: T;\n for (let index = 0; index < this.length; index++) {\n if (fn(current.value, index)) {\n result = current.value;\n break;\n }\n current = current.next;\n }\n\n return result;\n }\n\n /* tslint:disable-next-line: no-any*/\n findIndex(fn: any): number {\n let current = this.head;\n let result: number;\n for (let index = 0; index < this.length; index++) {\n if (fn(current.value, index)) {\n result = index;\n break;\n }\n current = current.next;\n }\n\n return result;\n }\n\n /* tslint:disable-next-line: no-any*/\n protected getNode(position: number): any {\n if (this.length === 0 || position < 0 || position >= this.length) {\n throw new Error('Position is out of the list');\n }\n\n let current = this.head;\n\n for (let index = 0; index < position; index++) {\n current = current.next;\n }\n\n return current;\n }\n\n protected createInternalArrayRepresentation(): void {\n /* tslint:disable-next-line: no-any*/\n const outArray: any[] = [];\n let current = this.head;\n\n while (current) {\n outArray.push(current.value);\n current = current.next;\n }\n this.asArray = outArray;\n }\n\n // Array methods overriding END\n}\n","/*tslint:disable:no-invalid-this */\n/* tslint:disable-next-line: no-any */\nexport function OnChange(defaultValue?: any): any {\n const sufix = 'Change';\n\n /* tslint:disable-next-line: no-any */\n return function OnChangeHandler(target: any, propertyKey: string): void {\n const _key = ` __${propertyKey}Value`;\n Object.defineProperty(target, propertyKey, {\n /* tslint:disable-next-line: no-any */\n get(): any {\n return this[_key];\n },\n /* tslint:disable-next-line: no-any */\n set(value: any): void {\n const prevValue = this[_key];\n this[_key] = value;\n if (prevValue !== value && this[propertyKey + sufix]) {\n this[propertyKey + sufix].emit(value);\n }\n }\n });\n };\n}\n/* tslint:enable */\n","import { window } from './facade/browser';\n\nexport class Utils {\n /* tslint:disable-next-line: no-any */\n static reflow(element: any): void {\n /* tslint:disable-next-line: no-any */\n ((bs: any): void => bs)(element.offsetHeight);\n }\n\n // source: https://github.com/jquery/jquery/blob/master/src/css/var/getStyles.js\n /* tslint:disable-next-line: no-any */\n static getStyles(elem: any): any {\n // Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n // IE throws on elements created in popups\n // FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n let view = elem.ownerDocument.defaultView;\n\n if (!view || !view.opener) {\n view = window;\n }\n\n return view.getComputedStyle(elem);\n }\n}\n","import { isDevMode } from '@angular/core';\nconst _messagesHash: { [key: string]: boolean } = {};\nconst _hideMsg = typeof console === 'undefined' || !('warn' in console);\n\nexport function warnOnce(msg: string): void {\n if (!isDevMode() || _hideMsg || msg in _messagesHash) {\n return;\n }\n\n _messagesHash[msg] = true;\n /*tslint:disable-next-line*/\n console.warn(msg);\n}\n","import { ComponentRef, ViewRef } from '@angular/core';\n\nexport class ContentRef {\n /* tslint:disable-next-line: no-any */\n nodes: any[];\n viewRef?: ViewRef;\n /* tslint:disable-next-line: no-any */\n componentRef?: ComponentRef<any>;\n\n constructor(\n /* tslint:disable-next-line: no-any */\n nodes: any[],\n viewRef?: ViewRef,\n /* tslint:disable-next-line: no-any */\n componentRef?: ComponentRef<any>\n ) {\n this.nodes = nodes;\n this.viewRef = viewRef;\n this.componentRef = componentRef;\n }\n}\n","// tslint:disable:max-file-line-count\n// todo: add delay support\n// todo: merge events onShow, onShown, etc...\n// todo: add global positioning configuration?\nimport {\n ApplicationRef,\n ComponentFactory,\n ComponentFactoryResolver,\n ComponentRef,\n ElementRef,\n EmbeddedViewRef,\n EventEmitter,\n Injector,\n NgZone,\n Renderer2,\n StaticProvider,\n TemplateRef,\n Type,\n ViewContainerRef\n} from '@angular/core';\n\nimport { PositioningOptions, PositioningService } from '../positioning';\n\nimport {\n listenToTriggersV2,\n registerEscClick,\n registerOutsideClick\n} from '../utils';\n\nimport { ContentRef } from './content-ref.class';\nimport { ListenOptions } from './listen-options.model';\nimport { Subscription } from 'rxjs';\n\nexport class ComponentLoader<T> {\n onBeforeShow: EventEmitter<void> = new EventEmitter();\n /* tslint:disable-next-line: no-any*/\n onShown: EventEmitter<any> = new EventEmitter();\n /* tslint:disable-next-line: no-any*/\n onBeforeHide: EventEmitter<any> = new EventEmitter();\n onHidden: EventEmitter<any> = new EventEmitter();\n\n instance: T;\n _componentRef: ComponentRef<T>;\n _inlineViewRef: EmbeddedViewRef<T>;\n\n private _providers: StaticProvider[] = [];\n private _componentFactory: ComponentFactory<T>;\n private _zoneSubscription: Subscription;\n private _contentRef: ContentRef;\n private _innerComponent: ComponentRef<T>;\n\n private _unregisterListenersFn: Function;\n\n get isShown(): boolean {\n if (this._isHiding) {\n return false;\n }\n\n return !!this._componentRef;\n }\n\n private _isHiding = false;\n\n /**\n * Placement of a component. Accepts: \"top\", \"bottom\", \"left\", \"right\"\n */\n private attachment: string;\n\n /**\n * A selector specifying the element the popover should be appended to.\n */\n /* tslint:disable-next-line: no-any*/\n private container: string | ElementRef | any;\n\n /**\n * A selector used if container element was not found\n */\n private containerDefaultSelector = 'body';\n\n /**\n * Specifies events that should trigger. Supports a space separated list of\n * event names.\n */\n private triggers: string;\n\n private _listenOpts: ListenOptions = {};\n private _globalListener = Function.prototype;\n\n /**\n * Do not use this directly, it should be instanced via\n * `ComponentLoadFactory.attach`\n * @internal\n */\n // tslint:disable-next-line\n public constructor(\n private _viewContainerRef: ViewContainerRef,\n private _renderer: Renderer2,\n private _elementRef: ElementRef,\n private _injector: Injector,\n private _componentFactoryResolver: ComponentFactoryResolver,\n private _ngZone: NgZone,\n private _applicationRef: ApplicationRef,\n private _posService: PositioningService\n ) { }\n\n attach(compType: Type<T>): ComponentLoader<T> {\n this._componentFactory = this._componentFactoryResolver\n .resolveComponentFactory<T>(compType);\n\n return this;\n }\n\n // todo: add behaviour: to target element, `body`, custom element\n to(container?: string | ElementRef): ComponentLoader<T> {\n this.container = container || this.container;\n\n return this;\n }\n\n position(opts?: PositioningOptions): ComponentLoader<T> {\n this.attachment = opts.attachment || this.attachment;\n /* tslint:disable-next-line: no-unnecessary-type-assertion */\n this._elementRef = (opts.target as ElementRef) || this._elementRef;\n\n return this;\n }\n\n provide(provider: StaticProvider): ComponentLoader<T> {\n this._providers.push(provider);\n\n return this;\n }\n\n // todo: appendChild to element or document.querySelector(this.container)\n\n show(opts: {\n /* tslint:disable-next-line: no-any*/\n content?: string | TemplateRef<any>;\n /* tslint:disable-next-line: no-any*/\n context?: any;\n /* tslint:disable-next-line: no-any*/\n initialState?: any;\n /* tslint:disable-next-line: no-any*/\n [key: string]: any;\n id?: number|string;\n } = {}\n ): ComponentRef<T> {\n\n this._subscribePositioning();\n this._innerComponent = null;\n\n if (!this._componentRef) {\n this.onBeforeShow.emit();\n this._contentRef = this._getContentRef(opts.content, opts.context, opts.initialState);\n\n const injector = Injector.create({\n providers: this._providers,\n parent: this._injector\n });\n\n this._componentRef = this._componentFactory.create(injector, this._contentRef.nodes);\n\n this._applicationRef.attachView(this._componentRef.hostView);\n // this._componentRef = this._viewContainerRef\n // .createComponent(this._componentFactory, 0, injector, this._contentRef.nodes);\n this.instance = this._componentRef.instance;\n\n Object.assign(this._componentRef.instance, opts);\n\n if (this.container instanceof ElementRef) {\n this.container.nativeElement.appendChild(\n this._componentRef.location.nativeElement\n );\n }\n\n if (typeof this.container === 'string' && typeof document !== 'undefined') {\n const selectedElement = document.querySelector(this.container) ||\n document.querySelector(this.containerDefaultSelector);\n\n selectedElement.appendChild(this._componentRef.location.nativeElement);\n }\n\n if (\n !this.container &&\n this._elementRef &&\n this._elementRef.nativeElement.parentElement\n ) {\n this._elementRef.nativeElement.parentElement.appendChild(\n this._componentRef.location.nativeElement\n );\n }\n\n // we need to manually invoke change detection since events registered\n // via\n // Renderer::listen() are not picked up by change detection with the\n // OnPush strategy\n if (this._contentRef.componentRef) {\n this._innerComponent = this._contentRef.componentRef.instance;\n this._contentRef.componentRef.changeDetectorRef.markForCheck();\n this._contentRef.componentRef.changeDetectorRef.detectChanges();\n }\n this._componentRef.changeDetectorRef.markForCheck();\n this._componentRef.changeDetectorRef.detectChanges();\n\n\n this.onShown.emit(opts.id ? { id: opts.id } : this._componentRef.instance);\n }\n\n this._registerOutsideClick();\n\n return this._componentRef;\n }\n\n hide(id?: number|string): ComponentLoader<T> {\n if (!this._componentRef) {\n return this;\n }\n\n this._posService.deletePositionElement(this._componentRef.location);\n\n this.onBeforeHide.emit(this._componentRef.instance);\n\n const componentEl = this._componentRef.location.nativeElement;\n componentEl.parentNode.removeChild(componentEl);\n if (this._contentRef.componentRef) {\n this._contentRef.componentRef.destroy();\n }\n\n if (this._viewContainerRef && this._contentRef.viewRef) {\n this._viewContainerRef.remove(\n this._viewContainerRef.indexOf(this._contentRef.viewRef)\n );\n }\n if (this._contentRef.viewRef) {\n this._contentRef.viewRef.destroy();\n }\n\n this._contentRef = null;\n this._componentRef = null;\n this._removeGlobalListener();\n\n this.onHidden.emit(id ? { id } : null);\n\n return this;\n }\n\n toggle(): void {\n if (this.isShown) {\n this.hide();\n\n return;\n }\n\n this.show();\n }\n\n dispose(): void {\n if (this.isShown) {\n this.hide();\n }\n\n this._unsubscribePositioning();\n\n if (this._unregisterListenersFn) {\n this._unregisterListenersFn();\n }\n }\n\n listen(listenOpts: ListenOptions): ComponentLoader<T> {\n this.triggers = listenOpts.triggers || this.triggers;\n this._listenOpts.outsideClick = listenOpts.outsideClick;\n this._listenOpts.outsideEsc = listenOpts.outsideEsc;\n listenOpts.target = listenOpts.target || this._elementRef.nativeElement;\n\n const hide = (this._listenOpts.hide = () =>\n listenOpts.hide ? listenOpts.hide() : void this.hide());\n const show = (this._listenOpts.show = (registerHide: Function) => {\n listenOpts.show ? listenOpts.show(registerHide) : this.show(registerHide);\n registerHide();\n });\n\n const toggle = (registerHide: Function) => {\n this.isShown ? hide() : show(registerHide);\n };\n\n this._unregisterListenersFn = listenToTriggersV2(this._renderer, {\n target: listenOpts.target,\n triggers: listenOpts.triggers,\n show,\n hide,\n toggle\n });\n\n return this;\n }\n\n _removeGlobalListener() {\n if (this._globalListener) {\n this._globalListener();\n this._globalListener = null;\n }\n }\n\n attachInline(\n vRef: ViewContainerRef,\n /* tslint:disable-next-line: no-any*/\n template: TemplateRef<any>\n ): ComponentLoader<T> {\n this._inlineViewRef = vRef.createEmbeddedView(template);\n\n return this;\n }\n\n _registerOutsideClick(): void {\n if (!this._componentRef || !this._componentRef.location) {\n return;\n }\n // why: should run after first event bubble\n if (this._listenOpts.outsideClick) {\n const target = this._componentRef.location.nativeElement;\n setTimeout(() => {\n this._globalListener = registerOutsideClick(this._renderer, {\n targets: [target, this._elementRef.nativeElement],\n outsideClick: this._listenOpts.outsideClick,\n hide: () => this._listenOpts.hide()\n });\n });\n }\n if (this._listenOpts.outsideEsc) {\n const target = this._componentRef.location.nativeElement;\n this._globalListener = registerEscClick(this._renderer, {\n targets: [target, this._elementRef.nativeElement],\n outsideEsc: this._listenOpts.outsideEsc,\n hide: () => this._listenOpts.hide()\n });\n }\n }\n\n getInnerComponent(): ComponentRef<T> {\n return this._innerComponent;\n }\n\n private _subscribePositioning(): void {\n if (this._zoneSubscription || !this.attachment) {\n return;\n }\n\n this.onShown.subscribe(() => {\n this._posService.position({\n element: this._componentRef.location,\n target: this._elementRef,\n attachment: this.attachment,\n appendToBody: this.container === 'body'\n });\n });\n\n this._zoneSubscription = this._ngZone.onStable.subscribe(() => {\n if (!this._componentRef) {\n return;\n }\n\n this._posService.calcPosition();\n });\n }\n\n private _unsubscribePositioning(): void {\n if (!this._zoneSubscription) {\n return;\n }\n\n this._zoneSubscription.unsubscribe();\n this._zoneSubscription = null;\n }\n\n private _getContentRef(\n /* tslint:disable-next-line: no-any*/\n content: string | TemplateRef<any> | any,\n /* tslint:disable-next-line: no-any*/\n context?: any,\n /* tslint:disable-next-line: no-any*/\n initialState?: any\n ): ContentRef {\n if (!content) {\n return new ContentRef([]);\n }\n\n if (content instanceof TemplateRef) {\n if (this._viewContainerRef) {\n const _viewRef = this._viewContainerRef\n .createEmbeddedView<TemplateRef<T>>(content, context);\n _viewRef.markForCheck();\n\n return new ContentRef([_viewRef.rootNodes], _viewRef);\n }\n const viewRef = content.createEmbeddedView({});\n this._applicationRef.attachView(viewRef);\n\n return new ContentRef([viewRef.rootNodes], viewRef);\n }\n\n if (typeof content === 'function') {\n const contentCmptFactory = this._componentFactoryResolver.resolveComponentFactory(\n content\n );\n\n const modalContentInjector = Injector.create({\n providers: this._providers,\n parent: this._injector\n });\n\n const componentRef = contentCmptFactory.create(modalContentInjector);\n Object.assign(componentRef.instance, initialState);\n this._applicationRef.attachView(componentRef.hostView);\n\n return new ContentRef(\n [[componentRef.location.nativeElement]],\n componentRef.hostView,\n componentRef\n );\n }\n\n return new ContentRef([[this._renderer.createText(`${content}`)]]);\n }\n}\n","import {\n ApplicationRef, ComponentFactoryResolver, ElementRef, Injectable, Injector,\n NgZone, Renderer2, ViewContainerRef\n} from '@angular/core';\nimport { ComponentLoader } from './component-loader.class';\nimport { PositioningService } from '../../sub-components/positioning';\n\n@Injectable()\nexport class ComponentLoaderFactory {\n constructor(private _componentFactoryResolver: ComponentFactoryResolver,\n private _ngZone: NgZone,\n private _injector: Injector,\n private _posService: PositioningService,\n private _applicationRef: ApplicationRef) {}\n\n /**\n *\n * @param _elementRef\n * @param _viewContainerRef\n * @param _renderer\n */\n createLoader<T>(_elementRef: ElementRef,\n _viewContainerRef: ViewContainerRef,\n _renderer: Renderer2): ComponentLoader<T> {\n return new ComponentLoader<T>(\n _viewContainerRef,\n _renderer,\n _elementRef,\n this._injector,\n this._componentFactoryResolver,\n this._ngZone,\n this._applicationRef,\n this._posService\n );\n }\n}\n","// tslint:disable:max-file-line-count\nimport {\n ComponentRef, Directive, ElementRef, EventEmitter, Input, OnChanges,\n OnDestroy, OnInit, Output, Renderer2, SimpleChanges, ViewContainerRef, AfterViewInit\n} from '@angular/core';\nimport { ComponentLoader, ComponentLoaderFactory } from './sub-components/component-loader';\nimport { MisDatePickerContainerComponent } from './themes/bs/bs-datepicker-container.component';\nimport { Observable, Subscription, Subject, BehaviorSubject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { MisDatePickerConfig } from './bs-datepicker.config';\nimport { MisDatePickerViewMode, DatePickerDateCustomClasses, DatePickerDateTooltipText } from './models';\n\n@Directive({\n selector: '[misDatePicker]',\n exportAs: 'misDatePicker'\n})\nexport class MisDatePickerDirective implements OnInit, OnDestroy, OnChanges, AfterViewInit {\n /**\n * Placement of a datepicker. Accepts: \"top\", \"bottom\", \"left\", \"right\"\n */\n @Input() placement: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\n /**\n * Specifies events that should trigger. Supports a space separated list of\n * event names.\n */\n @Input() triggers = 'click';\n /**\n * Close datepicker on outside click\n */\n @Input() outsideClick = true;\n /**\n * A selector specifying the element the datepicker should be appended to.\n */\n @Input() container = 'body';\n\n @Input() outsideEsc = true;\n\n /**\n * Returns whether or not the datepicker is currently being shown\n */\n @Input()\n get isOpen(): boolean {\n return this._datepicker.isShown;\n }\n\n set isOpen(value: boolean) {\n this.isOpen$.next(value);\n }\n\n /**\n * Emits an event when the datepicker is shown\n */\n /* tslint:disable-next-line: no-any*/\n @Output() onShown: EventEmitter<any>;\n /**\n * Emits an event when the datepicker is hidden\n */\n /* tslint:disable-next-line: no-any*/\n @Output() onHidden: EventEmitter<any>;\n\n _bsValue: Date;\n isOpen$: BehaviorSubject<boolean>;\n isDestroy$: Subject<void>;\n /**\n * Initial value of datepicker\n */\n @Input()\n set bsValue(value: Date) {\n if (this._bsValue && value && this._bsValue.getTime() === value.getTime()) {\n return;\n }\n\n if (!this._bsValue && value) {\n const now = new Date();\n\n value.setMilliseconds(now.getMilliseconds());\n value.setSeconds(now.getSeconds());\n value.setMinutes(now.getMinutes());\n value.setHours(now.getHours());\n }\n\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n\n /**\n * Config object for datepicker\n */\n @Input() set misConfig(misConfig: Partial<MisDatePickerConfig>) {\n this._misConfig = misConfig;\n this.setConfig();\n this._dateInputFormat$.next(misConfig && misConfig.dateInputFormat);\n }\n get misConfig(): Partial<MisDatePickerConfig> {\n return this._misConfig;\n }\n /**\n * Indicates whether datepicker's content is enabled or not\n */\n @Input() isDisabled: boolean;\n /**\n * Minimum date which is available for selection\n */\n @Input() minDate: Date;\n /**\n * Maximum date which is available for selection\n */\n @Input() maxDate: Date;\n\n /**\n * Minimum view mode : day, month, or year\n */\n @Input() minMode: MisDatePickerViewMode;\n\n /**\n * Disable Certain days in the week\n */\n @Input() daysDisabled: number[];\n\n /**\n * Disable specific dates\n */\n @Input() datesDisabled: Date[];\n /**\n * Enable specific dates\n */\n @Input() datesEnabled: Date[];\n /**\n * Date custom classes\n */\n @Input() dateCustomClasses: DatePickerDateCustomClasses[];\n /**\n * Date tooltip text\n */\n @Input() dateTooltipTexts: DatePickerDateTooltipText[];\n /**\n * Emits when datepicker value has been changed\n */\n @Output() bsValueChange: EventEmitter<Date> = new EventEmitter();\n\n get dateInputFormat$(): Observable<string> {\n return this._dateInputFormat$;\n }\n\n protected _subs: Subscription[] = [];\n\n private _datepicker: ComponentLoader<MisDatePickerContainerComponent>;\n private _datepickerRef: ComponentRef<MisDatePickerContainerComponent>;\n private _misConfig: Partial<MisDatePickerConfig>;\n private readonly _dateInputFormat$ = new Subject<string>();\n\n constructor(public _config: MisDatePickerConfig,\n private _elementRef: ElementRef,\n private _renderer: Renderer2,\n _viewContainerRef: ViewContainerRef,\n cis: ComponentLoaderFactory) {\n // todo: assign only subset of fields\n Object.assign(this, this._config);\n this._datepicker = cis.createLoader<MisDatePickerContainerComponent>(\n _elementRef,\n _viewContainerRef,\n _renderer\n );\n this.onShown = this._datepicker.onShown;\n this.onHidden = this._datepicker.onHidden;\n this.isOpen$ = new BehaviorSubject(this.isOpen);\n }\n\n ngOnInit(): void {\n this.isDestroy$ = new Subject();\n this._datepicker.listen({\n outsideClick: this.outsideClick,\n outsideEsc: this.outsideEsc,\n triggers: this.triggers,\n show: () => this.show()\n });\n this.setConfig();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this._datepickerRef || !this._datepickerRef.instance) {\n return;\n }\n\n if (changes.minDate) {\n this._datepickerRef.instance.minDate = this.minDate;\n }\n\n if (changes.maxDate) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n }\n\n if (changes.daysDisabled) {\n this._datepickerRef.instance.daysDisabled = this.daysDisabled;\n }\n\n if (changes.datesDisabled) {\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\n }\n\n if (changes.datesEnabled) {\n this._datepickerRef.instance.datesEnabled = this.datesEnabled;\n }\n\n if (changes.isDisabled) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n }\n\n if (changes.dateCustomClasses) {\n this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\n }\n\n if (changes.dateTooltipTexts) {\n this._datepickerRef.instance.dateTooltipTexts = this.dateTooltipTexts;\n }\n }\n\n ngAfterViewInit(): void {\n this.isOpen$.pipe(\n filter(isOpen => isOpen !== this.isOpen),\n takeUntil(this.isDestroy$)\n )\n .subscribe(() => this.toggle());\n }\n\n /**\n * Opens an element’s datepicker. This is considered a “manual” triggering of\n * the datepicker.\n */\n show(): void {\n if (this._datepicker.isShown) {\n return;\n }\n\n this.setConfig();\n\n this._datepickerRef = this._datepicker\n .provide({provide: MisDatePickerConfig, useValue: this._config})\n .attach(MisDatePickerContainerComponent)\n .to(this.container)\n .position({attachment: this.placement})\n .show({placement: this.placement});\n\n // if date changes from external source (model -> view)\n this._subs.push(\n this.bsValueChange.subscribe((value: Date) => {\n this._datepickerRef.instance.value = value;\n })\n );\n\n // if date changes from picker (view -> model)\n this._subs.push(\n this._datepickerRef.instance.valueChange.subscribe((value: Date) => {\n this.bsValue = value;\n this.hide();\n })\n );\n }\n\n /**\n * Closes an element’s datepicker. This is considered a “manual” triggering of\n * the datepicker.\n */\n hide(): void {\n if (this.isOpen) {\n this._datepicker.hide();\n }\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n\n if (this._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elementRef.nativeElement).focus();\n }\n }\n\n /**\n * Toggles an element’s datepicker. This is considered a “manual” triggering\n * of the datepicker.\n */\n toggle(): void {\n if (this.isOpen) {\n return this.hide();\n }\n\n this.show();\n }\n\n /**\n * Set config for datepicker\n */\n setConfig(): void {\n this._config = Object.assign({}, this._config, this.misConfig, {\n value: this._bsValue,\n isDisabled: this.isDisabled,\n minDate: this.minDate || this.misConfig && this.misConfig.minDate,\n maxDate: this.maxDate || this.misConfig && this.misConfig.maxDate,\n daysDisabled: this.daysDisabled || this.misConfig && this.misConfig.daysDisabled,\n dateCustomClasses: this.dateCustomClasses || this.misConfig && this.misConfig.dateCustomClasses,\n dateTooltipTexts: this.dateTooltipTexts || this.misConfig && this.misConfig.dateTooltipTexts,\n datesDisabled: this.datesDisabled || this.misConfig && this.misConfig.datesDisabled,\n datesEnabled: this.datesEnabled || this.misConfig && this.misConfig.datesEnabled,\n minMode: this.minMode || this.misConfig && this.misConfig.minMode\n });\n }\n\n ngOnDestroy(): void {\n this._datepicker.dispose();\n this.isOpen$.next(false);\n if (this.isDestroy$) {\n this.isDestroy$.next();\n this.isDestroy$.complete();\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MisDatePickerConfig } from './bs-datepicker.config';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MisDatePickerInlineConfig extends MisDatePickerConfig { }\n","import { Component, ElementRef, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport { MisDatePickerContainerComponent } from './bs-datepicker-container.component';\n\nimport { MisDatePickerActions } from '../../reducer/bs-datepicker.actions';\nimport { MisDatePickerConfig } from '../../bs-datepicker.config';\nimport { MisDatePickerEffects } from '../../reducer/bs-datepicker.effects';\nimport { MisDatePickerStore } from '../../reducer/bs-datepicker.store';\n\nimport { PositioningService } from '../../sub-components/positioning';\nimport { datepickerAnimation } from '../../datepicker-animations';\n\n@Component({\n selector: 'mis-datepicker-inline-container',\n providers: [MisDatePickerStore, MisDatePickerEffects],\n templateUrl: './bs-datepicker-view.html',\n host: {\n '(click)': '_stopPropagation($event)'\n },\n animations: [datepickerAnimation]\n})\nexport class MisDatePickerInlineContainerComponent extends MisDatePickerContainerComponent\n implements OnInit, OnDestroy {\n\n constructor(\n _renderer: Renderer2,\n _config: MisDatePickerConfig,\n _store: MisDatePickerStore,\n _element: ElementRef,\n _actions: MisDatePickerActions,\n _effects: MisDatePickerEffects,\n _positioningService: PositioningService\n ) {\n super(_renderer, _config, _store, _element, _actions, _effects, _positioningService);\n\n _renderer.setStyle(_element.nativeElement, 'display', 'inline-block');\n _renderer.setStyle(_element.nativeElement, 'position', 'static');\n }\n}\n","import {\n ComponentRef, Directive, ElementRef, EventEmitter, Input, OnChanges,\n OnDestroy, OnInit, Output, Renderer2, SimpleChanges, ViewContainerRef\n} from '@angular/core';\n\nimport { ComponentLoader, ComponentLoaderFactory } from './sub-components/component-loader';\n\nimport { Subscription } from 'rxjs';\n\nimport { MisDatePickerConfig } from './bs-datepicker.config';\nimport { MisDatePickerInlineConfig } from './bs-datepicker-inline.config';\nimport { MisDatePickerInlineContainerComponent } from './themes/bs/bs-datepicker-inline-container.component';\nimport { DatePickerDateCustomClasses, DatePickerDateTooltipText } from './models';\n\n@Directive({\n selector: 'mis-datepicker-inline',\n exportAs: 'misDatePickerInline'\n})\nexport class MisDatePickerInlineDirective implements OnInit, OnDestroy, OnChanges {\n _bsValue: Date;\n /**\n * Initial value of datepicker\n */\n @Input()\n set bsValue(value: Date) {\n if (this._bsValue === value) {\n return;\n }\n\n if (!this._bsValue && value) {\n const now = new Date();\n\n value.setMilliseconds(now.getMilliseconds());\n value.setSeconds(now.getSeconds());\n value.setMinutes(now.getMinutes());\n value.setHours(now.getHours());\n }\n\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n\n /**\n * Config object for datepicker\n */\n @Input() misConfig: Partial<MisDatePickerInlineConfig>;\n /**\n * Indicates whether datepicker is enabled or not\n */\n @Input() isDisabled: boolean;\n /**\n * Minimum date which is available for selection\n */\n @Input() minDate: Date;\n /**\n * Maximum date which is available for selection\n */\n @Input() maxDate: Date;\n /**\n * Date custom classes\n */\n @Input() dateCustomClasses: DatePickerDateCustomClasses[];\n /**\n * Date tooltip text\n */\n @Input() dateTooltipTexts: DatePickerDateTooltipText[];\n /**\n * Disable specific dates\n */\n @Input() datesEnabled: Date[];\n /**\n * Enable specific dates\n */\n @Input() datesDisabled: Date[];\n /**\n * Emits when datepicker value has been changed\n */\n @Output() bsValueChange: EventEmitter<Date> = new EventEmitter();\n\n protected _subs: Subscription[] = [];\n\n private _datepicker: ComponentLoader<MisDatePickerInlineContainerComponent>;\n private _datepickerRef: ComponentRef<MisDatePickerInlineContainerComponent>;\n\n constructor(\n public _config: MisDatePickerInlineConfig,\n private _elementRef: ElementRef,\n _renderer: Renderer2,\n _viewContainerRef: ViewContainerRef,\n cis: ComponentLoaderFactory\n ) {\n // todo: assign only subset of fields\n Object.assign(this, this._config);\n this._datepicker = cis.createLoader<MisDatePickerInlineContainerComponent>(\n _elementRef,\n _viewContainerRef,\n _renderer\n );\n }\n\n ngOnInit(): void {\n this.setConfig();\n\n // if date changes from external source (model -> view)\n this._subs.push(\n this.bsValueChange.subscribe((value: Date) => {\n this._datepickerRef.instance.value = value;\n })\n );\n\n // if date changes from picker (view -> model)\n this._subs.push(\n this._datepickerRef.instance.valueChange.subscribe((value: Date) => {\n this.bsValue = value;\n })\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this._datepickerRef || !this._datepickerRef.instance) {\n return;\n }\n\n if (changes.minDate) {\n this._datepickerRef.instance.minDate = this.minDate;\n this.setConfig();\n }\n\n if (changes.maxDate) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n this.setConfig();\n }\n\n if (changes.datesDisabled) {\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\n this.setConfig();\n }\n\n if (changes.datesEnabled) {\n this._datepickerRef.instance.datesEnabled = this.datesEnabled;\n this._datepickerRef.instance.value = this._bsValue;\n }\n\n if (changes.isDisabled) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n this.setConfig();\n }\n\n if (changes.dateCustomClasses) {\n this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\n this.setConfig();\n }\n\n if (changes.dateTooltipTexts) {\n this._datepickerRef.instance.dateTooltipTexts = this.dateTooltipTexts;\n this.setConfig();\n }\n }\n\n /**\n * Set config for datepicker\n */\n setConfig(): void {\n if (this._datepicker) {\n this._datepicker.hide();\n }\n\n this._config = Object.assign({}, this._config, this.misConfig, {\n value: this._bsValue,\n isDisabled: this.isDisabled,\n minDate: this.minDate || this.misConfig && this.misConfig.minDate,\n maxDate: this.maxDate || this.misConfig && this.misConfig.maxDate,\n dateCustomClasses: this.dateCustomClasses || this.misConfig && this.misConfig.dateCustomClasses,\n dateTooltipTexts: this.dateTooltipTexts || this.misConfig && this.misConfig.dateTooltipTexts,\n datesDisabled: this.datesDisabled || this.misConfig && this.misConfig.datesDisabled,\n datesEnabled: this.datesEnabled || this.misConfig && this.misConfig.datesEnabled\n });\n\n\n this._datepickerRef = this._datepicker\n .provide({provide: MisDatePickerConfig, useValue: this._config})\n .attach(MisDatePickerInlineContainerComponent)\n .to(this._elementRef)\n .show();\n }\n\n ngOnDestroy(): any {\n this._datepicker.dispose();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MisDatePickerConfig } from './bs-datepicker.config';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MisDateRangePickerInlineConfig extends MisDatePickerConfig {\n // DatePickerRenderOptions\n displayMonths = 2;\n /** turn on/off animation */\n isAnimated = false;\n}\n","import { Component, ElementRef, EventEmitter, OnDestroy, OnInit, Renderer2 } from '@angular/core';\n\nimport { take } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\n\nimport { getFullYear, getMonth } from '../../sub-components/chronos';\nimport { PositioningService } from '../../sub-components/positioning';\n\nimport { MisDatePickerAbstractComponent } from '../../base/bs-datepicker-container';\nimport { MisDatePickerConfig } from '../../bs-datepicker.config';\nimport { CalendarCellViewModel, DayViewModel } from '../../models';\nimport { MisDatePickerActions } from '../../reducer/bs-datepicker.actions';\nimport { MisDatePickerEffects } from '../../reducer/bs-datepicker.effects';\nimport { MisDatePickerStore } from '../../reducer/bs-datepicker.store';\nimport { datepickerAnimation } from '../../datepicker-animations';\nimport { BsCustomDates } from './bs-custom-dates-view.component';\n\n@Component({\n selector: 'mis-daterangepicker-container',\n providers: [MisDatePickerStore, MisDatePickerEffects],\n templateUrl: './bs-datepicker-view.html',\n host: {\n class: 'bottom',\n '(click)': '_stopPropagation($event)',\n role: 'dialog',\n 'aria-label': 'calendar'\n },\n animations: [datepickerAnimation]\n})\nexport class MisDateRangePickerContainerComponent extends MisDatePickerAbstractComponent\n implements OnInit, OnDestroy {\n set value(value: Date[]) {\n this._effects.setRangeValue(value);\n }\n\n valueChange = new EventEmitter<Date[]>();\n animationState = 'void';\n\n _rangeStack: Date[] = [];\n chosenRange: Date[] = [];\n _subs: Subscription[] = [];\n\n constructor(\n private _renderer: Renderer2,\n private _config: MisDatePickerConfig,\n private _store: MisDatePickerStore,\n private _element: ElementRef,\n private _actions: MisDatePickerActions,\n _effects: MisDatePickerEffects,\n private _positionService: PositioningService\n ) {\n super();\n this._effects = _effects;\n\n this.customRanges = this._config.ranges;\n this.customRangeBtnLbl = this._config.customRangeButtonLabel;\n\n _renderer.setStyle(_element.nativeElement, 'display', 'block');\n _renderer.setStyle(_element.nativeElement, 'position', 'absolute');\n }\n\n ngOnInit(): void {\n this._positionService.setOptions({\n modifiers: { flip: { enabled: this._config.adaptivePosition } },\n allowedPositions: ['top', 'bottom']\n });\n\n this._positionService.event$\n .pipe(\n take(1)\n )\n .subscribe(() => {\n this._positionService.disable();\n\n if (this._config.isAnimated) {\n this.animationState = this.isTopPosition ? 'animated-up' : 'animated-down';\n\n return;\n }\n\n this.animationState = 'unanimated';\n });\n this.containerClass = this._config.containerClass;\n this.isOtherMonthsActive = this._config.selectFromOtherMonth;\n this._effects\n .init(this._store)\n // intial state options\n // todo: fix this, split configs\n .setOptions(this._config)\n // data binding view --> model\n .setBindings(this)\n // set event handlers\n .setEventHandlers(this)\n .registerDatePickerSideEffects();\n\n // todo: move it somewhere else\n // on selected date change\n this._subs.push(\n this._store\n .select(state => state.selectedRange)\n .subscribe(date => {\n this.chosenRange = date;\n if(this._config.emitOnDateRangeSelect){\n this.valueChange.emit(date)\n }\n })\n );\n }\n\n get isTopPosition(): boolean {\n return this._element.nativeElement.classList.contains('top');\n }\n\n positionServiceEnable(): void {\n this._positionService.enable();\n }\n\n daySelectHandler(day: DayViewModel): void {\n if (!day) {\n return;\n }\n const isDisabled = this.isOtherMonthsActive ? day.isDisabled : (day.isOtherMonth || day.isDisabled);\n\n if (isDisabled) {\n return;\n }\n this.rangesProcessing(day);\n }\n dayApplyHandler(day: DayViewModel): void {\n this.valueChange.emit(this.chosenRange);\n }\n monthSelectHandler(day: CalendarCellViewModel): void {\n if (!day) {\n return;\n }\n\n day.isSelected = true;\n\n if (this._config.minMode !== 'month') {\n if (day.isDisabled) {\n return;\n }\n this._store.dispatch(\n this._actions.navigateTo({\n unit: {\n month: getMonth(day.date),\n year: getFullYear(day.date)\n },\n viewMode: 'day'\n })\n );\n\n return;\n }\n this.rangesProcessing(day);\n }\n\n yearSelectHandler(day: CalendarCellViewModel): void {\n if (!day) {\n return;\n }\n\n day.isSelected = true;\n\n if (this._config.minMode !== 'year') {\n if (day.isDisabled) {\n return;\n }\n this._store.dispatch(\n this._actions.navigateTo({\n unit: {\n year: getFullYear(day.date)\n },\n viewMode: 'month'\n })\n );\n\n return;\n }\n this.rangesProcessing(day);\n }\n\n rangesProcessing(day: CalendarCellViewModel): void {\n // if only one date is already selected\n // and user clicks on previous date\n // start selection from new date\n // but if new date is after initial one\n // than finish selection\n\n if (this._rangeStack.length === 1) {\n this._rangeStack =\n day.date >= this._rangeStack[0]\n ? [this._rangeStack[0], day.date]\n : [day.date];\n }\n\n if (this._rangeStack.length === 0) {\n this._rangeStack = [day.date];\n\n if (this._config.maxDateRange) {\n this.setMaxDateRangeOnCalendar(day.date);\n }\n }\n\n this._store.dispatch(this._actions.selectRange(this._rangeStack));\n\n if (this._rangeStack.length === 2) {\n this._rangeStack = [];\n }\n }\n\n ngOnDestroy(): void {\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n this._effects.destroy();\n }\n cancel(){\n this._renderer.setStyle(this._element.nativeElement, 'display', 'none');\n }\n\n setRangeOnCalendar(dates: BsCustomDates): void {\n this._rangeStack = (dates === null) ? [] : (dates.value instanceof Date ? [dates.value] : dates.value);\n this._store.dispatch(this._actions.selectRange(this._rangeStack));\n }\n\n setMaxDateRangeOnCalendar(currentSelection: Date): void {\n const maxDateRange = new Date(currentSelection);\n maxDateRange.setDate(currentSelection.getDate() + this._config.maxDateRange);\n this._effects.setMaxDate(maxDateRange);\n }\n\n}\n","import { OnInit, OnDestroy, ElementRef, Component, Renderer2 } from '@angular/core';\nimport { MisDateRangePickerContainerComponent } from './bs-daterangepicker-container.component';\n\nimport { MisDatePickerActions } from '../../reducer/bs-datepicker.actions';\nimport { MisDatePickerConfig } from '../../bs-datepicker.config';\nimport { MisDatePickerEffects } from '../../reducer/bs-datepicker.effects';\nimport { MisDatePickerStore } from '../../reducer/bs-datepicker.store';\n\nimport { PositioningService } from '../../sub-components/positioning';\nimport { datepickerAnimation } from '../../datepicker-animations';\n\n@Component({\n selector: 'mis-daterangepicker-inline-container',\n providers: [MisDatePickerStore, MisDatePickerEffects],\n templateUrl: './bs-datepicker-view.html',\n host: {\n '(click)': '_stopPropagation($event)'\n },\n animations: [datepickerAnimation]\n})\nexport class MisDateRangePickerInlineContainerComponent extends MisDateRangePickerContainerComponent\n implements OnInit, OnDestroy {\n\n constructor(\n _renderer: Renderer2,\n _config: MisDatePickerConfig,\n _store: MisDatePickerStore,\n _element: ElementRef,\n _actions: MisDatePickerActions,\n _effects: MisDatePickerEffects,\n _positioningService: PositioningService\n ) {\n super(_renderer, _config, _store, _element, _actions, _effects, _positioningService);\n\n _renderer.setStyle(_element.nativeElement, 'display', 'inline-block');\n _renderer.setStyle(_element.nativeElement, 'position', 'static');\n }\n}\n","import {\n ComponentRef, Directive, ElementRef, EventEmitter, Input, OnChanges,\n OnDestroy, OnInit, Output, Renderer2, SimpleChanges, ViewContainerRef\n} from '@angular/core';\n\nimport { ComponentLoader, ComponentLoaderFactory } from './sub-components/component-loader';\n\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { MisDatePickerConfig } from './bs-datepicker.config';\nimport { MisDateRangePickerInlineConfig } from './bs-daterangepicker-inline.config';\nimport { MisDateRangePickerInlineContainerComponent } from './themes/bs/bs-daterangepicker-inline-container.component';\nimport { DatePickerDateCustomClasses } from './models';\n\n@Directive({\n selector: 'mis-daterangepicker-inline',\n exportAs: 'misDateRangePickerInline'\n})\nexport class MisDateRangePickerInlineDirective implements OnInit, OnDestroy, OnChanges {\n _bsValue: Date[];\n /**\n * Initial value of datepicker\n */\n @Input()\n set bsValue(value: Date[]) {\n if (this._bsValue === value) {\n return;\n }\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n\n /**\n * Config object for datepicker\n */\n @Input() misConfig: Partial<MisDateRangePickerInlineConfig>;\n /**\n * Indicates whether datepicker is enabled or not\n */\n @Input() isDisabled: boolean;\n /**\n * Minimum date which is available for selection\n */\n @Input() minDate: Date;\n /**\n * Maximum date which is available for selection\n */\n @Input() maxDate: Date;\n /**\n * Date custom classes\n */\n @Input() dateCustomClasses: DatePickerDateCustomClasses[];\n /**\n * Disable specific days, e.g. [0,6] will disable all Saturdays and Sundays\n */\n @Input() daysDisabled?: number[];\n /**\n * Disable specific dates\n */\n @Input() datesDisabled: Date[];\n /**\n * Disable specific dates\n */\n @Input() datesEnabled: Date[];\n /**\n * Emits when daterangepicker value has been changed\n */\n @Output() bsValueChange: EventEmitter<Date[]> = new EventEmitter();\n\n protected _subs: Subscription[] = [];\n\n private _datepicker: ComponentLoader<MisDateRangePickerInlineContainerComponent>;\n private _datepickerRef: ComponentRef<MisDateRangePickerInlineContainerComponent>;\n\n constructor(\n public _config: MisDateRangePickerInlineConfig,\n private _elementRef: ElementRef,\n _renderer: Renderer2,\n _viewContainerRef: ViewContainerRef,\n cis: ComponentLoaderFactory\n ) {\n // todo: assign only subset of fields\n Object.assign(this, this._config);\n this._datepicker = cis.createLoader<MisDateRangePickerInlineContainerComponent>(\n _elementRef,\n _viewContainerRef,\n _renderer\n );\n }\n\n ngOnInit(): void {\n this.setConfig();\n\n // if date changes from external source (model -> view)\n this._subs.push(\n this.bsValueChange.subscribe((value: Date[]) => {\n this._datepickerRef.instance.value = value;\n })\n );\n\n // if date changes from picker (view -> model)\n this._subs.push(\n this._datepickerRef.instance.valueChange\n .pipe(\n filter((range: Date[]) => range && range[0] && !!range[1])\n )\n .subscribe((value: Date[]) => {\n this.bsValue = value;\n })\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this._datepickerRef || !this._datepickerRef.instance) {\n return;\n }\n\n if (changes.minDate) {\n this._datepickerRef.instance.minDate = this.minDate;\n this.setConfig();\n }\n\n if (changes.maxDate) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n this.setConfig();\n }\n\n if (changes.datesEnabled) {\n this._datepickerRef.instance.datesEnabled = this.datesEnabled;\n }\n\n if (changes.datesDisabled) {\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\n this.setConfig();\n }\n\n if (changes.daysDisabled) {\n this._datepickerRef.instance.daysDisabled = this.daysDisabled;\n this.setConfig();\n }\n\n if (changes.isDisabled) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n this.setConfig();\n }\n\n if (changes.dateCustomClasses) {\n this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\n this.setConfig();\n }\n }\n\n /**\n * Set config for datepicker\n */\n setConfig(): void {\n if (this._datepicker) {\n this._datepicker.hide();\n }\n\n this._config = Object.assign({}, this._config, this.misConfig, {\n value: this._bsValue,\n isDisabled: this.isDisabled,\n minDate: this.minDate || this.misConfig && this.misConfig.minDate,\n maxDate: this.maxDate || this.misConfig && this.misConfig.maxDate,\n daysDisabled: this.daysDisabled || this.misConfig && this.misConfig.daysDisabled,\n dateCustomClasses: this.dateCustomClasses || this.misConfig && this.misConfig.dateCustomClasses,\n datesDisabled: this.datesDisabled || this.misConfig && this.misConfig.datesDisabled,\n datesEnabled: this.datesEnabled || this.misConfig && this.misConfig.datesEnabled,\n ranges: this.misConfig && this.misConfig.ranges,\n maxDateRange: this.misConfig && this.misConfig.maxDateRange\n });\n\n\n this._datepickerRef = this._datepicker\n .provide({ provide: MisDatePickerConfig, useValue: this._config })\n .attach(MisDateRangePickerInlineContainerComponent)\n .to(this._elementRef)\n .show();\n }\n\n ngOnDestroy(): any {\n this._datepicker.dispose();\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n forwardRef,\n Host,\n OnDestroy,\n OnInit,\n Provider,\n Renderer2\n} from '@angular/core';\n\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\n\nimport {\n formatDate,\n getLocale,\n isAfter,\n isBefore,\n isDate,\n isDateValid,\n parseDate,\n utcAsLocal\n} from './sub-components/chronos';\n\nimport { MisDatePickerDirective } from './bs-datepicker.component';\nimport { BsLocaleService } from './bs-locale.service';\nimport { Subscription } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\nconst BS_DATEPICKER_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => MisDatePickerInputDirective),\n multi: true\n};\n\nconst BS_DATEPICKER_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => MisDatePickerInputDirective),\n multi: true\n};\n\n@Directive({\n selector: `input[misDatePicker]`,\n host: {\n '(change)': 'onChange($event)',\n '(keyup.esc)': 'hide()',\n '(keydown)': 'onKeydownEvent($event)',\n '(blur)': 'onBlur()'\n },\n providers: [BS_DATEPICKER_VALUE_ACCESSOR, BS_DATEPICKER_VALIDATOR]\n})\nexport class MisDatePickerInputDirective\n implements ControlValueAccessor, Validator, OnInit, OnDestroy {\n private _onChange = Function.prototype;\n private _onTouched = Function.prototype;\n /* tslint:disable-next-line: no-unused-variable */\n private _validatorChange = Function.prototype;\n private _value: Date;\n private _subs = new Subscription();\n\n constructor(@Host() private _picker: MisDatePickerDirective,\n private _localeService: BsLocaleService,\n private _renderer: Renderer2,\n private _elRef: ElementRef,\n private changeDetection: ChangeDetectorRef) {}\n\n ngOnInit() {\n // update input value on datepicker value update\n this._subs.add(\n this._picker.bsValueChange.subscribe((value: Date) => {\n this._setInputValue(value);\n if (this._value !== value) {\n this._value = value;\n this._onChange(value);\n this._onTouched();\n }\n this.changeDetection.markForCheck();\n })\n );\n\n // update input value on locale change\n this._subs.add(\n this._localeService.localeChange.subscribe(() => {\n this._setInputValue(this._value);\n })\n );\n\n this._subs.add(\n this._picker.dateInputFormat$.pipe(distinctUntilChanged()).subscribe(() => {\n this._setInputValue(this._value);\n })\n );\n}\n\n ngOnDestroy() {\n this._subs.unsubscribe();\n }\n\n onKeydownEvent(event) {\n if (event.keyCode === 13 || event.code === 'Enter') {\n this.hide();\n }\n }\n\n _setInputValue(value: Date): void {\n const initialDate = !value ? ''\n : formatDate(value, this._picker._config.dateInputFormat, this._localeService.currentLocale);\n\n this._renderer.setProperty(this._elRef.nativeElement, 'value', initialDate);\n }\n\n onChange(event: Event) {\n /* tslint:disable-next-line: no-any*/\n this.writeValue((event.target as any).value);\n this._onChange(this._value);\n if (this._picker._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elRef.nativeElement).focus();\n }\n this._onTouched();\n }\n\n validate(c: AbstractControl): ValidationErrors | null {\n const _value: Date | string = c.value;\n\n /* tslint:disable-next-line: prefer-switch */\n if (_value === null || _value === undefined || _value === '') {\n return null;\n }\n\n if (isDate(_value)) {\n const _isDateValid = isDateValid(_value);\n if (!_isDateValid) {\n return { misDate: { invalid: _value } };\n }\n\n if (this._picker && this._picker.minDate && isBefore(_value, this._picker.minDate, 'date')) {\n this.writeValue(this._picker.minDate);\n\n return { misDate: { minDate: this._picker.minDate } };\n }\n\n if (this._picker && this._picker.maxDate && isAfter(_value, this._picker.maxDate, 'date')) {\n this.writeValue(this._picker.maxDate);\n\n return { misDate: { maxDate: this._picker.maxDate } };\n }\n }\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this._validatorChange = fn;\n }\n\n writeValue(value: Date | string) {\n if (!value) {\n this._value = null;\n } else {\n const _localeKey = this._localeService.currentLocale;\n const _locale = getLocale(_localeKey);\n if (!_locale) {\n throw new Error(\n `Locale \"${_localeKey}\" is not defined, please add it with \"defineLocale(...)\"`\n );\n }\n\n this._value = parseDate(value, this._picker._config.dateInputFormat, this._localeService.currentLocale);\n\n if (this._picker._config.useUtc) {\n this._value = utcAsLocal(this._value);\n }\n }\n\n this._picker.bsValue = this._value;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._picker.isDisabled = isDisabled;\n if (isDisabled) {\n this._renderer.setAttribute(this._elRef.nativeElement, 'disabled', 'disabled');\n\n return;\n }\n this._renderer.removeAttribute(this._elRef.nativeElement, 'disabled');\n }\n\n registerOnChange(fn: () => void): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n onBlur() {\n this._onTouched();\n }\n\n hide() {\n this._picker.hide();\n this._renderer.selectRootElement(this._elRef.nativeElement).blur();\n if (this._picker._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elRef.nativeElement).focus();\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MisDatePickerConfig } from './bs-datepicker.config';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MisDateRangePickerConfig extends MisDatePickerConfig {\n // DatePickerRenderOptions\n displayMonths = 2;\n}\n","import {\n AfterViewInit, ComponentRef,\n Directive, ElementRef, EventEmitter,\n Input, OnChanges, OnDestroy, OnInit,\n Output, Renderer2, SimpleChanges,\n ViewContainerRef\n} from '@angular/core';\nimport { MisDateRangePickerConfig } from './bs-daterangepicker.config';\nimport { MisDateRangePickerContainerComponent } from './themes/bs/bs-daterangepicker-container.component';\nimport { Observable, Subscription, Subject, BehaviorSubject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { ComponentLoaderFactory, ComponentLoader } from './sub-components/component-loader';\nimport { MisDatePickerConfig } from './bs-datepicker.config';\nimport { DatePickerDateCustomClasses } from './models';\n\n@Directive({\n selector: '[misDateRangePicker]',\n exportAs: 'misDateRangePicker'\n})\nexport class MisDateRangePickerDirective\n implements OnInit, OnDestroy, OnChanges, AfterViewInit {\n /**\n * Placement of a daterangepicker. Accepts: \"top\", \"bottom\", \"left\", \"right\"\n */\n @Input() placement: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\n /**\n * Specifies events that should trigger. Supports a space separated list of\n * event names.\n */\n @Input() triggers = 'click';\n /**\n * Close daterangepicker on outside click\n */\n @Input() outsideClick = true;\n /**\n * A selector specifying the element the daterangepicker should be appended to.\n */\n @Input() container = 'body';\n\n @Input() outsideEsc = true;\n\n /**\n * Returns whether or not the daterangepicker is currently being shown\n */\n @Input()\n get isOpen(): boolean {\n return this._datepicker.isShown;\n }\n\n set isOpen(value: boolean) {\n this.isOpen$.next(value);\n }\n\n /**\n * Emits an event when the daterangepicker is shown\n */\n /* tslint:disable-next-line: no-any*/\n @Output() onShown: EventEmitter<any>;\n /**\n * Emits an event when the daterangepicker is hidden\n */\n /* tslint:disable-next-line: no-any*/\n @Output() onHidden: EventEmitter<any>;\n\n _bsValue: Date[];\n isOpen$: BehaviorSubject<boolean>;\n isDestroy$: Subject<void>;\n\n /**\n * Initial value of daterangepicker\n */\n @Input()\n set bsValue(value: Date[]) {\n if (this._bsValue === value) {\n return;\n }\n this._bsValue = value;\n this.bsValueChange.emit(value);\n }\n\n /**\n * Config object for daterangepicker\n */\n @Input() set misConfig(misConfig: Partial<MisDateRangePickerConfig>) {\n this._misConfig = misConfig;\n this.setConfig();\n this._rangeInputFormat$.next(misConfig && misConfig.rangeInputFormat);\n }\n get misConfig(): Partial<MisDateRangePickerConfig> {\n return this._misConfig;\n }\n /**\n * Indicates whether daterangepicker's content is enabled or not\n */\n @Input() isDisabled: boolean;\n /**\n * Minimum date which is available for selection\n */\n @Input() minDate: Date;\n /**\n * Maximum date which is available for selection\n */\n @Input() maxDate: Date;\n /**\n * Date custom classes\n */\n @Input() dateCustomClasses: DatePickerDateCustomClasses[];\n /**\n * Disable specific days, e.g. [0,6] will disable all Saturdays and Sundays\n */\n @Input() daysDisabled?: number[];\n /**\n * Disable specific dates\n */\n @Input() datesDisabled: Date[];\n\n /**\n * Enable specific dates\n */\n @Input() datesEnabled: Date[];\n /**\n * Emits when daterangepicker value has been changed\n */\n @Output() bsValueChange: EventEmitter<Date[]> = new EventEmitter();\n\n get rangeInputFormat$(): Observable<string> {\n return this._rangeInputFormat$;\n }\n\n protected _subs: Subscription[] = [];\n private _datepicker: ComponentLoader<MisDateRangePickerContainerComponent>;\n private _datepickerRef: ComponentRef<MisDateRangePickerContainerComponent>;\n private _misConfig: Partial<MisDateRangePickerConfig>;\n private readonly _rangeInputFormat$ = new Subject<string>();\n\n constructor(public _config: MisDateRangePickerConfig,\n private _elementRef: ElementRef,\n private _renderer: Renderer2,\n _viewContainerRef: ViewContainerRef,\n cis: ComponentLoaderFactory) {\n this._datepicker = cis.createLoader<MisDateRangePickerContainerComponent>(\n _elementRef,\n _viewContainerRef,\n _renderer\n );\n Object.assign(this, _config);\n this.onShown = this._datepicker.onShown;\n this.onHidden = this._datepicker.onHidden;\n this.isOpen$ = new BehaviorSubject(this.isOpen);\n }\n\n ngOnInit(): void {\n this.isDestroy$ = new Subject();\n this._datepicker.listen({\n outsideClick: this.outsideClick,\n outsideEsc: this.outsideEsc,\n triggers: this.triggers,\n show: () => this.show()\n });\n this.setConfig();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this._datepickerRef || !this._datepickerRef.instance) {\n return;\n }\n if (changes.minDate) {\n this._datepickerRef.instance.minDate = this.minDate;\n }\n if (changes.maxDate) {\n this._datepickerRef.instance.maxDate = this.maxDate;\n }\n if (changes.datesDisabled) {\n this._datepickerRef.instance.datesDisabled = this.datesDisabled;\n }\n if (changes.datesEnabled) {\n this._datepickerRef.instance.datesEnabled = this.datesEnabled;\n }\n if (changes.daysDisabled) {\n this._datepickerRef.instance.daysDisabled = this.daysDisabled;\n }\n if (changes.isDisabled) {\n this._datepickerRef.instance.isDisabled = this.isDisabled;\n }\n if (changes.dateCustomClasses) {\n this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;\n }\n }\n\n ngAfterViewInit(): void {\n this.isOpen$.pipe(\n filter(isOpen => isOpen !== this.isOpen),\n takeUntil(this.isDestroy$)\n )\n .subscribe(() => this.toggle());\n }\n\n /**\n * Opens an element’s datepicker. This is considered a “manual” triggering of\n * the datepicker.\n */\n show(): void {\n if (this._datepicker.isShown) {\n return;\n }\n\n this.setConfig();\n\n this._datepickerRef = this._datepicker\n .provide({ provide: MisDatePickerConfig, useValue: this._config })\n .attach(MisDateRangePickerContainerComponent)\n .to(this.container)\n .position({ attachment: this.placement })\n .show({ placement: this.placement });\n\n // if date changes from external source (model -> view)\n this._subs.push(\n this.bsValueChange.subscribe((value: Date[]) => {\n this._datepickerRef.instance.value = value;\n })\n );\n\n // if date changes from picker (view -> model)\n this._subs.push(\n this._datepickerRef.instance.valueChange\n .pipe(\n filter((range: Date[]) => range && range[0] && !!range[1])\n )\n .subscribe((value: Date[]) => {\n this.bsValue = value;\n this.hide();\n })\n );\n }\n\n /**\n * Set config for daterangepicker\n */\n setConfig() {\n this._config = Object.assign(\n {},\n this._config,\n this.misConfig,\n {\n value: this._bsValue,\n isDisabled: this.isDisabled,\n minDate: this.minDate || this.misConfig && this.misConfig.minDate,\n maxDate: this.maxDate || this.misConfig && this.misConfig.maxDate,\n daysDisabled: this.daysDisabled || this.misConfig && this.misConfig.daysDisabled,\n dateCustomClasses: this.dateCustomClasses || this.misConfig && this.misConfig.dateCustomClasses,\n datesDisabled: this.datesDisabled || this.misConfig && this.misConfig.datesDisabled,\n datesEnabled: this.datesEnabled || this.misConfig && this.misConfig.datesEnabled,\n ranges: this.misConfig && this.misConfig.ranges,\n maxDateRange: this.misConfig && this.misConfig.maxDateRange\n }\n );\n }\n\n /**\n * Closes an element’s datepicker. This is considered a “manual” triggering of\n * the datepicker.\n */\n hide(): void {\n if (this.isOpen) {\n this._datepicker.hide();\n }\n for (const sub of this._subs) {\n sub.unsubscribe();\n }\n\n if (this._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elementRef.nativeElement).focus();\n }\n }\n\n /**\n * Toggles an element’s datepicker. This is considered a “manual” triggering\n * of the datepicker.\n */\n toggle(): void {\n if (this.isOpen) {\n return this.hide();\n }\n\n this.show();\n }\n\n ngOnDestroy(): void {\n this._datepicker.dispose();\n this.isOpen$.next(false);\n if (this.isDestroy$) {\n this.isDestroy$.next();\n this.isDestroy$.complete();\n }\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n forwardRef,\n Host,\n OnDestroy,\n OnInit,\n Provider,\n Renderer2\n} from '@angular/core';\n\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator\n} from '@angular/forms';\n\nimport {\n parseDate,\n formatDate,\n getLocale,\n isAfter,\n isBefore,\n isArray,\n isDateValid,\n utcAsLocal\n} from './sub-components/chronos';\n\nimport { MisDateRangePickerDirective } from './bs-daterangepicker.component';\nimport { BsLocaleService } from './bs-locale.service';\nimport { Subscription } from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\nconst BS_DATERANGEPICKER_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => MisDateRangePickerInputDirective),\n multi: true\n};\n\nconst BS_DATERANGEPICKER_VALIDATOR: Provider = {\n provide: NG_VALIDATORS,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => MisDateRangePickerInputDirective),\n multi: true\n};\n\n\n@Directive({\n selector: `input[misDateRangePicker]`,\n host: {\n '(change)': 'onChange($event)',\n '(keyup.esc)': 'hide()',\n '(keydown)': 'onKeydownEvent($event)',\n '(blur)': 'onBlur()'\n },\n providers: [BS_DATERANGEPICKER_VALUE_ACCESSOR, BS_DATERANGEPICKER_VALIDATOR]\n})\nexport class MisDateRangePickerInputDirective\n implements ControlValueAccessor, Validator, OnInit, OnDestroy {\n private _onChange = Function.prototype;\n private _onTouched = Function.prototype;\n /* tslint:disable-next-line: no-unused-variable */\n private _validatorChange = Function.prototype;\n private _value: Date[];\n private _subs = new Subscription();\n\n constructor(@Host() private _picker: MisDateRangePickerDirective,\n private _localeService: BsLocaleService,\n private _renderer: Renderer2,\n private _elRef: ElementRef,\n private changeDetection: ChangeDetectorRef) {\n }\n\n ngOnInit() {\n // update input value on datepicker value update\n this._subs.add(\n this._picker.bsValueChange.subscribe((value: Date[]) => {\n this._setInputValue(value);\n if (this._value !== value) {\n this._value = value;\n this._onChange(value);\n this._onTouched();\n }\n this.changeDetection.markForCheck();\n }));\n\n // update input value on locale change\n this._subs.add(this._localeService.localeChange.subscribe(() => {\n this._setInputValue(this._value);\n }));\n\n this._subs.add(\n // update input value on format change\n this._picker.rangeInputFormat$.pipe(distinctUntilChanged()).subscribe(() => {\n this._setInputValue(this._value);\n }));\n }\n\n ngOnDestroy() {\n this._subs.unsubscribe();\n }\n\n onKeydownEvent(event:any) {\n if (event.keyCode === 13 || event.code === 'Enter') {\n this.hide();\n }\n }\n\n _setInputValue(date: Date[]): void {\n let range = '';\n if (date) {\n const start: string = !date[0] ? ''\n : formatDate(date[0],\n this._picker._config.rangeInputFormat,\n this._localeService.currentLocale\n );\n const end: string = !date[1] ? ''\n : formatDate(\n date[1],\n this._picker._config.rangeInputFormat,\n this._localeService.currentLocale\n );\n range = (start && end) ? start + this._picker._config.rangeSeparator + end : '';\n }\n this._renderer.setProperty(this._elRef.nativeElement, 'value', range);\n }\n\n onChange(event: Event) {\n /* tslint:disable-next-line: no-any*/\n this.writeValue((event.target as any).value);\n this._onChange(this._value);\n if (this._picker._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elRef.nativeElement).focus();\n }\n this._onTouched();\n }\n\n validate(c: AbstractControl): ValidationErrors | null {\n const _value: [Date, Date] = c.value;\n const errors: object[] = [];\n\n if (_value === null || _value === undefined || !isArray(_value)) {\n return null;\n }\n\n // @ts-ignore\n _value.sort((a, b) => a - b);\n\n const _isFirstDateValid = isDateValid(_value[0]);\n const _isSecondDateValid = isDateValid(_value[1]);\n\n if (!_isFirstDateValid) {\n return { misDate: { invalid: _value[0] } };\n }\n\n if (!_isSecondDateValid) {\n return { misDate: { invalid: _value[1] } };\n }\n\n if (this._picker && this._picker.minDate && isBefore(_value[0], this._picker.minDate, 'date')) {\n _value[0] = this._picker.minDate;\n errors.push({ misDate: { minDate: this._picker.minDate } });\n }\n\n if (this._picker && this._picker.maxDate && isAfter(_value[1], this._picker.maxDate, 'date')) {\n _value[1] = this._picker.maxDate;\n errors.push({ misDate: { maxDate: this._picker.maxDate } });\n }\n if (errors.length > 0) {\n this.writeValue(_value);\n\n return errors;\n }\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this._validatorChange = fn;\n }\n\n writeValue(value: Date[] | string) {\n if (!value) {\n this._value = null;\n } else {\n const _localeKey = this._localeService.currentLocale;\n const _locale = getLocale(_localeKey);\n if (!_locale) {\n throw new Error(\n `Locale \"${_localeKey}\" is not defined, please add it with \"defineLocale(...)\"`\n );\n }\n\n let _input: (string | Date)[] = [];\n if (typeof value === 'string') {\n const trimmedSeparator = this._picker._config.rangeSeparator.trim();\n _input = value\n .split(trimmedSeparator.length > 0 ? trimmedSeparator : this._picker._config.rangeSeparator)\n .map(_val => _val.trim());\n }\n\n if (Array.isArray(value)) {\n _input = value;\n }\n\n this._value = _input\n .map((_val: string | Date): Date => {\n if (this._picker._config.useUtc) {\n return utcAsLocal(\n parseDate(_val, this._picker._config.rangeInputFormat, this._localeService.currentLocale)\n );\n }\n\n return parseDate(_val, this._picker._config.rangeInputFormat, this._localeService.currentLocale);\n }\n )\n .map((date: Date) => (isNaN(date.valueOf()) ? null : date));\n }\n\n this._picker.bsValue = this._value;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._picker.isDisabled = isDisabled;\n if (isDisabled) {\n this._renderer.setAttribute(this._elRef.nativeElement, 'disabled', 'disabled');\n\n return;\n }\n this._renderer.removeAttribute(this._elRef.nativeElement, 'disabled');\n }\n\n /* tslint:disable-next-line: no-any*/\n registerOnChange(fn: () => void): void {\n this._onChange = fn;\n }\n\n /* tslint:disable-next-line: no-any*/\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n onBlur() {\n this._onTouched();\n }\n\n hide() {\n this._picker.hide();\n this._renderer.selectRootElement(this._elRef.nativeElement).blur();\n\n if (this._picker._config.returnFocusToInput) {\n this._renderer.selectRootElement(this._elRef.nativeElement).focus();\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\n/** Default values provider for tooltip */\n@Injectable({\n providedIn: 'root'\n})\nexport class TooltipConfig {\n /** sets disable adaptive position */\n adaptivePosition = true;\n /** tooltip placement, supported positions: 'top', 'bottom', 'left', 'right' */\n placement = 'top';\n /** array of event names which triggers tooltip opening */\n triggers = 'hover focus';\n /** a selector specifying the element the tooltip should be appended to. */\n container: string;\n /** delay before showing the tooltip */\n delay = 0;\n}\n","import {\n AfterViewInit,\n Component,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { TooltipConfig } from './tooltip.config';\nimport { isBs3 } from '../utils';\n\n@Component({\n selector: 'mis-tooltip-container',\n changeDetection: ChangeDetectionStrategy.OnPush,\n // tslint:disable-next-line\n host: {\n '[class]':\n '\"tooltip in tooltip-\" + placement + \" \" + \"bs-tooltip-\" + placement + \" \" + placement + \" \" + containerClass',\n '[class.show]': '!isBs3',\n '[class.bs3]': 'isBs3',\n '[attr.id]': 'this.id',\n role: 'tooltip'\n },\n styles: [\n `\n :host.tooltip {\n display: block;\n pointer-events: none;\n }\n :host.bs3.tooltip.top>.arrow {\n margin-left: -2px;\n }\n :host.bs3.tooltip.bottom {\n margin-top: 0px;\n }\n :host.bs3.bs-tooltip-left, :host.bs3.bs-tooltip-right{\n margin: 1rem;\n }\n :host.bs3.bs-tooltip-right .arrow, :host.bs3.bs-tooltip-left .arrow {\n margin: 1rem;\n }\n `\n ],\n template: `\n <div class=\"tooltip-arrow arrow\"></div>\n <div class=\"tooltip-inner\"><ng-content></ng-content></div>\n `\n})\nexport class TooltipContainerComponent implements AfterViewInit {\n classMap: { [key: string]: boolean };\n placement: string;\n containerClass: string;\n animation: boolean;\n id: string;\n\n get isBs3(): boolean {\n return isBs3();\n }\n\n constructor(config: TooltipConfig) {\n Object.assign(this, config);\n }\n\n ngAfterViewInit(): void {\n this.classMap = { in: false, fade: false };\n this.classMap[this.placement] = true;\n this.classMap[`tooltip-${this.placement}`] = true;\n\n this.classMap.in = true;\n if (this.animation) {\n this.classMap.fade = true;\n }\n\n if (this.containerClass) {\n this.classMap[this.containerClass] = true;\n }\n }\n}\n","/* tslint:disable: max-file-line-count deprecation */\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n TemplateRef,\n ViewContainerRef\n} from '@angular/core';\n\nimport { TooltipContainerComponent } from './tooltip-container.component';\nimport { TooltipConfig } from './tooltip.config';\n\nimport { ComponentLoader, ComponentLoaderFactory } from '../component-loader';\nimport { OnChange, warnOnce, parseTriggers, Trigger } from '../utils';\nimport { PositioningService } from '../positioning';\n\nimport { timer, Subscription } from 'rxjs';\n\nlet id = 0;\n\n@Directive({\n selector: '[tooltip], [tooltipHtml]',\n exportAs: 'mis-tooltip'\n})\nexport class TooltipDirective implements OnInit, OnDestroy {\n tooltipId = id++;\n /** sets disable adaptive position */\n @Input() adaptivePosition: boolean;\n /**\n * Content to be displayed as tooltip.\n */\n @OnChange()\n @Input()\n /* tslint:disable-next-line:no-any */\n tooltip: string | TemplateRef<any>;\n /** Fired when tooltip content changes */\n @Output()\n /* tslint:disable-next-line:no-any */\n tooltipChange: EventEmitter<string | TemplateRef<any>> = new EventEmitter();\n\n /**\n * Placement of a tooltip. Accepts: \"top\", \"bottom\", \"left\", \"right\"\n */\n @Input() placement: string;\n /**\n * Specifies events that should trigger. Supports a space separated list of\n * event names.\n */\n @Input() triggers: string;\n /**\n * A selector specifying the element the tooltip should be appended to.\n */\n @Input() container: string;\n /**\n * Css class for tooltip container\n */\n @Input() containerClass = '';\n @Input() boundariesElement: ('viewport' | 'scrollParent' | 'window');\n /**\n * Returns whether or not the tooltip is currently being shown\n */\n @Input()\n get isOpen(): boolean {\n return this._tooltip.isShown;\n }\n\n set isOpen(value: boolean) {\n if (value) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n /**\n * Allows to disable tooltip\n */\n @Input() isDisabled: boolean;\n\n /**\n * Delay before showing the tooltip\n */\n @Input() delay: number;\n\n /**\n * Emits an event when the tooltip is shown\n */\n /* tslint:disable-next-line:no-any */\n @Output() onShown: EventEmitter<any>;\n /**\n * Emits an event when the tooltip is hidden\n */\n /* tslint:disable-next-line:no-any */\n @Output() onHidden: EventEmitter<any>;\n\n /** @deprecated - please use `tooltip` instead */\n @Input('tooltipHtml')\n /* tslint:disable-next-line:no-any */\n set htmlContent(value: string | TemplateRef<any>) {\n warnOnce('tooltipHtml was deprecated, please use `tooltip` instead');\n this.tooltip = value;\n }\n\n /** @deprecated - please use `placement` instead */\n @Input('tooltipPlacement')\n set _placement(value: string) {\n warnOnce('tooltipPlacement was deprecated, please use `placement` instead');\n this.placement = value;\n }\n\n /** @deprecated - please use `isOpen` instead */\n @Input('tooltipIsOpen')\n set _isOpen(value: boolean) {\n warnOnce('tooltipIsOpen was deprecated, please use `isOpen` instead');\n this.isOpen = value;\n }\n\n get _isOpen(): boolean {\n warnOnce('tooltipIsOpen was deprecated, please use `isOpen` instead');\n\n return this.isOpen;\n }\n\n /** @deprecated - please use `isDisabled` instead */\n @Input('tooltipEnable')\n set _enable(value: boolean) {\n warnOnce('tooltipEnable was deprecated, please use `isDisabled` instead');\n this.isDisabled = !value;\n }\n\n get _enable(): boolean {\n warnOnce('tooltipEnable was deprecated, please use `isDisabled` instead');\n\n return this.isDisabled;\n }\n\n /** @deprecated - please use `container=\"body\"` instead */\n @Input('tooltipAppendToBody')\n set _appendToBody(value: boolean) {\n warnOnce(\n 'tooltipAppendToBody was deprecated, please use `container=\"body\"` instead'\n );\n this.container = value ? 'body' : this.container;\n }\n\n get _appendToBody(): boolean {\n warnOnce(\n 'tooltipAppendToBody was deprecated, please use `container=\"body\"` instead'\n );\n\n return this.container === 'body';\n }\n\n /** @deprecated - removed, will be added to configuration */\n @Input() tooltipAnimation = true;\n\n /** @deprecated - will replaced with customClass */\n @Input('tooltipClass')\n set _popupClass(value: string) {\n warnOnce('tooltipClass deprecated');\n }\n\n /** @deprecated - removed */\n @Input('tooltipContext')\n /* tslint:disable-next-line:no-any */\n set _tooltipContext(value: any) {\n warnOnce('tooltipContext deprecated');\n }\n\n /** @deprecated */\n @Input('tooltipPopupDelay')\n set _tooltipPopupDelay(value: number) {\n warnOnce('tooltipPopupDelay is deprecated, use `delay` instead');\n this.delay = value;\n }\n\n /** @deprecated */\n @Input() tooltipFadeDuration = 150;\n\n /** @deprecated - please use `triggers` instead */\n @Input('tooltipTrigger')\n get _tooltipTrigger(): string | string[] {\n warnOnce('tooltipTrigger was deprecated, please use `triggers` instead');\n\n return this.triggers;\n }\n\n set _tooltipTrigger(value: string | string[]) {\n warnOnce('tooltipTrigger was deprecated, please use `triggers` instead');\n this.triggers = (value || '').toString();\n }\n\n /** @deprecated */\n @Output()\n tooltipStateChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /* tslint:disable-next-line:no-any */\n protected _delayTimeoutId: number | any;\n protected _tooltipCancelShowFn: Function;\n\n private _tooltip: ComponentLoader<TooltipContainerComponent>;\n private _delaySubscription: Subscription;\n private _ariaDescribedby: string;\n constructor(\n _viewContainerRef: ViewContainerRef,\n cis: ComponentLoaderFactory,\n config: TooltipConfig,\n private _elementRef: ElementRef,\n private _renderer: Renderer2,\n private _positionService: PositioningService\n ) {\n\n this._tooltip = cis\n .createLoader<TooltipContainerComponent>(\n this._elementRef,\n _viewContainerRef,\n this._renderer\n )\n .provide({provide: TooltipConfig, useValue: config});\n\n Object.assign(this, config);\n this.onShown = this._tooltip.onShown;\n this.onHidden = this._tooltip.onHidden;\n }\n\n ngOnInit(): void {\n this._tooltip.listen({\n triggers: this.triggers,\n show: () => this.show()\n });\n /* tslint:disable-next-line:no-any */\n this.tooltipChange.subscribe((value: any) => {\n if (!value) {\n this._tooltip.hide();\n }\n });\n\n this.onShown.subscribe(() => {\n this.setAriaDescribedBy();\n });\n\n this.onHidden.subscribe(() => {\n this.setAriaDescribedBy();\n });\n }\n\n setAriaDescribedBy(): void {\n this._ariaDescribedby = this.isOpen ? `tooltip-${this.tooltipId}` : null;\n\n if (this._ariaDescribedby) {\n this._renderer.setAttribute(this._elementRef.nativeElement, 'aria-describedby', this._ariaDescribedby);\n } else {\n this._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');\n }\n }\n\n /**\n * Toggles an element’s tooltip. This is considered a “manual” triggering of\n * the tooltip.\n */\n toggle(): void {\n if (this.isOpen) {\n return this.hide();\n }\n\n this.show();\n }\n\n /**\n * Opens an element’s tooltip. This is considered a “manual” triggering of\n * the tooltip.\n */\n show(): void {\n this._positionService.setOptions({\n modifiers: {\n flip: {\n enabled: this.adaptivePosition\n },\n preventOverflow: {\n enabled: this.adaptivePosition,\n boundariesElement: this.boundariesElement || 'scrollParent'\n }\n }\n });\n\n if (\n this.isOpen ||\n this.isDisabled ||\n this._delayTimeoutId ||\n !this.tooltip\n ) {\n return;\n }\n\n const showTooltip = () => {\n if (this._delayTimeoutId) {\n this._delayTimeoutId = undefined;\n }\n\n this._tooltip\n .attach(TooltipContainerComponent)\n .to(this.container)\n .position({attachment: this.placement})\n .show({\n content: this.tooltip,\n placement: this.placement,\n containerClass: this.containerClass,\n id: `tooltip-${this.tooltipId}`\n });\n };\n const cancelDelayedTooltipShowing = () => {\n if (this._tooltipCancelShowFn) {\n this._tooltipCancelShowFn();\n }\n };\n\n if (this.delay) {\n if (this._delaySubscription) {\n this._delaySubscription.unsubscribe();\n }\n\n this._delaySubscription = timer(this.delay).subscribe(() => {\n showTooltip();\n cancelDelayedTooltipShowing();\n });\n\n if (this.triggers) {\n parseTriggers(this.triggers)\n .forEach((trigger: Trigger) => {\n this._tooltipCancelShowFn = this._renderer.listen(\n this._elementRef.nativeElement,\n trigger.close,\n () => {\n this._delaySubscription.unsubscribe();\n cancelDelayedTooltipShowing();\n }\n );\n });\n }\n } else {\n showTooltip();\n }\n }\n\n /**\n * Closes an element’s tooltip. This is considered a “manual” triggering of\n * the tooltip.\n */\n hide(): void {\n if (this._delayTimeoutId) {\n clearTimeout(this._delayTimeoutId);\n this._delayTimeoutId = undefined;\n }\n\n if (!this._tooltip.isShown) {\n return;\n }\n\n this._tooltip.instance.classMap.in = false;\n setTimeout(() => {\n this._tooltip.hide();\n }, this.tooltipFadeDuration);\n }\n\n ngOnDestroy(): void {\n this._tooltip.dispose();\n this.tooltipChange.unsubscribe();\n if (this._delaySubscription) {\n this._delaySubscription.unsubscribe();\n }\n this.onShown.unsubscribe();\n this.onHidden.unsubscribe();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\nimport { TooltipContainerComponent } from './tooltip-container.component';\nimport { TooltipDirective } from './tooltip.directive';\nimport { ComponentLoaderFactory } from '../component-loader';\nimport { PositioningService } from '../positioning';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [TooltipDirective, TooltipContainerComponent],\n exports: [TooltipDirective],\n entryComponents: [TooltipContainerComponent]\n})\nexport class TooltipModule {\n static forRoot(): ModuleWithProviders<TooltipModule> {\n return {\n ngModule: TooltipModule,\n providers: [ComponentLoaderFactory, PositioningService]\n };\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mis-calendar-layout',\n template: `\n <!-- current date, will be added in nearest releases -->\n <mis-current-date title=\"hey there\" *ngIf=\"false\"></mis-current-date>\n\n <!--navigation-->\n <div class=\"bs-datepicker-head\">\n <ng-content select=\"mis-datepicker-navigation-view\"></ng-content>\n </div>\n\n <div class=\"bs-datepicker-body\">\n <ng-content></ng-content>\n </div>\n\n <!--timepicker-->\n <mis-timepicker *ngIf=\"false\"></mis-timepicker>\n `\n})\nexport class BsCalendarLayoutComponent { }\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'mis-current-date',\n template: `<div class=\"current-timedate\"><span>{{ title }}</span></div>`\n})\nexport class BsCurrentDateViewComponent {\n @Input() title: string;\n}\n","import { Component, ChangeDetectionStrategy, Input, Output, EventEmitter } from '@angular/core';\n\nexport interface BsCustomDates {\n label: string;\n value: Date | Date[];\n}\n\n@Component({\n selector: 'mis-custom-date-view',\n template: `\n <div class=\"bs-datepicker-predefined-btns\">\n <button *ngFor=\"let range of ranges\"\n type=\"button\"\n class=\"btn\"\n (click)=\"selectFromRanges(range)\"\n [class.selected]=\"range.value === selectedRange\">\n {{ range.label }}\n </button>\n <button\n type=\"button\"\n class=\"btn\"\n (click)=\"selectFromRanges(customRange)\"\n [class.selected]=\"!checkRange()\">\n {{customRangeLabel}}\n </button>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BsCustomDatesViewComponent {\n @Input() ranges: BsCustomDates[];\n @Input() selectedRange: Date[];\n @Input() customRangeLabel: string;\n @Output() onSelect = new EventEmitter<BsCustomDates>();\n\n customRange: any = null;\n\n selectFromRanges(range: BsCustomDates) {\n this.onSelect.emit(range);\n }\n\n checkRange() {\n return this.ranges ? this.ranges.filter(range => range.value === this.selectedRange).length > 0 : false;\n }\n\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnInit,\n Renderer2\n} from '@angular/core';\n\nimport { MisDatePickerConfig } from '../../bs-datepicker.config';\nimport { DayViewModel } from '../../models';\n\n@Component({\n selector: '[misDatePickerDayDecorator]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.disabled]': 'day.isDisabled',\n '[class.is-highlighted]': 'day.isHovered',\n '[class.is-other-month]': 'day.isOtherMonth',\n '[class.is-active-other-month]': 'day.isOtherMonthHovered',\n '[class.in-range]': 'day.isInRange',\n '[class.select-start]': 'day.isSelectionStart',\n '[class.select-end]': 'day.isSelectionEnd',\n '[class.selected]': 'day.isSelected'\n },\n template: `{{ day.label }}`\n})\nexport class MisDatePickerDayDecoratorComponent implements OnInit {\n @Input() day: DayViewModel;\n\n constructor(\n private _config: MisDatePickerConfig,\n private _elRef: ElementRef,\n private _renderer: Renderer2\n ) { }\n\n ngOnInit(): void {\n if (this.day.isToday && this._config && this._config.customTodayClass) {\n this._renderer.addClass(this._elRef.nativeElement, this._config.customTodayClass);\n }\n\n if (typeof this.day.customClasses === 'string') {\n this.day.customClasses.split(' ')\n .filter((className: string) => className)\n .forEach((className: string) => {\n this._renderer.addClass(this._elRef.nativeElement, className);\n });\n }\n }\n}\n","import { TimeUnit } from '../sub-components/chronos';\n\nexport type MisDatePickerViewMode = 'day' | 'month' | 'year';\n\n/** *************** */\n// navigation bar settings\nexport interface NavigationViewModel {\n monthTitle: string;\n yearTitle: string;\n hideLeftArrow?: boolean;\n hideRightArrow?: boolean;\n disableLeftArrow?: boolean;\n disableRightArrow?: boolean;\n}\n\nexport interface CalendarCellViewModel {\n date: Date;\n label: string;\n isDisabled?: boolean;\n isHovered?: boolean;\n isSelected?: boolean;\n}\n\n/** *************** */\n// days matrix: day cell view model\nexport interface DayViewModel extends CalendarCellViewModel {\n isOtherMonthHovered?: boolean;\n isOtherMonth?: boolean;\n isInRange?: boolean;\n isSelectionStart?: boolean;\n isSelectionEnd?: boolean;\n isToday?: boolean;\n customClasses?: string;\n tooltipText?: string;\n // day index\n monthIndex?: number;\n weekIndex?: number;\n dayIndex?: number;\n}\n\nexport interface WeekViewModel {\n days: DayViewModel[];\n isHovered?: boolean;\n}\n\n// todo: split navigation settings\nexport interface DaysCalendarViewModel extends NavigationViewModel {\n weeks: WeekViewModel[];\n // additional information\n month: Date;\n weekNumbers: string[];\n weekdays: string[];\n}\n\n/** *************** */\n// months calendar\nexport interface MonthsCalendarViewModel extends NavigationViewModel {\n months: CalendarCellViewModel[][];\n}\n\n/** *************** */\n// years calendar\nexport interface YearsCalendarViewModel extends NavigationViewModel {\n years: CalendarCellViewModel[][];\n}\n\n/** *************** */\n\n// math model\n/** *************** */\n\n// days Date's array\nexport interface DaysCalendarModel {\n daysMatrix: Date[][];\n month: Date;\n}\n\n/** *************** */\n// some func options\nexport interface MonthViewOptions {\n width?: number;\n height?: number;\n firstDayOfWeek?: number;\n}\n\n/** *************** */\n// rendering options\nexport interface DatePickerFormatOptions {\n locale: string;\n\n monthTitle: string;\n yearTitle: string;\n\n dayLabel: string;\n monthLabel: string;\n yearLabel: string;\n\n weekNumbers: string;\n}\n\nexport interface DatePickerRenderOptions {\n showWeekNumbers?: boolean;\n displayMonths?: number;\n}\n\nexport interface DatePickerDateCustomClasses {\n date: Date;\n classes: string[];\n}\n\nexport interface DatePickerDateTooltipText {\n date: Date;\n tooltipText: string;\n}\n\n/** *************** */\n// events\n/** *************** */\nexport enum BsNavigationDirection {\n UP,\n DOWN\n}\n\n// used for navigation events, to change view date in state\nexport interface BsNavigationEvent {\n direction?: BsNavigationDirection;\n step?: TimeUnit;\n}\n\nexport interface BsViewNavigationEvent {\n unit?: TimeUnit;\n viewMode: MisDatePickerViewMode;\n}\n\nexport interface CellHoverEvent {\n cell: CalendarCellViewModel;\n isHovered: boolean;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output\n} from '@angular/core';\nimport {\n MisDatePickerViewMode,\n BsNavigationDirection,\n DaysCalendarViewModel\n} from '../../models';\n\n@Component({\n selector: 'mis-datepicker-navigation-view',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <button class=\"previous\"\n [disabled]=\"calendar.disableLeftArrow\"\n [style.visibility]=\"calendar.hideLeftArrow ? 'hidden' : 'visible'\"\n type=\"button\"\n (click)=\"navTo(true)\">\n <span class=\"ic-navigation-arrow-left-24\"></span>\n </button>\n\n <ng-container *ngIf=\"calendar.monthTitle\">\n &#8203; <!-- zero-width space needed for correct alignement\n with preserveWhitespaces: false in Angular -->\n\n <button class=\"current\"\n type=\"button\"\n (click)=\"view('month')\"\n ><span>{{ calendar.monthTitle }}</span>\n </button>\n </ng-container>\n\n &#8203; <!-- zero-width space needed for correct alignement\n with preserveWhitespaces: false in Angular -->\n\n <button class=\"current\" (click)=\"view('year')\" type=\"button\">\n <span>{{ calendar.yearTitle }}</span>\n </button>\n\n &#8203; <!-- zero-width space needed for correct alignement\n with preserveWhitespaces: false in Angular -->\n\n <button class=\"next\"\n [disabled]=\"calendar.disableRightArrow\"\n [style.visibility]=\"calendar.hideRightArrow ? 'hidden' : 'visible'\"\n type=\"button\"\n (click)=\"navTo(false)\"><span class=\"ic-navigation-arrow-right-24\"></span>\n </button>\n `\n})\nexport class MisDatePickerNavigationViewComponent {\n @Input() calendar: DaysCalendarViewModel;\n\n @Output() onNavigate = new EventEmitter<BsNavigationDirection>();\n @Output() onViewMode = new EventEmitter<MisDatePickerViewMode>();\n\n navTo(down: boolean): void {\n this.onNavigate.emit(\n down ? BsNavigationDirection.DOWN : BsNavigationDirection.UP\n );\n }\n\n view(viewMode: MisDatePickerViewMode): void {\n this.onViewMode.emit(viewMode);\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output\n} from '@angular/core';\n\nimport { isSameDay } from '../../sub-components/chronos';\n\nimport {\n MisDatePickerViewMode,\n BsNavigationDirection,\n BsNavigationEvent,\n CellHoverEvent, DatePickerDateTooltipText,\n DatePickerRenderOptions,\n DaysCalendarViewModel,\n DayViewModel, WeekViewModel\n} from '../../models';\n\nimport { MisDatePickerConfig } from '../../bs-datepicker.config';\n\n@Component({\n selector: 'mis-days-calendar-view',\n // changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <mis-calendar-layout>\n <mis-datepicker-navigation-view\n [calendar]=\"calendar\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"changeViewMode($event)\"\n ></mis-datepicker-navigation-view>\n\n <!--days matrix-->\n <table role=\"grid\" class=\"days weeks\">\n <thead>\n <tr>\n <!--if show weeks-->\n <th *ngIf=\"options.showWeekNumbers\"></th>\n <th *ngFor=\"let weekday of calendar.weekdays; let i = index\"\n aria-label=\"weekday\">{{ calendar.weekdays[i] }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let week of calendar.weeks; let i = index\">\n <td class=\"week\" [class.active-week]=\"isWeekHovered\" *ngIf=\"options.showWeekNumbers\">\n <span *ngIf=\"isiOS\" (click)=\"selectWeek(week)\">{{ calendar.weekNumbers[i] }}</span>\n <span *ngIf=\"!isiOS\"\n (click)=\"selectWeek(week)\"\n (mouseenter)=\"weekHoverHandler(week, true)\"\n (mouseleave)=\"weekHoverHandler(week, false)\">{{ calendar.weekNumbers[i] }}</span>\n </td>\n <td *ngFor=\"let day of week.days\" role=\"gridcell\">\n\n <!-- When we want to show tooltips for dates -->\n <span *ngIf=\"!isiOS && isShowTooltip\" misDatePickerDayDecorator\n [day]=\"day\"\n (click)=\"selectDay(day)\"\n tooltip=\"{{day.tooltipText}}\"\n (mouseenter)=\"hoverDay(day, true)\"\n (mouseleave)=\"hoverDay(day, false)\">{{ day.label }} 3</span>\n <!-- When tooltips for dates are disabled -->\n <span *ngIf=\"!isiOS && !isShowTooltip\" misDatePickerDayDecorator\n [day]=\"day\"\n (click)=\"selectDay(day)\"\n (mouseenter)=\"hoverDay(day, true)\"\n (mouseleave)=\"hoverDay(day, false)\">{{ day.label }} 2</span>\n\n <!-- For mobile iOS view, tooltips are not needed -->\n <span *ngIf=\"isiOS\" misDatePickerDayDecorator\n [day]=\"day\"\n (click)=\"selectDay(day)\">{{ day.label }} 1</span>\n </td>\n </tr>\n </tbody>\n </table>\n\n </mis-calendar-layout>\n `\n})\nexport class MisDaysCalendarViewComponent {\n @Input() calendar: DaysCalendarViewModel;\n @Input() options: DatePickerRenderOptions;\n\n @Output() onNavigate = new EventEmitter<BsNavigationEvent>();\n @Output() onViewMode = new EventEmitter<MisDatePickerViewMode>();\n\n @Output() onSelect = new EventEmitter<DayViewModel>();\n @Output() onHover = new EventEmitter<CellHoverEvent>();\n @Output() onHoverWeek = new EventEmitter<WeekViewModel>();\n\n isWeekHovered: boolean;\n isiOS: boolean;\n isShowTooltip: boolean;\n\n constructor(private _config: MisDatePickerConfig) {\n this.isiOS = (/iPad|iPhone|iPod/.test(navigator.platform) ||\n (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1));\n if (this._config.dateTooltipTexts && this._config.dateTooltipTexts.length > 0) {\n this.isShowTooltip = true;\n }\n }\n\n navigateTo(event: BsNavigationDirection): void {\n const step = BsNavigationDirection.DOWN === event ? -1 : 1;\n this.onNavigate.emit({ step: { month: step } });\n }\n\n changeViewMode(event: MisDatePickerViewMode): void {\n this.onViewMode.emit(event);\n }\n\n selectDay(event: DayViewModel): void {\n this.onSelect.emit(event);\n }\n\n selectWeek(week: WeekViewModel): void {\n if (!this._config.selectWeek && !this._config.selectWeekDateRange) {\n return;\n }\n\n if (week.days.length === 0) {\n return;\n }\n\n if (this._config.selectWeek && week.days[0]\n && !week.days[0].isDisabled\n && this._config.selectFromOtherMonth) {\n\n this.onSelect.emit(week.days[0]);\n\n return;\n }\n\n const selectedDay = week.days.find((day: DayViewModel) => {\n return this._config.selectFromOtherMonth\n ? !day.isDisabled\n : !day.isOtherMonth && !day.isDisabled;\n });\n\n this.onSelect.emit(selectedDay);\n\n if (this._config.selectWeekDateRange) {\n const days = week.days.slice(0);\n const lastDayOfRange = days.reverse().find((day: DayViewModel) => {\n return this._config.selectFromOtherMonth\n ? !day.isDisabled\n : !day.isOtherMonth && !day.isDisabled;\n });\n\n this.onSelect.emit(lastDayOfRange);\n }\n }\n\n weekHoverHandler(cell: WeekViewModel, isHovered: boolean): void {\n if (!this._config.selectWeek && !this._config.selectWeekDateRange) {\n return;\n }\n\n const hasActiveDays = cell.days.find((day: DayViewModel) => {\n return this._config.selectFromOtherMonth\n ? !day.isDisabled\n : !day.isOtherMonth && !day.isDisabled;\n });\n\n if (hasActiveDays) {\n cell.isHovered = isHovered;\n this.isWeekHovered = isHovered;\n this.onHoverWeek.emit(cell);\n }\n }\n\n hoverDay(cell: DayViewModel, isHovered: boolean): void {\n if (this._config.selectFromOtherMonth && cell.isOtherMonth) {\n cell.isOtherMonthHovered = isHovered;\n }\n\n if (this._config.dateTooltipTexts) {\n cell.tooltipText = '';\n this._config.dateTooltipTexts.forEach((dateData: DatePickerDateTooltipText) => {\n\n if (isSameDay(dateData.date, cell.date)) {\n cell.tooltipText = dateData.tooltipText;\n\n return;\n }\n });\n }\n\n this.onHover.emit({ cell, isHovered });\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport {\n MisDatePickerViewMode,\n BsNavigationDirection,\n BsNavigationEvent,\n CellHoverEvent,\n MonthsCalendarViewModel,\n CalendarCellViewModel\n} from '../../models';\n\n@Component({\n selector: 'mis-month-calendar-view',\n template: `\n <mis-calendar-layout>\n <mis-datepicker-navigation-view\n [calendar]=\"calendar\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"changeViewMode($event)\"\n ></mis-datepicker-navigation-view>\n\n <table role=\"grid\" class=\"months\">\n <tbody>\n <tr *ngFor=\"let row of calendar.months\">\n <td *ngFor=\"let month of row\" role=\"gridcell\"\n (click)=\"viewMonth(month)\"\n (mouseenter)=\"hoverMonth(month, true)\"\n (mouseleave)=\"hoverMonth(month, false)\"\n [class.disabled]=\"month.isDisabled\"\n [class.is-highlighted]=\"month.isHovered\">\n <span [class.selected]=\"month.isSelected\">{{ month.label }}</span>\n </td>\n </tr>\n </tbody>\n </table>\n </mis-calendar-layout>\n `\n})\nexport class BsMonthCalendarViewComponent {\n @Input() calendar: MonthsCalendarViewModel;\n\n @Output() onNavigate = new EventEmitter<BsNavigationEvent>();\n @Output() onViewMode = new EventEmitter<MisDatePickerViewMode>();\n\n @Output() onSelect = new EventEmitter<CalendarCellViewModel>();\n @Output() onHover = new EventEmitter<CellHoverEvent>();\n\n navigateTo(event: BsNavigationDirection): void {\n const step = BsNavigationDirection.DOWN === event ? -1 : 1;\n this.onNavigate.emit({ step: { year: step } });\n }\n\n viewMonth(month: CalendarCellViewModel) {\n this.onSelect.emit(month);\n }\n\n hoverMonth(cell: CalendarCellViewModel, isHovered: boolean) {\n this.onHover.emit({ cell, isHovered });\n }\n\n changeViewMode(event: MisDatePickerViewMode): void {\n this.onViewMode.emit(event);\n }\n}\n","// tslint:disable:max-line-length\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'mis-timepicker',\n template: `\n <div class=\"mis-timepicker-container\">\n <div class=\"mis-timepicker-controls\">\n <button class=\"bs-decrease\" type=\"button\">-</button>\n <input type=\"text\" [value]=\"hours\" placeholder=\"00\">\n <button class=\"bs-increase\" type=\"button\">+</button>\n </div>\n <div class=\"mis-timepicker-controls\">\n <button class=\"bs-decrease\" type=\"button\">-</button>\n <input type=\"text\" [value]=\"minutes\" placeholder=\"00\">\n <button class=\"bs-increase\" type=\"button\">+</button>\n </div>\n <button class=\"switch-time-format\" type=\"button\">{{ ampm }}\n <img\n src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAKCAYAAABi8KSDAAABSElEQVQYV3XQPUvDUBQG4HNuagtVqc6KgouCv6GIuIntYBLB9hcIQpLStCAIV7DYmpTcRWcXqZio3Vwc/UCc/QEqfgyKGbr0I7nS1EiHeqYzPO/h5SD0jaxUZjmSLCB+OFb+UFINFwASAEAdpu9gaGXVyAHHFQBkHpKHc6a9dzECvADyY9sqlAMsK9W0jzxDXqeytr3mhQckxSji27TJJ5/rPmIpwJJq3HrtduriYOurv1a4i1p5HnhkG9OFymi0ReoO05cGwb+ayv4dysVygjeFmsP05f8wpZQ8fsdvfmuY9zjWSNqUtgYFVnOVReILYoBFzdQI5/GGFzNHhGbeZnopDGU29sZbscgldmC99w35VOATTycIMMcBXIfpSVGzZhA6C8hh00conln6VQ9TGgV32OEAKQC4DrBq7CJwd0ggR7Vq/rPrfgB+C3sGypY5DAAAAABJRU5ErkJggg==\"\n alt=\"\">\n </button>\n </div>\n `\n})\nexport class BsTimepickerViewComponent {\n ampm = 'ok';\n hours = 0;\n minutes = 0;\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { yearsPerCalendar } from '../../engine/format-years-calendar';\nimport {\n MisDatePickerViewMode,\n BsNavigationDirection,\n BsNavigationEvent,\n CalendarCellViewModel,\n CellHoverEvent,\n YearsCalendarViewModel\n} from '../../models';\n\n@Component({\n selector: 'mis-years-calendar-view',\n template: `\n <mis-calendar-layout>\n <mis-datepicker-navigation-view\n [calendar]=\"calendar\"\n (onNavigate)=\"navigateTo($event)\"\n (onViewMode)=\"changeViewMode($event)\"\n ></mis-datepicker-navigation-view>\n\n <table role=\"grid\" class=\"years\">\n <tbody>\n <tr *ngFor=\"let row of calendar.years\">\n <td *ngFor=\"let year of row\" role=\"gridcell\"\n (click)=\"viewYear(year)\"\n (mouseenter)=\"hoverYear(year, true)\"\n (mouseleave)=\"hoverYear(year, false)\"\n [class.disabled]=\"year.isDisabled\"\n [class.is-highlighted]=\"year.isHovered\">\n <span [class.selected]=\"year.isSelected\">{{ year.label }}</span>\n </td>\n </tr>\n </tbody>\n </table>\n </mis-calendar-layout>\n `\n})\nexport class BsYearsCalendarViewComponent {\n @Input() calendar: YearsCalendarViewModel;\n\n @Output() onNavigate = new EventEmitter<BsNavigationEvent>();\n @Output() onViewMode = new EventEmitter<MisDatePickerViewMode>();\n\n @Output() onSelect = new EventEmitter<CalendarCellViewModel>();\n @Output() onHover = new EventEmitter<CellHoverEvent>();\n\n navigateTo(event: BsNavigationDirection): void {\n const step = BsNavigationDirection.DOWN === event ? -1 : 1;\n this.onNavigate.emit({ step: { year: step * yearsPerCalendar } });\n }\n\n viewYear(year: CalendarCellViewModel) {\n this.onSelect.emit(year);\n }\n\n hoverYear(cell: CalendarCellViewModel, isHovered: boolean) {\n this.onHover.emit({ cell, isHovered });\n }\n\n changeViewMode(event: MisDatePickerViewMode): void {\n this.onViewMode.emit(event);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { ComponentLoaderFactory } from './sub-components/component-loader';\nimport { PositioningService } from './sub-components/positioning';\n\nimport { TooltipModule } from './sub-components/tooltip';\n\nimport { MisDatePickerInputDirective } from './bs-datepicker-input.directive';\nimport { MisDatePickerDirective } from './bs-datepicker.component';\nimport { MisDateRangePickerInputDirective } from './bs-daterangepicker-input.directive';\nimport { MisDateRangePickerDirective } from './bs-daterangepicker.component';\n\nimport { MisDatePickerInlineDirective } from './bs-datepicker-inline.component';\n\nimport { BsLocaleService } from './bs-locale.service';\nimport { MisDatePickerActions } from './reducer/bs-datepicker.actions';\nimport { MisDatePickerEffects } from './reducer/bs-datepicker.effects';\nimport { MisDatePickerStore } from './reducer/bs-datepicker.store';\nimport { MisDatePickerContainerComponent } from './themes/bs/bs-datepicker-container.component';\nimport { MisDateRangePickerContainerComponent } from './themes/bs/bs-daterangepicker-container.component';\n\nimport { MisDatePickerInlineContainerComponent } from './themes/bs/bs-datepicker-inline-container.component';\nimport { MisDateRangePickerInlineContainerComponent } from './themes/bs/bs-daterangepicker-inline-container.component';\n\nimport { MisDateRangePickerInlineDirective } from './bs-daterangepicker-inline.component';\n\nimport { BsCalendarLayoutComponent } from './themes/bs/bs-calendar-layout.component';\nimport { BsCurrentDateViewComponent } from './themes/bs/bs-current-date-view.component';\nimport { BsCustomDatesViewComponent } from './themes/bs/bs-custom-dates-view.component';\nimport { MisDatePickerDayDecoratorComponent } from './themes/bs/bs-datepicker-day-decorator.directive';\nimport { MisDatePickerNavigationViewComponent } from './themes/bs/bs-datepicker-navigation-view.component';\nimport { MisDaysCalendarViewComponent } from './themes/bs/bs-days-calendar-view.component';\nimport { BsMonthCalendarViewComponent } from './themes/bs/bs-months-calendar-view.component';\nimport { BsTimepickerViewComponent } from './themes/bs/bs-timepicker-view.component';\nimport { BsYearsCalendarViewComponent } from './themes/bs/bs-years-calendar-view.component';\n\n@NgModule({\n imports: [CommonModule, TooltipModule.forRoot()],\n declarations: [\n BsCalendarLayoutComponent,\n BsCurrentDateViewComponent,\n BsCustomDatesViewComponent,\n MisDatePickerDayDecoratorComponent,\n MisDatePickerNavigationViewComponent,\n MisDaysCalendarViewComponent,\n BsMonthCalendarViewComponent,\n BsTimepickerViewComponent,\n BsYearsCalendarViewComponent,\n MisDatePickerContainerComponent,\n MisDatePickerDirective,\n MisDatePickerInlineContainerComponent,\n MisDatePickerInlineDirective,\n MisDatePickerInputDirective,\n MisDateRangePickerContainerComponent,\n MisDateRangePickerDirective,\n MisDateRangePickerInlineContainerComponent,\n MisDateRangePickerInlineDirective,\n MisDateRangePickerInputDirective\n ],\n entryComponents: [\n MisDatePickerContainerComponent,\n MisDateRangePickerContainerComponent,\n MisDatePickerInlineContainerComponent,\n MisDateRangePickerInlineContainerComponent\n ],\n exports: [\n BsCalendarLayoutComponent,\n BsCurrentDateViewComponent,\n BsCustomDatesViewComponent,\n MisDatePickerDayDecoratorComponent,\n MisDatePickerNavigationViewComponent,\n MisDaysCalendarViewComponent,\n BsMonthCalendarViewComponent,\n BsTimepickerViewComponent,\n BsYearsCalendarViewComponent,\n MisDatePickerContainerComponent,\n MisDatePickerDirective,\n MisDatePickerInlineContainerComponent,\n MisDatePickerInlineDirective,\n MisDatePickerInputDirective,\n MisDateRangePickerContainerComponent,\n MisDateRangePickerDirective,\n MisDateRangePickerInlineContainerComponent,\n MisDateRangePickerInlineDirective,\n MisDateRangePickerInputDirective\n ]\n})\nexport class MisDatePickerModule {\n static forRoot(): ModuleWithProviders<MisDatePickerModule> {\n return {\n ngModule: MisDatePickerModule,\n providers: [\n ComponentLoaderFactory,\n PositioningService,\n MisDatePickerStore,\n MisDatePickerActions,\n MisDatePickerEffects,\n BsLocaleService\n ]\n };\n }\n}\n","import { formatDate } from './sub-components/chronos';\n\nexport class DateFormatter {\n format(date: Date, format: string, locale: string): string {\n return formatDate(date, format, locale);\n }\n}\n","/* tslint:disable: max-file-line-count */\nimport {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges\n} from '@angular/core';\n\nimport { DateFormatter } from './date-formatter';\n\n\n@Component({\n selector: 'datepicker-inner',\n template: `\n <!--&lt;!&ndash;ng-keydown=\"keydown($event)\"&ndash;&gt;-->\n <div *ngIf=\"datepickerMode\" class=\"well well-sm bg-faded p-a card\" role=\"application\" >\n <ng-content></ng-content>\n </div>\n `\n})\nexport class DatePickerInnerComponent implements OnInit, OnChanges {\n @Input() locale: string;\n @Input() datepickerMode: string;\n @Input() startingDay: number;\n @Input() yearRange: number;\n\n @Input() minDate: Date;\n @Input() maxDate: Date;\n @Input() minMode: string;\n @Input() maxMode: string;\n @Input() showWeeks: boolean;\n @Input() formatDay: string;\n @Input() formatMonth: string;\n @Input() formatYear: string;\n @Input() formatDayHeader: string;\n @Input() formatDayTitle: string;\n @Input() formatMonthTitle: string;\n @Input() onlyCurrentMonth: boolean;\n @Input() shortcutPropagation: boolean;\n @Input() customClass: { date: Date; mode: string; clazz: string }[];\n @Input() monthColLimit: number;\n @Input() yearColLimit: number;\n @Input() dateDisabled: { date: Date; mode: string }[];\n @Input() dayDisabled: number[];\n @Input() initDate: Date;\n\n @Output() selectionDone: EventEmitter<Date> = new EventEmitter<Date>(undefined);\n @Output() update: EventEmitter<Date> = new EventEmitter<Date>(false);\n @Output() activeDateChange: EventEmitter<Date> = new EventEmitter<Date>(undefined);\n\n /* tslint:disable-next-line: no-any*/\n stepDay: any = {};\n /* tslint:disable-next-line: no-any*/\n stepMonth: any = {};\n /* tslint:disable-next-line: no-any*/\n stepYear: any = {};\n\n uniqueId: string;\n\n protected modes: string[] = ['day', 'month', 'year'];\n protected dateFormatter: DateFormatter = new DateFormatter();\n protected _activeDate: Date;\n protected selectedDate: Date;\n protected activeDateId: string;\n\n protected refreshViewHandlerDay: Function;\n protected compareHandlerDay: Function;\n protected refreshViewHandlerMonth: Function;\n protected compareHandlerMonth: Function;\n protected refreshViewHandlerYear: Function;\n protected compareHandlerYear: Function;\n\n @Input()\n get activeDate(): Date {\n return this._activeDate;\n }\n\n set activeDate(value: Date) {\n this._activeDate = value;\n }\n\n // todo: add formatter value to Date object\n ngOnInit(): void {\n // todo: use date for unique value\n this.uniqueId = `datepicker--${Math.floor(Math.random() * 10000)}`;\n\n if (this.initDate) {\n this.activeDate = this.initDate;\n this.selectedDate = new Date(this.activeDate.valueOf());\n this.update.emit(this.activeDate);\n } else if (this.activeDate === undefined) {\n this.activeDate = new Date();\n }\n }\n\n // this.refreshView should be called here to reflect the changes on the fly\n // tslint:disable-next-line:no-unused-variable\n ngOnChanges(changes: SimpleChanges): void {\n this.refreshView();\n this.checkIfActiveDateGotUpdated(changes.activeDate);\n }\n\n // Check if activeDate has been update and then emit the activeDateChange with the new date\n /* tslint:disable-next-line: no-any */\n checkIfActiveDateGotUpdated(activeDate: any): void {\n if (activeDate && !activeDate.firstChange) {\n const previousValue = activeDate.previousValue;\n if (\n previousValue &&\n previousValue instanceof Date &&\n previousValue.getTime() !== activeDate.currentValue.getTime()\n ) {\n this.activeDateChange.emit(this.activeDate);\n }\n }\n }\n\n setCompareHandler(handler: Function, type: string): void {\n if (type === 'day') {\n this.compareHandlerDay = handler;\n }\n\n if (type === 'month') {\n this.compareHandlerMonth = handler;\n }\n\n if (type === 'year') {\n this.compareHandlerYear = handler;\n }\n }\n\n compare(date1: Date, date2: Date): number | undefined {\n if (date1 === undefined || date2 === undefined) {\n return undefined;\n }\n\n if (this.datepickerMode === 'day' && this.compareHandlerDay) {\n return this.compareHandlerDay(date1, date2);\n }\n\n if (this.datepickerMode === 'month' && this.compareHandlerMonth) {\n return this.compareHandlerMonth(date1, date2);\n }\n\n if (this.datepickerMode === 'year' && this.compareHandlerYear) {\n return this.compareHandlerYear(date1, date2);\n }\n\n return void 0;\n }\n\n setRefreshViewHandler(handler: Function, type: string): void {\n if (type === 'day') {\n this.refreshViewHandlerDay = handler;\n }\n\n if (type === 'month') {\n this.refreshViewHandlerMonth = handler;\n }\n\n if (type === 'year') {\n this.refreshViewHandlerYear = handler;\n }\n }\n\n refreshView(): void {\n if (this.datepickerMode === 'day' && this.refreshViewHandlerDay) {\n this.refreshViewHandlerDay();\n }\n\n if (this.datepickerMode === 'month' && this.refreshViewHandlerMonth) {\n this.refreshViewHandlerMonth();\n }\n\n if (this.datepickerMode === 'year' && this.refreshViewHandlerYear) {\n this.refreshViewHandlerYear();\n }\n }\n\n dateFilter(date: Date, format: string): string {\n return this.dateFormatter.format(date, format, this.locale);\n }\n\n /* tslint:disable-next-line: no-any*/\n isActive(dateObject: any): boolean {\n if (this.compare(dateObject.date, this.activeDate) === 0) {\n this.activeDateId = dateObject.uid;\n\n return true;\n }\n\n return false;\n }\n\n /* tslint:disable-next-line: no-any*/\n createDateObject(date: Date, format: string): any {\n /* tslint:disable-next-line: no-any*/\n const dateObject: any = {};\n dateObject.date = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n );\n dateObject.date = this.fixTimeZone(dateObject.date);\n dateObject.label = this.dateFilter(date, format);\n dateObject.selected = this.compare(date, this.selectedDate) === 0;\n dateObject.disabled = this.isDisabled(date);\n dateObject.current = this.compare(date, new Date()) === 0;\n dateObject.customClass = this.getCustomClassForDate(dateObject.date);\n\n return dateObject;\n }\n\n /* tslint:disable-next-line: no-any*/\n split(arr: any[], size: number): any[] {\n /* tslint:disable-next-line: no-any*/\n const arrays: any[] = [];\n while (arr.length > 0) {\n arrays.push(arr.splice(0, size));\n }\n\n return arrays;\n }\n\n // Fix a hard-reproducible bug with timezones\n // The bug depends on OS, browser, current timezone and current date\n // i.e.\n // var date = new Date(2014, 0, 1);\n // console.log(date.getFullYear(), date.getMonth(), date.getDate(),\n // date.getHours()); can result in \"2013 11 31 23\" because of the bug.\n fixTimeZone(date: Date): Date {\n const hours = date.getHours();\n\n return new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n hours === 23 ? hours + 2 : 0\n );\n }\n\n select(date: Date, isManual = true): void {\n if (this.datepickerMode === this.minMode) {\n if (!this.activeDate) {\n this.activeDate = new Date(0, 0, 0, 0, 0, 0, 0);\n }\n\n this.activeDate = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n );\n this.activeDate = this.fixTimeZone(this.activeDate);\n if (isManual) {\n this.selectionDone.emit(this.activeDate);\n }\n } else {\n this.activeDate = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n );\n this.activeDate = this.fixTimeZone(this.activeDate);\n if (isManual) {\n this.datepickerMode = this.modes[\n this.modes.indexOf(this.datepickerMode) - 1\n ];\n }\n }\n\n this.selectedDate = new Date(this.activeDate.valueOf());\n this.update.emit(this.activeDate);\n this.refreshView();\n }\n\n move(direction: number): void {\n /* tslint:disable-next-line: no-any*/\n let expectedStep: any;\n if (this.datepickerMode === 'day') {\n expectedStep = this.stepDay;\n }\n\n if (this.datepickerMode === 'month') {\n expectedStep = this.stepMonth;\n }\n\n if (this.datepickerMode === 'year') {\n expectedStep = this.stepYear;\n }\n\n if (expectedStep) {\n const year =\n this.activeDate.getFullYear() + direction * (expectedStep.years || 0);\n const month =\n this.activeDate.getMonth() + direction * (expectedStep.months || 0);\n this.activeDate = new Date(year, month, 1);\n\n this.refreshView();\n this.activeDateChange.emit(this.activeDate);\n }\n }\n\n toggleMode(_direction: number): void {\n const direction = _direction || 1;\n\n if (\n (this.datepickerMode === this.maxMode && direction === 1) ||\n (this.datepickerMode === this.minMode && direction === -1)\n ) {\n return;\n }\n\n this.datepickerMode = this.modes[\n this.modes.indexOf(this.datepickerMode) + direction\n ];\n this.refreshView();\n }\n\n protected getCustomClassForDate(date: Date): string {\n if (!this.customClass) {\n return '';\n }\n // todo: build a hash of custom classes, it will work faster\n const customClassObject: {\n date: Date;\n mode: string;\n clazz: string;\n /* tslint:disable-next-line: no-any */\n } = this.customClass.find((customClass: any) => {\n return (\n customClass.date.valueOf() === date.valueOf() &&\n customClass.mode === this.datepickerMode\n );\n }, this);\n\n return customClassObject === undefined ? '' : customClassObject.clazz;\n }\n\n protected compareDateDisabled(\n date1Disabled: { date: Date; mode: string },\n date2: Date\n ): number {\n if (date1Disabled === undefined || date2 === undefined) {\n return undefined;\n }\n\n if (date1Disabled.mode === 'day' && this.compareHandlerDay) {\n return this.compareHandlerDay(date1Disabled.date, date2);\n }\n\n if (date1Disabled.mode === 'month' && this.compareHandlerMonth) {\n return this.compareHandlerMonth(date1Disabled.date, date2);\n }\n\n if (date1Disabled.mode === 'year' && this.compareHandlerYear) {\n return this.compareHandlerYear(date1Disabled.date, date2);\n }\n\n return undefined;\n }\n\n protected isDisabled(date: Date): boolean {\n let isDateDisabled = false;\n if (this.dateDisabled) {\n this.dateDisabled.forEach(\n (disabledDate: { date: Date; mode: string }) => {\n if (this.compareDateDisabled(disabledDate, date) === 0) {\n isDateDisabled = true;\n }\n }\n );\n }\n\n if (this.dayDisabled) {\n isDateDisabled =\n isDateDisabled ||\n this.dayDisabled.indexOf(date.getDay()) > -1;\n }\n\n return (\n isDateDisabled ||\n (this.minDate && this.compare(date, this.minDate) < 0) ||\n (this.maxDate && this.compare(date, this.maxDate) > 0)\n );\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DatePickerConfig {\n locale = 'en';\n datepickerMode = 'day';\n startingDay = 0;\n yearRange = 20;\n minMode = 'day';\n maxMode = 'year';\n showWeeks = true;\n formatDay = 'DD';\n formatMonth = 'MMMM';\n formatYear = 'YYYY';\n formatDayHeader = 'dd';\n formatDayTitle = 'MMMM YYYY';\n formatMonthTitle = 'YYYY';\n onlyCurrentMonth = false;\n monthColLimit = 3;\n yearColLimit = 5;\n shortcutPropagation = false;\n}\n","import {\n Component,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n Provider,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\nimport { DatePickerConfig } from './datepicker.config';\n\nexport const DATEPICKER_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n /* tslint:disable-next-line: no-use-before-declare */\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true\n};\n\n/* tslint:disable:component-selector-name component-selector-type */\n@Component({\n selector: 'datepicker',\n template: `\n <datepicker-inner [activeDate]=\"activeDate\"\n (update)=\"onUpdate($event)\"\n [locale]=\"config.locale\"\n [datepickerMode]=\"datepickerMode\"\n [initDate]=\"initDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minMode]=\"minMode\"\n [maxMode]=\"maxMode\"\n [showWeeks]=\"showWeeks\"\n [formatDay]=\"formatDay\"\n [formatMonth]=\"formatMonth\"\n [formatYear]=\"formatYear\"\n [formatDayHeader]=\"formatDayHeader\"\n [formatDayTitle]=\"formatDayTitle\"\n [formatMonthTitle]=\"formatMonthTitle\"\n [startingDay]=\"startingDay\"\n [yearRange]=\"yearRange\"\n [customClass]=\"customClass\"\n [dateDisabled]=\"dateDisabled\"\n [dayDisabled]=\"dayDisabled\"\n [onlyCurrentMonth]=\"onlyCurrentMonth\"\n [shortcutPropagation]=\"shortcutPropagation\"\n [monthColLimit]=\"monthColLimit\"\n [yearColLimit]=\"yearColLimit\"\n (selectionDone)=\"onSelectionDone($event)\"\n (activeDateChange)=\"onActiveDateChange($event)\">\n <daypicker tabindex=\"0\"></daypicker>\n <monthpicker tabindex=\"0\"></monthpicker>\n <yearpicker tabindex=\"0\"></yearpicker>\n </datepicker-inner>\n `,\n providers: [DATEPICKER_CONTROL_VALUE_ACCESSOR]\n})\n/* tslint:enable:component-selector-name component-selector-type */\nexport class DatePickerComponent implements ControlValueAccessor {\n /** sets datepicker mode, supports: `day`, `month`, `year` */\n @Input() datepickerMode = 'day';\n /** default date to show if `ng-model` value is not specified */\n @Input() initDate: Date;\n /** oldest selectable date */\n @Input() minDate: Date;\n /** latest selectable date */\n @Input() maxDate: Date;\n /** set lower datepicker mode, supports: `day`, `month`, `year` */\n @Input() minMode: string;\n /** sets upper datepicker mode, supports: `day`, `month`, `year` */\n @Input() maxMode: string;\n /** if false week numbers will be hidden */\n @Input() showWeeks = true;\n /** format of day in month */\n @Input() formatDay: string;\n /** format of month in year */\n @Input() formatMonth: string;\n /** format of year in year range */\n @Input() formatYear: string;\n /** format of day in week header */\n @Input() formatDayHeader: string;\n /** format of title when selecting day */\n @Input() formatDayTitle: string;\n /** format of title when selecting month */\n @Input() formatMonthTitle: string;\n /** starting day of the week from 0-6 (0=Sunday, ..., 6=Saturday) */\n @Input() startingDay: number;\n /** number of years displayed in year selection */\n @Input() yearRange: number;\n /** if true only dates from the currently displayed month will be shown */\n @Input() onlyCurrentMonth: boolean;\n /** if true shortcut`s event propagation will be disabled */\n @Input() shortcutPropagation: boolean;\n /** number of months displayed in a single row of month picker */\n @Input() monthColLimit: number;\n /** number of years displayed in a single row of year picker */\n @Input() yearColLimit: number;\n /** array of custom css classes to be applied to targeted dates */\n @Input() customClass: { date: Date; mode: string; clazz: string }[];\n /** array of disabled dates */\n @Input() dateDisabled: { date: Date; mode: string }[];\n /** disabled days of the week from 0-6 (0=Sunday, ..., 6=Saturday) */\n @Input() dayDisabled: number[];\n\n /** currently active date */\n @Input()\n get activeDate(): Date {\n return this._activeDate || this._now;\n }\n\n set activeDate(value: Date) {\n this._activeDate = value;\n }\n\n @Output()\n selectionDone: EventEmitter<Date> = new EventEmitter<Date>(undefined);\n\n /** callback to invoke when the activeDate is changed. */\n @Output()\n activeDateChange: EventEmitter<Date> = new EventEmitter<Date>(\n undefined\n );\n\n @ViewChild(DatePickerInnerComponent, { static: true })\n _datePicker: DatePickerInnerComponent;\n\n /* tslint:disable-next-line: no-any*/\n onChange: any = Function.prototype;\n /* tslint:disable-next-line: no-any*/\n onTouched: any = Function.prototype;\n\n config: DatePickerConfig;\n\n protected _now: Date = new Date();\n protected _activeDate: Date;\n\n constructor(config: DatePickerConfig) {\n this.config = config;\n this.configureOptions();\n }\n\n configureOptions(): void {\n Object.assign(this, this.config);\n }\n\n onUpdate(event: Date): void {\n this.activeDate = event;\n this.onChange(event);\n }\n\n onSelectionDone(event: Date): void {\n this.selectionDone.emit(event);\n }\n\n onActiveDateChange(event: Date): void {\n this.activeDateChange.emit(event);\n }\n // todo: support null value\n /* tslint:disable-next-line: no-any*/\n writeValue(value: any): void {\n if (this._datePicker.compare(value, this._activeDate) === 0) {\n return;\n }\n if (value && value instanceof Date) {\n this.activeDate = value;\n this._datePicker.select(value, false);\n\n return;\n }\n\n this.activeDate = value ? new Date(value) : void 0;\n }\n\n registerOnChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n}\n","// @deprecated\n// tslint:disable\nimport { Component, OnInit } from '@angular/core';\nimport { isBs3 } from './sub-components/utils';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\n\n@Component({\n selector: 'daypicker',\n template: `\n<table *ngIf=\"datePicker.datepickerMode === 'day'\" role=\"grid\" [attr.aria-labelledby]=\"datePicker.uniqueId + '-title'\" aria-activedescendant=\"activeDateId\">\n <thead>\n <tr>\n <th>\n <button *ngIf=\"!isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-left float-left\"\n (click)=\"datePicker.move(-1)\"\n tabindex=\"-1\">‹</button>\n <button *ngIf=\"isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-left float-left\"\n (click)=\"datePicker.move(-1)\"\n tabindex=\"-1\">&lt;</button>\n </th>\n <th [attr.colspan]=\"5 + (datePicker.showWeeks ? 1 : 0)\">\n <button [id]=\"datePicker.uniqueId + '-title'\"\n type=\"button\" class=\"btn btn-default btn-secondary btn-sm\"\n (click)=\"datePicker.toggleMode(0)\"\n [disabled]=\"datePicker.datepickerMode === datePicker.maxMode\"\n [ngClass]=\"{disabled: datePicker.datepickerMode === datePicker.maxMode}\" tabindex=\"-1\" style=\"width:100%;\">\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th>\n <button *ngIf=\"!isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-right float-right\"\n (click)=\"datePicker.move(1)\"\n tabindex=\"-1\">›</button>\n <button *ngIf=\"isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-right float-right\"\n (click)=\"datePicker.move(1)\"\n tabindex=\"-1\">&gt;\n </button>\n </th>\n </tr>\n <tr>\n <th *ngIf=\"datePicker.showWeeks\"></th>\n <th *ngFor=\"let labelz of labels\" class=\"text-center\">\n <small aria-label=\"labelz.full\"><b>{{ labelz.abbr }}</b></small>\n </th>\n </tr>\n </thead>\n <tbody>\n <ng-template ngFor [ngForOf]=\"rows\" let-rowz=\"$implicit\" let-index=\"index\">\n <tr *ngIf=\"!(datePicker.onlyCurrentMonth && rowz[0].secondary && rowz[6].secondary)\">\n <td *ngIf=\"datePicker.showWeeks\" class=\"h6\" class=\"text-center\">\n <em>{{ weekNumbers[index] }}</em>\n </td>\n <td *ngFor=\"let dtz of rowz\" class=\"text-center\" role=\"gridcell\" [id]=\"dtz.uid\">\n <button type=\"button\" style=\"min-width:100%;\" class=\"btn btn-sm {{dtz.customClass}}\"\n *ngIf=\"!(datePicker.onlyCurrentMonth && dtz.secondary)\"\n [ngClass]=\"{'btn-secondary': isBs4 && !dtz.selected && !datePicker.isActive(dtz), 'btn-info': dtz.selected, disabled: dtz.disabled, active: !isBs4 && datePicker.isActive(dtz), 'btn-default': !isBs4}\"\n [disabled]=\"dtz.disabled\"\n (click)=\"datePicker.select(dtz.date)\" tabindex=\"-1\">\n <span [ngClass]=\"{'text-muted': dtz.secondary || dtz.current, 'text-info': !isBs4 && dtz.current}\">{{ dtz.label }}</span>\n </button>\n </td>\n </tr>\n </ng-template>\n </tbody>\n</table>\n `,\n styles: [\n `\n :host .btn-secondary {\n color: #292b2c;\n background-color: #fff;\n border-color: #ccc;\n }\n :host .btn-info .text-muted {\n color: #292b2c !important;\n }\n `\n ]\n})\nexport class DayPickerComponent implements OnInit {\n labels: any[] = [];\n title: string;\n rows: any[] = [];\n weekNumbers: number[] = [];\n datePicker: DatePickerInnerComponent;\n\n constructor(datePicker: DatePickerInnerComponent) {\n this.datePicker = datePicker;\n }\n\n get isBs4(): boolean {\n return !isBs3();\n }\n\n /*protected getDaysInMonth(year:number, month:number) {\n return ((month === 1) && (year % 4 === 0) &&\n ((year % 100 !== 0) || (year % 400 === 0))) ? 29 : DAYS_IN_MONTH[month];\n }*/\n ngOnInit(): void {\n const self = this;\n\n this.datePicker.stepDay = { months: 1 };\n\n this.datePicker.setRefreshViewHandler(function(): void {\n const year = this.activeDate.getFullYear();\n const month = this.activeDate.getMonth();\n const firstDayOfMonth = new Date(year, month, 1);\n const difference = this.startingDay - firstDayOfMonth.getDay();\n const numDisplayedFromPreviousMonth =\n difference > 0 ? 7 - difference : -difference;\n const firstDate = new Date(firstDayOfMonth.getTime());\n\n if (numDisplayedFromPreviousMonth > 0) {\n firstDate.setDate(-numDisplayedFromPreviousMonth + 1);\n }\n\n // 42 is the number of days on a six-week calendar\n const _days: Date[] = self.getDates(firstDate, 42);\n const days: any[] = [];\n for (let i = 0; i < 42; i++) {\n const _dateObject = this.createDateObject(_days[i], this.formatDay);\n _dateObject.secondary = _days[i].getMonth() !== month;\n _dateObject.uid = this.uniqueId + '-' + i;\n days[i] = _dateObject;\n }\n\n self.labels = [];\n for (let j = 0; j < 7; j++) {\n self.labels[j] = {};\n self.labels[j].abbr = this.dateFilter(\n days[j].date,\n this.formatDayHeader\n );\n self.labels[j].full = this.dateFilter(days[j].date, 'EEEE');\n }\n\n self.title = this.dateFilter(this.activeDate, this.formatDayTitle);\n self.rows = this.split(days, 7);\n\n if (this.showWeeks) {\n self.weekNumbers = [];\n const thursdayIndex = (4 + 7 - this.startingDay) % 7;\n const numWeeks = self.rows.length;\n for (let curWeek = 0; curWeek < numWeeks; curWeek++) {\n self.weekNumbers.push(\n self.getISO8601WeekNumber(self.rows[curWeek][thursdayIndex].date)\n );\n }\n }\n }, 'day');\n\n this.datePicker.setCompareHandler(function(\n date1: Date,\n date2: Date\n ): number {\n const d1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());\n const d2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\n return d1.getTime() - d2.getTime();\n }, 'day');\n\n this.datePicker.refreshView();\n }\n\n protected getDates(startDate: Date, n: number): Date[] {\n const dates: Date[] = new Array(n);\n let current = new Date(startDate.getTime());\n let i = 0;\n let date: Date;\n while (i < n) {\n date = new Date(current.getTime());\n date = this.datePicker.fixTimeZone(date);\n dates[i++] = date;\n current = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate() + 1\n );\n }\n return dates;\n }\n\n protected getISO8601WeekNumber(date: Date): number {\n const checkDate = new Date(date.getTime());\n // Thursday\n checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));\n const time = checkDate.getTime();\n // Compare with Jan 1\n checkDate.setMonth(0);\n checkDate.setDate(1);\n return (\n Math.floor(Math.round((time - checkDate.getTime()) / 86400000) / 7) + 1\n );\n }\n\n // todo: key events implementation\n}\n","// @deprecated\n// tslint:disable\nimport { Component, OnInit } from '@angular/core';\n\nimport { isBs3 } from './sub-components/utils';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\n\n@Component({\n selector: 'monthpicker',\n template: `\n<table *ngIf=\"datePicker.datepickerMode==='month'\" role=\"grid\">\n <thead>\n <tr>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-left float-left\"\n (click)=\"datePicker.move(-1)\" tabindex=\"-1\">‹</button></th>\n <th [attr.colspan]=\"((datePicker.monthColLimit - 2) <= 0) ? 1 : datePicker.monthColLimit - 2\">\n <button [id]=\"datePicker.uniqueId + '-title'\"\n type=\"button\" class=\"btn btn-default btn-sm\"\n (click)=\"datePicker.toggleMode(0)\"\n [disabled]=\"datePicker.datepickerMode === maxMode\"\n [ngClass]=\"{disabled: datePicker.datepickerMode === maxMode}\" tabindex=\"-1\" style=\"width:100%;\">\n <strong>{{ title }}</strong> \n </button>\n </th>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-right float-right\"\n (click)=\"datePicker.move(1)\" tabindex=\"-1\">›</button>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let rowz of rows\">\n <td *ngFor=\"let dtz of rowz\" class=\"text-center\" role=\"gridcell\" [attr.id]=\"dtz.uid\" [ngClass]=\"dtz.customClass\">\n <button type=\"button\" style=\"min-width:100%;\" class=\"btn btn-default\"\n [ngClass]=\"{'btn-link': isBs4 && !dtz.selected && !datePicker.isActive(dtz), 'btn-info': dtz.selected || (isBs4 && !dtz.selected && datePicker.isActive(dtz)), disabled: dtz.disabled, active: !isBs4 && datePicker.isActive(dtz)}\"\n [disabled]=\"dtz.disabled\"\n (click)=\"datePicker.select(dtz.date)\" tabindex=\"-1\">\n <span [ngClass]=\"{'text-success': isBs4 && dtz.current, 'text-info': !isBs4 && dtz.current}\">{{ dtz.label }}</span>\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n `,\n styles: [\n `\n :host .btn-info .text-success {\n color: #fff !important;\n }\n `\n ]\n})\nexport class MonthPickerComponent implements OnInit {\n title: string;\n rows: any[] = [];\n datePicker: DatePickerInnerComponent;\n maxMode: string;\n\n constructor(datePicker: DatePickerInnerComponent) {\n this.datePicker = datePicker;\n }\n\n get isBs4(): boolean {\n return !isBs3();\n }\n\n ngOnInit(): void {\n const self = this;\n\n this.datePicker.stepMonth = { years: 1 };\n\n this.datePicker.setRefreshViewHandler(function(): void {\n const months: any[] = new Array(12);\n const year: number = this.activeDate.getFullYear();\n let date: Date;\n\n for (let i = 0; i < 12; i++) {\n date = new Date(year, i, 1);\n date = this.fixTimeZone(date);\n months[i] = this.createDateObject(date, this.formatMonth);\n months[i].uid = this.uniqueId + '-' + i;\n }\n\n self.title = this.dateFilter(this.activeDate, this.formatMonthTitle);\n self.rows = this.split(months, self.datePicker.monthColLimit);\n }, 'month');\n\n this.datePicker.setCompareHandler(function(\n date1: Date,\n date2: Date\n ): number {\n const d1 = new Date(date1.getFullYear(), date1.getMonth());\n const d2 = new Date(date2.getFullYear(), date2.getMonth());\n return d1.getTime() - d2.getTime();\n }, 'month');\n\n this.datePicker.refreshView();\n }\n\n // todo: key events implementation\n}\n","// @deprecated\n// tslint:disable\nimport { Component, OnInit } from '@angular/core';\n\nimport { isBs3 } from './sub-components/utils';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\n\n@Component({\n selector: 'yearpicker',\n template: `\n<table *ngIf=\"datePicker.datepickerMode==='year'\" role=\"grid\">\n <thead>\n <tr>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-left float-left\"\n (click)=\"datePicker.move(-1)\" tabindex=\"-1\">‹</button>\n </th>\n <th [attr.colspan]=\"((datePicker.yearColLimit - 2) <= 0) ? 1 : datePicker.yearColLimit - 2\">\n <button [id]=\"datePicker.uniqueId + '-title'\" role=\"heading\"\n type=\"button\" class=\"btn btn-default btn-sm\"\n (click)=\"datePicker.toggleMode(0)\"\n [disabled]=\"datePicker.datepickerMode === datePicker.maxMode\"\n [ngClass]=\"{disabled: datePicker.datepickerMode === datePicker.maxMode}\" tabindex=\"-1\" style=\"width:100%;\">\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-right float-right\"\n (click)=\"datePicker.move(1)\" tabindex=\"-1\">›</button>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let rowz of rows\">\n <td *ngFor=\"let dtz of rowz\" class=\"text-center\" role=\"gridcell\" [attr.id]=\"dtz.uid\">\n <button type=\"button\" style=\"min-width:100%;\" class=\"btn btn-default\"\n [ngClass]=\"{'btn-link': isBs4 && !dtz.selected && !datePicker.isActive(dtz), 'btn-info': dtz.selected || (isBs4 && !dtz.selected && datePicker.isActive(dtz)), disabled: dtz.disabled, active: !isBs4 && datePicker.isActive(dtz)}\"\n [disabled]=\"dtz.disabled\"\n (click)=\"datePicker.select(dtz.date)\" tabindex=\"-1\">\n <span [ngClass]=\"{'text-success': isBs4 && dtz.current, 'text-info': !isBs4 && dtz.current}\">{{ dtz.label }}</span>\n </button>\n </td>\n </tr>\n </tbody>\n</table>\n `,\n styles: [\n `\n :host .btn-info .text-success {\n color: #fff !important;\n }\n `\n ]\n})\nexport class YearPickerComponent implements OnInit {\n datePicker: DatePickerInnerComponent;\n title: string;\n rows: any[] = [];\n\n constructor(datePicker: DatePickerInnerComponent) {\n this.datePicker = datePicker;\n }\n\n get isBs4(): boolean {\n return !isBs3();\n }\n\n ngOnInit(): void {\n const self = this;\n\n this.datePicker.stepYear = { years: this.datePicker.yearRange };\n\n this.datePicker.setRefreshViewHandler(function(): void {\n const years: any[] = new Array(this.yearRange);\n let date: Date;\n const start = self.getStartingYear(this.activeDate.getFullYear());\n\n for (let i = 0; i < this.yearRange; i++) {\n date = new Date(start + i, 0, 1);\n date = this.fixTimeZone(date);\n years[i] = this.createDateObject(date, this.formatYear);\n years[i].uid = this.uniqueId + '-' + i;\n }\n\n self.title = [years[0].label, years[this.yearRange - 1].label].join(\n ' - '\n );\n self.rows = this.split(years, self.datePicker.yearColLimit);\n }, 'year');\n\n this.datePicker.setCompareHandler(function(\n date1: Date,\n date2: Date\n ): number {\n return date1.getFullYear() - date2.getFullYear();\n }, 'year');\n\n this.datePicker.refreshView();\n }\n\n protected getStartingYear(year: number): number {\n // todo: parseInt\n return (\n (year - 1) / this.datePicker.yearRange * this.datePicker.yearRange + 1\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\nimport { DatePickerComponent } from './datepicker.component';\nimport { DatePickerConfig } from './datepicker.config';\nimport { DayPickerComponent } from './daypicker.component';\nimport { MonthPickerComponent } from './monthpicker.component';\nimport { YearPickerComponent } from './yearpicker.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule],\n declarations: [\n DatePickerComponent,\n DatePickerInnerComponent,\n DayPickerComponent,\n MonthPickerComponent,\n YearPickerComponent\n ],\n exports: [\n DatePickerComponent,\n DatePickerInnerComponent,\n DayPickerComponent,\n MonthPickerComponent,\n YearPickerComponent\n ],\n entryComponents: [DatePickerComponent]\n})\nexport class DatePickerModule {\n static forRoot(): ModuleWithProviders<DatePickerModule> {\n return { ngModule: DatePickerModule, providers: [DatePickerConfig] };\n }\n}\n","/*\n * Public API Surface of mis-components\n */\nexport * from './button';\nexport * from './checkbox';\nexport * from './chip';\nexport * from './drawer';\nexport * from './dropdown';\nexport * from './fab';\nexport * from './loader';\nexport * from './multi-select-dropdown'\nexport * from './nested-multi-select-dropdown'\nexport * from './radio-button'\nexport * from './switch'\nexport * from './table';\nexport * from './toast'\nexport * from './tooltip'\nexport * from './datepicker'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["EventEmitter","Component","Input","Output","NgModule","CommonModule","FormControl","ViewChild","ReactiveFormsModule","Subject","ComponentPortal","PortalInjector","trigger","transition","style","animate","ComponentFactoryResolver","ViewContainerRef","InjectionToken","OverlayConfig","portal","take","Injectable","Overlay","Injector","OverlayModule","PortalModule","ElementRef","HostListener","FormsModule","state","Renderer2","ViewChildren","Directive","daysInMonth","isSameDay","months","monthsShort","ɵ0","ɵ1","monthsShortDot","monthsParse","monthsRegex","processRelativeTime","translate","symbolMap","numberMap","monthsShortWithDots","monthsShortWithoutDots","plural","relativeTimeWithPlural","suffixes","runIsIE","isPlatformBrowser","merge","fromEvent","of","animationFrameScheduler","NgZone","RendererFactory2","Inject","PLATFORM_ID","BehaviorSubject","filter","map","observeOn","queueScheduler","scan","distinctUntilChanged","Observable","shift","height","width","document","window","isDevMode","TemplateRef","ApplicationRef","takeUntil","NG_VALUE_ACCESSOR","forwardRef","NG_VALIDATORS","Subscription","Host","ChangeDetectorRef","ChangeDetectionStrategy","timer"],"mappings":"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"}
1
+ {"version":3,"file":"mis-crystal-design-system.umd.js","sources":["../../../projects/mis-components/public-api.ts","../../../projects/mis-components/mis-crystal-design-system.ts"],"sourcesContent":["/*\n * Public API Surface of mis-components\n */\n// export * from './button';\n// export * from './checkbox';\n// export * from './chip';\n// export * from './drawer';\n// export * from './dropdown';\n// export * from './fab';\n// export * from './loader';\n// export * from './multi-select-dropdown'\n// export * from './nested-multi-select-dropdown'\n// export * from './radio-button'\n// export * from './switch'\n// export * from './table';\n// export * from './toast'\n// export * from './tooltip'\n// export * from './datepicker'\n\nexport default {}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;CAAA;;;CAGA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AAEA,iBAAe,EAAE;;CCnBjB;;;;;;;;"}