@amcharts/amcharts5 5.0.21 → 5.1.3

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 (302) hide show
  1. package/.internal/charts/map/MapSeries.d.ts +1 -0
  2. package/.internal/charts/map/MapSeries.d.ts.map +1 -1
  3. package/.internal/charts/map/MapSeries.js +12 -0
  4. package/.internal/charts/map/MapSeries.js.map +1 -1
  5. package/.internal/charts/percent/PercentSeries.d.ts +3 -0
  6. package/.internal/charts/percent/PercentSeries.d.ts.map +1 -1
  7. package/.internal/charts/percent/PercentSeries.js +12 -0
  8. package/.internal/charts/percent/PercentSeries.js.map +1 -1
  9. package/.internal/charts/pie/PieSeries.d.ts.map +1 -1
  10. package/.internal/charts/pie/PieSeries.js.map +1 -1
  11. package/.internal/charts/radar/RadarCursor.d.ts +2 -0
  12. package/.internal/charts/radar/RadarCursor.d.ts.map +1 -1
  13. package/.internal/charts/radar/RadarCursor.js +14 -0
  14. package/.internal/charts/radar/RadarCursor.js.map +1 -1
  15. package/.internal/charts/xy/XYChart.d.ts.map +1 -1
  16. package/.internal/charts/xy/XYChart.js +17 -9
  17. package/.internal/charts/xy/XYChart.js.map +1 -1
  18. package/.internal/charts/xy/XYChartDefaultTheme.d.ts.map +1 -1
  19. package/.internal/charts/xy/XYChartDefaultTheme.js +16 -2
  20. package/.internal/charts/xy/XYChartDefaultTheme.js.map +1 -1
  21. package/.internal/charts/xy/XYCursor.d.ts +5 -1
  22. package/.internal/charts/xy/XYCursor.d.ts.map +1 -1
  23. package/.internal/charts/xy/XYCursor.js +65 -5
  24. package/.internal/charts/xy/XYCursor.js.map +1 -1
  25. package/.internal/charts/xy/axes/Axis.d.ts +3 -2
  26. package/.internal/charts/xy/axes/Axis.d.ts.map +1 -1
  27. package/.internal/charts/xy/axes/Axis.js +13 -5
  28. package/.internal/charts/xy/axes/Axis.js.map +1 -1
  29. package/.internal/charts/xy/axes/CategoryDateAxis.js +1 -1
  30. package/.internal/charts/xy/axes/CategoryDateAxis.js.map +1 -1
  31. package/.internal/charts/xy/axes/DateAxis.d.ts +3 -0
  32. package/.internal/charts/xy/axes/DateAxis.d.ts.map +1 -1
  33. package/.internal/charts/xy/axes/DateAxis.js +74 -20
  34. package/.internal/charts/xy/axes/DateAxis.js.map +1 -1
  35. package/.internal/charts/xy/axes/GaplessDateAxis.d.ts +55 -0
  36. package/.internal/charts/xy/axes/GaplessDateAxis.d.ts.map +1 -0
  37. package/.internal/charts/xy/axes/GaplessDateAxis.js +316 -0
  38. package/.internal/charts/xy/axes/GaplessDateAxis.js.map +1 -0
  39. package/.internal/charts/xy/axes/ValueAxis.d.ts.map +1 -1
  40. package/.internal/charts/xy/axes/ValueAxis.js +1 -1
  41. package/.internal/charts/xy/axes/ValueAxis.js.map +1 -1
  42. package/.internal/charts/xy/series/BaseColumnSeries.d.ts.map +1 -1
  43. package/.internal/charts/xy/series/BaseColumnSeries.js +21 -3
  44. package/.internal/charts/xy/series/BaseColumnSeries.js.map +1 -1
  45. package/.internal/charts/xy/series/CandlestickSeries.d.ts +0 -177
  46. package/.internal/charts/xy/series/CandlestickSeries.d.ts.map +1 -1
  47. package/.internal/charts/xy/series/CandlestickSeries.js +0 -19
  48. package/.internal/charts/xy/series/CandlestickSeries.js.map +1 -1
  49. package/.internal/charts/xy/series/LineSeries.d.ts +2 -0
  50. package/.internal/charts/xy/series/LineSeries.d.ts.map +1 -1
  51. package/.internal/charts/xy/series/LineSeries.js +29 -5
  52. package/.internal/charts/xy/series/LineSeries.js.map +1 -1
  53. package/.internal/charts/xy/series/XYSeries.d.ts +220 -2
  54. package/.internal/charts/xy/series/XYSeries.d.ts.map +1 -1
  55. package/.internal/charts/xy/series/XYSeries.js +26 -4
  56. package/.internal/charts/xy/series/XYSeries.js.map +1 -1
  57. package/.internal/core/Classes.d.ts +2 -0
  58. package/.internal/core/Classes.d.ts.map +1 -1
  59. package/.internal/core/Classes.js.map +1 -1
  60. package/.internal/core/Root.d.ts +16 -5
  61. package/.internal/core/Root.d.ts.map +1 -1
  62. package/.internal/core/Root.js +27 -9
  63. package/.internal/core/Root.js.map +1 -1
  64. package/.internal/core/render/Component.js +1 -1
  65. package/.internal/core/render/Component.js.map +1 -1
  66. package/.internal/core/render/Container.d.ts +8 -0
  67. package/.internal/core/render/Container.d.ts.map +1 -1
  68. package/.internal/core/render/Container.js +1 -9
  69. package/.internal/core/render/Container.js.map +1 -1
  70. package/.internal/core/render/GridLayout.d.ts +1 -3
  71. package/.internal/core/render/GridLayout.d.ts.map +1 -1
  72. package/.internal/core/render/GridLayout.js +8 -8
  73. package/.internal/core/render/GridLayout.js.map +1 -1
  74. package/.internal/core/render/HorizontalLayout.d.ts.map +1 -1
  75. package/.internal/core/render/HorizontalLayout.js +4 -4
  76. package/.internal/core/render/HorizontalLayout.js.map +1 -1
  77. package/.internal/core/render/Layout.d.ts +2 -0
  78. package/.internal/core/render/Layout.d.ts.map +1 -1
  79. package/.internal/core/render/Layout.js +8 -0
  80. package/.internal/core/render/Layout.js.map +1 -1
  81. package/.internal/core/render/Legend.d.ts +6 -4
  82. package/.internal/core/render/Legend.d.ts.map +1 -1
  83. package/.internal/core/render/Legend.js +35 -34
  84. package/.internal/core/render/Legend.js.map +1 -1
  85. package/.internal/core/render/Series.d.ts.map +1 -1
  86. package/.internal/core/render/Series.js +4 -0
  87. package/.internal/core/render/Series.js.map +1 -1
  88. package/.internal/core/render/Slice.d.ts.map +1 -1
  89. package/.internal/core/render/Slice.js +4 -0
  90. package/.internal/core/render/Slice.js.map +1 -1
  91. package/.internal/core/render/Slider.d.ts +0 -2
  92. package/.internal/core/render/Slider.d.ts.map +1 -1
  93. package/.internal/core/render/Slider.js +0 -2
  94. package/.internal/core/render/Slider.js.map +1 -1
  95. package/.internal/core/render/Sprite.d.ts +4 -0
  96. package/.internal/core/render/Sprite.d.ts.map +1 -1
  97. package/.internal/core/render/Sprite.js.map +1 -1
  98. package/.internal/core/render/VerticalLayout.d.ts.map +1 -1
  99. package/.internal/core/render/VerticalLayout.js +4 -4
  100. package/.internal/core/render/VerticalLayout.js.map +1 -1
  101. package/.internal/core/render/backend/CanvasRenderer.d.ts +6 -4
  102. package/.internal/core/render/backend/CanvasRenderer.d.ts.map +1 -1
  103. package/.internal/core/render/backend/CanvasRenderer.js +60 -13
  104. package/.internal/core/render/backend/CanvasRenderer.js.map +1 -1
  105. package/.internal/core/util/Array.d.ts.map +1 -1
  106. package/.internal/core/util/Array.js +13 -23
  107. package/.internal/core/util/Array.js.map +1 -1
  108. package/.internal/core/util/DateFormatter.d.ts.map +1 -1
  109. package/.internal/core/util/DateFormatter.js +4 -7
  110. package/.internal/core/util/DateFormatter.js.map +1 -1
  111. package/.internal/core/util/Disposer.d.ts +33 -8
  112. package/.internal/core/util/Disposer.d.ts.map +1 -1
  113. package/.internal/core/util/Disposer.js +95 -21
  114. package/.internal/core/util/Disposer.js.map +1 -1
  115. package/.internal/core/util/Entity.d.ts +19 -0
  116. package/.internal/core/util/Entity.d.ts.map +1 -1
  117. package/.internal/core/util/Entity.js +67 -5
  118. package/.internal/core/util/Entity.js.map +1 -1
  119. package/.internal/core/util/InterfaceColors.d.ts +1 -1
  120. package/.internal/core/util/InterfaceColors.js.map +1 -1
  121. package/.internal/core/util/List.d.ts +7 -0
  122. package/.internal/core/util/List.d.ts.map +1 -1
  123. package/.internal/core/util/List.js +14 -0
  124. package/.internal/core/util/List.js.map +1 -1
  125. package/.internal/core/util/Modal.d.ts +50 -0
  126. package/.internal/core/util/Modal.d.ts.map +1 -0
  127. package/.internal/core/util/Modal.js +215 -0
  128. package/.internal/core/util/Modal.js.map +1 -0
  129. package/.internal/core/util/Template.d.ts +2 -1
  130. package/.internal/core/util/Template.d.ts.map +1 -1
  131. package/.internal/core/util/Template.js +19 -1
  132. package/.internal/core/util/Template.js.map +1 -1
  133. package/.internal/core/util/Time.d.ts +9 -13
  134. package/.internal/core/util/Time.d.ts.map +1 -1
  135. package/.internal/core/util/Time.js +202 -116
  136. package/.internal/core/util/Time.js.map +1 -1
  137. package/.internal/core/util/Timezone.d.ts +28 -0
  138. package/.internal/core/util/Timezone.d.ts.map +1 -0
  139. package/.internal/core/util/Timezone.js +138 -0
  140. package/.internal/core/util/Timezone.js.map +1 -0
  141. package/.internal/core/util/Utils.d.ts +7 -3
  142. package/.internal/core/util/Utils.d.ts.map +1 -1
  143. package/.internal/core/util/Utils.js +37 -20
  144. package/.internal/core/util/Utils.js.map +1 -1
  145. package/.internal/plugins/exporting/Exporting.d.ts +10 -1
  146. package/.internal/plugins/exporting/Exporting.d.ts.map +1 -1
  147. package/.internal/plugins/exporting/Exporting.js +11 -3
  148. package/.internal/plugins/exporting/Exporting.js.map +1 -1
  149. package/.internal/themes/DefaultTheme.js +2 -2
  150. package/.internal/themes/DefaultTheme.js.map +1 -1
  151. package/CHANGELOG.md +64 -0
  152. package/examples/javascript/flow-chord/package.json +1 -1
  153. package/examples/javascript/flow-chord-directed/package.json +1 -1
  154. package/examples/javascript/flow-chord-non-ribbon/package.json +1 -1
  155. package/examples/javascript/flow-sankey/package.json +1 -1
  156. package/examples/javascript/gauge/package.json +1 -1
  157. package/examples/javascript/gauge-bands/package.json +1 -1
  158. package/examples/javascript/hierarchy-force-directed/package.json +1 -1
  159. package/examples/javascript/hierarchy-pack/package.json +1 -1
  160. package/examples/javascript/hierarchy-partition/package.json +1 -1
  161. package/examples/javascript/hierarchy-sunburst/package.json +1 -1
  162. package/examples/javascript/hierarchy-tree/package.json +1 -1
  163. package/examples/javascript/hierarchy-treemap/package.json +1 -1
  164. package/examples/javascript/map-animating-along-lines/package.json +1 -1
  165. package/examples/javascript/map-day-and-night/package.json +1 -1
  166. package/examples/javascript/map-globe-rotate-to-country/package.json +1 -1
  167. package/examples/javascript/map-globe-with-projected-circles/package.json +1 -1
  168. package/examples/javascript/map-with-bubbles/package.json +1 -1
  169. package/examples/javascript/map-zoom-to-country/package.json +1 -1
  170. package/examples/javascript/misc-40-charts/package.json +1 -1
  171. package/examples/javascript/misc-microchart-grid/package.json +1 -1
  172. package/examples/javascript/pie-chart/package.json +1 -1
  173. package/examples/javascript/pie-donut-chart/package.json +1 -1
  174. package/examples/javascript/pie-variable-radius/package.json +1 -1
  175. package/examples/javascript/radar-column-iwatch-style/package.json +1 -1
  176. package/examples/javascript/radar-heat-map/package.json +1 -1
  177. package/examples/javascript/radar-line/package.json +1 -1
  178. package/examples/javascript/radar-time-line/package.json +1 -1
  179. package/examples/javascript/sliced-funnel/package.json +1 -1
  180. package/examples/javascript/sliced-pictorial-stacked/package.json +1 -1
  181. package/examples/javascript/sliced-pyramid/package.json +1 -1
  182. package/examples/javascript/venn-diagram/package.json +1 -1
  183. package/examples/javascript/wordcloud-with-data/package.json +1 -1
  184. package/examples/javascript/wordcloud-with-text/package.json +1 -1
  185. package/examples/javascript/xy-100-percent-stacked-column/package.json +1 -1
  186. package/examples/javascript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
  187. package/examples/javascript/xy-bubble/package.json +1 -1
  188. package/examples/javascript/xy-candlestick/package.json +1 -1
  189. package/examples/javascript/xy-clustered-column/package.json +1 -1
  190. package/examples/javascript/xy-column/package.json +1 -1
  191. package/examples/javascript/xy-comparing-series-google-analytics-style/package.json +1 -1
  192. package/examples/javascript/xy-data-grouping/package.json +1 -1
  193. package/examples/javascript/xy-draggable-range/package.json +1 -1
  194. package/examples/javascript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
  195. package/examples/javascript/xy-dumbbell plot/package.json +1 -1
  196. package/examples/javascript/xy-evenly-spaced-date-axis/package.json +1 -1
  197. package/examples/javascript/xy-line/package.json +1 -1
  198. package/examples/javascript/xy-line-highlight-on-legend-hover/package.json +1 -1
  199. package/examples/javascript/xy-live-data/package.json +1 -1
  200. package/examples/javascript/xy-multiple-synced-value-axes/package.json +1 -1
  201. package/examples/javascript/xy-ohlc/package.json +1 -1
  202. package/examples/javascript/xy-real-time-data-sorting/package.json +1 -1
  203. package/examples/javascript/xy-smoothed-line/package.json +1 -1
  204. package/examples/javascript/xy-stacked-and-clustered-column/package.json +1 -1
  205. package/examples/javascript/xy-stacked-column/package.json +1 -1
  206. package/examples/javascript/xy-stacked-step/package.json +1 -1
  207. package/examples/javascript/xy-stock/package.json +1 -1
  208. package/examples/javascript/xy-stock-comparing/package.json +1 -1
  209. package/examples/typescript/flow-chord/package.json +1 -1
  210. package/examples/typescript/flow-chord-directed/package.json +1 -1
  211. package/examples/typescript/flow-chord-non-ribbon/package.json +1 -1
  212. package/examples/typescript/flow-sankey/package.json +1 -1
  213. package/examples/typescript/gauge/package.json +1 -1
  214. package/examples/typescript/gauge-bands/package.json +1 -1
  215. package/examples/typescript/hierarchy-force-directed/package.json +1 -1
  216. package/examples/typescript/hierarchy-pack/package.json +1 -1
  217. package/examples/typescript/hierarchy-partition/package.json +1 -1
  218. package/examples/typescript/hierarchy-sunburst/package.json +1 -1
  219. package/examples/typescript/hierarchy-tree/package.json +1 -1
  220. package/examples/typescript/hierarchy-treemap/package.json +1 -1
  221. package/examples/typescript/map-animating-along-lines/package.json +1 -1
  222. package/examples/typescript/map-day-and-night/package.json +1 -1
  223. package/examples/typescript/map-globe-rotate-to-country/package.json +1 -1
  224. package/examples/typescript/map-globe-with-projected-circles/package.json +1 -1
  225. package/examples/typescript/map-with-bubbles/package.json +1 -1
  226. package/examples/typescript/map-zoom-to-country/package.json +1 -1
  227. package/examples/typescript/misc-40-charts/package.json +1 -1
  228. package/examples/typescript/misc-microchart-grid/package.json +1 -1
  229. package/examples/typescript/pie-chart/package.json +1 -1
  230. package/examples/typescript/pie-donut-chart/package.json +1 -1
  231. package/examples/typescript/pie-variable-radius/package.json +1 -1
  232. package/examples/typescript/radar-column-iwatch-style/package.json +1 -1
  233. package/examples/typescript/radar-heat-map/package.json +1 -1
  234. package/examples/typescript/radar-line/package.json +1 -1
  235. package/examples/typescript/radar-time-line/package.json +1 -1
  236. package/examples/typescript/sliced-funnel/package.json +1 -1
  237. package/examples/typescript/sliced-pictorial-stacked/package.json +1 -1
  238. package/examples/typescript/sliced-pyramid/package.json +1 -1
  239. package/examples/typescript/venn-diagram/package.json +1 -1
  240. package/examples/typescript/wordcloud-with-data/package.json +1 -1
  241. package/examples/typescript/wordcloud-with-text/package.json +1 -1
  242. package/examples/typescript/xy-100-percent-stacked-column/package.json +1 -1
  243. package/examples/typescript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
  244. package/examples/typescript/xy-bubble/package.json +1 -1
  245. package/examples/typescript/xy-candlestick/package.json +1 -1
  246. package/examples/typescript/xy-clustered-column/package.json +1 -1
  247. package/examples/typescript/xy-column/package.json +1 -1
  248. package/examples/typescript/xy-comparing-series-google-analytics-style/package.json +1 -1
  249. package/examples/typescript/xy-data-grouping/package.json +1 -1
  250. package/examples/typescript/xy-draggable-range/package.json +1 -1
  251. package/examples/typescript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
  252. package/examples/typescript/xy-dumbbell plot/package.json +1 -1
  253. package/examples/typescript/xy-evenly-spaced-date-axis/package.json +1 -1
  254. package/examples/typescript/xy-line/package.json +1 -1
  255. package/examples/typescript/xy-line-highlight-on-legend-hover/package.json +1 -1
  256. package/examples/typescript/xy-live-data/package.json +1 -1
  257. package/examples/typescript/xy-multiple-synced-value-axes/package.json +1 -1
  258. package/examples/typescript/xy-ohlc/package.json +1 -1
  259. package/examples/typescript/xy-real-time-data-sorting/package.json +1 -1
  260. package/examples/typescript/xy-smoothed-line/package.json +1 -1
  261. package/examples/typescript/xy-stacked-and-clustered-column/package.json +1 -1
  262. package/examples/typescript/xy-stacked-column/package.json +1 -1
  263. package/examples/typescript/xy-stacked-step/package.json +1 -1
  264. package/examples/typescript/xy-stock/package.json +1 -1
  265. package/examples/typescript/xy-stock-comparing/package.json +1 -1
  266. package/flow.d.ts +15 -13
  267. package/flow.d.ts.map +1 -1
  268. package/flow.js +2 -0
  269. package/flow.js.map +1 -1
  270. package/hierarchy.d.ts +14 -12
  271. package/hierarchy.d.ts.map +1 -1
  272. package/hierarchy.js +2 -0
  273. package/hierarchy.js.map +1 -1
  274. package/index.d.ts +43 -41
  275. package/index.d.ts.map +1 -1
  276. package/index.js +4 -2
  277. package/index.js.map +1 -1
  278. package/map.d.ts +11 -9
  279. package/map.d.ts.map +1 -1
  280. package/map.js +2 -0
  281. package/map.js.map +1 -1
  282. package/package.json +1 -1
  283. package/percent.d.ts +10 -8
  284. package/percent.d.ts.map +1 -1
  285. package/percent.js +2 -0
  286. package/percent.js.map +1 -1
  287. package/radar.d.ts +10 -8
  288. package/radar.d.ts.map +1 -1
  289. package/radar.js +2 -0
  290. package/radar.js.map +1 -1
  291. package/venn.d.ts +3 -1
  292. package/venn.d.ts.map +1 -1
  293. package/venn.js +2 -0
  294. package/venn.js.map +1 -1
  295. package/wc.d.ts +3 -1
  296. package/wc.d.ts.map +1 -1
  297. package/wc.js +2 -0
  298. package/wc.js.map +1 -1
  299. package/xy.d.ts +30 -25
  300. package/xy.d.ts.map +1 -1
  301. package/xy.js +5 -0
  302. package/xy.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Array.d.ts","sourceRoot":"","sources":["../../../../../src/.internal/core/util/Array.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAIvC;;;;;GAKG;AAEH;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,CAWhE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,CAUhF;AAED;;;;;;;GAOG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAS3F;AAED;;;;;;GAMG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAMxF;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAO/F;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CAQnG;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAQjE;AAED;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAGpD;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAErD;AAED;;;;;;;;GAQG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAK1E;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAG5E;AAGD;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,QAM1D;AAGD;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAuB9D;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAUnE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAe3E;AAGD;;;;;;;;GAQG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAcxE;AAGD;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAI5D;AAGD;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAiB5E;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAOxD;AAED;;;;;;GAMG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAE/D;AAED;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAarD;AAGD;;;;;;;;;;GAUG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,GAAE,MAAqB,GAAG,KAAK,CAAC,CAAC,CAAC,CAQjG;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAE7E;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAEnE;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IAC1B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,CAAA;CACb;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,MAAM,CAUvG;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,MAAM,CAW9G;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,CAAC,GAAG,SAAS,CAMzG;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,CAAC,GAAG,SAAS,CAMhH;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS,CAUrH;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,QAiBzC;AAGD,oBAAY,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAElC;;;GAGG;AACH,MAAM,WAAW,UAAU;IAC1B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,CAAA;CACb;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,QAAQ,GAAG,UAAU,CA8BlG;AAGD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,QAAQ,GAAG,UAAU,CA8BvG;AAGD,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,GAAG,IAAI,CAa5E"}
1
+ {"version":3,"file":"Array.d.ts","sourceRoot":"","sources":["../../../../../src/.internal/core/util/Array.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAIvC;;;;;GAKG;AAEH;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,CAWhE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,CAUhF;AAED;;;;;;;GAOG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAS3F;AAED;;;;;;GAMG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAMxF;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAO/F;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CAQnG;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAQjE;AAED;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAGpD;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAErD;AAED;;;;;;;;GAQG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAK1E;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAG5E;AAGD;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,QAM1D;AAGD;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAe9D;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAUnE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAe3E;AAGD;;;;;;;;GAQG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAcxE;AAGD;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAI5D;AAGD;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAiB5E;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAOxD;AAED;;;;;;GAMG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAE/D;AAED;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAarD;AAGD;;;;;;;;;;GAUG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,GAAE,MAAqB,GAAG,KAAK,CAAC,CAAC,CAAC,CAQjG;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAE7E;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAEnE;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IAC1B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,CAAA;CACb;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,MAAM,CAUvG;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,MAAM,CAW9G;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,CAAC,GAAG,SAAS,CAMzG;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,CAAC,GAAG,SAAS,CAMhH;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS,CAUrH;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,QAiBzC;AAGD,oBAAY,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAElC;;;GAGG;AACH,MAAM,WAAW,UAAU;IAC1B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,CAAA;CACb;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,QAAQ,GAAG,UAAU,CA8BlG;AAGD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,QAAQ,GAAG,UAAU,CA8BvG;AAGD,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,GAAG,IAAI,CAU5E"}
@@ -185,23 +185,17 @@ export function pushAll(array, input) {
185
185
  */
186
186
  export function remove(array, element) {
187
187
  var found = false;
188
- var index = array.indexOf(element);
189
- if (index !== -1) {
190
- found = true;
191
- array.splice(index, 1);
192
- var length_1 = array.length;
193
- while (index < length_1) {
194
- // TODO handle NaN
195
- if (array[index] === element) {
196
- array.splice(index, 1);
197
- --length_1;
198
- }
199
- else {
200
- ++index;
201
- }
188
+ var index = 0;
189
+ for (;;) {
190
+ index = array.indexOf(element, index);
191
+ if (index === -1) {
192
+ return found;
193
+ }
194
+ else {
195
+ found = true;
196
+ array.splice(index, 1);
202
197
  }
203
198
  }
204
- return found;
205
199
  }
206
200
  export function removeFirst(array, element) {
207
201
  var index = array.indexOf(element);
@@ -564,15 +558,11 @@ export function getFirstSortedIndex(array, ordering) {
564
558
  };
565
559
  }
566
560
  export function keepIf(array, keep) {
567
- var length = array.length;
568
- var i = 0;
569
- while (i < length) {
570
- if (keep(array[i])) {
571
- ++i;
572
- }
573
- else {
561
+ var i = array.length;
562
+ while (i > 0) {
563
+ --i;
564
+ if (!keep(array[i])) {
574
565
  array.splice(i, 1);
575
- --length;
576
566
  }
577
567
  }
578
568
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Array.js","sourceRoot":"","sources":["../../../../../src/.internal/core/util/Array.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,KAAK,MAAM,QAAQ,CAAC;AAGhC;;;;;GAKG;AAEH;;;;;;;;GAQG;AACH,MAAM,UAAU,OAAO,CAAI,KAAmB,EAAE,KAAQ;IACvD,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;QAChC,kBAAkB;QAClB,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE;YACvB,OAAO,CAAC,CAAC;SACT;KACD;IAED,OAAO,CAAC,CAAC,CAAC;AACX,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,GAAG,CAAI,KAAmB,EAAE,IAA2B;IACtE,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;QAChC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;YACnB,OAAO,IAAI,CAAC;SACZ;KACD;IAED,OAAO,KAAK,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,GAAG,CAAO,KAAmB,EAAE,EAAkC;IAChF,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,IAAM,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAEjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;QAChC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC5B;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,IAAI,CAAI,KAAmB,EAAE,EAAqC;IACjF,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;QAChC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAChB;AACF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAI,KAAmB,EAAE,EAAqC;IACxF,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IAErB,OAAO,CAAC,GAAG,CAAC,EAAE;QACb,EAAE,CAAC,CAAC;QACJ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAChB;AACF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAI,KAAmB,EAAE,EAAwC;IAC5F,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;QAChC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;YACrB,MAAM;SACN;KACD;AACF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAI,KAAe,EAAE,KAAa;IAC1D,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;QACpC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;KAC5B;IAED,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAC/B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,IAAI,CAAI,KAAe;IACtC,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,KAAK,CAAI,KAAe;IACvC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,MAAM,CAAI,KAAe,EAAE,OAAU,EAAE,KAAa;IACnE,cAAc;IACd,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACnD,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IAChC,GAAG;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ,CAAI,KAAe,EAAE,OAAU,EAAE,KAAa;IACrE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACvB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC/B,CAAC;AAGD;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAI,KAAe,EAAE,KAAe;IAC1D,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;QAChC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KACrB;AACF,CAAC;AAGD;;;;;;;GAOG;AACH,MAAM,UAAU,MAAM,CAAI,KAAe,EAAE,OAAU;IACpD,IAAI,KAAK,GAAY,KAAK,CAAC;IAC3B,IAAI,KAAK,GAAW,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;QACjB,KAAK,GAAG,IAAI,CAAC;QACb,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAEvB,IAAI,QAAM,GAAW,KAAK,CAAC,MAAM,CAAC;QAElC,OAAO,KAAK,GAAG,QAAM,EAAE;YACtB,kBAAkB;YAClB,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,OAAO,EAAE;gBAC7B,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBACvB,EAAE,QAAM,CAAC;aAET;iBAAM;gBACN,EAAE,KAAK,CAAC;aACR;SACD;KACD;IAED,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,UAAU,WAAW,CAAI,KAAe,EAAE,OAAU;IACzD,IAAI,KAAK,GAAW,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;QACjB,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;KAEZ;SAAM;QACN,OAAO,KAAK,CAAC;KACb;AACF,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,IAAI,CAAI,KAAe,EAAE,OAAU,EAAE,OAAgB;IACpE,0EAA0E;IAC1E,gFAAgF;IAChF,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAEpC,2DAA2D;IAC3D,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;QACjB,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;KAC1B;IAED,IAAI,OAAO,IAAI,IAAI,EAAE;QACpB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACpB;SAAM;QACN,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;KACrC;AACF,CAAC;AAGD;;;;;;;;GAQG;AACH,MAAM,UAAU,GAAG,CAAI,KAAe,EAAE,OAAU,EAAE,KAAc;IACjE,wCAAwC;IACxC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QAC3B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACpB;IAED,8CAA8C;SACzC,IAAI,KAAK,KAAK,CAAC,EAAE;QACrB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;KACvB;IACD,yCAAyC;SACpC;QACJ,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;KAChC;AACF,CAAC;AAGD;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAI,KAAe,EAAE,OAAU;IACrD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;QAClC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACpB;AACF,CAAC;AAGD;;;;;;;;;GASG;AACH,MAAM,UAAU,OAAO,CAAI,KAAe,EAAE,OAAU,EAAE,KAAc;IACrE,kBAAkB;IAClB,IAAI,GAAG,GAAW,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAEzC,mBAAmB;IACnB,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;QACf,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;KACrB;IAED,iCAAiC;IACjC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QAC3B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACpB;IACD,yCAAyC;SACpC;QACJ,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;KAChC;AACF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAI,KAAmB;IAC7C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACzB,OAAO,KAAK,CAAC;KACb;SACI;QACJ,OAAO,CAAC,KAAK,CAAC,CAAC;KACf;AACF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,GAAG,CAAI,KAAmB,EAAE,OAAU;IACrD,OAAO,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACvC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,IAAI,CAAI,KAAmB;IAC1C,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B,4DAA4D;IAC5D,IAAM,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAEjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;QAChC,iFAAiF;QACjF,mCAAmC;QACnC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;KACrB;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAGD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,KAAK,CAAI,KAAmB,EAAE,KAAa,EAAE,GAA0B;IAA1B,oBAAA,EAAA,MAAc,KAAK,CAAC,MAAM;IACtF,IAAM,MAAM,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC;IAEtC,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;QACjC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;KAC7B;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAI,KAAe,EAAE,KAAa,EAAE,KAAQ;IACtE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAI,KAAe,EAAE,KAAa;IAC5D,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACxB,CAAC;AAWD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,SAAS,CAAI,KAAmB,EAAE,OAA6C;IAC9F,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;QAChC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;YACzB,OAAO,CAAC,CAAC;SACT;KACD;IAED,OAAO,CAAC,CAAC,CAAC;AACX,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAI,KAAmB,EAAE,OAA6C;IACrG,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IAErB,OAAO,CAAC,GAAG,CAAC,EAAE;QACb,EAAE,CAAC,CAAC;QACJ,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;YACzB,OAAO,CAAC,CAAC;SACT;KACD;IAED,OAAO,CAAC,CAAC,CAAC;AACX,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,IAAI,CAAI,KAAmB,EAAE,OAA6C;IACzF,IAAM,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAExC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;QACjB,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;KACpB;AACF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAI,KAAmB,EAAE,OAA6C;IAChG,IAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAE/C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;QACjB,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;KACpB;AACF,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,OAAO,CAAO,KAAmB,EAAE,OAAmD;IACrG,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;QAChC,IAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEnC,IAAI,KAAK,KAAK,SAAS,EAAE;YACxB,OAAO,KAAK,CAAC;SACb;KACD;AACF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CAAI,KAAe;IACzC,6CAA6C;IAC7C,IAAI,YAAY,GAAG,KAAK,CAAC,MAAM,EAC9B,cAAc,EACd,WAAW,CAAC;IAEb,4CAA4C;IAC5C,OAAO,CAAC,KAAK,YAAY,EAAE;QAC1B,8BAA8B;QAC9B,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,YAAY,CAAC,CAAC;QACvD,YAAY,IAAI,CAAC,CAAC;QAElB,wCAAwC;QACxC,cAAc,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;QACrC,KAAK,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;QACzC,KAAK,CAAC,WAAW,CAAC,GAAG,cAAc,CAAC;KACpC;AACF,CAAC;AAcD;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAI,KAAmB,EAAE,QAA+B;IACrF,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,GAAG,GAAK,KAAK,CAAC,MAAM,CAAC;IACzB,IAAI,KAAK,GAAG,KAAK,CAAC;IAElB,OAAO,KAAK,GAAG,GAAG,EAAE;QACnB,qDAAqD;QACrD,IAAM,KAAK,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QAEjC,IAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAErC,OAAO;QACP,IAAI,KAAK,GAAG,CAAC,EAAE;YACd,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;YAEnB,QAAQ;SACP;aAAM,IAAI,KAAK,KAAK,CAAC,EAAE;YACvB,KAAK,GAAG,IAAI,CAAC;YACb,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;YAEnB,OAAO;SACN;aAAM;YACN,GAAG,GAAG,KAAK,CAAC;SACZ;KACD;IAED,OAAO;QACN,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;KAClC,CAAC;AACH,CAAC;AAGD;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAI,KAAmB,EAAE,QAA+B;IAC1F,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,GAAG,GAAK,KAAK,CAAC,MAAM,CAAC;IACzB,IAAI,KAAK,GAAG,KAAK,CAAC;IAElB,OAAO,KAAK,GAAG,GAAG,EAAE;QACnB,qDAAqD;QACrD,IAAM,KAAK,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QAEjC,IAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAErC,OAAO;QACP,IAAI,KAAK,GAAG,CAAC,EAAE;YACd,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;YAEnB,QAAQ;SACP;aAAM,IAAI,KAAK,KAAK,CAAC,EAAE;YACvB,KAAK,GAAG,IAAI,CAAC;YACb,GAAG,GAAG,KAAK,CAAC;YAEb,OAAO;SACN;aAAM;YACN,GAAG,GAAG,KAAK,CAAC;SACZ;KACD;IAED,OAAO;QACN,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;KACZ,CAAC;AACH,CAAC;AAGD,MAAM,UAAU,MAAM,CAAI,KAAe,EAAE,IAA2B;IACrE,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC1B,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,OAAO,CAAC,GAAG,MAAM,EAAE;QAClB,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;YACnB,EAAE,CAAC,CAAC;SAEJ;aAAM;YACN,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACnB,EAAE,MAAM,CAAC;SACT;KACD;AACF,CAAC","sourcesContent":["/**\n * ============================================================================\n * IMPORTS\n * ============================================================================\n * @hidden\n */\nimport type { Optional } from \"./Type\";\nimport * as $type from \"./Type\";\n\n\n/**\n * ============================================================================\n * UTILITY FUNCTIONS\n * ============================================================================\n * @hidden\n */\n\n/**\n * Searches `array` for `value`.\n *\n * Returns -1 if not found.\n *\n * @param array Source array\n * @param value Value to search\n * @returns Index\n */\nexport function indexOf<A>(array: ArrayLike<A>, value: A): number {\n\tconst length = array.length;\n\n\tfor (let i = 0; i < length; ++i) {\n\t\t// TODO handle NaN\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\n\treturn -1;\n}\n\n/**\n * Calls `test` for each element in `array`.\n *\n * If `test` returns `true` then it immediately returns `true`.\n *\n * If `test` returns `false` for all of the elements in `array` then it returns `false`.\n *\n * @param array Source array\n * @param test Function which is called on each element\n * @returns Whether `test` returned true or not\n */\nexport function any<A>(array: ArrayLike<A>, test: (value: A) => boolean): boolean {\n\tconst length = array.length;\n\n\tfor (let i = 0; i < length; ++i) {\n\t\tif (test(array[i])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\n/**\n * Calls `fn` function for every member of array and returns a new array out\n * of all outputs.\n *\n * @param array Source array\n * @param fn Callback function\n * @returns New array\n */\nexport function map<A, B>(array: ArrayLike<A>, fn: (value: A, index: number) => B): Array<B> {\n\tconst length = array.length;\n\tconst output = new Array(length);\n\n\tfor (let i = 0; i < length; ++i) {\n\t\toutput[i] = fn(array[i], i);\n\t}\n\n\treturn output;\n}\n\n/**\n * Iterates through all items in array and calls `fn` function for each of\n * them.\n *\n * @param array Source array\n * @param fn Callback function\n */\nexport function each<A>(array: ArrayLike<A>, fn: (value: A, index: number) => void): void {\n\tconst length = array.length;\n\n\tfor (let i = 0; i < length; ++i) {\n\t\tfn(array[i], i);\n\t}\n}\n\n/**\n * Iterates through all items in array in reverse order and calls `fn` function for each of\n * them.\n *\n * @param array Source array\n * @param fn Callback function\n */\nexport function eachReverse<A>(array: ArrayLike<A>, fn: (value: A, index: number) => void): void {\n\tlet i = array.length;\n\n\twhile (i > 0) {\n\t\t--i;\n\t\tfn(array[i], i);\n\t}\n}\n\n/**\n * Iterates through all items in array and calls `fn` function for each of\n * them.\n *\n * If `fn` call evaluates to `false`, further iteration is cancelled.\n *\n * @param array Source array\n * @param fn Callback function\n */\nexport function eachContinue<A>(array: ArrayLike<A>, fn: (value: A, index: number) => boolean): void {\n\tconst length = array.length;\n\n\tfor (let i = 0; i < length; ++i) {\n\t\tif (!fn(array[i], i)) {\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\n/**\n * Shifts an item at `index` towards beginning of the array.\n *\n * @param array Source array\n * @param index Target element index\n */\nexport function shiftLeft<A>(array: Array<A>, index: number): void {\n\tconst length = array.length;\n\n\tfor (let i = index; i < length; ++i) {\n\t\tarray[i - index] = array[i];\n\t}\n\n\tarray.length = length - index;\n}\n\n/**\n * Returns the last item of the array.\n *\n * @param array Source array\n * @returns Last item\n */\nexport function last<A>(array: Array<A>): Optional<A> {\n\tconst length = array.length;\n\treturn length ? array[length - 1] : undefined;\n}\n\n/**\n * Returns the first item of the array.\n *\n * @param array Source array\n * @returns Last item\n */\nexport function first<A>(array: Array<A>): Optional<A> {\n\treturn array[0];\n}\n\n/**\n * Inserts `element` into `array` at `index`.\n *\n * Caps `index` to be between `0` and `array.length`\n *\n * @param array Source array\n * @param element Item to insert\n * @param array Index to insert item at\n */\nexport function insert<A>(array: Array<A>, element: A, index: number): void {\n\t//if (array) {\n\tindex = Math.max(0, Math.min(index, array.length));\n\tarray.splice(index, 0, element);\n\t//}\n}\n\n/**\n * Removes all copies of `element` from `array` (if they exist) and then\n * inserts `element` at `index`.\n *\n * @param array Source array\n * @param element Item\n * @param array Index to move item to\n */\nexport function setIndex<A>(array: Array<A>, element: A, index: number): void {\n\tremove(array, element);\n\tinsert(array, element, index);\n}\n\n\n/**\n * Pushes all of the elements from `input` into `array`.\n *\n * @param array Output array\n * @param input Input array\n */\nexport function pushAll<A>(array: Array<A>, input: Array<A>) {\n\tconst length = input.length;\n\n\tfor (let i = 0; i < length; ++i) {\n\t\tarray.push(input[i]);\n\t}\n}\n\n\n/**\n * Removes `element` from `array`.\n *\n * If there are multiple copies of `element`, they are all removed.\n *\n * @param array Source array\n * @param element Item to remove\n */\nexport function remove<A>(array: Array<A>, element: A): boolean {\n\tlet found: boolean = false;\n\tlet index: number = array.indexOf(element);\n\n\tif (index !== -1) {\n\t\tfound = true;\n\t\tarray.splice(index, 1);\n\n\t\tlet length: number = array.length;\n\n\t\twhile (index < length) {\n\t\t\t// TODO handle NaN\n\t\t\tif (array[index] === element) {\n\t\t\t\tarray.splice(index, 1);\n\t\t\t\t--length;\n\n\t\t\t} else {\n\t\t\t\t++index;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn found;\n}\n\nexport function removeFirst<A>(array: Array<A>, element: A): boolean {\n\tlet index: number = array.indexOf(element);\n\n\tif (index !== -1) {\n\t\tarray.splice(index, 1);\n\t\treturn true;\n\n\t} else {\n\t\treturn false;\n\t}\n}\n\n/**\n * Adds an `element` to `array`.\n *\n * If array already contains and item like this, it is removed before adding\n * it again.\n *\n * Optionally `toIndex` can be specified to add element at specific index.\n *\n * @param array Source array\n * @param element Item to add\n * @param array Index to move item to\n */\nexport function move<A>(array: Array<A>, element: A, toIndex?: number): void {\n\t// @todo this implementation must be the same as the List.moveValue method\n\t// @todo don't do anything if the desired index is the same as the current index\n\tlet index = indexOf(array, element);\n\n\t// @todo remove all old values rather than only the first ?\n\tif (index !== -1) {\n\t\tremoveIndex(array, index);\n\t}\n\n\tif (toIndex == null) {\n\t\tarray.push(element);\n\t} else {\n\t\tinsertIndex(array, toIndex, element);\n\t}\n}\n\n\n/**\n * Inserts `element` into `array` at `index`.\n *\n * If `index` is not provided, it will insert `element` at the end of `array`.\n *\n * @param array Source array\n * @param element Item to add\n * @param array Index to add item at\n */\nexport function add<A>(array: Array<A>, element: A, index?: number): void {\n\t// Append to the end if index is not set\n\tif (!$type.isNumber(index)) {\n\t\tarray.push(element);\n\t}\n\n\t// Add to the beginning of array if index is 0\n\telse if (index === 0) {\n\t\tarray.unshift(element);\n\t}\n\t// Add to indicated place if index is set\n\telse {\n\t\tarray.splice(index, 0, element);\n\t}\n}\n\n\n/**\n * Pushes `element` into `array` if it doesn't already exist.\n *\n * @param array Source array\n * @param element Item to add\n */\nexport function pushOne<A>(array: Array<A>, element: A): void {\n\tif (array.indexOf(element) === -1) {\n\t\tarray.push(element);\n\t}\n}\n\n\n/**\n * Removes `element` from `array` (if it exists) and then inserts `element` at\n * `index`.\n *\n * If `index` is not provided, it will insert `element` at the end of `array`.\n *\n * @param array Source array\n * @param element Item to remove\n * @param array Index to move item to\n */\nexport function replace<A>(array: Array<A>, element: A, index?: number): void {\n\t// check if exists\n\tlet ind: number = array.indexOf(element);\n\n\t// remove if exists\n\tif (ind !== -1) {\n\t\tarray.splice(ind, 1);\n\t}\n\n\t// add to end if index is not set\n\tif (!$type.isNumber(index)) {\n\t\tarray.push(element);\n\t}\n\t// add to indicated place if index is set\n\telse {\n\t\tarray.splice(index, 0, element);\n\t}\n}\n\n/**\n * Wraps `input` in an array, if it isn't already an array.\n *\n * @param input Source value\n * @return An array\n */\nexport function toArray<A>(input: Array<A> | A): Array<A> {\n\tif (Array.isArray(input)) {\n\t\treturn input;\n\t}\n\telse {\n\t\treturn [input];\n\t}\n}\n\n/**\n * Returns `true` if `element` exists in `array`.\n *\n * @param array Source array\n * @param element Item to search for\n * @returns Item in array?\n */\nexport function has<A>(array: ArrayLike<A>, element: A): boolean {\n\treturn indexOf(array, element) !== -1;\n}\n\n/**\n * Returns a shallow copy of `array`.\n *\n * @param array Source array\n * @returns Copy of the array\n */\nexport function copy<A>(array: ArrayLike<A>): Array<A> {\n\tconst length = array.length;\n\n\t// It's faster to create the array with a pre-defined length\n\tconst output = new Array(length);\n\n\tfor (let i = 0; i < length; ++i) {\n\t\t// Because the array has a pre-defined length, we have to assign rather than push\n\t\t// This is also faster than pushing\n\t\toutput[i] = array[i];\n\t}\n\n\treturn output;\n}\n\n\n/**\n * Returns a copy of `array` which contains all the elements between `start`\n * and `end`. (including `start` and excluding `end`)\n *\n * If `end` is not provided, it defaults to `array.length`.\n *\n * @param array Source array\n * @param start Start index\n * @param end End index\n * @returns Part of the array\n */\nexport function slice<A>(array: ArrayLike<A>, start: number, end: number = array.length): Array<A> {\n\tconst output = new Array(end - start);\n\n\tfor (let i = start; i < end; ++i) {\n\t\toutput[i - start] = array[i];\n\t}\n\n\treturn output;\n}\n\n/**\n * Inserts a value into array at specific index.\n *\n * @param array Source array\n * @param index Index\n * @param value Value to insert\n */\nexport function insertIndex<A>(array: Array<A>, index: number, value: A): void {\n\tarray.splice(index, 0, value);\n}\n\n/**\n * Removes a value from array at specific index.\n *\n * @param array Source array\n * @param index Index\n */\nexport function removeIndex<A>(array: Array<A>, index: number): void {\n\tarray.splice(index, 1);\n}\n\n/**\n * @ignore Exclude from docs\n * @todo Description\n */\nexport interface SortResult {\n\tfound: boolean;\n\tindex: number\n}\n\n/**\n * Searches the array using custom function and returns index of the item if\n * found.\n *\n * Will call `matches` function on all items of the array. If return value\n * evaluates to `true`, index is returned.\n *\n * Otherwise returns -1.\n *\n * @param array Source array\n * @param matches Search function\n * @returns Index of the item if found\n */\nexport function findIndex<A>(array: ArrayLike<A>, matches: (value: A, index: number) => boolean): number {\n\tconst length = array.length;\n\n\tfor (let i = 0; i < length; ++i) {\n\t\tif (matches(array[i], i)) {\n\t\t\treturn i;\n\t\t}\n\t}\n\n\treturn -1;\n}\n\n/**\n * This is the same as `findIndex` except it searches from right to left.\n *\n * @param array Source array\n * @param matches Search function\n * @returns Index of the item if found\n */\nexport function findIndexReverse<A>(array: ArrayLike<A>, matches: (value: A, index: number) => boolean): number {\n\tlet i = array.length;\n\n\twhile (i > 0) {\n\t\t--i;\n\t\tif (matches(array[i], i)) {\n\t\t\treturn i;\n\t\t}\n\t}\n\n\treturn -1;\n}\n\n/**\n * Searches the array using custom function and returns item if found.\n *\n * Will call `matches` function on all items of the array. If return value\n * evaluates to `true`, index is returned.\n *\n * Otherwise returns `undefined`.\n *\n * @param array Source array\n * @param matches Search function\n * @returns Item if found\n */\nexport function find<A>(array: ArrayLike<A>, matches: (value: A, index: number) => boolean): A | undefined {\n\tconst index = findIndex(array, matches);\n\n\tif (index !== -1) {\n\t\treturn array[index];\n\t}\n}\n\n/**\n * This is the same as `find` except it searches from right to left.\n *\n * @param array Source array\n * @param matches Search function\n * @returns Item if found\n */\nexport function findReverse<A>(array: ArrayLike<A>, matches: (value: A, index: number) => boolean): A | undefined {\n\tconst index = findIndexReverse(array, matches);\n\n\tif (index !== -1) {\n\t\treturn array[index];\n\t}\n}\n\n/**\n * Searches the array using custom function and returns item if found.\n *\n * Will call `matches` function on all items of the array. If value\n * is not `undefined`, it returns it.\n *\n * Otherwise returns `undefined`.\n *\n * @param array Source array\n * @param matches Search function\n * @returns Item if found\n */\nexport function findMap<A, B>(array: ArrayLike<A>, matches: (value: A, index: number) => B | undefined): B | undefined {\n\tconst length = array.length;\n\n\tfor (let i = 0; i < length; ++i) {\n\t\tconst value = matches(array[i], i);\n\n\t\tif (value !== undefined) {\n\t\t\treturn value;\n\t\t}\n\t}\n}\n\n/**\n * Iterates through all items in array and calls `fn` function for each of\n * them.\n *\n * @param array Source array\n * @param fn Callback function\n */\nexport function shuffle<A>(array: Array<A>) {\n\t// https://stackoverflow.com/a/2450976/449477\n\tlet currentIndex = array.length,\n\t\ttemporaryValue,\n\t\trandomIndex;\n\n\t// While there remain elements to shuffle...\n\twhile (0 !== currentIndex) {\n\t\t// Pick a remaining element...\n\t\trandomIndex = Math.floor(Math.random() * currentIndex);\n\t\tcurrentIndex -= 1;\n\n\t\t// And swap it with the current element.\n\t\ttemporaryValue = array[currentIndex];\n\t\tarray[currentIndex] = array[randomIndex];\n\t\tarray[randomIndex] = temporaryValue;\n\t}\n}\n\n\nexport type Ordering = -1 | 0 | 1;\n\n/**\n * @ignore Exclude from docs\n * @todo Description\n */\nexport interface SortResult {\n\tfound: boolean;\n\tindex: number\n}\n\n/**\n * Orders an array using specific `ordering` function and returns right-most index of\n * the `value`.\n *\n * @ignore Exclude from docs\n * @param array Source array\n * @param ordering An ordering function\n * @returns Result of the search\n */\nexport function getSortedIndex<A>(array: ArrayLike<A>, ordering: (left: A) => Ordering): SortResult {\n\tlet start = 0;\n\tlet end = array.length;\n\tlet found = false;\n\n\twhile (start < end) {\n\t\t// TODO is this faster/slower than using Math.floor ?\n\t\tconst pivot = (start + end) >> 1;\n\n\t\tconst order = ordering(array[pivot]);\n\n\t\t// less\n\t\tif (order < 0) {\n\t\t\tstart = pivot + 1;\n\n\t\t// equal\n\t\t} else if (order === 0) {\n\t\t\tfound = true;\n\t\t\tstart = pivot + 1;\n\n\t\t// more\n\t\t} else {\n\t\t\tend = pivot;\n\t\t}\n\t}\n\n\treturn {\n\t\tfound: found,\n\t\tindex: (found ? start - 1 : start)\n\t};\n}\n\n\n/**\n * Orders an array using specific `ordering` function and returns left-most index of\n * the `value`.\n *\n * @ignore Exclude from docs\n * @param array Source array\n * @param ordering An ordering function\n * @returns Result of the search\n */\nexport function getFirstSortedIndex<A>(array: ArrayLike<A>, ordering: (left: A) => Ordering): SortResult {\n\tlet start = 0;\n\tlet end = array.length;\n\tlet found = false;\n\n\twhile (start < end) {\n\t\t// TODO is this faster/slower than using Math.floor ?\n\t\tconst pivot = (start + end) >> 1;\n\n\t\tconst order = ordering(array[pivot]);\n\n\t\t// less\n\t\tif (order < 0) {\n\t\t\tstart = pivot + 1;\n\n\t\t// equal\n\t\t} else if (order === 0) {\n\t\t\tfound = true;\n\t\t\tend = pivot;\n\n\t\t// more\n\t\t} else {\n\t\t\tend = pivot;\n\t\t}\n\t}\n\n\treturn {\n\t\tfound: found,\n\t\tindex: start\n\t};\n}\n\n\nexport function keepIf<A>(array: Array<A>, keep: (value: A) => boolean): void {\n\tlet length = array.length;\n\tlet i = 0;\n\n\twhile (i < length) {\n\t\tif (keep(array[i])) {\n\t\t\t++i;\n\n\t\t} else {\n\t\t\tarray.splice(i, 1);\n\t\t\t--length;\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"file":"Array.js","sourceRoot":"","sources":["../../../../../src/.internal/core/util/Array.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,KAAK,MAAM,QAAQ,CAAC;AAGhC;;;;;GAKG;AAEH;;;;;;;;GAQG;AACH,MAAM,UAAU,OAAO,CAAI,KAAmB,EAAE,KAAQ;IACvD,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;QAChC,kBAAkB;QAClB,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE;YACvB,OAAO,CAAC,CAAC;SACT;KACD;IAED,OAAO,CAAC,CAAC,CAAC;AACX,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,GAAG,CAAI,KAAmB,EAAE,IAA2B;IACtE,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;QAChC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;YACnB,OAAO,IAAI,CAAC;SACZ;KACD;IAED,OAAO,KAAK,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,GAAG,CAAO,KAAmB,EAAE,EAAkC;IAChF,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,IAAM,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAEjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;QAChC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAC5B;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,IAAI,CAAI,KAAmB,EAAE,EAAqC;IACjF,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;QAChC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAChB;AACF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAI,KAAmB,EAAE,EAAqC;IACxF,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IAErB,OAAO,CAAC,GAAG,CAAC,EAAE;QACb,EAAE,CAAC,CAAC;QACJ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAChB;AACF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAI,KAAmB,EAAE,EAAwC;IAC5F,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;QAChC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;YACrB,MAAM;SACN;KACD;AACF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAI,KAAe,EAAE,KAAa;IAC1D,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;QACpC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;KAC5B;IAED,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAC/B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,IAAI,CAAI,KAAe;IACtC,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,KAAK,CAAI,KAAe;IACvC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,MAAM,CAAI,KAAe,EAAE,OAAU,EAAE,KAAa;IACnE,cAAc;IACd,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACnD,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IAChC,GAAG;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ,CAAI,KAAe,EAAE,OAAU,EAAE,KAAa;IACrE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACvB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC/B,CAAC;AAGD;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAI,KAAe,EAAE,KAAe;IAC1D,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;QAChC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KACrB;AACF,CAAC;AAGD;;;;;;;GAOG;AACH,MAAM,UAAU,MAAM,CAAI,KAAe,EAAE,OAAU;IACpD,IAAI,KAAK,GAAY,KAAK,CAAC;IAC3B,IAAI,KAAK,GAAW,CAAC,CAAC;IAEtB,SAAS;QACR,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAEtC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YACjB,OAAO,KAAK,CAAC;SAEb;aAAM;YACN,KAAK,GAAG,IAAI,CAAC;YACb,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;SACvB;KACD;AACF,CAAC;AAED,MAAM,UAAU,WAAW,CAAI,KAAe,EAAE,OAAU;IACzD,IAAI,KAAK,GAAW,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;QACjB,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;KAEZ;SAAM;QACN,OAAO,KAAK,CAAC;KACb;AACF,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,IAAI,CAAI,KAAe,EAAE,OAAU,EAAE,OAAgB;IACpE,0EAA0E;IAC1E,gFAAgF;IAChF,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAEpC,2DAA2D;IAC3D,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;QACjB,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;KAC1B;IAED,IAAI,OAAO,IAAI,IAAI,EAAE;QACpB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACpB;SAAM;QACN,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;KACrC;AACF,CAAC;AAGD;;;;;;;;GAQG;AACH,MAAM,UAAU,GAAG,CAAI,KAAe,EAAE,OAAU,EAAE,KAAc;IACjE,wCAAwC;IACxC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QAC3B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACpB;IAED,8CAA8C;SACzC,IAAI,KAAK,KAAK,CAAC,EAAE;QACrB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;KACvB;IACD,yCAAyC;SACpC;QACJ,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;KAChC;AACF,CAAC;AAGD;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAI,KAAe,EAAE,OAAU;IACrD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;QAClC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACpB;AACF,CAAC;AAGD;;;;;;;;;GASG;AACH,MAAM,UAAU,OAAO,CAAI,KAAe,EAAE,OAAU,EAAE,KAAc;IACrE,kBAAkB;IAClB,IAAI,GAAG,GAAW,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAEzC,mBAAmB;IACnB,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;QACf,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;KACrB;IAED,iCAAiC;IACjC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QAC3B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACpB;IACD,yCAAyC;SACpC;QACJ,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;KAChC;AACF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAI,KAAmB;IAC7C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACzB,OAAO,KAAK,CAAC;KACb;SACI;QACJ,OAAO,CAAC,KAAK,CAAC,CAAC;KACf;AACF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,GAAG,CAAI,KAAmB,EAAE,OAAU;IACrD,OAAO,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACvC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,IAAI,CAAI,KAAmB;IAC1C,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B,4DAA4D;IAC5D,IAAM,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAEjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;QAChC,iFAAiF;QACjF,mCAAmC;QACnC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;KACrB;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAGD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,KAAK,CAAI,KAAmB,EAAE,KAAa,EAAE,GAA0B;IAA1B,oBAAA,EAAA,MAAc,KAAK,CAAC,MAAM;IACtF,IAAM,MAAM,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC;IAEtC,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;QACjC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;KAC7B;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAI,KAAe,EAAE,KAAa,EAAE,KAAQ;IACtE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAI,KAAe,EAAE,KAAa;IAC5D,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACxB,CAAC;AAWD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,SAAS,CAAI,KAAmB,EAAE,OAA6C;IAC9F,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;QAChC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;YACzB,OAAO,CAAC,CAAC;SACT;KACD;IAED,OAAO,CAAC,CAAC,CAAC;AACX,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAI,KAAmB,EAAE,OAA6C;IACrG,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IAErB,OAAO,CAAC,GAAG,CAAC,EAAE;QACb,EAAE,CAAC,CAAC;QACJ,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;YACzB,OAAO,CAAC,CAAC;SACT;KACD;IAED,OAAO,CAAC,CAAC,CAAC;AACX,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,IAAI,CAAI,KAAmB,EAAE,OAA6C;IACzF,IAAM,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAExC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;QACjB,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;KACpB;AACF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAI,KAAmB,EAAE,OAA6C;IAChG,IAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAE/C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;QACjB,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;KACpB;AACF,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,OAAO,CAAO,KAAmB,EAAE,OAAmD;IACrG,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;QAChC,IAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEnC,IAAI,KAAK,KAAK,SAAS,EAAE;YACxB,OAAO,KAAK,CAAC;SACb;KACD;AACF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CAAI,KAAe;IACzC,6CAA6C;IAC7C,IAAI,YAAY,GAAG,KAAK,CAAC,MAAM,EAC9B,cAAc,EACd,WAAW,CAAC;IAEb,4CAA4C;IAC5C,OAAO,CAAC,KAAK,YAAY,EAAE;QAC1B,8BAA8B;QAC9B,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,YAAY,CAAC,CAAC;QACvD,YAAY,IAAI,CAAC,CAAC;QAElB,wCAAwC;QACxC,cAAc,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;QACrC,KAAK,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;QACzC,KAAK,CAAC,WAAW,CAAC,GAAG,cAAc,CAAC;KACpC;AACF,CAAC;AAcD;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAI,KAAmB,EAAE,QAA+B;IACrF,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,GAAG,GAAK,KAAK,CAAC,MAAM,CAAC;IACzB,IAAI,KAAK,GAAG,KAAK,CAAC;IAElB,OAAO,KAAK,GAAG,GAAG,EAAE;QACnB,qDAAqD;QACrD,IAAM,KAAK,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QAEjC,IAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAErC,OAAO;QACP,IAAI,KAAK,GAAG,CAAC,EAAE;YACd,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;YAEnB,QAAQ;SACP;aAAM,IAAI,KAAK,KAAK,CAAC,EAAE;YACvB,KAAK,GAAG,IAAI,CAAC;YACb,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;YAEnB,OAAO;SACN;aAAM;YACN,GAAG,GAAG,KAAK,CAAC;SACZ;KACD;IAED,OAAO;QACN,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;KAClC,CAAC;AACH,CAAC;AAGD;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAI,KAAmB,EAAE,QAA+B;IAC1F,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,GAAG,GAAK,KAAK,CAAC,MAAM,CAAC;IACzB,IAAI,KAAK,GAAG,KAAK,CAAC;IAElB,OAAO,KAAK,GAAG,GAAG,EAAE;QACnB,qDAAqD;QACrD,IAAM,KAAK,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QAEjC,IAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAErC,OAAO;QACP,IAAI,KAAK,GAAG,CAAC,EAAE;YACd,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;YAEnB,QAAQ;SACP;aAAM,IAAI,KAAK,KAAK,CAAC,EAAE;YACvB,KAAK,GAAG,IAAI,CAAC;YACb,GAAG,GAAG,KAAK,CAAC;YAEb,OAAO;SACN;aAAM;YACN,GAAG,GAAG,KAAK,CAAC;SACZ;KACD;IAED,OAAO;QACN,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;KACZ,CAAC;AACH,CAAC;AAGD,MAAM,UAAU,MAAM,CAAI,KAAe,EAAE,IAA2B;IACrE,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IAErB,OAAO,CAAC,GAAG,CAAC,EAAE;QACb,EAAE,CAAC,CAAC;QAEJ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;YACpB,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACnB;KACD;AACF,CAAC","sourcesContent":["/**\n * ============================================================================\n * IMPORTS\n * ============================================================================\n * @hidden\n */\nimport type { Optional } from \"./Type\";\nimport * as $type from \"./Type\";\n\n\n/**\n * ============================================================================\n * UTILITY FUNCTIONS\n * ============================================================================\n * @hidden\n */\n\n/**\n * Searches `array` for `value`.\n *\n * Returns -1 if not found.\n *\n * @param array Source array\n * @param value Value to search\n * @returns Index\n */\nexport function indexOf<A>(array: ArrayLike<A>, value: A): number {\n\tconst length = array.length;\n\n\tfor (let i = 0; i < length; ++i) {\n\t\t// TODO handle NaN\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\n\treturn -1;\n}\n\n/**\n * Calls `test` for each element in `array`.\n *\n * If `test` returns `true` then it immediately returns `true`.\n *\n * If `test` returns `false` for all of the elements in `array` then it returns `false`.\n *\n * @param array Source array\n * @param test Function which is called on each element\n * @returns Whether `test` returned true or not\n */\nexport function any<A>(array: ArrayLike<A>, test: (value: A) => boolean): boolean {\n\tconst length = array.length;\n\n\tfor (let i = 0; i < length; ++i) {\n\t\tif (test(array[i])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\n/**\n * Calls `fn` function for every member of array and returns a new array out\n * of all outputs.\n *\n * @param array Source array\n * @param fn Callback function\n * @returns New array\n */\nexport function map<A, B>(array: ArrayLike<A>, fn: (value: A, index: number) => B): Array<B> {\n\tconst length = array.length;\n\tconst output = new Array(length);\n\n\tfor (let i = 0; i < length; ++i) {\n\t\toutput[i] = fn(array[i], i);\n\t}\n\n\treturn output;\n}\n\n/**\n * Iterates through all items in array and calls `fn` function for each of\n * them.\n *\n * @param array Source array\n * @param fn Callback function\n */\nexport function each<A>(array: ArrayLike<A>, fn: (value: A, index: number) => void): void {\n\tconst length = array.length;\n\n\tfor (let i = 0; i < length; ++i) {\n\t\tfn(array[i], i);\n\t}\n}\n\n/**\n * Iterates through all items in array in reverse order and calls `fn` function for each of\n * them.\n *\n * @param array Source array\n * @param fn Callback function\n */\nexport function eachReverse<A>(array: ArrayLike<A>, fn: (value: A, index: number) => void): void {\n\tlet i = array.length;\n\n\twhile (i > 0) {\n\t\t--i;\n\t\tfn(array[i], i);\n\t}\n}\n\n/**\n * Iterates through all items in array and calls `fn` function for each of\n * them.\n *\n * If `fn` call evaluates to `false`, further iteration is cancelled.\n *\n * @param array Source array\n * @param fn Callback function\n */\nexport function eachContinue<A>(array: ArrayLike<A>, fn: (value: A, index: number) => boolean): void {\n\tconst length = array.length;\n\n\tfor (let i = 0; i < length; ++i) {\n\t\tif (!fn(array[i], i)) {\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\n/**\n * Shifts an item at `index` towards beginning of the array.\n *\n * @param array Source array\n * @param index Target element index\n */\nexport function shiftLeft<A>(array: Array<A>, index: number): void {\n\tconst length = array.length;\n\n\tfor (let i = index; i < length; ++i) {\n\t\tarray[i - index] = array[i];\n\t}\n\n\tarray.length = length - index;\n}\n\n/**\n * Returns the last item of the array.\n *\n * @param array Source array\n * @returns Last item\n */\nexport function last<A>(array: Array<A>): Optional<A> {\n\tconst length = array.length;\n\treturn length ? array[length - 1] : undefined;\n}\n\n/**\n * Returns the first item of the array.\n *\n * @param array Source array\n * @returns Last item\n */\nexport function first<A>(array: Array<A>): Optional<A> {\n\treturn array[0];\n}\n\n/**\n * Inserts `element` into `array` at `index`.\n *\n * Caps `index` to be between `0` and `array.length`\n *\n * @param array Source array\n * @param element Item to insert\n * @param array Index to insert item at\n */\nexport function insert<A>(array: Array<A>, element: A, index: number): void {\n\t//if (array) {\n\tindex = Math.max(0, Math.min(index, array.length));\n\tarray.splice(index, 0, element);\n\t//}\n}\n\n/**\n * Removes all copies of `element` from `array` (if they exist) and then\n * inserts `element` at `index`.\n *\n * @param array Source array\n * @param element Item\n * @param array Index to move item to\n */\nexport function setIndex<A>(array: Array<A>, element: A, index: number): void {\n\tremove(array, element);\n\tinsert(array, element, index);\n}\n\n\n/**\n * Pushes all of the elements from `input` into `array`.\n *\n * @param array Output array\n * @param input Input array\n */\nexport function pushAll<A>(array: Array<A>, input: Array<A>) {\n\tconst length = input.length;\n\n\tfor (let i = 0; i < length; ++i) {\n\t\tarray.push(input[i]);\n\t}\n}\n\n\n/**\n * Removes `element` from `array`.\n *\n * If there are multiple copies of `element`, they are all removed.\n *\n * @param array Source array\n * @param element Item to remove\n */\nexport function remove<A>(array: Array<A>, element: A): boolean {\n\tlet found: boolean = false;\n\tlet index: number = 0;\n\n\tfor (;;) {\n\t\tindex = array.indexOf(element, index);\n\n\t\tif (index === -1) {\n\t\t\treturn found;\n\n\t\t} else {\n\t\t\tfound = true;\n\t\t\tarray.splice(index, 1);\n\t\t}\n\t}\n}\n\nexport function removeFirst<A>(array: Array<A>, element: A): boolean {\n\tlet index: number = array.indexOf(element);\n\n\tif (index !== -1) {\n\t\tarray.splice(index, 1);\n\t\treturn true;\n\n\t} else {\n\t\treturn false;\n\t}\n}\n\n/**\n * Adds an `element` to `array`.\n *\n * If array already contains and item like this, it is removed before adding\n * it again.\n *\n * Optionally `toIndex` can be specified to add element at specific index.\n *\n * @param array Source array\n * @param element Item to add\n * @param array Index to move item to\n */\nexport function move<A>(array: Array<A>, element: A, toIndex?: number): void {\n\t// @todo this implementation must be the same as the List.moveValue method\n\t// @todo don't do anything if the desired index is the same as the current index\n\tlet index = indexOf(array, element);\n\n\t// @todo remove all old values rather than only the first ?\n\tif (index !== -1) {\n\t\tremoveIndex(array, index);\n\t}\n\n\tif (toIndex == null) {\n\t\tarray.push(element);\n\t} else {\n\t\tinsertIndex(array, toIndex, element);\n\t}\n}\n\n\n/**\n * Inserts `element` into `array` at `index`.\n *\n * If `index` is not provided, it will insert `element` at the end of `array`.\n *\n * @param array Source array\n * @param element Item to add\n * @param array Index to add item at\n */\nexport function add<A>(array: Array<A>, element: A, index?: number): void {\n\t// Append to the end if index is not set\n\tif (!$type.isNumber(index)) {\n\t\tarray.push(element);\n\t}\n\n\t// Add to the beginning of array if index is 0\n\telse if (index === 0) {\n\t\tarray.unshift(element);\n\t}\n\t// Add to indicated place if index is set\n\telse {\n\t\tarray.splice(index, 0, element);\n\t}\n}\n\n\n/**\n * Pushes `element` into `array` if it doesn't already exist.\n *\n * @param array Source array\n * @param element Item to add\n */\nexport function pushOne<A>(array: Array<A>, element: A): void {\n\tif (array.indexOf(element) === -1) {\n\t\tarray.push(element);\n\t}\n}\n\n\n/**\n * Removes `element` from `array` (if it exists) and then inserts `element` at\n * `index`.\n *\n * If `index` is not provided, it will insert `element` at the end of `array`.\n *\n * @param array Source array\n * @param element Item to remove\n * @param array Index to move item to\n */\nexport function replace<A>(array: Array<A>, element: A, index?: number): void {\n\t// check if exists\n\tlet ind: number = array.indexOf(element);\n\n\t// remove if exists\n\tif (ind !== -1) {\n\t\tarray.splice(ind, 1);\n\t}\n\n\t// add to end if index is not set\n\tif (!$type.isNumber(index)) {\n\t\tarray.push(element);\n\t}\n\t// add to indicated place if index is set\n\telse {\n\t\tarray.splice(index, 0, element);\n\t}\n}\n\n/**\n * Wraps `input` in an array, if it isn't already an array.\n *\n * @param input Source value\n * @return An array\n */\nexport function toArray<A>(input: Array<A> | A): Array<A> {\n\tif (Array.isArray(input)) {\n\t\treturn input;\n\t}\n\telse {\n\t\treturn [input];\n\t}\n}\n\n/**\n * Returns `true` if `element` exists in `array`.\n *\n * @param array Source array\n * @param element Item to search for\n * @returns Item in array?\n */\nexport function has<A>(array: ArrayLike<A>, element: A): boolean {\n\treturn indexOf(array, element) !== -1;\n}\n\n/**\n * Returns a shallow copy of `array`.\n *\n * @param array Source array\n * @returns Copy of the array\n */\nexport function copy<A>(array: ArrayLike<A>): Array<A> {\n\tconst length = array.length;\n\n\t// It's faster to create the array with a pre-defined length\n\tconst output = new Array(length);\n\n\tfor (let i = 0; i < length; ++i) {\n\t\t// Because the array has a pre-defined length, we have to assign rather than push\n\t\t// This is also faster than pushing\n\t\toutput[i] = array[i];\n\t}\n\n\treturn output;\n}\n\n\n/**\n * Returns a copy of `array` which contains all the elements between `start`\n * and `end`. (including `start` and excluding `end`)\n *\n * If `end` is not provided, it defaults to `array.length`.\n *\n * @param array Source array\n * @param start Start index\n * @param end End index\n * @returns Part of the array\n */\nexport function slice<A>(array: ArrayLike<A>, start: number, end: number = array.length): Array<A> {\n\tconst output = new Array(end - start);\n\n\tfor (let i = start; i < end; ++i) {\n\t\toutput[i - start] = array[i];\n\t}\n\n\treturn output;\n}\n\n/**\n * Inserts a value into array at specific index.\n *\n * @param array Source array\n * @param index Index\n * @param value Value to insert\n */\nexport function insertIndex<A>(array: Array<A>, index: number, value: A): void {\n\tarray.splice(index, 0, value);\n}\n\n/**\n * Removes a value from array at specific index.\n *\n * @param array Source array\n * @param index Index\n */\nexport function removeIndex<A>(array: Array<A>, index: number): void {\n\tarray.splice(index, 1);\n}\n\n/**\n * @ignore Exclude from docs\n * @todo Description\n */\nexport interface SortResult {\n\tfound: boolean;\n\tindex: number\n}\n\n/**\n * Searches the array using custom function and returns index of the item if\n * found.\n *\n * Will call `matches` function on all items of the array. If return value\n * evaluates to `true`, index is returned.\n *\n * Otherwise returns -1.\n *\n * @param array Source array\n * @param matches Search function\n * @returns Index of the item if found\n */\nexport function findIndex<A>(array: ArrayLike<A>, matches: (value: A, index: number) => boolean): number {\n\tconst length = array.length;\n\n\tfor (let i = 0; i < length; ++i) {\n\t\tif (matches(array[i], i)) {\n\t\t\treturn i;\n\t\t}\n\t}\n\n\treturn -1;\n}\n\n/**\n * This is the same as `findIndex` except it searches from right to left.\n *\n * @param array Source array\n * @param matches Search function\n * @returns Index of the item if found\n */\nexport function findIndexReverse<A>(array: ArrayLike<A>, matches: (value: A, index: number) => boolean): number {\n\tlet i = array.length;\n\n\twhile (i > 0) {\n\t\t--i;\n\t\tif (matches(array[i], i)) {\n\t\t\treturn i;\n\t\t}\n\t}\n\n\treturn -1;\n}\n\n/**\n * Searches the array using custom function and returns item if found.\n *\n * Will call `matches` function on all items of the array. If return value\n * evaluates to `true`, index is returned.\n *\n * Otherwise returns `undefined`.\n *\n * @param array Source array\n * @param matches Search function\n * @returns Item if found\n */\nexport function find<A>(array: ArrayLike<A>, matches: (value: A, index: number) => boolean): A | undefined {\n\tconst index = findIndex(array, matches);\n\n\tif (index !== -1) {\n\t\treturn array[index];\n\t}\n}\n\n/**\n * This is the same as `find` except it searches from right to left.\n *\n * @param array Source array\n * @param matches Search function\n * @returns Item if found\n */\nexport function findReverse<A>(array: ArrayLike<A>, matches: (value: A, index: number) => boolean): A | undefined {\n\tconst index = findIndexReverse(array, matches);\n\n\tif (index !== -1) {\n\t\treturn array[index];\n\t}\n}\n\n/**\n * Searches the array using custom function and returns item if found.\n *\n * Will call `matches` function on all items of the array. If value\n * is not `undefined`, it returns it.\n *\n * Otherwise returns `undefined`.\n *\n * @param array Source array\n * @param matches Search function\n * @returns Item if found\n */\nexport function findMap<A, B>(array: ArrayLike<A>, matches: (value: A, index: number) => B | undefined): B | undefined {\n\tconst length = array.length;\n\n\tfor (let i = 0; i < length; ++i) {\n\t\tconst value = matches(array[i], i);\n\n\t\tif (value !== undefined) {\n\t\t\treturn value;\n\t\t}\n\t}\n}\n\n/**\n * Iterates through all items in array and calls `fn` function for each of\n * them.\n *\n * @param array Source array\n * @param fn Callback function\n */\nexport function shuffle<A>(array: Array<A>) {\n\t// https://stackoverflow.com/a/2450976/449477\n\tlet currentIndex = array.length,\n\t\ttemporaryValue,\n\t\trandomIndex;\n\n\t// While there remain elements to shuffle...\n\twhile (0 !== currentIndex) {\n\t\t// Pick a remaining element...\n\t\trandomIndex = Math.floor(Math.random() * currentIndex);\n\t\tcurrentIndex -= 1;\n\n\t\t// And swap it with the current element.\n\t\ttemporaryValue = array[currentIndex];\n\t\tarray[currentIndex] = array[randomIndex];\n\t\tarray[randomIndex] = temporaryValue;\n\t}\n}\n\n\nexport type Ordering = -1 | 0 | 1;\n\n/**\n * @ignore Exclude from docs\n * @todo Description\n */\nexport interface SortResult {\n\tfound: boolean;\n\tindex: number\n}\n\n/**\n * Orders an array using specific `ordering` function and returns right-most index of\n * the `value`.\n *\n * @ignore Exclude from docs\n * @param array Source array\n * @param ordering An ordering function\n * @returns Result of the search\n */\nexport function getSortedIndex<A>(array: ArrayLike<A>, ordering: (left: A) => Ordering): SortResult {\n\tlet start = 0;\n\tlet end = array.length;\n\tlet found = false;\n\n\twhile (start < end) {\n\t\t// TODO is this faster/slower than using Math.floor ?\n\t\tconst pivot = (start + end) >> 1;\n\n\t\tconst order = ordering(array[pivot]);\n\n\t\t// less\n\t\tif (order < 0) {\n\t\t\tstart = pivot + 1;\n\n\t\t// equal\n\t\t} else if (order === 0) {\n\t\t\tfound = true;\n\t\t\tstart = pivot + 1;\n\n\t\t// more\n\t\t} else {\n\t\t\tend = pivot;\n\t\t}\n\t}\n\n\treturn {\n\t\tfound: found,\n\t\tindex: (found ? start - 1 : start)\n\t};\n}\n\n\n/**\n * Orders an array using specific `ordering` function and returns left-most index of\n * the `value`.\n *\n * @ignore Exclude from docs\n * @param array Source array\n * @param ordering An ordering function\n * @returns Result of the search\n */\nexport function getFirstSortedIndex<A>(array: ArrayLike<A>, ordering: (left: A) => Ordering): SortResult {\n\tlet start = 0;\n\tlet end = array.length;\n\tlet found = false;\n\n\twhile (start < end) {\n\t\t// TODO is this faster/slower than using Math.floor ?\n\t\tconst pivot = (start + end) >> 1;\n\n\t\tconst order = ordering(array[pivot]);\n\n\t\t// less\n\t\tif (order < 0) {\n\t\t\tstart = pivot + 1;\n\n\t\t// equal\n\t\t} else if (order === 0) {\n\t\t\tfound = true;\n\t\t\tend = pivot;\n\n\t\t// more\n\t\t} else {\n\t\t\tend = pivot;\n\t\t}\n\t}\n\n\treturn {\n\t\tfound: found,\n\t\tindex: start\n\t};\n}\n\n\nexport function keepIf<A>(array: Array<A>, keep: (value: A) => boolean): void {\n\tlet i = array.length;\n\n\twhile (i > 0) {\n\t\t--i;\n\n\t\tif (!keep(array[i])) {\n\t\t\tarray.splice(i, 1);\n\t\t}\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"DateFormatter.d.ts","sourceRoot":"","sources":["../../../../../src/.internal/core/util/DateFormatter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DateFormatter.d.ts","sourceRoot":"","sources":["../../../../../src/.internal/core/util/DateFormatter.ts"],"names":[],"mappings":"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"}
@@ -61,13 +61,10 @@ var DateFormatter = /** @class */ (function (_super) {
61
61
  // get format info (it will also deal with parser caching)
62
62
  var info = this.parseFormat(format);
63
63
  // Should we apply custom time zone?
64
- // TODO
65
- // if (this.timezoneOffset != null) {
66
- // date.setMinutes(date.getMinutes() + date.getTimezoneOffset() - this.timezoneOffset);
67
- // }
68
- // else if (this.timezone != null) {
69
- // date = $time.setTimezone(date, this.timezone);
70
- // }
64
+ var timezone = this._root.timezone;
65
+ if (timezone && !this._root.utc) {
66
+ date = timezone.convertLocal(date);
67
+ }
71
68
  // Check if it's a valid date
72
69
  if (!$type.isNumber(date.getTime())) {
73
70
  // TODO translation
@@ -1 +1 @@
1
- {"version":3,"file":"DateFormatter.js","sourceRoot":"","sources":["../../../../../src/.internal/core/util/DateFormatter.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ILocaleSettings } from \"./Language\"\n\nimport { Entity, IEntitySettings, IEntityPrivate } from \"./Entity\"\nimport { TextFormatter } from \"./TextFormatter\"\n\nimport * as $type from \"./Type\"\nimport * as $utils from \"./Utils\";\n\n/**\n * Interface describing parsed date format definition.\n *\n * @ignore\n */\nexport interface DateFormatInfo {\n\t\"template\": string;\n\t\"parts\": any[];\n}\n\nexport interface IDateFormatterSettings extends IEntitySettings {\n\n\t/**\n\t * Should the first letter of the formatted date be capitalized?\n\t *\n\t * @default true\n\t */\n\tcapitalize?: boolean;\n\n\t/**\n\t * A date format to be used when formatting dates.\n\t * \n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/formatting-dates/} for more info\n\t */\n\tdateFormat?: string | Intl.DateTimeFormatOptions;\n\n\t/**\n\t * An array of data fields that hold date values and should be formatted\n\t * with a [[DateFormatter]].\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/data-placeholders/#Formatting_placeholders} for more info\n\t */\n\tdateFields?: string[];\n\n\t/**\n\t * Locales to use when formatting using `Intl.DateFormatter`.\n\t */\n\tintlLocales?: string;\n\n}\n\nexport interface IDateFormatterPrivate extends IEntityPrivate {\n}\n\ntype Months = \"January\" | \"February\" | \"March\" | \"April\" | \"May\" | \"June\" | \"July\" | \"August\" | \"September\" | \"October\" | \"November\" | \"December\";\ntype ShortMonths = \"Jan\" | \"Feb\" | \"Mar\" | \"Apr\" | \"May(short)\" | \"Jun\" | \"Jul\" | \"Aug\" | \"Sep\" | \"Oct\" | \"Nov\" | \"Dec\";\ntype Weekdays = \"Sunday\" | \"Monday\" | \"Tuesday\" | \"Wednesday\" | \"Thursday\" | \"Friday\" | \"Saturday\";\ntype ShortWeekdays = \"Sun\" | \"Mon\" | \"Tue\" | \"Wed\" | \"Thu\" | \"Fri\" | \"Sat\";\n\nexport class DateFormatter extends Entity {\n\tdeclare public _settings: IDateFormatterSettings;\n\tdeclare public _privateSettings: IDateFormatterPrivate;\n\n\tprotected _setDefaults() {\n\t\t// Defaults\n\t\tthis._setDefault(\"capitalize\", true);\n\t\tthis._setDefault(\"dateFormat\", \"yyyy-MM-dd\");\n\n\t\tsuper._setDefaults();\n\t}\n\n\tpublic _beforeChanged() {\n\t\tsuper._beforeChanged();\n\t}\n\n\tpublic format(source: any, format?: string | Intl.DateTimeFormatOptions): string {\n\n\t\t// Locale?\n\t\t// TODO\n\n\t\t// No format passed in or it's empty\n\t\tif (typeof format === \"undefined\" || format === \"\") {\n\t\t\tformat = this.get(\"dateFormat\", \"yyyy-MM-dd\");\n\t\t}\n\n\t\t// Init return value\n\t\tlet formatted;\n\n\t\t// Cast?\n\t\t// TODO: decide if we need to cast\n\t\tlet date: Date = source;\n\n\t\t// Is it a built-in format or Intl.DateTimeFormat\n\t\tif ($type.isObject(format)) {\n\n\t\t\ttry {\n\t\t\t\tconst locales = this.get(\"intlLocales\");\n\t\t\t\tif (locales) {\n\t\t\t\t\treturn new Intl.DateTimeFormat(locales, <Intl.DateTimeFormatOptions>format).format(date);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn new Intl.DateTimeFormat(undefined, <Intl.DateTimeFormatOptions>format).format(date);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\treturn \"Invalid\";\n\t\t\t}\n\n\t\t}\n\n\t\t// get format info (it will also deal with parser caching)\n\t\tlet info = this.parseFormat(format);\n\n\t\t// Should we apply custom time zone?\n\t\t// TODO\n\t\t// if (this.timezoneOffset != null) {\n\t\t// \tdate.setMinutes(date.getMinutes() + date.getTimezoneOffset() - this.timezoneOffset);\n\t\t// }\n\t\t// else if (this.timezone != null) {\n\t\t// \tdate = $time.setTimezone(date, this.timezone);\n\t\t// }\n\n\t\t// Check if it's a valid date\n\t\tif (!$type.isNumber(date.getTime())) {\n\t\t\t// TODO translation\n\t\t\t//return this._t(\"Invalid date\");\n\t\t\treturn \"Invalid date\";\n\t\t}\n\n\t\t// Apply format\n\t\tformatted = this.applyFormat(date, info);\n\n\t\t// Capitalize\n\t\tif (this.get(\"capitalize\")) {\n\t\t\tformatted = formatted.replace(\n\t\t\t\t/^.{1}/, formatted.substr(0, 1).toUpperCase()\n\t\t\t);\n\t\t}\n\n\t\t// We're done\n\t\treturn formatted;\n\t}\n\n\t/**\n\t * Applies format to Date.\n\t *\n\t * @param date Date object\n\t * @param info Parsed format information\n\t * @return Formatted date string\n\t */\n\tprotected applyFormat(date: Date, info: DateFormatInfo): string {\n\n\t\t// Init return value\n\t\tlet res = info.template;\n\n\t\t// Get values\n\t\tlet fullYear: number,\n\t\t\tmonth: number,\n\t\t\tweekday: number,\n\t\t\tday: number,\n\t\t\thours: number,\n\t\t\tminutes: number,\n\t\t\tseconds: number,\n\t\t\tmilliseconds: number,\n\t\t\toffset: number = date.getTimezoneOffset(),\n\t\t\ttimestamp: number = date.getTime();\n\t\tif (this._root.utc) {\n\t\t\tfullYear = date.getUTCFullYear();\n\t\t\tmonth = date.getUTCMonth();\n\t\t\tweekday = date.getUTCDay();\n\t\t\tday = date.getUTCDate();\n\t\t\thours = date.getUTCHours();\n\t\t\tminutes = date.getUTCMinutes();\n\t\t\tseconds = date.getUTCSeconds();\n\t\t\tmilliseconds = date.getUTCMilliseconds();\n\t\t}\n\t\telse {\n\t\t\tfullYear = date.getFullYear();\n\t\t\tmonth = date.getMonth();\n\t\t\tweekday = date.getDay();\n\t\t\tday = date.getDate();\n\t\t\thours = date.getHours();\n\t\t\tminutes = date.getMinutes();\n\t\t\tseconds = date.getSeconds();\n\t\t\tmilliseconds = date.getMilliseconds();\n\t\t}\n\n\t\t// Go through each part and format/replace it in template\n\t\tfor (let i = 0, len = info.parts.length; i < len; i++) {\n\t\t\tlet value: string = \"\";\n\t\t\tswitch (info.parts[i]) {\n\n\t\t\t\tcase \"G\":\n\t\t\t\t\tvalue = this._t(\n\t\t\t\t\t\tfullYear < 0\n\t\t\t\t\t\t\t? \"_era_bc\"\n\t\t\t\t\t\t\t: \"_era_ad\"\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"yyyy\":\n\t\t\t\t\tvalue = Math.abs(fullYear).toString();\n\t\t\t\t\tif (fullYear < 0) {\n\t\t\t\t\t\tvalue += this._t(\"_era_bc\");\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"yyy\":\n\t\t\t\tcase \"yy\":\n\t\t\t\tcase \"y\":\n\t\t\t\t\tvalue = Math.abs(fullYear).toString().substr(-info.parts[i].length);\n\t\t\t\t\tif (fullYear < 0) {\n\t\t\t\t\t\tvalue += this._t(\"_era_bc\");\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"YYYY\":\n\t\t\t\tcase \"YYY\":\n\t\t\t\tcase \"YY\":\n\t\t\t\tcase \"Y\":\n\t\t\t\t\tlet week = $utils.getWeek(date);\n\t\t\t\t\tlet year = fullYear;\n\t\t\t\t\tif (week == 1 && (weekday > 4)) {\n\t\t\t\t\t\tyear--;\n\t\t\t\t\t}\n\t\t\t\t\tif (info.parts[i] == \"YYYY\") {\n\t\t\t\t\t\tvalue = Math.abs(year).toString();\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tvalue = Math.abs(year).toString().substr(-info.parts[i].length);\n\t\t\t\t\t}\n\t\t\t\t\tif (year < 0) {\n\t\t\t\t\t\tvalue += this._t(\"_era_bc\");\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"u\":\n\t\t\t\t\t// @todo\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"q\":\n\t\t\t\t\tvalue = \"\" + Math.ceil((date.getMonth() + 1) / 3);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"MMMMM\":\n\t\t\t\t\tvalue = this._t(this._getMonth(month)).substr(0, 1);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"MMMM\":\n\t\t\t\t\tvalue = this._t(this._getMonth(month));\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"MMM\":\n\t\t\t\t\tvalue = this._t(this._getShortMonth(month));\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"MM\":\n\t\t\t\t\tvalue = $utils.padString(month + 1, 2, \"0\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"M\":\n\t\t\t\t\tvalue = (month + 1).toString();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"ww\":\n\t\t\t\t\tvalue = $utils.padString($utils.getWeek(date, this._root.utc), 2, \"0\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"w\":\n\t\t\t\t\tvalue = $utils.getWeek(date, this._root.utc).toString();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"W\":\n\t\t\t\t\tvalue = $utils.getMonthWeek(date, this._root.utc).toString();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"dd\":\n\t\t\t\t\tvalue = $utils.padString(day, 2, \"0\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"d\":\n\t\t\t\t\tvalue = day.toString();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"DD\":\n\t\t\t\tcase \"DDD\":\n\t\t\t\t\tvalue = $utils.padString($utils.getYearDay(date, this._root.utc).toString(), info.parts[i].length, \"0\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"D\":\n\t\t\t\t\tvalue = $utils.getYearDay(date, this._root.utc).toString();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"F\":\n\t\t\t\t\t// @todo\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"g\":\n\t\t\t\t\t// @todo\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"t\":\n\t\t\t\t\tvalue = this._root.language.translateFunc(\"_dateOrd\").call(this, day);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"E\":\n\t\t\t\t\tvalue = (weekday || 7).toString();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"EE\":\n\t\t\t\t\tvalue = $utils.padString((weekday || 7).toString(), 2, \"0\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"EEE\":\n\t\t\t\tcase \"eee\":\n\t\t\t\t\tvalue = this._t(this._getShortWeekday(weekday));\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"EEEE\":\n\t\t\t\tcase \"eeee\":\n\t\t\t\t\tvalue = this._t(this._getShortWeekday(weekday));\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"EEEEE\":\n\t\t\t\tcase \"eeeee\":\n\t\t\t\t\tvalue = this._t(this._getShortWeekday(weekday)).substr(0, 1);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"e\":\n\t\t\t\tcase \"ee\":\n\t\t\t\t\tvalue = (weekday - (this._root.locale.firstDayOfWeek || 1) + 1).toString();\n\t\t\t\t\tif (info.parts[i] == \"ee\") {\n\t\t\t\t\t\tvalue = $utils.padString(value, 2, \"0\");\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"a\":\n\t\t\t\t\tif (hours >= 12) {\n\t\t\t\t\t\tvalue = this._t(\"PM\");\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tvalue = this._t(\"AM\");\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"aa\":\n\t\t\t\t\tif (hours >= 12) {\n\t\t\t\t\t\tvalue = this._t(\"P.M.\");\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tvalue = this._t(\"A.M.\");\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"aaa\":\n\t\t\t\t\tif (hours >= 12) {\n\t\t\t\t\t\tvalue = this._t(\"P\");\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tvalue = this._t(\"A\");\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"h\":\n\t\t\t\t\tvalue = $utils.get12Hours(hours).toString();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"hh\":\n\t\t\t\t\tvalue = $utils.padString($utils.get12Hours(hours), 2, \"0\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"H\":\n\t\t\t\t\tvalue = hours.toString();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"HH\":\n\t\t\t\t\tvalue = $utils.padString(hours, 2, \"0\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"K\":\n\t\t\t\t\tvalue = $utils.get12Hours(hours, 0).toString();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"KK\":\n\t\t\t\t\tvalue = $utils.padString($utils.get12Hours(hours, 0), 2, \"0\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"k\":\n\t\t\t\t\tvalue = (hours + 1).toString();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"kk\":\n\t\t\t\t\tvalue = $utils.padString(hours + 1, 2, \"0\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"m\":\n\t\t\t\t\tvalue = minutes.toString();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"mm\":\n\t\t\t\t\tvalue = $utils.padString(minutes, 2, \"0\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"s\":\n\t\t\t\t\tvalue = seconds.toString();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"ss\":\n\t\t\t\t\tvalue = $utils.padString(seconds, 2, \"0\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"S\":\n\t\t\t\tcase \"SS\":\n\t\t\t\tcase \"SSS\":\n\t\t\t\t\tvalue = Math.round((milliseconds / 1000) * Math.pow(10, info.parts[i].length)).toString();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"x\":\n\t\t\t\t\tvalue = timestamp.toString();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"n\":\n\t\t\t\tcase \"nn\":\n\t\t\t\tcase \"nnn\":\n\t\t\t\t\tvalue = $utils.padString(milliseconds, info.parts[i].length, \"0\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"z\":\n\t\t\t\t\tvalue = $utils.getTimeZone(date, false, false, this._root.utc);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"zz\":\n\t\t\t\t\tvalue = $utils.getTimeZone(date, true, false, this._root.utc);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"zzz\":\n\t\t\t\t\tvalue = $utils.getTimeZone(date, false, true, this._root.utc);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"zzzz\":\n\t\t\t\t\tvalue = $utils.getTimeZone(date, true, true, this._root.utc);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"Z\":\n\t\t\t\tcase \"ZZ\":\n\t\t\t\t\tlet tz = Math.abs(offset) / 60;\n\t\t\t\t\tlet tzh = Math.floor(tz);\n\t\t\t\t\tlet tzm = tz * 60 - tzh * 60;\n\n\t\t\t\t\tif (this._root.utc) {\n\t\t\t\t\t\ttzh = 0;\n\t\t\t\t\t\ttzm = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (info.parts[i] == \"Z\") {\n\t\t\t\t\t\tvalue = \"GMT\";\n\t\t\t\t\t\tvalue += offset > 0 ? \"-\" : \"+\";\n\t\t\t\t\t\tvalue += $utils.padString(tzh, 2) + \":\" + $utils.padString(tzm, 2);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tvalue = offset > 0 ? \"-\" : \"+\";\n\t\t\t\t\t\tvalue += $utils.padString(tzh, 2) + $utils.padString(tzm, 2);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"i\":\n\t\t\t\t\tvalue = date.toISOString();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"I\":\n\t\t\t\t\tvalue = date.toUTCString();\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\t\t\tres = res.replace($type.PLACEHOLDER, value);\n\t\t}\n\n\t\treturn res;\n\t}\n\n\t/**\n\t * Parses format into structured infromation.\n\t *\n\t * @param format Format template\n\t */\n\tprotected parseFormat(format: string): DateFormatInfo {\n\n\t\t// Check cache\n\t\t// TODO: implement caching of the parsed format\n\n\t\t// Init format parse info holder\n\t\tlet info: DateFormatInfo = {\n\t\t\t\"template\": \"\",\n\t\t\t\"parts\": <any>[]\n\t\t};\n\n\t\t// Let TextFormatter split into chunks\n\t\tlet chunks = TextFormatter.chunk(format, true);\n\t\tfor (let i: number = 0; i < chunks.length; i++) {\n\t\t\tlet chunk = chunks[i];\n\n\t\t\tif (chunk.type === \"value\") {\n\n\t\t\t\t// Just \"Date\"?\n\t\t\t\tif (chunk.text.match(/^date$/i)) {\n\t\t\t\t\tlet dateFormat = this.get(\"dateFormat\", \"yyyy-MM-dd\");\n\t\t\t\t\tif (!$type.isString(dateFormat)) {\n\t\t\t\t\t\tdateFormat = \"yyyy-MM-dd\";\n\t\t\t\t\t}\n\t\t\t\t\tchunk.text = dateFormat;\n\t\t\t\t}\n\n\t\t\t\t// Find all possible parts\n\t\t\t\tlet matches = chunk.text.match(/G|yyyy|yyy|yy|y|YYYY|YYY|YY|Y|u|q|MMMMM|MMMM|MMM|MM|M|ww|w|W|dd|d|DDD|DD|D|F|g|EEEEE|EEEE|EEE|EE|E|eeeee|eeee|eee|ee|e|aaa|aa|a|hh|h|HH|H|KK|K|kk|k|mm|m|ss|s|SSS|SS|S|A|zzzz|zzz|zz|z|ZZ|Z|t|x|nnn|nn|n|i|I/g);\n\n\t\t\t\t// Found?\n\t\t\t\tif (matches) {\n\n\t\t\t\t\t// Populate template\n\t\t\t\t\tfor (let x = 0; x < matches.length; x++) {\n\t\t\t\t\t\tinfo.parts.push(matches[x]);\n\t\t\t\t\t\tchunk.text = chunk.text.replace(matches[x], $type.PLACEHOLDER);\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Apply to template\n\t\t\tinfo.template += chunk.text;\n\t\t}\n\n\t\t// Save cache\n\t\t// TODO\n\n\t\treturn info;\n\t}\n\n\tprotected _months(): Months[] {\n\t\treturn [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\n\t}\n\n\tprotected _getMonth(index: number): Months {\n\t\treturn this._months()[index];\n\t}\n\n\tprotected _shortMonths(): ShortMonths[] {\n\t\treturn [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May(short)\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n\t}\n\n\tprotected _getShortMonth(index: number): ShortMonths {\n\t\treturn this._shortMonths()[index];\n\t}\n\n\tprotected _weekdays(): Weekdays[] {\n\t\treturn [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\n\t}\n\n\tprotected _getWeekday(index: number): Weekdays {\n\t\treturn this._weekdays()[index];\n\t}\n\n\tprotected _shortWeekdays(): ShortWeekdays[] {\n\t\treturn [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n\t}\n\n\tprotected _getShortWeekday(index: number): ShortWeekdays {\n\t\treturn this._shortWeekdays()[index];\n\t}\n\n\tpublic parse(source: any, format: string): Date {\n\n\t\t// Is it already a Date\n\t\tif (source instanceof Date) {\n\t\t\treturn source;\n\t\t}\n\n\t\t// Is it a numeric timestamp\n\t\tif ($type.isNumber(source)) {\n\t\t\treturn new Date(source);\n\t\t}\n\n\t\t// No? Let's check if it's string, and try converting to it if nec\n\t\tif (!$type.isString(source)) {\n\t\t\tsource = source.toString();\n\t\t}\n\n\t\t// Init return value\n\t\tlet res: Date;\n\n\t\t// Init RegEx for parsing\n\t\tlet reg: string = \"\";\n\n\t\t// Clean format\n\t\tformat = $utils.cleanFormat(format);\n\n\t\t// Clip format to length of the source string\n\t\tformat = format.substr(0, source.length);\n\n\t\t// Parse format\n\t\tlet info = this.parseFormat(format);\n\n\t\t// Init parsed items holder\n\t\tlet parsedIndexes = {\n\t\t\t\"year\": -1,\n\t\t\t\"year3\": -1,\n\t\t\t\"year2\": -1,\n\t\t\t\"year1\": -1,\n\t\t\t\"month\": -1,\n\t\t\t\"monthShort\": -1,\n\t\t\t\"monthLong\": -1,\n\t\t\t\"weekdayShort\": -1,\n\t\t\t\"weekdayLong\": -1,\n\t\t\t\"day\": -1,\n\t\t\t\"yearDay\": -1,\n\t\t\t\"week\": -1,\n\t\t\t\"hourBase0\": -1,\n\t\t\t\"hour12Base0\": -1,\n\t\t\t\"hourBase1\": -1,\n\t\t\t\"hour12Base1\": -1,\n\t\t\t\"minute\": -1,\n\t\t\t\"second\": -1,\n\t\t\t\"millisecond\": -1,\n\t\t\t\"millisecondDigits\": -1,\n\t\t\t\"am\": -1,\n\t\t\t\"zone\": -1,\n\t\t\t\"timestamp\": -1,\n\t\t\t\"iso\": -1\n\t\t};\n\n\t\t// Init values\n\t\tlet resValues = {\n\t\t\t\"year\": 1970,\n\t\t\t\"month\": 0,\n\t\t\t\"day\": 1,\n\t\t\t\"hour\": 0,\n\t\t\t\"minute\": 0,\n\t\t\t\"second\": 0,\n\t\t\t\"millisecond\": 0,\n\t\t\t\"timestamp\": <any>null,\n\t\t\t\"offset\": 0,\n\t\t\t\"utc\": this._root.utc\n\t\t}\n\n\t\t// Index adjuster\n\t\tlet indexAdjust: number = 0;\n\t\tlet index: number = 0;\n\n\t\t// Iterate through all of the parts\n\t\tfor (let i: number = 0; i < info.parts.length; i++) {\n\n\t\t\t// Set current match index\n\t\t\tindex = i + indexAdjust + 1;\n\n\t\t\tswitch (info.parts[i]) {\n\n\t\t\t\tcase \"yyyy\":\n\t\t\t\tcase \"YYYY\":\n\t\t\t\t\treg += \"([0-9]{4})\";\n\t\t\t\t\tparsedIndexes.year = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"yyy\":\n\t\t\t\tcase \"YYY\":\n\t\t\t\t\treg += \"([0-9]{3})\";\n\t\t\t\t\tparsedIndexes.year3 = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"yy\":\n\t\t\t\tcase \"YY\":\n\t\t\t\t\treg += \"([0-9]{2})\";\n\t\t\t\t\tparsedIndexes.year2 = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"y\":\n\t\t\t\tcase \"Y\":\n\t\t\t\t\treg += \"([0-9]{1})\";\n\t\t\t\t\tparsedIndexes.year1 = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"MMMM\":\n\t\t\t\t\treg += \"(\" + this.getStringList(this._months()).join(\"|\") + \")\";\n\t\t\t\t\tparsedIndexes.monthLong = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"MMM\":\n\t\t\t\t\treg += \"(\" + this.getStringList(this._shortMonths()).join(\"|\") + \")\";\n\t\t\t\t\tparsedIndexes.monthShort = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"MM\":\n\t\t\t\tcase \"M\":\n\t\t\t\t\treg += \"([0-9]{2}|[0-9]{1})\";\n\t\t\t\t\tparsedIndexes.month = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"ww\":\n\t\t\t\tcase \"w\":\n\t\t\t\t\treg += \"([0-9]{2}|[0-9]{1})\";\n\t\t\t\t\tparsedIndexes.week = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"dd\":\n\t\t\t\tcase \"d\":\n\t\t\t\t\treg += \"([0-9]{2}|[0-9]{1})\";\n\t\t\t\t\tparsedIndexes.day = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"DDD\":\n\t\t\t\tcase \"DD\":\n\t\t\t\tcase \"D\":\n\t\t\t\t\treg += \"([0-9]{3}|[0-9]{2}|[0-9]{1})\";\n\t\t\t\t\tparsedIndexes.yearDay = index;\n\t\t\t\t\tbreak;\n\n\n\t\t\t\tcase \"dddd\":\n\t\t\t\t\treg += \"(\" + this.getStringList(this._weekdays()).join(\"|\") + \")\";\n\t\t\t\t\tparsedIndexes.weekdayLong = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"ddd\":\n\t\t\t\t\treg += \"(\" + this.getStringList(this._shortWeekdays()).join(\"|\") + \")\";\n\t\t\t\t\tparsedIndexes.weekdayShort = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"aaa\":\n\t\t\t\tcase \"aa\":\n\t\t\t\tcase \"a\":\n\t\t\t\t\t// TODO: fix (escape regex)\n\t\t\t\t\treg += \"(\" + this.getStringList([\"AM\", \"PM\", \"A\\.M\\.\", \"P\\.M\\.\", \"A\", \"P\"]).join(\"|\") + \")\";\n\t\t\t\t\tparsedIndexes.am = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"hh\":\n\t\t\t\tcase \"h\":\n\t\t\t\t\treg += \"([0-9]{2}|[0-9]{1})\";\n\t\t\t\t\tparsedIndexes.hour12Base1 = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"HH\":\n\t\t\t\tcase \"H\":\n\t\t\t\t\treg += \"([0-9]{2}|[0-9]{1})\";\n\t\t\t\t\tparsedIndexes.hourBase0 = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"KK\":\n\t\t\t\tcase \"K\":\n\t\t\t\t\treg += \"([0-9]{2}|[0-9]{1})\";\n\t\t\t\t\tparsedIndexes.hour12Base0 = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"kk\":\n\t\t\t\tcase \"k\":\n\t\t\t\t\treg += \"([0-9]{2}|[0-9]{1})\";\n\t\t\t\t\tparsedIndexes.hourBase1 = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"mm\":\n\t\t\t\tcase \"m\":\n\t\t\t\t\treg += \"([0-9]{2}|[0-9]{1})\";\n\t\t\t\t\tparsedIndexes.minute = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"ss\":\n\t\t\t\tcase \"s\":\n\t\t\t\t\treg += \"([0-9]{2}|[0-9]{1})\";\n\t\t\t\t\tparsedIndexes.second = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"SSS\":\n\t\t\t\tcase \"SS\":\n\t\t\t\tcase \"S\":\n\t\t\t\t\treg += \"([0-9]{3}|[0-9]{2}|[0-9]{1})\";\n\t\t\t\t\tparsedIndexes.millisecond = index;\n\t\t\t\t\tparsedIndexes.millisecondDigits = info.parts[i].length;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"nnn\":\n\t\t\t\tcase \"nn\":\n\t\t\t\tcase \"n\":\n\t\t\t\t\treg += \"([0-9]{3}|[0-9]{2}|[0-9]{1})\";\n\t\t\t\t\tparsedIndexes.millisecond = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"x\":\n\t\t\t\t\treg += \"([0-9]{1,})\";\n\t\t\t\t\tparsedIndexes.timestamp = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"Z\":\n\t\t\t\t\treg += \"GMT([-+]+[0-9]{2}:[0-9]{2})\";\n\t\t\t\t\tparsedIndexes.zone = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"ZZ\":\n\t\t\t\t\treg += \"([\\\\-+]+[0-9]{2}[0-9]{2})\";\n\t\t\t\t\tparsedIndexes.zone = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"i\":\n\t\t\t\t\treg += \"([0-9]{4})-?([0-9]{2})-?([0-9]{2})T?([0-9]{2}):?([0-9]{2}):?([0-9]{2})\\.?([0-9]{0,3})([zZ]|[+\\-][0-9]{2}:?[0-9]{2}|$)\";\n\t\t\t\t\tparsedIndexes.iso = index;\n\t\t\t\t\tindexAdjust += 7;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"G\":\n\t\t\t\tcase \"YYYY\":\n\t\t\t\tcase \"YYY\":\n\t\t\t\tcase \"YY\":\n\t\t\t\tcase \"Y\":\n\t\t\t\tcase \"MMMMM\":\n\t\t\t\tcase \"W\":\n\t\t\t\tcase \"EEEEE\":\n\t\t\t\tcase \"EEEE\":\n\t\t\t\tcase \"EEE\":\n\t\t\t\tcase \"EE\":\n\t\t\t\tcase \"E\":\n\t\t\t\tcase \"eeeee\":\n\t\t\t\tcase \"eeee\":\n\t\t\t\tcase \"eee\":\n\t\t\t\tcase \"ee\":\n\t\t\t\tcase \"e\":\n\t\t\t\tcase \"zzzz\":\n\t\t\t\tcase \"zzz\":\n\t\t\t\tcase \"zz\":\n\t\t\t\tcase \"z\":\n\t\t\t\tcase \"t\":\n\t\t\t\t\t// Ignore\n\t\t\t\t\tindexAdjust--;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treg += \"[^0-9]*\";\n\t\t}\n\n\t\t// Try matching\n\t\tlet regex = new RegExp(reg);\n\t\tlet matches: RegExpMatchArray = source.match(regex);\n\n\t\tif (matches) {\n\t\t\t// Populate the date object\n\n\t\t\t// Full year\n\t\t\tif (parsedIndexes.year > -1) {\n\t\t\t\tresValues.year = parseInt(matches[parsedIndexes.year]);\n\t\t\t}\n\n\t\t\t// 3-digit year\n\t\t\tif (parsedIndexes.year3 > -1) {\n\t\t\t\tlet val = parseInt(matches[parsedIndexes.year3]);\n\t\t\t\tval += 1000;\n\t\t\t\tresValues.year = val;\n\t\t\t}\n\n\t\t\t// 2-digit year\n\t\t\tif (parsedIndexes.year2 > -1) {\n\t\t\t\tlet val = parseInt(matches[parsedIndexes.year2]);\n\t\t\t\tif (val > 50) {\n\t\t\t\t\tval += 1000;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tval += 2000;\n\t\t\t\t}\n\t\t\t\tresValues.year = val;\n\t\t\t}\n\n\t\t\t// 1-digit year\n\t\t\tif (parsedIndexes.year1 > -1) {\n\t\t\t\tlet val = parseInt(matches[parsedIndexes.year1]);\n\t\t\t\tval = Math.floor((new Date().getFullYear()) / 10) * 10 + val;\n\t\t\t\tresValues.year = val;\n\t\t\t}\n\n\t\t\t// Full month\n\t\t\tif (parsedIndexes.monthLong > -1) {\n\t\t\t\tresValues.month = this.resolveMonth(<any>matches[parsedIndexes.monthLong]);\n\t\t\t}\n\n\t\t\t// Short month\n\t\t\tif (parsedIndexes.monthShort > -1) {\n\t\t\t\tresValues.month = this.resolveShortMonth(<any>matches[parsedIndexes.monthShort]);\n\t\t\t}\n\n\t\t\t// Numeric month\n\t\t\tif (parsedIndexes.month > -1) {\n\t\t\t\tresValues.month = parseInt(matches[parsedIndexes.month]) - 1;\n\t\t\t}\n\n\t\t\t// Weekday\n\t\t\t// @todo\n\n\t\t\t// Week\n\t\t\tif ((parsedIndexes.week > -1) && (parsedIndexes.day === -1)) {\n\t\t\t\t// We parse weeks ONLY if day is not explicitly set\n\t\t\t\t// TODO: this needs work\n\t\t\t\t// (but maybe later - I can hardly imagine anyone passing their dates in weeks)\n\t\t\t\tresValues.month = 0;\n\t\t\t\tresValues.day = $utils.getDayFromWeek(\n\t\t\t\t\tparseInt(matches[parsedIndexes.week]),\n\t\t\t\t\tresValues.year,\n\t\t\t\t\t1,\n\t\t\t\t\tthis._root.utc\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Day\n\t\t\tif (parsedIndexes.day > -1) {\n\t\t\t\tresValues.day = parseInt(matches[parsedIndexes.day]);\n\t\t\t}\n\n\t\t\t// Year day\n\t\t\tif (parsedIndexes.yearDay > -1) {\n\t\t\t\tresValues.month = 0;\n\t\t\t\tresValues.day = parseInt(matches[parsedIndexes.yearDay]);\n\t\t\t}\n\n\t\t\t// 24 Hour (0-23)\n\t\t\tif (parsedIndexes.hourBase0 > -1) {\n\t\t\t\tresValues.hour = parseInt(matches[parsedIndexes.hourBase0]);\n\t\t\t}\n\n\t\t\t// 24 Hour (1-24)\n\t\t\tif (parsedIndexes.hourBase1 > -1) {\n\t\t\t\tresValues.hour = parseInt(matches[parsedIndexes.hourBase1]) - 1;\n\t\t\t}\n\n\t\t\t// 12 Hour (0-11)\n\t\t\tif (parsedIndexes.hour12Base0 > -1) {\n\t\t\t\tlet val = parseInt(matches[parsedIndexes.hour12Base0]);\n\t\t\t\tif (val == 11) {\n\t\t\t\t\tval = 0;\n\t\t\t\t}\n\t\t\t\tif ((parsedIndexes.am > -1) && !this.isAm(matches[parsedIndexes.am])) {\n\t\t\t\t\tval += 12;\n\t\t\t\t}\n\t\t\t\tresValues.hour = val;\n\t\t\t}\n\n\t\t\t// 12 Hour (1-12)\n\t\t\tif (parsedIndexes.hour12Base1 > -1) {\n\t\t\t\tlet val = parseInt(matches[parsedIndexes.hour12Base1]);\n\t\t\t\tif (val == 12) {\n\t\t\t\t\tval = 0;\n\t\t\t\t}\n\t\t\t\tif ((parsedIndexes.am > -1) && !this.isAm(matches[parsedIndexes.am])) {\n\t\t\t\t\tval += 12;\n\t\t\t\t}\n\t\t\t\tresValues.hour = val;\n\t\t\t}\n\n\t\t\t// Minute\n\t\t\tif (parsedIndexes.minute > -1) {\n\t\t\t\tresValues.minute = parseInt(matches[parsedIndexes.minute]);\n\t\t\t}\n\n\t\t\t// Second\n\t\t\tif (parsedIndexes.second > -1) {\n\t\t\t\tresValues.second = parseInt(matches[parsedIndexes.second]);\n\t\t\t}\n\n\t\t\t// Millisecond\n\t\t\tif (parsedIndexes.millisecond > -1) {\n\t\t\t\tlet val = parseInt(matches[parsedIndexes.millisecond]);\n\t\t\t\tif (parsedIndexes.millisecondDigits == 2) {\n\t\t\t\t\tval *= 10;\n\t\t\t\t}\n\t\t\t\telse if (parsedIndexes.millisecondDigits == 1) {\n\t\t\t\t\tval *= 100;\n\t\t\t\t}\n\t\t\t\tresValues.millisecond = val;\n\t\t\t}\n\n\t\t\t// Timestamp\n\t\t\tif (parsedIndexes.timestamp > -1) {\n\t\t\t\tresValues.timestamp = parseInt(matches[parsedIndexes.timestamp]);\n\n\t\t\t\tconst ts = new Date(resValues.timestamp);\n\t\t\t\tresValues.year = ts.getUTCFullYear();\n\t\t\t\tresValues.month = ts.getUTCMonth();\n\t\t\t\tresValues.day = ts.getUTCDate();\n\t\t\t\tresValues.hour = ts.getUTCHours();\n\t\t\t\tresValues.minute = ts.getUTCMinutes();\n\t\t\t\tresValues.second = ts.getUTCSeconds();\n\t\t\t\tresValues.millisecond = ts.getUTCMilliseconds();\n\t\t\t}\n\n\t\t\t// Adjust time zone\n\t\t\tif (parsedIndexes.zone > -1) {\n\t\t\t\tresValues.offset = this.resolveTimezoneOffset(new Date(resValues.year, resValues.month, resValues.day), matches[parsedIndexes.zone]);\n\t\t\t}\n\n\t\t\t// ISO\n\t\t\tif (parsedIndexes.iso > -1) {\n\n\t\t\t\tresValues.year = $type.toNumber(matches[parsedIndexes.iso + 0]);\n\t\t\t\tresValues.month = $type.toNumber(matches[parsedIndexes.iso + 1]) - 1;\n\t\t\t\tresValues.day = $type.toNumber(matches[parsedIndexes.iso + 2]);\n\t\t\t\tresValues.hour = $type.toNumber(matches[parsedIndexes.iso + 3]);\n\t\t\t\tresValues.minute = $type.toNumber(matches[parsedIndexes.iso + 4]);\n\t\t\t\tresValues.second = $type.toNumber(matches[parsedIndexes.iso + 5]);\n\t\t\t\tresValues.millisecond = $type.toNumber(matches[parsedIndexes.iso + 6]);\n\n\t\t\t\tif (matches[parsedIndexes.iso + 7] == \"Z\" || matches[parsedIndexes.iso + 7] == \"z\") {\n\t\t\t\t\tresValues.utc = true;\n\t\t\t\t}\n\t\t\t\telse if (matches[parsedIndexes.iso + 7] != \"\") {\n\t\t\t\t\tresValues.offset = this.resolveTimezoneOffset(new Date(resValues.year, resValues.month, resValues.day), matches[parsedIndexes.iso + 7]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Create Date object\n\t\t\tif (resValues.utc) {\n\t\t\t\tres = new Date(Date.UTC(\n\t\t\t\t\tresValues.year,\n\t\t\t\t\tresValues.month,\n\t\t\t\t\tresValues.day,\n\t\t\t\t\tresValues.hour,\n\t\t\t\t\tresValues.minute,\n\t\t\t\t\tresValues.second,\n\t\t\t\t\tresValues.millisecond\n\t\t\t\t));\n\t\t\t}\n\t\t\telse {\n\t\t\t\tres = new Date(\n\t\t\t\t\tresValues.year,\n\t\t\t\t\tresValues.month,\n\t\t\t\t\tresValues.day,\n\t\t\t\t\tresValues.hour,\n\t\t\t\t\tresValues.minute + resValues.offset,\n\t\t\t\t\tresValues.second,\n\t\t\t\t\tresValues.millisecond\n\t\t\t\t);\n\t\t\t}\n\n\t\t}\n\t\telse {\n\t\t\t// Didn't match anything\n\t\t\t// Let's try dropping it into Date constructor and hope for the best\n\t\t\tres = new Date(source);\n\t\t}\n\n\t\treturn res;\n\t}\n\n\tprotected resolveTimezoneOffset(date: Date, zone: string): number {\n\t\tlet value = zone.match(/([+\\-]?)([0-9]{2}):?([0-9]{2})/);\n\t\tif (value) {\n\t\t\tlet match = zone.match(/([+\\-]?)([0-9]{2}):?([0-9]{2})/)!;\n\t\t\tlet dir = match[1];\n\t\t\tlet hour = match[2];\n\t\t\tlet minute = match[3];\n\t\t\tlet offset = parseInt(hour) * 60 + parseInt(minute);\n\n\t\t\t// Adjust offset\n\t\t\t// Making it negative does not seem to make sense, but it's right\n\t\t\t// because of how JavaScript calculates GMT offsets\n\t\t\tif (dir == \"+\") {\n\t\t\t\toffset *= -1;\n\t\t\t}\n\n\t\t\t// Check the difference in offset\n\t\t\tlet originalOffset = (date || new Date()).getTimezoneOffset();\n\t\t\tlet diff = offset - originalOffset;\n\t\t\treturn diff;\n\t\t}\n\t\treturn 0;\n\t}\n\n\t/**\n\t * Resolves month name (i.e. \"December\") into a month number (11).\n\t *\n\t * @param value Month name\n\t * @return Month number\n\t */\n\tprotected resolveMonth(value: Months): number {\n\n\t\t// Let's try English first\n\t\tlet month: number = this._months().indexOf(value);\n\t\tif (month > -1) {\n\t\t\treturn month;\n\t\t}\n\n\t\t// Try the translation\n\t\tif (!this._root.language.isDefault()) {\n\t\t\tmonth = this._root.language.translateAll(this._months()).indexOf(value);\n\t\t\tif (month > -1) {\n\t\t\t\treturn month\n\t\t\t}\n\t\t}\n\n\t\treturn 0;\n\t}\n\n\t/**\n\t * Resolves short month name (i.e. \"Dec\") into a month number.\n\t *\n\t * @param value Short month name\n\t * @return Month number\n\t */\n\tprotected resolveShortMonth(value: ShortMonths): number {\n\n\t\t// Let's try English first\n\t\tlet month: number = this._shortMonths().indexOf(value);\n\t\tif (month > -1) {\n\t\t\treturn month;\n\t\t}\n\n\t\t// Maybe long month (workaround for May)\n\t\tmonth = this._months().indexOf(<any>value);\n\t\tif (month > -1) {\n\t\t\treturn month;\n\t\t}\n\n\t\t// Try the translation\n\t\tif (this._root.language && !this._root.language.isDefault()) {\n\t\t\tmonth = this._root.language.translateAll(this._shortMonths()).indexOf(value);\n\t\t\tif (month > -1) {\n\t\t\t\treturn month\n\t\t\t}\n\t\t}\n\n\t\treturn 0;\n\t}\n\n\t/**\n\t * Checks if passed in string represents AM/PM notation in many of its\n\t * versions.\n\t *\n\t * @param value Source string\n\t * @return Is it AM/PM?\n\t */\n\tprotected isAm(value: string): boolean {\n\t\tlet list = this.getStringList([\"AM\", \"A.M.\", \"A\"]);\n\t\treturn list.indexOf(value.toUpperCase()) > -1;\n\t}\n\n\t/**\n\t * Translates list of strings.\n\t *\n\t * @param list Source strings\n\t * @return Translated strings\n\t */\n\tprotected getStringList(list: Array<keyof ILocaleSettings>): Array<string> {\n\t\tlet res: string[] = [];\n\t\tfor (let i: number = 0; i < list.length; i++) {\n\t\t\t// translate?\n\t\t\tif (this._root.language) {\n\t\t\t\tres.push($utils.escapeForRgex(this._t(list[i])));\n\t\t\t}\n\t\t\telse {\n\t\t\t\tres.push($utils.escapeForRgex(list[i]));\n\t\t\t}\n\t\t}\n\t\treturn res;\n\t}\n\n}\n"]}
1
+ {"version":3,"file":"DateFormatter.js","sourceRoot":"","sources":["../../../../../src/.internal/core/util/DateFormatter.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ILocaleSettings } from \"./Language\"\n\nimport { Entity, IEntitySettings, IEntityPrivate } from \"./Entity\"\nimport { TextFormatter } from \"./TextFormatter\"\n\nimport * as $type from \"./Type\"\nimport * as $utils from \"./Utils\";\n\n/**\n * Interface describing parsed date format definition.\n *\n * @ignore\n */\nexport interface DateFormatInfo {\n\t\"template\": string;\n\t\"parts\": any[];\n}\n\nexport interface IDateFormatterSettings extends IEntitySettings {\n\n\t/**\n\t * Should the first letter of the formatted date be capitalized?\n\t *\n\t * @default true\n\t */\n\tcapitalize?: boolean;\n\n\t/**\n\t * A date format to be used when formatting dates.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/formatting-dates/} for more info\n\t */\n\tdateFormat?: string | Intl.DateTimeFormatOptions;\n\n\t/**\n\t * An array of data fields that hold date values and should be formatted\n\t * with a [[DateFormatter]].\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/data-placeholders/#Formatting_placeholders} for more info\n\t */\n\tdateFields?: string[];\n\n\t/**\n\t * Locales to use when formatting using `Intl.DateFormatter`.\n\t */\n\tintlLocales?: string;\n\n}\n\nexport interface IDateFormatterPrivate extends IEntityPrivate {\n}\n\ntype Months = \"January\" | \"February\" | \"March\" | \"April\" | \"May\" | \"June\" | \"July\" | \"August\" | \"September\" | \"October\" | \"November\" | \"December\";\ntype ShortMonths = \"Jan\" | \"Feb\" | \"Mar\" | \"Apr\" | \"May(short)\" | \"Jun\" | \"Jul\" | \"Aug\" | \"Sep\" | \"Oct\" | \"Nov\" | \"Dec\";\ntype Weekdays = \"Sunday\" | \"Monday\" | \"Tuesday\" | \"Wednesday\" | \"Thursday\" | \"Friday\" | \"Saturday\";\ntype ShortWeekdays = \"Sun\" | \"Mon\" | \"Tue\" | \"Wed\" | \"Thu\" | \"Fri\" | \"Sat\";\n\nexport class DateFormatter extends Entity {\n\tdeclare public _settings: IDateFormatterSettings;\n\tdeclare public _privateSettings: IDateFormatterPrivate;\n\n\tprotected _setDefaults() {\n\t\t// Defaults\n\t\tthis._setDefault(\"capitalize\", true);\n\t\tthis._setDefault(\"dateFormat\", \"yyyy-MM-dd\");\n\n\t\tsuper._setDefaults();\n\t}\n\n\tpublic _beforeChanged() {\n\t\tsuper._beforeChanged();\n\t}\n\n\tpublic format(source: any, format?: string | Intl.DateTimeFormatOptions): string {\n\n\t\t// Locale?\n\t\t// TODO\n\n\t\t// No format passed in or it's empty\n\t\tif (typeof format === \"undefined\" || format === \"\") {\n\t\t\tformat = this.get(\"dateFormat\", \"yyyy-MM-dd\");\n\t\t}\n\n\t\t// Init return value\n\t\tlet formatted;\n\n\t\t// Cast?\n\t\t// TODO: decide if we need to cast\n\t\tlet date: Date = source;\n\n\t\t// Is it a built-in format or Intl.DateTimeFormat\n\t\tif ($type.isObject(format)) {\n\n\t\t\ttry {\n\t\t\t\tconst locales = this.get(\"intlLocales\");\n\t\t\t\tif (locales) {\n\t\t\t\t\treturn new Intl.DateTimeFormat(locales, <Intl.DateTimeFormatOptions>format).format(date);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn new Intl.DateTimeFormat(undefined, <Intl.DateTimeFormatOptions>format).format(date);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\treturn \"Invalid\";\n\t\t\t}\n\n\t\t}\n\n\t\t// get format info (it will also deal with parser caching)\n\t\tlet info = this.parseFormat(format);\n\n\t\t// Should we apply custom time zone?\n\t\tconst timezone = this._root.timezone;\n\t\tif (timezone && !this._root.utc) {\n\t\t\tdate = timezone.convertLocal(date);\n\t\t}\n\n\n\t\t// Check if it's a valid date\n\t\tif (!$type.isNumber(date.getTime())) {\n\t\t\t// TODO translation\n\t\t\t//return this._t(\"Invalid date\");\n\t\t\treturn \"Invalid date\";\n\t\t}\n\n\t\t// Apply format\n\t\tformatted = this.applyFormat(date, info);\n\n\t\t// Capitalize\n\t\tif (this.get(\"capitalize\")) {\n\t\t\tformatted = formatted.replace(\n\t\t\t\t/^.{1}/, formatted.substr(0, 1).toUpperCase()\n\t\t\t);\n\t\t}\n\n\t\t// We're done\n\t\treturn formatted;\n\t}\n\n\t/**\n\t * Applies format to Date.\n\t *\n\t * @param date Date object\n\t * @param info Parsed format information\n\t * @return Formatted date string\n\t */\n\tprotected applyFormat(date: Date, info: DateFormatInfo): string {\n\n\t\t// Init return value\n\t\tlet res = info.template;\n\n\t\t// Get values\n\t\tlet fullYear: number,\n\t\t\tmonth: number,\n\t\t\tweekday: number,\n\t\t\tday: number,\n\t\t\thours: number,\n\t\t\tminutes: number,\n\t\t\tseconds: number,\n\t\t\tmilliseconds: number,\n\t\t\toffset: number = date.getTimezoneOffset(),\n\t\t\ttimestamp: number = date.getTime();\n\t\tif (this._root.utc) {\n\t\t\tfullYear = date.getUTCFullYear();\n\t\t\tmonth = date.getUTCMonth();\n\t\t\tweekday = date.getUTCDay();\n\t\t\tday = date.getUTCDate();\n\t\t\thours = date.getUTCHours();\n\t\t\tminutes = date.getUTCMinutes();\n\t\t\tseconds = date.getUTCSeconds();\n\t\t\tmilliseconds = date.getUTCMilliseconds();\n\t\t}\n\t\telse {\n\t\t\tfullYear = date.getFullYear();\n\t\t\tmonth = date.getMonth();\n\t\t\tweekday = date.getDay();\n\t\t\tday = date.getDate();\n\t\t\thours = date.getHours();\n\t\t\tminutes = date.getMinutes();\n\t\t\tseconds = date.getSeconds();\n\t\t\tmilliseconds = date.getMilliseconds();\n\t\t}\n\n\t\t// Go through each part and format/replace it in template\n\t\tfor (let i = 0, len = info.parts.length; i < len; i++) {\n\t\t\tlet value: string = \"\";\n\t\t\tswitch (info.parts[i]) {\n\n\t\t\t\tcase \"G\":\n\t\t\t\t\tvalue = this._t(\n\t\t\t\t\t\tfullYear < 0\n\t\t\t\t\t\t\t? \"_era_bc\"\n\t\t\t\t\t\t\t: \"_era_ad\"\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"yyyy\":\n\t\t\t\t\tvalue = Math.abs(fullYear).toString();\n\t\t\t\t\tif (fullYear < 0) {\n\t\t\t\t\t\tvalue += this._t(\"_era_bc\");\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"yyy\":\n\t\t\t\tcase \"yy\":\n\t\t\t\tcase \"y\":\n\t\t\t\t\tvalue = Math.abs(fullYear).toString().substr(-info.parts[i].length);\n\t\t\t\t\tif (fullYear < 0) {\n\t\t\t\t\t\tvalue += this._t(\"_era_bc\");\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"YYYY\":\n\t\t\t\tcase \"YYY\":\n\t\t\t\tcase \"YY\":\n\t\t\t\tcase \"Y\":\n\t\t\t\t\tlet week = $utils.getWeek(date);\n\t\t\t\t\tlet year = fullYear;\n\t\t\t\t\tif (week == 1 && (weekday > 4)) {\n\t\t\t\t\t\tyear--;\n\t\t\t\t\t}\n\t\t\t\t\tif (info.parts[i] == \"YYYY\") {\n\t\t\t\t\t\tvalue = Math.abs(year).toString();\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tvalue = Math.abs(year).toString().substr(-info.parts[i].length);\n\t\t\t\t\t}\n\t\t\t\t\tif (year < 0) {\n\t\t\t\t\t\tvalue += this._t(\"_era_bc\");\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"u\":\n\t\t\t\t\t// @todo\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"q\":\n\t\t\t\t\tvalue = \"\" + Math.ceil((date.getMonth() + 1) / 3);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"MMMMM\":\n\t\t\t\t\tvalue = this._t(this._getMonth(month)).substr(0, 1);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"MMMM\":\n\t\t\t\t\tvalue = this._t(this._getMonth(month));\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"MMM\":\n\t\t\t\t\tvalue = this._t(this._getShortMonth(month));\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"MM\":\n\t\t\t\t\tvalue = $utils.padString(month + 1, 2, \"0\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"M\":\n\t\t\t\t\tvalue = (month + 1).toString();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"ww\":\n\t\t\t\t\tvalue = $utils.padString($utils.getWeek(date, this._root.utc), 2, \"0\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"w\":\n\t\t\t\t\tvalue = $utils.getWeek(date, this._root.utc).toString();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"W\":\n\t\t\t\t\tvalue = $utils.getMonthWeek(date, this._root.utc).toString();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"dd\":\n\t\t\t\t\tvalue = $utils.padString(day, 2, \"0\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"d\":\n\t\t\t\t\tvalue = day.toString();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"DD\":\n\t\t\t\tcase \"DDD\":\n\t\t\t\t\tvalue = $utils.padString($utils.getYearDay(date, this._root.utc).toString(), info.parts[i].length, \"0\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"D\":\n\t\t\t\t\tvalue = $utils.getYearDay(date, this._root.utc).toString();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"F\":\n\t\t\t\t\t// @todo\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"g\":\n\t\t\t\t\t// @todo\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"t\":\n\t\t\t\t\tvalue = this._root.language.translateFunc(\"_dateOrd\").call(this, day);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"E\":\n\t\t\t\t\tvalue = (weekday || 7).toString();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"EE\":\n\t\t\t\t\tvalue = $utils.padString((weekday || 7).toString(), 2, \"0\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"EEE\":\n\t\t\t\tcase \"eee\":\n\t\t\t\t\tvalue = this._t(this._getShortWeekday(weekday));\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"EEEE\":\n\t\t\t\tcase \"eeee\":\n\t\t\t\t\tvalue = this._t(this._getShortWeekday(weekday));\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"EEEEE\":\n\t\t\t\tcase \"eeeee\":\n\t\t\t\t\tvalue = this._t(this._getShortWeekday(weekday)).substr(0, 1);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"e\":\n\t\t\t\tcase \"ee\":\n\t\t\t\t\tvalue = (weekday - (this._root.locale.firstDayOfWeek || 1) + 1).toString();\n\t\t\t\t\tif (info.parts[i] == \"ee\") {\n\t\t\t\t\t\tvalue = $utils.padString(value, 2, \"0\");\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"a\":\n\t\t\t\t\tif (hours >= 12) {\n\t\t\t\t\t\tvalue = this._t(\"PM\");\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tvalue = this._t(\"AM\");\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"aa\":\n\t\t\t\t\tif (hours >= 12) {\n\t\t\t\t\t\tvalue = this._t(\"P.M.\");\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tvalue = this._t(\"A.M.\");\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"aaa\":\n\t\t\t\t\tif (hours >= 12) {\n\t\t\t\t\t\tvalue = this._t(\"P\");\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tvalue = this._t(\"A\");\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"h\":\n\t\t\t\t\tvalue = $utils.get12Hours(hours).toString();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"hh\":\n\t\t\t\t\tvalue = $utils.padString($utils.get12Hours(hours), 2, \"0\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"H\":\n\t\t\t\t\tvalue = hours.toString();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"HH\":\n\t\t\t\t\tvalue = $utils.padString(hours, 2, \"0\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"K\":\n\t\t\t\t\tvalue = $utils.get12Hours(hours, 0).toString();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"KK\":\n\t\t\t\t\tvalue = $utils.padString($utils.get12Hours(hours, 0), 2, \"0\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"k\":\n\t\t\t\t\tvalue = (hours + 1).toString();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"kk\":\n\t\t\t\t\tvalue = $utils.padString(hours + 1, 2, \"0\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"m\":\n\t\t\t\t\tvalue = minutes.toString();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"mm\":\n\t\t\t\t\tvalue = $utils.padString(minutes, 2, \"0\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"s\":\n\t\t\t\t\tvalue = seconds.toString();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"ss\":\n\t\t\t\t\tvalue = $utils.padString(seconds, 2, \"0\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"S\":\n\t\t\t\tcase \"SS\":\n\t\t\t\tcase \"SSS\":\n\t\t\t\t\tvalue = Math.round((milliseconds / 1000) * Math.pow(10, info.parts[i].length)).toString();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"x\":\n\t\t\t\t\tvalue = timestamp.toString();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"n\":\n\t\t\t\tcase \"nn\":\n\t\t\t\tcase \"nnn\":\n\t\t\t\t\tvalue = $utils.padString(milliseconds, info.parts[i].length, \"0\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"z\":\n\t\t\t\t\tvalue = $utils.getTimeZone(date, false, false, this._root.utc);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"zz\":\n\t\t\t\t\tvalue = $utils.getTimeZone(date, true, false, this._root.utc);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"zzz\":\n\t\t\t\t\tvalue = $utils.getTimeZone(date, false, true, this._root.utc);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"zzzz\":\n\t\t\t\t\tvalue = $utils.getTimeZone(date, true, true, this._root.utc);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"Z\":\n\t\t\t\tcase \"ZZ\":\n\t\t\t\t\tlet tz = Math.abs(offset) / 60;\n\t\t\t\t\tlet tzh = Math.floor(tz);\n\t\t\t\t\tlet tzm = tz * 60 - tzh * 60;\n\n\t\t\t\t\tif (this._root.utc) {\n\t\t\t\t\t\ttzh = 0;\n\t\t\t\t\t\ttzm = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (info.parts[i] == \"Z\") {\n\t\t\t\t\t\tvalue = \"GMT\";\n\t\t\t\t\t\tvalue += offset > 0 ? \"-\" : \"+\";\n\t\t\t\t\t\tvalue += $utils.padString(tzh, 2) + \":\" + $utils.padString(tzm, 2);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tvalue = offset > 0 ? \"-\" : \"+\";\n\t\t\t\t\t\tvalue += $utils.padString(tzh, 2) + $utils.padString(tzm, 2);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"i\":\n\t\t\t\t\tvalue = date.toISOString();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"I\":\n\t\t\t\t\tvalue = date.toUTCString();\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\t\t\tres = res.replace($type.PLACEHOLDER, value);\n\t\t}\n\n\t\treturn res;\n\t}\n\n\t/**\n\t * Parses format into structured infromation.\n\t *\n\t * @param format Format template\n\t */\n\tprotected parseFormat(format: string): DateFormatInfo {\n\n\t\t// Check cache\n\t\t// TODO: implement caching of the parsed format\n\n\t\t// Init format parse info holder\n\t\tlet info: DateFormatInfo = {\n\t\t\t\"template\": \"\",\n\t\t\t\"parts\": <any>[]\n\t\t};\n\n\t\t// Let TextFormatter split into chunks\n\t\tlet chunks = TextFormatter.chunk(format, true);\n\t\tfor (let i: number = 0; i < chunks.length; i++) {\n\t\t\tlet chunk = chunks[i];\n\n\t\t\tif (chunk.type === \"value\") {\n\n\t\t\t\t// Just \"Date\"?\n\t\t\t\tif (chunk.text.match(/^date$/i)) {\n\t\t\t\t\tlet dateFormat = this.get(\"dateFormat\", \"yyyy-MM-dd\");\n\t\t\t\t\tif (!$type.isString(dateFormat)) {\n\t\t\t\t\t\tdateFormat = \"yyyy-MM-dd\";\n\t\t\t\t\t}\n\t\t\t\t\tchunk.text = dateFormat;\n\t\t\t\t}\n\n\t\t\t\t// Find all possible parts\n\t\t\t\tlet matches = chunk.text.match(/G|yyyy|yyy|yy|y|YYYY|YYY|YY|Y|u|q|MMMMM|MMMM|MMM|MM|M|ww|w|W|dd|d|DDD|DD|D|F|g|EEEEE|EEEE|EEE|EE|E|eeeee|eeee|eee|ee|e|aaa|aa|a|hh|h|HH|H|KK|K|kk|k|mm|m|ss|s|SSS|SS|S|A|zzzz|zzz|zz|z|ZZ|Z|t|x|nnn|nn|n|i|I/g);\n\n\t\t\t\t// Found?\n\t\t\t\tif (matches) {\n\n\t\t\t\t\t// Populate template\n\t\t\t\t\tfor (let x = 0; x < matches.length; x++) {\n\t\t\t\t\t\tinfo.parts.push(matches[x]);\n\t\t\t\t\t\tchunk.text = chunk.text.replace(matches[x], $type.PLACEHOLDER);\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Apply to template\n\t\t\tinfo.template += chunk.text;\n\t\t}\n\n\t\t// Save cache\n\t\t// TODO\n\n\t\treturn info;\n\t}\n\n\tprotected _months(): Months[] {\n\t\treturn [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\n\t}\n\n\tprotected _getMonth(index: number): Months {\n\t\treturn this._months()[index];\n\t}\n\n\tprotected _shortMonths(): ShortMonths[] {\n\t\treturn [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May(short)\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n\t}\n\n\tprotected _getShortMonth(index: number): ShortMonths {\n\t\treturn this._shortMonths()[index];\n\t}\n\n\tprotected _weekdays(): Weekdays[] {\n\t\treturn [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\n\t}\n\n\tprotected _getWeekday(index: number): Weekdays {\n\t\treturn this._weekdays()[index];\n\t}\n\n\tprotected _shortWeekdays(): ShortWeekdays[] {\n\t\treturn [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n\t}\n\n\tprotected _getShortWeekday(index: number): ShortWeekdays {\n\t\treturn this._shortWeekdays()[index];\n\t}\n\n\tpublic parse(source: any, format: string): Date {\n\n\t\t// Is it already a Date\n\t\tif (source instanceof Date) {\n\t\t\treturn source;\n\t\t}\n\n\t\t// Is it a numeric timestamp\n\t\tif ($type.isNumber(source)) {\n\t\t\treturn new Date(source);\n\t\t}\n\n\t\t// No? Let's check if it's string, and try converting to it if nec\n\t\tif (!$type.isString(source)) {\n\t\t\tsource = source.toString();\n\t\t}\n\n\t\t// Init return value\n\t\tlet res: Date;\n\n\t\t// Init RegEx for parsing\n\t\tlet reg: string = \"\";\n\n\t\t// Clean format\n\t\tformat = $utils.cleanFormat(format);\n\n\t\t// Clip format to length of the source string\n\t\tformat = format.substr(0, source.length);\n\n\t\t// Parse format\n\t\tlet info = this.parseFormat(format);\n\n\t\t// Init parsed items holder\n\t\tlet parsedIndexes = {\n\t\t\t\"year\": -1,\n\t\t\t\"year3\": -1,\n\t\t\t\"year2\": -1,\n\t\t\t\"year1\": -1,\n\t\t\t\"month\": -1,\n\t\t\t\"monthShort\": -1,\n\t\t\t\"monthLong\": -1,\n\t\t\t\"weekdayShort\": -1,\n\t\t\t\"weekdayLong\": -1,\n\t\t\t\"day\": -1,\n\t\t\t\"yearDay\": -1,\n\t\t\t\"week\": -1,\n\t\t\t\"hourBase0\": -1,\n\t\t\t\"hour12Base0\": -1,\n\t\t\t\"hourBase1\": -1,\n\t\t\t\"hour12Base1\": -1,\n\t\t\t\"minute\": -1,\n\t\t\t\"second\": -1,\n\t\t\t\"millisecond\": -1,\n\t\t\t\"millisecondDigits\": -1,\n\t\t\t\"am\": -1,\n\t\t\t\"zone\": -1,\n\t\t\t\"timestamp\": -1,\n\t\t\t\"iso\": -1\n\t\t};\n\n\t\t// Init values\n\t\tlet resValues = {\n\t\t\t\"year\": 1970,\n\t\t\t\"month\": 0,\n\t\t\t\"day\": 1,\n\t\t\t\"hour\": 0,\n\t\t\t\"minute\": 0,\n\t\t\t\"second\": 0,\n\t\t\t\"millisecond\": 0,\n\t\t\t\"timestamp\": <any>null,\n\t\t\t\"offset\": 0,\n\t\t\t\"utc\": this._root.utc\n\t\t}\n\n\t\t// Index adjuster\n\t\tlet indexAdjust: number = 0;\n\t\tlet index: number = 0;\n\n\t\t// Iterate through all of the parts\n\t\tfor (let i: number = 0; i < info.parts.length; i++) {\n\n\t\t\t// Set current match index\n\t\t\tindex = i + indexAdjust + 1;\n\n\t\t\tswitch (info.parts[i]) {\n\n\t\t\t\tcase \"yyyy\":\n\t\t\t\tcase \"YYYY\":\n\t\t\t\t\treg += \"([0-9]{4})\";\n\t\t\t\t\tparsedIndexes.year = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"yyy\":\n\t\t\t\tcase \"YYY\":\n\t\t\t\t\treg += \"([0-9]{3})\";\n\t\t\t\t\tparsedIndexes.year3 = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"yy\":\n\t\t\t\tcase \"YY\":\n\t\t\t\t\treg += \"([0-9]{2})\";\n\t\t\t\t\tparsedIndexes.year2 = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"y\":\n\t\t\t\tcase \"Y\":\n\t\t\t\t\treg += \"([0-9]{1})\";\n\t\t\t\t\tparsedIndexes.year1 = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"MMMM\":\n\t\t\t\t\treg += \"(\" + this.getStringList(this._months()).join(\"|\") + \")\";\n\t\t\t\t\tparsedIndexes.monthLong = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"MMM\":\n\t\t\t\t\treg += \"(\" + this.getStringList(this._shortMonths()).join(\"|\") + \")\";\n\t\t\t\t\tparsedIndexes.monthShort = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"MM\":\n\t\t\t\tcase \"M\":\n\t\t\t\t\treg += \"([0-9]{2}|[0-9]{1})\";\n\t\t\t\t\tparsedIndexes.month = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"ww\":\n\t\t\t\tcase \"w\":\n\t\t\t\t\treg += \"([0-9]{2}|[0-9]{1})\";\n\t\t\t\t\tparsedIndexes.week = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"dd\":\n\t\t\t\tcase \"d\":\n\t\t\t\t\treg += \"([0-9]{2}|[0-9]{1})\";\n\t\t\t\t\tparsedIndexes.day = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"DDD\":\n\t\t\t\tcase \"DD\":\n\t\t\t\tcase \"D\":\n\t\t\t\t\treg += \"([0-9]{3}|[0-9]{2}|[0-9]{1})\";\n\t\t\t\t\tparsedIndexes.yearDay = index;\n\t\t\t\t\tbreak;\n\n\n\t\t\t\tcase \"dddd\":\n\t\t\t\t\treg += \"(\" + this.getStringList(this._weekdays()).join(\"|\") + \")\";\n\t\t\t\t\tparsedIndexes.weekdayLong = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"ddd\":\n\t\t\t\t\treg += \"(\" + this.getStringList(this._shortWeekdays()).join(\"|\") + \")\";\n\t\t\t\t\tparsedIndexes.weekdayShort = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"aaa\":\n\t\t\t\tcase \"aa\":\n\t\t\t\tcase \"a\":\n\t\t\t\t\t// TODO: fix (escape regex)\n\t\t\t\t\treg += \"(\" + this.getStringList([\"AM\", \"PM\", \"A\\.M\\.\", \"P\\.M\\.\", \"A\", \"P\"]).join(\"|\") + \")\";\n\t\t\t\t\tparsedIndexes.am = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"hh\":\n\t\t\t\tcase \"h\":\n\t\t\t\t\treg += \"([0-9]{2}|[0-9]{1})\";\n\t\t\t\t\tparsedIndexes.hour12Base1 = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"HH\":\n\t\t\t\tcase \"H\":\n\t\t\t\t\treg += \"([0-9]{2}|[0-9]{1})\";\n\t\t\t\t\tparsedIndexes.hourBase0 = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"KK\":\n\t\t\t\tcase \"K\":\n\t\t\t\t\treg += \"([0-9]{2}|[0-9]{1})\";\n\t\t\t\t\tparsedIndexes.hour12Base0 = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"kk\":\n\t\t\t\tcase \"k\":\n\t\t\t\t\treg += \"([0-9]{2}|[0-9]{1})\";\n\t\t\t\t\tparsedIndexes.hourBase1 = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"mm\":\n\t\t\t\tcase \"m\":\n\t\t\t\t\treg += \"([0-9]{2}|[0-9]{1})\";\n\t\t\t\t\tparsedIndexes.minute = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"ss\":\n\t\t\t\tcase \"s\":\n\t\t\t\t\treg += \"([0-9]{2}|[0-9]{1})\";\n\t\t\t\t\tparsedIndexes.second = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"SSS\":\n\t\t\t\tcase \"SS\":\n\t\t\t\tcase \"S\":\n\t\t\t\t\treg += \"([0-9]{3}|[0-9]{2}|[0-9]{1})\";\n\t\t\t\t\tparsedIndexes.millisecond = index;\n\t\t\t\t\tparsedIndexes.millisecondDigits = info.parts[i].length;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"nnn\":\n\t\t\t\tcase \"nn\":\n\t\t\t\tcase \"n\":\n\t\t\t\t\treg += \"([0-9]{3}|[0-9]{2}|[0-9]{1})\";\n\t\t\t\t\tparsedIndexes.millisecond = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"x\":\n\t\t\t\t\treg += \"([0-9]{1,})\";\n\t\t\t\t\tparsedIndexes.timestamp = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"Z\":\n\t\t\t\t\treg += \"GMT([-+]+[0-9]{2}:[0-9]{2})\";\n\t\t\t\t\tparsedIndexes.zone = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"ZZ\":\n\t\t\t\t\treg += \"([\\\\-+]+[0-9]{2}[0-9]{2})\";\n\t\t\t\t\tparsedIndexes.zone = index;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"i\":\n\t\t\t\t\treg += \"([0-9]{4})-?([0-9]{2})-?([0-9]{2})T?([0-9]{2}):?([0-9]{2}):?([0-9]{2})\\.?([0-9]{0,3})([zZ]|[+\\-][0-9]{2}:?[0-9]{2}|$)\";\n\t\t\t\t\tparsedIndexes.iso = index;\n\t\t\t\t\tindexAdjust += 7;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"G\":\n\t\t\t\tcase \"YYYY\":\n\t\t\t\tcase \"YYY\":\n\t\t\t\tcase \"YY\":\n\t\t\t\tcase \"Y\":\n\t\t\t\tcase \"MMMMM\":\n\t\t\t\tcase \"W\":\n\t\t\t\tcase \"EEEEE\":\n\t\t\t\tcase \"EEEE\":\n\t\t\t\tcase \"EEE\":\n\t\t\t\tcase \"EE\":\n\t\t\t\tcase \"E\":\n\t\t\t\tcase \"eeeee\":\n\t\t\t\tcase \"eeee\":\n\t\t\t\tcase \"eee\":\n\t\t\t\tcase \"ee\":\n\t\t\t\tcase \"e\":\n\t\t\t\tcase \"zzzz\":\n\t\t\t\tcase \"zzz\":\n\t\t\t\tcase \"zz\":\n\t\t\t\tcase \"z\":\n\t\t\t\tcase \"t\":\n\t\t\t\t\t// Ignore\n\t\t\t\t\tindexAdjust--;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treg += \"[^0-9]*\";\n\t\t}\n\n\t\t// Try matching\n\t\tlet regex = new RegExp(reg);\n\t\tlet matches: RegExpMatchArray = source.match(regex);\n\n\t\tif (matches) {\n\t\t\t// Populate the date object\n\n\t\t\t// Full year\n\t\t\tif (parsedIndexes.year > -1) {\n\t\t\t\tresValues.year = parseInt(matches[parsedIndexes.year]);\n\t\t\t}\n\n\t\t\t// 3-digit year\n\t\t\tif (parsedIndexes.year3 > -1) {\n\t\t\t\tlet val = parseInt(matches[parsedIndexes.year3]);\n\t\t\t\tval += 1000;\n\t\t\t\tresValues.year = val;\n\t\t\t}\n\n\t\t\t// 2-digit year\n\t\t\tif (parsedIndexes.year2 > -1) {\n\t\t\t\tlet val = parseInt(matches[parsedIndexes.year2]);\n\t\t\t\tif (val > 50) {\n\t\t\t\t\tval += 1000;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tval += 2000;\n\t\t\t\t}\n\t\t\t\tresValues.year = val;\n\t\t\t}\n\n\t\t\t// 1-digit year\n\t\t\tif (parsedIndexes.year1 > -1) {\n\t\t\t\tlet val = parseInt(matches[parsedIndexes.year1]);\n\t\t\t\tval = Math.floor((new Date().getFullYear()) / 10) * 10 + val;\n\t\t\t\tresValues.year = val;\n\t\t\t}\n\n\t\t\t// Full month\n\t\t\tif (parsedIndexes.monthLong > -1) {\n\t\t\t\tresValues.month = this.resolveMonth(<any>matches[parsedIndexes.monthLong]);\n\t\t\t}\n\n\t\t\t// Short month\n\t\t\tif (parsedIndexes.monthShort > -1) {\n\t\t\t\tresValues.month = this.resolveShortMonth(<any>matches[parsedIndexes.monthShort]);\n\t\t\t}\n\n\t\t\t// Numeric month\n\t\t\tif (parsedIndexes.month > -1) {\n\t\t\t\tresValues.month = parseInt(matches[parsedIndexes.month]) - 1;\n\t\t\t}\n\n\t\t\t// Weekday\n\t\t\t// @todo\n\n\t\t\t// Week\n\t\t\tif ((parsedIndexes.week > -1) && (parsedIndexes.day === -1)) {\n\t\t\t\t// We parse weeks ONLY if day is not explicitly set\n\t\t\t\t// TODO: this needs work\n\t\t\t\t// (but maybe later - I can hardly imagine anyone passing their dates in weeks)\n\t\t\t\tresValues.month = 0;\n\t\t\t\tresValues.day = $utils.getDayFromWeek(\n\t\t\t\t\tparseInt(matches[parsedIndexes.week]),\n\t\t\t\t\tresValues.year,\n\t\t\t\t\t1,\n\t\t\t\t\tthis._root.utc\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Day\n\t\t\tif (parsedIndexes.day > -1) {\n\t\t\t\tresValues.day = parseInt(matches[parsedIndexes.day]);\n\t\t\t}\n\n\t\t\t// Year day\n\t\t\tif (parsedIndexes.yearDay > -1) {\n\t\t\t\tresValues.month = 0;\n\t\t\t\tresValues.day = parseInt(matches[parsedIndexes.yearDay]);\n\t\t\t}\n\n\t\t\t// 24 Hour (0-23)\n\t\t\tif (parsedIndexes.hourBase0 > -1) {\n\t\t\t\tresValues.hour = parseInt(matches[parsedIndexes.hourBase0]);\n\t\t\t}\n\n\t\t\t// 24 Hour (1-24)\n\t\t\tif (parsedIndexes.hourBase1 > -1) {\n\t\t\t\tresValues.hour = parseInt(matches[parsedIndexes.hourBase1]) - 1;\n\t\t\t}\n\n\t\t\t// 12 Hour (0-11)\n\t\t\tif (parsedIndexes.hour12Base0 > -1) {\n\t\t\t\tlet val = parseInt(matches[parsedIndexes.hour12Base0]);\n\t\t\t\tif (val == 11) {\n\t\t\t\t\tval = 0;\n\t\t\t\t}\n\t\t\t\tif ((parsedIndexes.am > -1) && !this.isAm(matches[parsedIndexes.am])) {\n\t\t\t\t\tval += 12;\n\t\t\t\t}\n\t\t\t\tresValues.hour = val;\n\t\t\t}\n\n\t\t\t// 12 Hour (1-12)\n\t\t\tif (parsedIndexes.hour12Base1 > -1) {\n\t\t\t\tlet val = parseInt(matches[parsedIndexes.hour12Base1]);\n\t\t\t\tif (val == 12) {\n\t\t\t\t\tval = 0;\n\t\t\t\t}\n\t\t\t\tif ((parsedIndexes.am > -1) && !this.isAm(matches[parsedIndexes.am])) {\n\t\t\t\t\tval += 12;\n\t\t\t\t}\n\t\t\t\tresValues.hour = val;\n\t\t\t}\n\n\t\t\t// Minute\n\t\t\tif (parsedIndexes.minute > -1) {\n\t\t\t\tresValues.minute = parseInt(matches[parsedIndexes.minute]);\n\t\t\t}\n\n\t\t\t// Second\n\t\t\tif (parsedIndexes.second > -1) {\n\t\t\t\tresValues.second = parseInt(matches[parsedIndexes.second]);\n\t\t\t}\n\n\t\t\t// Millisecond\n\t\t\tif (parsedIndexes.millisecond > -1) {\n\t\t\t\tlet val = parseInt(matches[parsedIndexes.millisecond]);\n\t\t\t\tif (parsedIndexes.millisecondDigits == 2) {\n\t\t\t\t\tval *= 10;\n\t\t\t\t}\n\t\t\t\telse if (parsedIndexes.millisecondDigits == 1) {\n\t\t\t\t\tval *= 100;\n\t\t\t\t}\n\t\t\t\tresValues.millisecond = val;\n\t\t\t}\n\n\t\t\t// Timestamp\n\t\t\tif (parsedIndexes.timestamp > -1) {\n\t\t\t\tresValues.timestamp = parseInt(matches[parsedIndexes.timestamp]);\n\n\t\t\t\tconst ts = new Date(resValues.timestamp);\n\t\t\t\tresValues.year = ts.getUTCFullYear();\n\t\t\t\tresValues.month = ts.getUTCMonth();\n\t\t\t\tresValues.day = ts.getUTCDate();\n\t\t\t\tresValues.hour = ts.getUTCHours();\n\t\t\t\tresValues.minute = ts.getUTCMinutes();\n\t\t\t\tresValues.second = ts.getUTCSeconds();\n\t\t\t\tresValues.millisecond = ts.getUTCMilliseconds();\n\t\t\t}\n\n\t\t\t// Adjust time zone\n\t\t\tif (parsedIndexes.zone > -1) {\n\t\t\t\tresValues.offset = this.resolveTimezoneOffset(new Date(resValues.year, resValues.month, resValues.day), matches[parsedIndexes.zone]);\n\t\t\t}\n\n\t\t\t// ISO\n\t\t\tif (parsedIndexes.iso > -1) {\n\n\t\t\t\tresValues.year = $type.toNumber(matches[parsedIndexes.iso + 0]);\n\t\t\t\tresValues.month = $type.toNumber(matches[parsedIndexes.iso + 1]) - 1;\n\t\t\t\tresValues.day = $type.toNumber(matches[parsedIndexes.iso + 2]);\n\t\t\t\tresValues.hour = $type.toNumber(matches[parsedIndexes.iso + 3]);\n\t\t\t\tresValues.minute = $type.toNumber(matches[parsedIndexes.iso + 4]);\n\t\t\t\tresValues.second = $type.toNumber(matches[parsedIndexes.iso + 5]);\n\t\t\t\tresValues.millisecond = $type.toNumber(matches[parsedIndexes.iso + 6]);\n\n\t\t\t\tif (matches[parsedIndexes.iso + 7] == \"Z\" || matches[parsedIndexes.iso + 7] == \"z\") {\n\t\t\t\t\tresValues.utc = true;\n\t\t\t\t}\n\t\t\t\telse if (matches[parsedIndexes.iso + 7] != \"\") {\n\t\t\t\t\tresValues.offset = this.resolveTimezoneOffset(new Date(resValues.year, resValues.month, resValues.day), matches[parsedIndexes.iso + 7]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Create Date object\n\t\t\tif (resValues.utc) {\n\t\t\t\tres = new Date(Date.UTC(\n\t\t\t\t\tresValues.year,\n\t\t\t\t\tresValues.month,\n\t\t\t\t\tresValues.day,\n\t\t\t\t\tresValues.hour,\n\t\t\t\t\tresValues.minute,\n\t\t\t\t\tresValues.second,\n\t\t\t\t\tresValues.millisecond\n\t\t\t\t));\n\t\t\t}\n\t\t\telse {\n\t\t\t\tres = new Date(\n\t\t\t\t\tresValues.year,\n\t\t\t\t\tresValues.month,\n\t\t\t\t\tresValues.day,\n\t\t\t\t\tresValues.hour,\n\t\t\t\t\tresValues.minute + resValues.offset,\n\t\t\t\t\tresValues.second,\n\t\t\t\t\tresValues.millisecond\n\t\t\t\t);\n\t\t\t}\n\n\t\t}\n\t\telse {\n\t\t\t// Didn't match anything\n\t\t\t// Let's try dropping it into Date constructor and hope for the best\n\t\t\tres = new Date(source);\n\t\t}\n\n\t\treturn res;\n\t}\n\n\tprotected resolveTimezoneOffset(date: Date, zone: string): number {\n\t\tlet value = zone.match(/([+\\-]?)([0-9]{2}):?([0-9]{2})/);\n\t\tif (value) {\n\t\t\tlet match = zone.match(/([+\\-]?)([0-9]{2}):?([0-9]{2})/)!;\n\t\t\tlet dir = match[1];\n\t\t\tlet hour = match[2];\n\t\t\tlet minute = match[3];\n\t\t\tlet offset = parseInt(hour) * 60 + parseInt(minute);\n\n\t\t\t// Adjust offset\n\t\t\t// Making it negative does not seem to make sense, but it's right\n\t\t\t// because of how JavaScript calculates GMT offsets\n\t\t\tif (dir == \"+\") {\n\t\t\t\toffset *= -1;\n\t\t\t}\n\n\t\t\t// Check the difference in offset\n\t\t\tlet originalOffset = (date || new Date()).getTimezoneOffset();\n\t\t\tlet diff = offset - originalOffset;\n\t\t\treturn diff;\n\t\t}\n\t\treturn 0;\n\t}\n\n\t/**\n\t * Resolves month name (i.e. \"December\") into a month number (11).\n\t *\n\t * @param value Month name\n\t * @return Month number\n\t */\n\tprotected resolveMonth(value: Months): number {\n\n\t\t// Let's try English first\n\t\tlet month: number = this._months().indexOf(value);\n\t\tif (month > -1) {\n\t\t\treturn month;\n\t\t}\n\n\t\t// Try the translation\n\t\tif (!this._root.language.isDefault()) {\n\t\t\tmonth = this._root.language.translateAll(this._months()).indexOf(value);\n\t\t\tif (month > -1) {\n\t\t\t\treturn month\n\t\t\t}\n\t\t}\n\n\t\treturn 0;\n\t}\n\n\t/**\n\t * Resolves short month name (i.e. \"Dec\") into a month number.\n\t *\n\t * @param value Short month name\n\t * @return Month number\n\t */\n\tprotected resolveShortMonth(value: ShortMonths): number {\n\n\t\t// Let's try English first\n\t\tlet month: number = this._shortMonths().indexOf(value);\n\t\tif (month > -1) {\n\t\t\treturn month;\n\t\t}\n\n\t\t// Maybe long month (workaround for May)\n\t\tmonth = this._months().indexOf(<any>value);\n\t\tif (month > -1) {\n\t\t\treturn month;\n\t\t}\n\n\t\t// Try the translation\n\t\tif (this._root.language && !this._root.language.isDefault()) {\n\t\t\tmonth = this._root.language.translateAll(this._shortMonths()).indexOf(value);\n\t\t\tif (month > -1) {\n\t\t\t\treturn month\n\t\t\t}\n\t\t}\n\n\t\treturn 0;\n\t}\n\n\t/**\n\t * Checks if passed in string represents AM/PM notation in many of its\n\t * versions.\n\t *\n\t * @param value Source string\n\t * @return Is it AM/PM?\n\t */\n\tprotected isAm(value: string): boolean {\n\t\tlet list = this.getStringList([\"AM\", \"A.M.\", \"A\"]);\n\t\treturn list.indexOf(value.toUpperCase()) > -1;\n\t}\n\n\t/**\n\t * Translates list of strings.\n\t *\n\t * @param list Source strings\n\t * @return Translated strings\n\t */\n\tprotected getStringList(list: Array<keyof ILocaleSettings>): Array<string> {\n\t\tlet res: string[] = [];\n\t\tfor (let i: number = 0; i < list.length; i++) {\n\t\t\t// translate?\n\t\t\tif (this._root.language) {\n\t\t\t\tres.push($utils.escapeForRgex(this._t(list[i])));\n\t\t\t}\n\t\t\telse {\n\t\t\t\tres.push($utils.escapeForRgex(list[i]));\n\t\t\t}\n\t\t}\n\t\treturn res;\n\t}\n\n}\n"]}